有人能解释一下命令
\@tempcntb
\count@\@ne
\@curtab
作为参考,我在如何在 LaTeX 中生成素数列表
我知道我可以用
\catcode`\@=11 %makeatletter
\newcount\@tempcntb
\newcount\@curtab
\catcode`\@=12 %makeatother
但我没有看到它出现在宏中,所以我真的不明白它们。
答案1
您链接到了问题,但我认为您指的是我答案中的这段代码
\makeatletter
\def\primes#1#2{{%
\def\comma{\def\comma{, }}%
\count@\@ne\@tempcntb#2\relax\@curtab#1\relax
\@primes}}
\def\@primes{\loop\advance\count@\@ne
\expandafter\ifx\csname p-\the\count@\endcsname\relax
\ifnum\@tempcntb<\count@\else
\ifnum\count@<\@curtab\else\comma\the\count@\fi\fi\else\repeat
\@tempcnta\count@\loop\advance\@tempcnta\count@
\expandafter\let\csname p-\the\@tempcnta\endcsname\@ne
\ifnum\@tempcnta<\@tempcntb\repeat
\ifnum\@tempcntb>\count@\expandafter\@primes\fi}
\makeatother
\@tempcntb
并且\@currtab
是已经由 latex 定义的临时计数寄存器,因此您不需要\newcount
(第一个寄存器用于像这样的临时使用,第二个寄存器则不然,它通常用于制表符
\count@\@ne
是将计数器设置为 1 的原始语法。
答案2
\@tempcntb
是 LaTeX 内核分配的临时计数器,因此它始终可用。
它与 类似\count@
,其使用\count255
并且历史上是一个临时寄存器。
\@curtab
而是在代码中使用的计数器tabbing
应该不是否则就不能使用。(在特定用法中这不是什么大错,但无论如何这不是好的编程风格。)
LaTeX 中可用的划痕计数器有
\count@
\@tempcnta
\@tempcntb