\z@ 起什么作用?

\z@ 起什么作用?

在 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@00123


测试文件:

\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@经常用来表示0pt0

第 348 页,附录 B

相关内容