![在 citealp 命令前插入了多余的空格](https://linux22.com/image/251140/%E5%9C%A8%20citealp%20%E5%91%BD%E4%BB%A4%E5%89%8D%E6%8F%92%E5%85%A5%E4%BA%86%E5%A4%9A%E4%BD%99%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
我正在定义一个引用(使用citealp
)命令并像这样使用它:
\documentclass{article}
\usepackage[super]{natbib}
\setcitestyle{square,citesep={; }}
\newcommand*{\citesquare}[2]{\mbox{\textsuperscript{[}\citealp{#1}\textsuperscript{#2]}}}
\begin{document}
This\citesquare{lamport94}{, pp.~20-30} is a citation
used for experimentation and demonstration purposes only.
\begin{thebibliography}{9}
\bibitem{lamport94}
Leslie Lamport,
\emph{\LaTeX: A Document Preparation System}.
Addison Wesley, Massachusetts,
2nd Edition,
1994.
\end{thebibliography}
\end{document}
问题是输出中左方括号后出现了多余的空格。一个不靠谱的解决方案是\hspace
在命令定义中的左方括号后插入一个带有负参数的内容,但这无法扩展(如果用于脚注 - 实际上是这样的吗?我尝试了一个负参数em
(无法扩展)但也许有可扩展的方法来做到这一点?),我正在寻找一个可以准确删除空格的真正解决方案。
请注意,我真正想要的是让引用看起来与图示完全一样的东西(嵌入在方括号上的数字,前面和后面可能还有附加文本(我有另一个宏)。虽然我个人的引用风格并不重要,但我的问题重点是我希望修复这种特定的方法(所以请不要引用替代的包/样式,它给我一些看起来几乎喜欢我感兴趣的东西:我可能知道这些)。
答案1
\citealp
在单词和上标引用之间插入 1pt 的字距,因此
\newcommand*{\citesquare}[2]{%
\mbox{\kern1pt\textsuperscript{[}\kern-1.5pt\citealp{#1}\kern-.5pt\textsuperscript{#2]}}}
应该是您想要的。如果您愿意,可以省略第一个\kern1pt
。插入三段上标还需要补充 0.5pt 的备份。
下面是一个显示结果的示例;我添加了一些模拟围兜项目,只是为了不将 1 作为参考数字。数字 1 看起来更细,不能用于判断空格。
\documentclass{article}
\usepackage[super]{natbib}
\setcitestyle{square,citesep={; }}
\newcommand*{\citesquare}[2]{%
\mbox{\kern1pt\textsuperscript{[}\kern-1pt\citealp{#1}\textsuperscript{#2]}}}
\begin{document}
This\citesquare{lamport94}{, pp.~20-30} is a citation
\def\ts{\textsuperscript} % just a shorthand
This\kern1pt\ts{[}\ts{7}\ts{, pp.~20-30]} is a citation
\begin{thebibliography}{9}
\bibitem{1}
\bibitem{2}
\bibitem{3}
\bibitem{4}
\bibitem{5}
\bibitem{6}
\bibitem{lamport94}
Leslie Lamport,
\emph{\LaTeX: A Document Preparation System}.
Addison Wesley, Massachusetts,
2nd Edition,
1994.
\end{thebibliography}
\end{document}