在另一个计数器增加后重置计数器

在另一个计数器增加后重置计数器

我有以下一段代码,用于实现 2 个计数器。目前两个计数器均等增加,但我希望每次第一个计数器自动增加时第二个计数器都会重置。

目前计数器的工作原理如下:

00001.001

00002.002

00003.003

我希望它像这样工作:

00001.0001

00001.0002

00001.0003

00002.0001

00002.0002

00002.0003

00003.0001

00003.0002

00003.0003

另外,除了将两个计数器并排放置并在中间有一个点之外,我不知道是否还有其他更好的实现方式,但如果有的话,我希望您提一下。

我想说的是,计数器的代码不是我的。它是作为我在这里的一个问题的答案提交的。

\documentclass{article}
\newcounter{Counter}

\newcommand{\Counter}
{%
  \textbf
  {%
    \ifnum\value{Counter}<10000 0\fi
    \ifnum\value{Counter}<1000 0\fi
    \ifnum\value{Counter}<100 0\fi
    \ifnum\value{Counter}<10 0\fi
    \arabic{Counter}%
  }%
}

\newcounter{InCounter}

\newcommand{\InCounter}
{%
  \textbf
  {%
    \ifnum\value{InCounter}<100 0\fi
    \ifnum\value{InCounter}<10 0\fi
    \arabic{InCounter}%
  }%
}

\newcommand{\Num}
{
    \refstepcounter{Counter}\Counter.\refstepcounter{InCounter}\InCounter
}


\begin{document}

\Num

Text

\Num

Text

\Num 

Text

\end{document}

答案1

将第二个计数器定义为与第一个计数器绑定,并正确设置其表示。

\documentclass{article}

\newcounter{maincounter}
\newcounter{childcounter}[maincounter]

\renewcommand{\themaincounter}{%
  \ifnum\value{maincounter}<10000 0\fi
  \ifnum\value{maincounter}<1000 0\fi
  \ifnum\value{maincounter}<100 0\fi
  \ifnum\value{maincounter}<10 0\fi
  \arabic{maincounter}%
}
\renewcommand{\thechildcounter}{%
  \themaincounter.%
  \ifnum\value{childcounter}<1000 0\fi
  \ifnum\value{childcounter}<100 0\fi
  \ifnum\value{childcounter}<10 0\fi
  \arabic{childcounter}
}

\newcommand{\stepmain}{\stepcounter{maincounter}}
\newcommand{\stepchild}{\refstepcounter{childcounter}}
\newcommand{\num}{\stepchild\thechildcounter}

\begin{document}

\stepmain

\num

\num

\num

\stepmain

\num

\num

\stepmain

\num

\num

\end{document}

每次\stepmain主计数器都会步进,子计数器会重置;\num只会步进子计数器并打印值。我\refstepcounter在这里使用 so\label将指向正确的值。

在此处输入图片描述

答案2

标准方式是这样的:

\newcounter {secondcounter} [firstcounter]

并且secondcounter每次firstcounter增加都会自动重置。

相关内容