デバッグ \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 を再実行すると、エラーはなくなります。

関連情報