更新标签中新命令的计数器

更新标签中新命令的计数器

我正在尝试创建一个新的部分,以使用相关标签自动更新计数器。

newcommand-stepcounter有点像我想做的事,但不完全是。

当我使用下面的代码时,标题为“Eq”的部分上的计数器会按照我希望的方式进行更新,但如果我尝试使用\label它们,则会使用部分编号而不是新命令上的计数器。

请问使用时如何使用相关计数器label

\documentclass{report}    
\newcounter{mycounter}
\newcommand{\step}{\stepcounter{mycounter}\subsubsection*{Eq \themycounter}}   

\begin{document}

\section{}
\subsection{}
\step\label{eq:one}

\section{}
\subsection{}
\step

As seen in Eq~\ref{eq:one}

\end{document}

产生

在此处输入图片描述

答案1

您只要改为\stepcounter即可\refstepcounter

\documentclass{report}
\newcounter{mycounter}
\newcommand{\step}{\refstepcounter{mycounter}\subsubsection*{Eq \themycounter}}

\begin{document}

\section{}
\subsection{}
\step\label{eq:one}

\section{}
\subsection{}
\step

As seen in Eq~\ref{eq:one}

\end{document}

在此处输入图片描述

\stepcounter只是添加1到计数器但\refstepcounter使其\@currentlabel成为该计数器:

\def\refstepcounter#1{\stepcounter{#1}%
    \protected@edef\@currentlabel
       {\csname p@#1\endcsname\csname the#1\endcsname}%
}

因此,当您使用\labels 时,\stepcounter单独使用是不够的,因为 LaTeX 不知道计数器是一个标签。

相关内容