代码\thepage of
产生输出3of
。
我可以通过编写来修复它\thepage~of
,但首先是什么原因导致的?我无法想象它什么时候会有用。
答案1
TeX 宏会“吃掉”其后的空白,因此\TeX nician
排版为 TeXnician,\thepage of
排版为3of
。您可以输入\thepage~of
、 或\thepage\ of
或\thepage{} of
。在第一种情况下,空格是不可破坏的,在其他情况下则不是。
更新:如果你需要由于某种原因,宏后面有空格,请尝试xspace
包:
\documentclass{standalone}
\usepackage{xspace}
\newcommand{\Thepage}{\thepage\xspace}
\begin{document}
\Thepage of one. The page is \Thepage.
\end{document}
答案2
假设控制序列后有空格不会被忽略。在这种情况下,如果您愿意,您将如何实现输出3of
?您不能写,\thepageof
因为那将是一个名称不同的控制序列。:-)
这就是为什么(字母)控制序列后的空格是忽略。如果你想空格,写\thepage\ of
或\thepage{} of
. (\thepage~of
仅当您不想在\thepage
. 后换行时才正确)
答案3
供参考(和DEK娱乐),从TeX 书(章节3 控制 TeX,第 8 页):
通常情况下,您不需要使用“控制空格”,因为控制序列通常不需要放在单词末尾。但这里有一个例子可能会对这个问题有所启发:本手册本身是由 TeX 排版的,其中经常出现的问题之一是棘手的徽标
\TeX
,它需要退格并降低 E。有一个特殊的控制字\TeX
生成了排版所需的大约六条指令
\TeX
。当需要类似这样的短语时\TeX\ ignores spaces after control words.
,手稿将其呈现如下:TeX 忽略控制字后的空格。
\
注意后面的额外内容\TeX
;这会产生必要的控制空格,因为 TeX 会忽略控制字后的空格。如果没有这个额外的内容\
,结果将是TeXignores 控制字后的空格。另一方面,你不能简单地在所有情况下都放在
\
后面\TeX
。例如,考虑这个短语徽标“TeX”。在这种情况下,额外的反斜杠根本不起作用;事实上,如果你输入
the logo `\TeX\'.
你能猜出会发生什么吗?答案:这
\'
是一个表示重音的控制序列,如上P\'olya
例所示;因此,效果是将重音放在下一个非空白字符上,而这个非空白字符恰好是一个句号。换句话说,你得到了一个重音句号,...计算机擅长遵循指令,但不擅长读懂你的想法。