在 citealp 命令前插入了多余的空格

在 citealp 命令前插入了多余的空格

我正在定义一个引用(使用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}

在此处输入图片描述

相关内容