方程式引用时出错

方程式引用时出错

我的文档中的一个方程式出现了一个奇怪的问题:每当我清除输出文件以进行新的重新编译时,所有与参考书目相关的文件也必须重新生成,并且这段代码无法编译:

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

相关内容