更新:此问题已在 v5.5 中得到解决cite
。
我注意到,加载(或不加载)该包会改变标题cite
中冒号后的间距\markboth
IEEEtran
\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}