我想在特定计数器的值发生变化时执行宏。例如:
\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}
(修补哪个命令可能取决于文档类别)