
Eu descobri um problema ao usar BibLaTeX
' estilo de citação apa
junto com mhchem
quando o arquivo bib contém fórmulas químicas com subscritos/sobrescritos. O MWE é
\documentclass{article}
\usepackage[version=4]{mhchem}
\usepackage[style=apa, backend=biber]{biblatex}
%\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{Bib.bib}
\begin{document}
This is a citation with only simple chemistry: \parencite{Cite1}.
This is a citation with superscript: \parencite{Cite2}.
\printbibliography
\end{document}
Cite1 contém apenas uma fórmula química simples e funciona perfeitamente:
@Article{Cite1,
author = {Author, A.},
date = {2020},
journaltitle = {A Journal},
title = {A title with just some \ce{Mg/Ca} chemistry},
issue = {2},
pages = {1--4},
volume = {1},
timestamp = {2020-03-27},
}
A citação 2 contém sobrescrito e leva a 14 erros:
@Article{Cite2,
author = {Author, B.},
date = {2020},
journaltitle = {Another Journal},
title = {A title with some more complicated \ce{\delta^{18}O} chemistry and a longer title},
issue = {1},
pages = {2--6},
volume = {8},
timestamp = {2020-03-27},
}
O problema parece ser que ele BibLaTeX
muda para o Mathmode, embora \ce
deva evitar isso:
Um simples \protect
, como em {\protect\ce{\delta^{18}O}}
, resolve esse problema, mas cria outro, porque agora o "O" fica minúsculo.
Eu precisaria da versão bastante complicada {\protect\ce{\delta^{18}\MakeUppercase{O}}}
para finalmente obter o resultado correto:
Como o arquivo bib real contém muitas entradas, é compreensível que eu não gostaria de alterar todas elas manualmente. Curiosamente, funciona perfeitamente bem com o authoryear
estilo -, o problema é aparentemente apa
-específico. Eu ficaria muito grato por qualquer sugestão sobre como resolver esse problema.
Responder1
biblatex-apa
aplica maiúsculas e minúsculas com \MakeSentenceCase*
. Essa macro é bastante complexa e basicamente só consegue lidar com texto simples sem quebrar.
Se você tiver macros complexas em seus títulos, precisará ocultá-las/protegê-las com colchetes.
As regras complexas de proteção de aparelhos significam que você precisadoispares de colchetes se o conteúdo entre colchetes começar com uma macro e você quiser manter a capitalização.
\documentclass{article}
\usepackage[version=4]{mhchem}
\usepackage[style=apa, backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@Article{Cite1,
author = {Author, A.},
date = {2020},
journaltitle = {A Journal},
title = {A Title with Just Some {{\ce{Mg/Ca}}} Chemistry},
issue = {2},
pages = {1--4},
volume = {1},
}
@Article{Cite2,
author = {Author, B.},
date = {2020},
journaltitle = {Another Journal},
title = {A Title with Some More Complicated {{\ce{\delta^{18}O}}}
Chemistry and a Longer Title},
issue = {1},
pages = {2--6},
volume = {8},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
This is a citation with only simple chemistry: \parencite{Cite1}.
This is a citation with superscript: \parencite{Cite2}.
\printbibliography
\end{document}