Отладка Отсутствует $ Вставлено после \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, и ошибка исчезнет.

Связанный контент