我遇到了一个相当奇怪的问题:在处理论文中包含文本和\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,错误就会消失。