访问计数器的正确方法是什么?

访问计数器的正确方法是什么?

似乎有多种访问计数器的方法。我一直\theMyCount在使用这篇文章中的使用计数器或宏,但注意到 arrayjobx 包使用了\the\value{MyCount}

这篇文章关于LaTeX 编程比较运算符仅使用\value{MyCount}但对我来说这似乎无法编译。

这些访问计数器的不同方法之间有什么区别吗?

\documentclass{article}

\newcounter{MyCount}

\begin{document}

MyCount = \theMyCount

MyCount = \the\value{MyCount}

%MyCount = \value{MyCount}% Does not compile for me.
\end{document}

答案1

\the\value{MyCounter}只是一种稍微快一点的说法\arabic{MyCounter},因为前者连续扩展为

\the\csname c@MyCounter\endcsname
\the\c@MyCounter

后者

\expandafter\@arabic\csname c@MyCounter\endcsname
\@arabic\c@MyCounter
\number\c@MyCounter

TeX 规则规定,这\the基本上等同于\number。我认为在普通文档中,执行时间的差异并不大。通常最好坚持使用“官方”宏(如果存在),以确保结果随着时间的推移保持稳定。

\theMyCount当我们不确定与计数器相关联的表示类型时,使用可能不合适MyCount

另一方面,\theMyCount 不应该在我们对计数器中存储的“抽象”值感兴趣时使用,因此放入一个宏

\ifnum\value{MyCounter}>0

是正确的,而

\ifnum\theMyCounter>0

是危险的,因为用户可能已经改变了MyCounter使用宏时的表示形式。

答案2

\theMyCounter如果您想以阿拉伯数字、罗马数字、符号或其他格式输出值,则应使用。您可以\theMyCounter通过以下方式重新设置样式:

\renewcommand\theMyCounter{\roman{MyCounter}} % lowercase Roman numerals

\value{MyCounter}如果在表达式中使用,则应使用。例如

\ifnum\value{MyCounter}>5 ... \else ...\fi
\ifthenelse{\value{MyCounter}<4}{...}{...} % ifthen package
\setcounter{AnotherCounter}{\value{MyCounter}}

您可以使用\the\value{MyCounter}与 相同的方式\arabic{MyCounter}。但这是混合语法。您最好始终\arabic{MyCounter}在 LaTeX 中使用;如果您想窥探,它与 相同\the\c@MyCounter

相关内容