我使用上标引用样式,有时我需要在文本中打印方括号中的引用编号,如[6]
。我读到我可以使用,\citenum
但[\citenum{myref}]
在数字前留出一些大空格[ 6]
。有什么办法可以很好地实现这一点吗?
编辑。以下是我的natbib
选择:
\usepackage[square, comma, sort&compress,authoryear]{natbib}
\bibpunct{[}{]}{,}{s}{}{;}
答案1
以下尝试(重新定义\citenum
)删除了大部分(?)间距。抱歉没有提供真正的解决方案,但natbib
内部原理并不想深入研究。
\documentclass{article}
\usepackage[square,comma,sort&compress,authoryear]{natbib}
\bibpunct{[}{]}{,}{s}{}{;}
\makeatletter
\DeclareRobustCommand\citenum
{\begingroup
% \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar% DELETED
\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\relax% NEW
\NAT@citexnum[][]}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
\end{filecontents}
\begin{document}
Some text \citep{A01}.
[\citenum{A01}]
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
答案2
我发现插入几个负空格(\!
)效果很好。例如
These are outlined in an excellent review by Foo [\!\!\citenum{Foo2012}]; however, we choose to...
从理解问题的角度来看,这可能不是一个非常优雅的解决方案,但它很简洁!
答案3
对我来说,最简单的方法就是进入 natbib.sty。首先将其复制到本地 latex 文件夹,例如
~/texmf/tex/latex/.
找到这条线
\DeclareRobustCommand\citenum
并更换零件
@parfalse
和
@partrue
完毕。
答案4
我知道您正在使用 natbib 的选项;但是,您是否尝试过使用 revtex 作为您的 documentclass?使用与 lockstep 相同的示例,我可以写:
\documentclass[aip]{revtex4-1}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
@misc{B01,
author = {Author, B.},
year = {2001},
title = {Beta},
}
\end{filecontents}
\begin{document}
Some text with superscript citation.~\citep{A01}
Another text with in-line citation.~[\onlinecite{B01}]
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}