我的文档中的一个方程式出现了一个奇怪的问题:每当我清除输出文件以进行新的重新编译时,所有与参考书目相关的文件也必须重新生成,并且这段代码无法编译:
\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 小时都在写论文,每天至少要写几次。
另外:当我提交论文(包括 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
想要打印会导致您看到的错误:Command \bfseries invalid in math mode
。
避免这种情况的方法是确保返回到文本模式。我会通过加载amsmath
并说
A\stackrel{\text{\cite{A01}}}{=}B
顺便说一句,错误不会发生在标准定义中\cite
(即如果你不加载natbib
),因为这会在 a 中打印问号\hbox
,从而打破数学模式
\hbox{\reset@font\bfseries ?}