我有自己的个人风格文件,用于考试。它会记录每个问题的分数,并在首页上打印评分表,自动将所有分数加起来计算总分。它的工作方式与 中的分数表略有不同exam.sty
,否则我会使用它。
无论如何,当我升级到 MacTeX 2011 时,我开始收到以下错误:
./M113F10E1.tex:25: Undefined control sequence.
\rc@set ...safe@activestrue\endcsname \rc@refused
{#4}\expandafter \rc@@set ...
l.25 \PointTable{1}
\nextpage
\PointTable
是我创建成绩表的命令。系统指示它挂在rc@refused
。上面的控制序列不在我的样式文件中,所以我假设它一定在我需要的样式文件之一中。我的样式文件使用calc
、comment
、ifthen
和。refcount
tabls
有人见过这个吗?有人能指出在哪里可以看吗?我不想发布我的样式文件,因为它太长了。我已经好几年没弄它了(在我修改它之前,代码最初来自其他地方)。我一直想更新这个包,但现在,我想让它再次工作。
希望这不是一个愚蠢的问题。
答案1
我敢肯定这是 中的一个错误refcount
。在 TL2010 和 TL2011 中,我得到了一个匹配项\rc@refused
,并且它符合您的错误,因为它是:
\def\rc@set#1#2#3#4{%
\begingroup
\csname @safe@activestrue\endcsname
\rc@refused{#4}%
\expandafter\rc@@set\csname r@#4\endcsname{#1}{#2}{#3}%
\endgroup
}
幸运的是,我使用的是 Debian 系统,所以有一份refcount.sty
来自 TL2009 的古老副本,但没什么用。我还有一些:
\long\def\rc@refused#1{%
\expandafter\ifx\csname r@#1\endcsname\relax
\protect\G@refundefinedtrue
\@latex@warning{%
Reference `#1' on page \thepage\space undefined%
}%
\fi
}
\newcommand*{\refused}[1]{%
\begingroup
\csname @safe@activestrue\endcsname
\rc@refused{#1}{}%
\endgroup
}
\def\rc@set#1#2#3#4{%
\begingroup
\csname @safe@activestrue\endcsname
\rc@refused{#4}%
\expandafter\rc@@set\csname r@#4\endcsname{#1}{#2}{#3}%
\endgroup
}
的定义\refused
已发生很大变化,原来属于的位置现在\rc@refused
被以下之一所占据:
\ltx@IfUndefined{r@#1}{%
\protect\G@refundefinedtrue
\rc@WarningUndefined{#1}%
}{}%
或者
\ltx@IfUndefined{r@#1}{%
\csname protect\expandafter\endcsname
\csname G@refundefinedtrue\endcsname
\rc@WarningUndefined{#1}%
}{}%
(取决于测试是否\G@refundefinedtrue
定义的某些条件)。因此,您可以尝试用以下代码之一替换\rc@refused
定义。要正确执行此操作,您可能应该执行以下操作:\rc@set
\ltx@IfUndefined{G@refundefinedtrue}{%
\def\rc@set#1#2#3#4{%
\begingroup
\csname @safe@activestrue\endcsname
\ltx@IfUndefined{r@#1}{%
\protect\G@refundefinedtrue
\rc@WarningUndefined{#1}%
}{}%
\expandafter\rc@@set\csname r@#4\endcsname{#1}{#2}{#3}%
\endgroup
}
}{%
\def\rc@set#1#2#3#4{%
\begingroup
\csname @safe@activestrue\endcsname
\ltx@IfUndefined{r@#1}{%
\csname protect\expandafter\endcsname
\csname G@refundefinedtrue\endcsname
\rc@WarningUndefined{#1}%
}{}%
\expandafter\rc@@set\csname r@#4\endcsname{#1}{#2}{#3}%
\endgroup
}
}
(未经测试......这可能会以意想不到的方式中断)。
但如果我是对的,那么这确实应该作为一个错误报告给 Heiko Oberdiek。
答案2
我联系了 Heiko,他知道这件事并修复了它。不过他还没有上传。我将以下内容附加到我的 .sty 文件末尾,一切正常。谢谢你的帮助。
\makeatletter
\let\rc@refused\refused
\makeatother