У меня довольно странная проблема: после работы над новым разделом в моей диссертации, который включает текст и \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, и ошибка исчезнет.