似乎有多种访问计数器的方法。我一直\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
。