在表格环境中以两种方式运行的计数器

在表格环境中以两种方式运行的计数器

我只是为了好玩而测试代码并发现“表格”环境中的计数器有一种奇怪的行为(对我来说):

\documentclass{article}
\usepackage{ifthen}
\begin{document}
    \def\yy{&}
    \newcounter{numk}
    \begin{tabular}{ll}\hline
    numk \yy actual numk\\\hline
    \setcounter{numk}{1}
    \whiledo{\value{numk}<5}{
    \thenumk 
     \yy
     \multiply\value{numk} by 3\relax\; \; \thenumk \\%
     \ifnum\value{numk}=4\hline\end{tabular}\fi
     \stepcounter{numk}
      }
\end{document}

结果是 在此处输入图片描述

但是,我想知道...为什么第二列中的计数器“numk”被修改了,而第一列中它又恢复到了原来的状态?也就是说,如果“numk =3”,那么\stepcounter{numk}应该是“4”,但事实并非如此。

但如果我改变代码,那么计数器“numk”就会按照“预期”的方式改变

\newcounter{numk}
\setcounter{numk}{1}
\whiledo{\value{numk}<5}{
   \thenumk 
   \;**\;
   \multiply\value{numk} by 3\relax\;  \thenumk\\
 \stepcounter{numk}
   }

我得到了在此处输入图片描述

那么,计数器在“表格”中会发生什么?

答案1

如果\multiply被设为\global,它将以预期的方式运行。因此,我猜想虽然\setcounter是自动的\global\multiply但 不是。如果不是全局的,那么 的效果\multiply将在单元格末尾丢失tabular,单元格是其自己的组。

\documentclass{article}
\usepackage{ifthen}
\begin{document}
    \def\yy{&}
    \newcounter{numk}
    \begin{tabular}{ll}\hline
    numk \yy actual numk\\\hline
    \setcounter{numk}{1}
    \whiledo{\value{numk}<120}{
    \thenumk 
     \yy
     \global\multiply\value{numk} by 3\relax\; \; \thenumk \\%
     \stepcounter{numk}
      }
     \end{tabular}
\end{document}

在此处输入图片描述

相关内容