调试 \printbibliography 后插入的缺失 $

调试 \printbibliography 后插入的缺失 $

我遇到了一个相当奇怪的问题:在处理论文中包含文本和\autocite{}引文的新部分后,我收到以下错误:

2525: Missing $ inserted.

根据 TexStudio 的说法,错误发生在以下空行上:\printbibliography

请注意,删除\printbibliography可以解决错误,但不能解决我的问题;)

我认为问题一定出在新添加的部分,并删除了整个部分、我的.bib文件中的相应条目以及所有辅助文件,但这并不能解决错误。

不幸的是,我认为我无法从我的代码中包含相关示例,因为我的文件大约有 80 页长,并且删除编辑的部分并不能解决我的错误。

注意:尽管出现错误,但仍会生成更新的 PDF 文档。

TL;DR 和问题

调试此类问题的推荐方法是什么?

或者:

如果有足够的细节,这里可能是什么问题?

答案1

鉴于test1.bib

@misc{foo,
title={Something bad with _x},
author={me},
date={2024}
}

@misc{bar,
title={Something good},
author={me},
date={2024}
}

文件

\documentclass{article}

\usepackage{biblatex}
\addbibresource{test1.bib}

\begin{document}

Blah blah \cite{foo,bar}.


\printbibliography
\end{document}

在终端上产生错误并记录:

! Missing $ inserted.
<inserted text> 
                $
l.12 \end
         {document}
? 
! Missing $ inserted.
<inserted text> 
                $
l.12 \end
         {document}
? 

这有点模糊,但是你可以通过添加来告诉 tex 提供更多上下文\errorcontextlines=5(你可以获得更多,但要注意你的要求)。

\documentclass{article}

\usepackage{biblatex}
\addbibresource{test1.bib}

\begin{document}

Blah blah \cite{foo,bar}.

\errorcontextlines=5
\printbibliography
\end{document}

现在在终端和日志上产生错误:

! Missing $ inserted.
<inserted text> 
                $
<to be read again> 
                   _
<argument> Something bad with _
                               x
\blx@theformat #1->#1
                     
<argument> ...{\csname abx@field@title\endcsname }
                                                  \blx@endunit 
\@secondoftwo #1#2->#2
                      
...
l.12 \end
         {document}
? 

换行的地方

<argument> Something bad with _
                               x

突出显示错误发生在_

<argument> \printfield [titlecase]{title}

显示它位于某个条目的标题字段中。

从那里你应该能够找到错误的条目并更改为

title={Something bad with \_x},

重新运行 biber 和 pdflatex,错误就会消失。

相关内容