Depuração ausente $ inserido após \printbibliography

Depuração ausente $ inserido após \printbibliography

Tenho um problema bastante estranho: depois de trabalhar em uma nova seção da minha tese que inclui texto e \autocite{}citações. Eu recebi o seguinte erro:

2525: Missing $ inserted.

Segundo o TexStudio o erro ocorre em uma linha vazia após\printbibliography

Observe que a remoção \printbibliographyresolve o erro, mas não o meu problema;)

Calculei que o problema deveria estar na seção recém-adicionada e removi toda a seção, as entradas correspondentes em meu .bibarquivo e todos os arquivos auxiliares, porém isso não resolveu o erro.

Infelizmente, não acho que possa incluir um exemplo relevante do meu código, pois meu arquivo tem cerca de 80 páginas e remover a seção editada não resolve meu erro.

Nota: Um documento PDF atualizado é gerado apesar do erro.

DR e pergunta

Qual é a maneira recomendada de depurar esse problema?

Alternativamente:

Se houver detalhes suficientes, qual poderia ser o problema aqui?

Responder1

Dadotest1.bib

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

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

O documento

\documentclass{article}

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

\begin{document}

Blah blah \cite{foo,bar}.


\printbibliography
\end{document}

produz um erro no terminal e no log:

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

o que é um pouco obscuro, mas você pode dizer ao tex para fornecer mais contexto adicionando \errorcontextlines=5(você pode obter mais, mas cuidado com o que pede).

\documentclass{article}

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

\begin{document}

Blah blah \cite{foo,bar}.

\errorcontextlines=5
\printbibliography
\end{document}

Agora produz o erro no terminal e no log:

! 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}
? 

onde a quebra de linha

<argument> Something bad with _
                               x

destaca que o erro ocorre em _ e

<argument> \printfield [titlecase]{title}

mostra que está no campo de título de alguma entrada.

A partir daí, você poderá encontrar a entrada incorreta e mudar para

title={Something bad with \_x},

execute novamente o biber e o pdflatex e o erro desaparecerá.

informação relacionada