在 LaTeX 文档(使用revtex-4.2
和todonotes
)中,我遇到了与待办事项注释相关的错误问题——这些错误似乎很不稳定,而且我不知何故无法调试。该问题似乎与一定数量的todonotos
(大约 40 个)有关,但更广泛的情况如下:
使用 pdflatex (14159265-2.6-1.40.20,TeX Live 2019)编译文档时出现以下错误
./document.tex:441: Undefined control sequence.
<argument> ...tally@float \expandafter {\@captype
}
l.441 not?}
closer to the cation the Coulomb attraction grows and results ...
./document.tex:441: Missing \endcsname inserted.
<to be read again>
\ftype@
l.441 not?}
closer to the cation the Coulomb attraction grows and results ...
./document.tex:441: Extra \endcsname.
\tally@float ...ame ftype@#1\endcsname \endcsname
\@ifnotrelax \@tempa {\@if...l.441 not?}
closer to the cation the Coulomb attraction grows and results ...
只要待办事项注释的总数小于 40,注释掉文本的前半部分或后半部分(或文档的任何好部分)即可正常运行,不会出现错误。也就是说,没有任何单个待办事项注释或文档的任何其他代码会导致错误,只有错误总数才会发生。
但是,创建一个最小示例后,我发现待办事项注释本身对于 100 条注释来说没有问题:
\pdfoutput=1
%\documentclass[galley]{revtex4-2}
\documentclass{article}
\usepackage[textsize=tiny]{todonotes}
\usepackage{forloop}
\begin{document}
\noindent Testing the number of todonotes without error \\
\newcounter{ct}
\forloop{ct}{1}{\value{ct} < 101}%
{%
\noindent testing \todo{Note \thect}note \thect. \par
}
\end{document}
如果我在上面的示例中选择 revtex4-2 文档类而不是文章,我会收到其他一些错误(我认为这是 revtex4-2 与 forloop 不兼容)
./minimal.tex:13: Output loop---100 consecutive dead cycles.
<argument> ...do {Note \thect }note \thect . \par
\addtocounter {ct}{1}\forl...l.13 }
现在,这里有一个已知问题吗?我的原始文档可能存在什么实际问题?我该如何继续系统地调查这个问题?
让我指出的是,当我向 revtex 文档添加大量待办事项注释时,我会反复看到同样的行为。
答案1
todonotes
我遇到了与和类似的问题revtex-4.2
,在一定数量的注释之后,Undefined control sequence
captype
会出现与 相关的错误(类似于 OP,没有人具体的注意正在触发它)。
把这个看起来具有侵入性的内容放在\def\
序言中可以解决问题:
\makeatletter \def\@captype{figure} \makeatother
对我来说没有任何明显的副作用。也许它有助于调试问题并找到更好的解决方案。