
Descubrí un problema al usar BibLaTeX
el estilo de cita apa
junto con mhchem
cuando el archivo bib contiene fórmulas químicas con subíndices/superíndices. El MWE es
\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 contiene sólo una fórmula química simple y funciona perfectamente bien:
@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},
}
La cita 2 contiene un superíndice y conduce a 14 errores:
@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},
}
El problema parece ser que BibLaTeX
cambia al modo Math, aunque \ce
debería evitarlo:
Un simple \protect
, como en {\protect\ce{\delta^{18}O}}
, resuelve ese problema, pero crea otro, porque ahora la "O" se pone en minúscula.
Necesitaría la versión bastante complicada {\protect\ce{\delta^{18}\MakeUppercase{O}}}
para finalmente obtener el resultado correcto:
Dado que el archivo bib real contiene muchas entradas, es comprensible que no me gustaría cambiarlas todas manualmente. Curiosamente, funciona perfectamente bien con el authoryear
estilo, el problema aparentemente es apa
específico. Estaría muy agradecido por cualquier sugerencia sobre cómo abordar este problema.
Respuesta1
biblatex-apa
aplica mayúsculas y minúsculas con \MakeSentenceCase*
. Esa macro es bastante compleja y básicamente sólo puede manejar texto sin formato sin romperse.
Si tiene macros complejas en sus títulos, deberá ocultarlas/protegerlas con un par de llaves.
Las complejas reglas de protección de los aparatos ortopédicos significan que usted necesitadospares de llaves si el contenido entre llaves comienza con una macro y desea conservar la capitalización.
\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}