У меня возникла странная проблема с одним уравнением в моем документе: всякий раз, когда я очищаю выходные файлы, чтобы выполнить новую перекомпиляцию, все файлы, связанные с библиографией, также приходится генерировать заново, и этот фрагмент кода не компилируется:
\begin{equation}
A\stackrel{\cite{A01}}{=}B
\end{equation}
Ошибка:Команда \bfseries недопустима в математическом режиме. A\stackrel{\cite{A01}}{=}
Я понял, что если я отредактирую файл следующим образом:
\begin{equation}
A\stackrel{\cite{A01}}{=}B
% A=B %First compile with this, then with the other!!
\end{equation}
Мне просто нужно закомментировать первую строку, раскомментировать вторую, скомпилировать, вернуть закомментированные строки обратно и перекомпилировать, и все заработает.
В основном это происходит только на свежих компиляциях, после этого это не проблема. Но все равно это раздражает, так как я работаю над своей диссертацией 24/7 и должен делать это как минимум пару раз в день.
Также: при сдаче моей диссертации (включая код LaTeX) кто-то столкнется с этой проблемой, и я бы не хотел заставлять их выяснять, в чем проблема, чтобы иметь возможность скомпилировать мой файл.
Спасибо за любую помощь по этому вопросу!
МВЭ:
\documentclass{scrreprt}
\usepackage{natbib}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents*}{foo.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
\end{filecontents*}
\begin{document}
\begin{equation}
A\stackrel{\cite{A01}}{=}B
% A=B %First compile with this, then with the other!!
\end{equation}
\nocite{*}
\bibliography{foo}
\bibliographystyle{plain}
\end{document}
решение1
В
\begin{equation}
A\stackrel{\cite{A01}}{=}B
\end{equation}
находится \cite{A01}
в математическом режиме. Вы можете легко это проверить, написав что-то вроде x^2
там.
Когда LaTeX пытается обработать цитату в математическом режиме при первом запуске, когда она еще неизвестна, команда \reset@font\bfseries ?
natbib
wants to print вызывает ошибку, которую вы видите: Command \bfseries invalid in math mode
.
Чтобы этого избежать, нужно обязательно вернуться в текстовый режим. Я бы сделал это, загрузив amsmath
и сказав
A\stackrel{\text{\cite{A01}}}{=}B
Кстати, ошибка не возникает при стандартном определении \cite
(т.е. если вы не загружаете natbib
), потому что это печатает вопросительный знак в \hbox
и, таким образом, выходит из математического режима
\hbox{\reset@font\bfseries ?}