Eu tenho um problema estranho com uma equação no meu documento: sempre que eu limpo os arquivos de saída para fazer uma nova recompilação, todos os arquivos relacionados à bibliografia também precisam ser regenerados, e este trecho de código falha na compilação:
\begin{equation}
A\stackrel{\cite{A01}}{=}B
\end{equation}
Erro:Comando \bfseries inválido no modo matemático. A\stackrel{\cite{A01}}{=}
Eu descobri que se eu editar o arquivo assim:
\begin{equation}
A\stackrel{\cite{A01}}{=}B
% A=B %First compile with this, then with the other!!
\end{equation}
Só preciso comentar a primeira linha, descomentar a segunda, compilar, voltar as linhas comentadas e recompilar e funciona.
Basicamente, ele falha apenas em compilações novas, depois disso não há problema. Mas ainda assim é chato, já que estou trabalhando 24 horas por dia, 7 dias por semana na minha tese e tenho que fazer isso pelo menos algumas vezes por dia.
Além disso: ao entregar minha tese (incluindo o código LaTeX) alguém se deparará com esse problema, e eu gostaria de não forçá-lo a descobrir o que está errado para poder compilar meu arquivo.
Obrigado por qualquer ajuda sobre isso!
MWE:
\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}
Responder1
Em
\begin{equation}
A\stackrel{\cite{A01}}{=}B
\end{equation}
o \cite{A01}
está no modo matemático. Você pode verificar isso facilmente escrevendo algo como x^2
aqui.
Quando o LaTeX tenta processar a citação em modo matemático na primeira execução, quando ela ainda é desconhecida, o \reset@font\bfseries ?
natbib
desejo de imprimir causa o erro que você vê: Command \bfseries invalid in math mode
.
A maneira de evitar isso é voltar ao modo de texto. Eu faria isso carregando amsmath
e dizendo
A\stackrel{\text{\cite{A01}}}{=}B
Aliás, o erro não acontece com a definição padrão de \cite
(ou seja, se você não carregar natbib
), porque isso imprime o ponto de interrogação em a \hbox
e, portanto, sai do modo matemático
\hbox{\reset@font\bfseries ?}