在 parcolumns 中,它遍布\z@
整个空间。我没有看到它在任何地方定义它,所以我假设它是某种内部命令或类似的东西?不过我真的搞不懂,也无法在谷歌上搜索它(没有返回任何有用的信息)
答案1
\z@
是一个定义为零的 LaTeX“常量”。包开发人员可以使用它来分配或测试值0
,它还可以替换长度0pt
。类似的常量有\@ne
(one) \tw@
(two) 等等。由于@
它们只能在包中或在\makeatletter
和之间使用\makeatother
。
答案2
latex.ltx
说
\newdimen\z@ \z@=0pt % can be used both for 0pt and 0
正如它所说,这是获取 0 的简短(且有效)的方法。
latex.ltx
在阅读包代码时,您应该始终在文本编辑器窗口中保存一份乳胶源文件的副本:-),或者,如果您愿意,可以使用不删除注释的排版版本source2e.pdf
,这在大多数发行版中都可用,或者可以从源中排版。
请注意,它比寄存器\count@=\z@
更有效,因此终止了对数字的扫描。但可能是第一个标记,因此 TeX 必须提前读取以找到下一个标记,如果是空格,则丢弃它,如果是其他任何东西,则需要将标记放回其输入流中,以便在分配后读取。\count@=0
\z@
0
0123
测试文件:
\catcode`@=11
%\def\a{\dimen@=\z@}
\def\a{\dimen@=0pt\relax}
\def\b{\a\a\a\a\a\a\a\a\a\a}
\def\c{\b\b\b\b\b\b\b\b\b\b}
\def\d{\c\c\c\c\c\c\c\c\c\c}
\def\e{\d\d\d\d\d\d\d\d\d\d}
\def\f{\e\e\e\e\e\e\e\e\e\e}
\def\g{\f\f\f\f\f\f\f\f\f\f}
\def\h{\g\g\g\g\g\g\g\g\g\g}
\h
\bye
对每项进行几次运行,并采取典型时间,0pt 如上:
$ time tex zat
This is TeX, Version 3.1415926 (TeX Live 2011/Cygwin)
(./zat.tex )
No pages of output.
Transcript written on zat.log.
real 0m3.822s
user 0m3.774s
sys 0m0.015s
随着%移动一行,因此它使用\z@
:
$ time tex zat
This is TeX, Version 3.1415926 (TeX Live 2011/Cygwin)
(./zat.tex )
No pages of output.
Transcript written on zat.log.
real 0m1.080s
user 0m1.029s
sys 0m0.030s
即使不使用时间命令,这也是一个很容易观察到的差异。10^7 是相当多的作业,但可能并非不可能多。
答案3
我必须去索引处查找电子书
\z@
经常用来表示0pt
或0
第 348 页,附录 B