为什么 cite 会影响 IEEEtran \markboth 标题中冒号后的间距?

为什么 cite 会影响 IEEEtran \markboth 标题中冒号后的间距?

更新:此问题已在 v5.5 中得到解决cite

我注意到,加载(或不加载)该包会改变标题cite中冒号后的间距\markbothIEEEtran

\documentclass{IEEEtran}
%\usepackage{cite}
\begin{document}
\markboth{: A}{}
: A
\end{document}

差异很细微,我必须创建两个 pdf 并在它们之间按 Alt-Tab 才能看到差异,但差异确实存在。

为什么会这样?我可以在之前和/或之后做什么\usepackage{cite}(例如\let\org...\...\let\...\org...)来防止这种情况发生?除了页眉外,我没有在 8 页的文档中看到任何其他区别。

答案1

其中一个

....\hbox(0.0+0.0)x0.0
....\OT1/ptm/m/n/7 :
....\glue 2.45004 plus 1.04996 minus 0.84007
....\OT1/ptm/m/n/7 

另一个有

....\hbox(0.0+0.0)x0.0
....\OT1/ptm/m/n/7 :
....\glue 2.87003 plus 2.09991 minus 0.42003
....\OT1/ptm/m/n/7 A

原因是的空间因子:已经恢复。

该问题仅影响标题,因为乳胶会将标题中的空间因子标准化,\normalsfcodes该标题的空间因子是设置的,或者\frenchspacing取决于\nonfrenchspacing在开始文档时有效的值。

然而,测试 latex 使用的是测试的空间因子是否.为 1000,但cite由于自身原因将其设为 1001,因此测试总是失败,因此如果cite加载则 \normalsfcodes总是设置该\nonfrenchspacing值。

这会影响 IEEEtran,因为它默认为\frenchspacing

最简单的解决方法是重置\normalsfcodes

\documentclass{IEEEtran}
\usepackage{cite}\AtBeginDocument{\let\normalsfcodes\frenchspacing}
\begin{document}

\markboth{: A}{}
: A
\end{document}

答案2

cite 包中有一个字符列表

\providecommand{\CiteMoveChars}{.,:;}

这会将上标引用移到标点符号后,从而产生不良行为。为了防止这种情况,您可以从该列表中删除冒号:

\documentclass{IEEEtran}
\usepackage{cite}

\providecommand{\CiteMoveChars}{.,;}

\begin{document}
\markboth{: A}{}
: A
\end{document}

或者,使用包选项加载包nomove(这与从移动列表中删除所有初始字符相同):

\documentclass{IEEEtran}
\usepackage[nomove]{cite}

\begin{document}
\markboth{: A}{}
: A
\end{document}

相关内容