查《source2e》, 参考 \label
与 \ref
的做法。命令 \label
将一个全局定义命令\global\@namedef
写入 .aux 文件,之后 \ref
会引用这个定义,需要编译两次。
下面是一个例子:
%命令 \TotalPointsRef{<题号宏>} 返回给 <题号宏> 分配的分数
%<题号宏> 是 \examONE 这种形式
\def\TotalPointsRef#1{
\ifdefined#1%
(total: #1)
\else%
(Ref none!!!)
\fi%
}
\TotalPointsRef\examONE
\makeatletter
%#1 代表题号,#2 代表分数
%控制序列 \examONE 代表第 ONE 题,ONE 是题号
\def\examtotalwriteout#1#2{%
\expandafter\string%
\expandafter\xdef%
\expandafter\string%
\csname exam#1\endcsname{#2}%
}
%写入 .aux 文件
\immediate\write\@auxout{%
\examtotalwriteout{ONE}{10}
}
\makeatother
命令 \label
的定义要复杂一些,可以参考《LaTeX2e 文类和宏包学习手册》和《source2e》来看。
大体意思就是这样。
问 \the计数器能否做到被该命令后面的计数器命令影响?