我有一个简单的 TeX 文件,像这样
\documentclass{article}
\begin{document}
\def\printcsnameof #1{
\escapechar=-1
\string #1
}
\printcsnameof \test
\end{document}
当我第一次编译它时,它运行良好并打印test
在页面上。
然而,从第二次运行开始,它引发了错误
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
->\errmessage LaTeX Error: Missing \protect \begin {document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help\@err@
l.2 g
def @abspage@last{1}
?
到底是怎么回事?
答案1
问题是代码escapechar
全局修改了的值,这使得在文档末尾运行的写入文件的代码的行为.aux
不正确。
如果你检查该.aux
文件,内容将是
\relax
gdef @abspage@last{1}
解决方案:
修改代码,使其不会
escapechar
全局修改,例如\documentclass{article} \begin{document} \def\printcsnameof #1{% {% \escapechar=-1 \string #1% }% } \printcsnameof \test \end{document}
删除旧
.aux
文件(否则您将不断收到错误消息)重新编译该文件。
使用更正后的文件,.aux
文件内容应为
\relax
\gdef \@abspage@last{1}
与\
之前gdef
和@abspage@last
。