bbb
在下面的例子中,我尝试通过提前获取计数器的值(在bbb
赋值之前)cross-referencing
,并将该值存储到宏(\aaa
)中以供以后使用。我按照以下步骤编译代码:
步骤(1)首先,删除与包含以下代码的主 tex 文件相关的所有临时文件(此例中为 .aux、.fls、.log)。
步骤(2) 然后使用 编译主 tex 文件xelatex
,失败。错误消息为:
ERROR: Missing number, treated as zero.
--- TeX said ---
<to be read again>
\protect
l.5 \setcounter{bbb}{\ref{pp}}
步骤(3) 然后再次编译主tex文件,成功得到预期的排版。
我重复了步骤(1)(2)(3)几次,每次尝试的结果都相同——第一次编译失败,第二次编译成功。
我知道在某些情况下可能需要编译两次,但应该是两次成功的编译,而不是像这种情况——第一次尝试失败,第二次尝试成功。
如何让我的代码第一次编译就顺利通过并且不出现错误?
例子:
\documentclass{article}
\newcounter{bbb}
\begin{document}
\setcounter{bbb}{\ref{pp}}
\edef\aaa{\thebbb}
\rule{1in}{\aaa pt}
\setcounter{bbb}{5}
\refstepcounter{bbb}\label{pp}
\end{document}
看来这\setcounter{bbb}{\ref{pp}}
就是原因。\ref{pp}
给出6\hbox{}
,而不是6
。所以这个问题可能涉及如何将数字与 分开\hbox{}
。对此有什么想法吗?