Problema Biblatex-apa com mhchem

Problema Biblatex-apa com mhchem

Eu descobri um problema ao usar BibLaTeX' estilo de citação apajunto com mhchemquando 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 BibLaTeXmuda para o Mathmode, embora \cedeva evitar isso:

insira a descrição da imagem aqui

Um simples \protect, como em {\protect\ce{\delta^{18}O}}, resolve esse problema, mas cria outro, porque agora o "O" fica minúsculo.

insira a descrição da imagem aqui

Eu precisaria da versão bastante complicada {\protect\ce{\delta^{18}\MakeUppercase{O}}}para finalmente obter o resultado correto:

insira a descrição da imagem aqui

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 authoryearestilo -, o problema é aparentemente apa-específico. Eu ficaria muito grato por qualquer sugestão sobre como resolver esse problema.

Responder1

biblatex-apaaplica 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}

Autor, A. (2020). Um título com apenas alguma química Mg/Ca. Um Diário, 1, 1–4.//Autor, B. (2020). Um título com uma química δ 18 O mais complicada e um título mais longo. Outro Diário, 8, 2–6.

informação relacionada