在多文件文档中查找错误

在多文件文档中查找错误

当我尝试编译多文件文档时收到以下错误:

! Extra }, or forgotten \endgroup. l.335

当然,这种情况时有发生。但是,日志并未显示错误发生在哪个文件中。大多数情况下,日志都会显示,或者我可以根据上下文找到错误,但在这里,错误似乎可能出现在第 335 行的任何地方。我查看了文档的所有文件,并查看了第 335 行及其周围区域,但找不到此错误。

我已经看过了问答并发现最后加载的文件name-master.bbl在第 335 行似乎没有任何错误。否则,在该问答中,问题似乎与 OP 使用的旧版本 tex 作曲家更相关。

在这件事发生之前,我曾是将 biblatexcite命令从[natbib=true](例如\citep)转换为常规 biblatex 引用命令(例如\parencite{foo})。如果我的 .bib 文件中有不成对的括号(我用它来保持标题大写等),Jabref 将抛出一个错误,并且我已经浏览了所有新更新的引用,但仍然收到此错误。

有人对如何追踪这个问题有其他建议吗?我无法编写我的论文!!

答案1

[嗯...输入这个答案后,我注意到问题已经在评论中得到了解决...如果没有兴趣,也许我会删除,特别是因为我没有提到bbl文件,尽管它们出现在日志中,如下所述。]

每次 (La)TeX 打开文件时,它都会写入日志文件,并在关闭此文件时(filename...打印匹配项。这适用于您使用的任何文件或任何包或样式文件。除此之外,每当创建页面时,都会打印到日志文件中。因此,您始终可以从日志文件中知道有问题的行号出现在哪个文件中。...)\input\includex[x]

例如,假设我有这个文件(包含的文件 a.tex、b.tex、c.tex 都是空的):

\documentclass{article}
\usepackage{blindtext}
\begin{document}

\blindtext
\input a   % an example input file
\blindtext
\include b % an example include file
\blindtext
\input c
\blindtext

\end{document}

然后我的日志文件包含:

(/path to/t.tex
...
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/article.cls
(/usr/local/texlive/2014/texmf-dist/tex/latex/base/size10.clo
...
)
...
) (/usr/local/texlive/2014/texmf-dist/tex/latex/blindtext/blindtext.sty
(/usr/local/texlive/2014/texmf-dist/tex/latex/tools/xspace.sty
Package: xspace 2009/10/20 v1.13 Space after command names (DPC,MH)
)
) (./t.aux)
...
(./a.tex) 
[1 {/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
...
(./b.tex) (./c.tex) [2]
(./t.aux (./b.aux)) )

我有点过分了,我摘录了所有包含文件的日志,只是为了说明 LaTeX 每次加载文件时都会告诉你。更重要的是,我发现,TeX 还会在生成页码时告诉你页码——因为我通常知道从页码到输入文件的映射,我发现当我有许多包含文件时,这是判断问题所在最简单的方法。

如果您从命令行手动运行 tex,则很容易看到打印出来的信息。如果您通过编辑器自动运行,则仍然可以“手动”查看日志文件 - 尽管即使您使用多个文件,编辑器也很可能直接带您到有问题的行(vim 可以)。

相关内容