我遇到了一个非常不寻常的情况(至少对我来说)。
无论出于什么原因,在使用 tex 很长一段时间后,今天我的 latex 突然出现错误消息:
“扫描@newenv 的使用情况时文件结束。”
问题是,它几乎向我拥有的每个 tex 文件都发出相同的消息,而无需修改它们,并且没有以前类似的错误。最终,我发现问题发生在使用“amsmath”包的 tex 文件中。
问题肯定不是文档中缺少“}”。是我的 amsmath 包以某种方式损坏了,还是我遗漏了什么?
答案1
该错误与不完整的声明有关,\newenvironment
因此获取该错误的最自然方式是提供如下文件
\documentclass{article}
\newenvironment{zz}{}{
\begin{document}
\end{document}
其产生的终端输出为
LaTeX2e <2021-06-01> patch level 1
L3 programming layer <2021-08-27>
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/02/12 v1.4n Standard LaTeX document class
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/size10.clo)))
Runaway argument?
{ \par \begin {document} \par \end {document}
! File ended while scanning use of \@newenv.
<inserted text>
\par
但是amsmath
源文件amsmath.sty
确实会使用\newenvironment
,因此如果您以某种方式截断它,则可能会出现相同的错误。
如果我截断文件,那么文档
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\end{document}
产生终端输出
LaTeX2e <2021-06-01> patch level 1
L3 programming layer <2021-08-27>
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/02/12 v1.4n Standard LaTeX document class
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/size10.clo)) (./amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/local/texlive/2021/texmf-dist/tex/latex/amsmath/amsopn.sty))
Runaway argument?
{
! File ended while scanning use of \@newenv.
<inserted text>
\par
需要注意的是日志的不同格式具体
(./amsmath.sty
给出了完整路径amsmath.sty
并在此处显示本地副本。并且在这种情况下没有)
与此匹配(
(错误消息前一行上只有两个)
而不是三个) ,这表明错误是在仍然打开的文件中的代码中触发的,而不是像第一种情况下的文档中的错误。)
amsmath.sty
因此,完整的日志将允许您找到包含损坏的文件\newenviornment
。