跟踪 LaTeX 计数器值的变化

跟踪 LaTeX 计数器值的变化

我想在特定计数器的值发生变化时执行宏。例如:

\newcommand{\process}[1]{do something with argument}
% ??? (What should I write here?)
\stepcounter{somecounter} % --> This should execute \process{\value{somecounter}}
                          %     after increasing the value here.

理想情况下,这种情况不仅会在\stepcounter使用时发生,而且会在一些计数器以任何方式设置,例如通过\setcounter,或者另一个计数器导致其重置。

有没有支持的方法可以做到这一点,或者这是破解某些内部命令的唯一选择?在第一种情况下,它是什么,或者在第二种情况下,每次设置计数器的值时调用的基本内部命令是什么?

答案1

我认为修补章节来增加你的计数器是一种更简单的方法:

\documentclass{report}
\usepackage{xpatch}

\newcounter{myval}

\makeatletter
\xpatchcmd{\@chapter}% <cmd>
  {\refstepcounter{chapter}}% <search>
  {\refstepcounter{chapter}\addtocounter{myval}{1}}% <replace>
  {}{}% <success><failure>
\makeatother
\begin{document}

\themyval

\chapter{First chapter}

\themyval

\chapter{First chapter}

\themyval

\addtocounter{myval}{10}

\themyval

\chapter{First chapter}

\themyval


\end{document}

(修补哪个命令可能取决于文档类别)

相关内容