定义组中的 TeX 数量

定义组中的 TeX 数量

我以为 TeX 计数是局部定义,但这不是我看到的。我原本以为如果我\newcount在组中使用,那么etoolbox \ifdefcounter会说计数器未在组外定义。以下代码产生:

\documentclass{minimal}

\usepackage{etoolbox}
\begin{document}
\ifdefcounter{\mycount}{The counter is defined}{The counter is NOT defined}

\begingroup
\newcount\mycount
\endgroup
\ifdefcounter{\mycount}{The counter is defined}{The counter is NOT defined}
\end{document}

计数器未定义

计数器定义

这表明计数器在开始时不是定义的,而是它的存在持久性在组之外,因此不是局部的。

答案1

如果您想分配本地计数器,那么您可以使用etex.sty

\documentclass{article}
\usepackage{etex}

\usepackage{etoolbox}
\begin{document}
\ifdefcounter{\mycount}{The counter is defined}{The counter is NOT defined}

\begingroup
\loccount\mycount
\advance\mycount 42
\the\mycount

\texttt{\meaning\mycount}
\endgroup

\ifdefcounter{\mycount}{The counter is defined}{The counter is NOT defined}
\end{document}

当然,使用类似 LaTeX 的语法\stepcounter是不可能的,因为这些命令是全局的。可能定义它们的本地版本,但我怀疑它们的实用性。

在此处输入图片描述

答案2

Plain 和 LaTeX 寄存器分配是全局的。您应该在开始时全局分配几个寄存器,并根据需要重新使用它们,而不是在本地组中分配它们。

相关内容