这些命令有什么作用

这些命令有什么作用

有人能解释一下命令

  • \@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

相关内容