O comando chemmacros \iupac quebra no \title do achemso

O comando chemmacros \iupac quebra no \title do achemso

Estou recebendo um erro ao usar o \iupacinside \titlecom a achemsoclasse:

\documentclass{achemso}
\usepackage{chemmacros}

\title{Study of \iupac{1,2-di|methyl|benzene}}

\begin{document}
\maketitle
\end{document}

Este é o erro:

ABD: EveryShipout initializing macros
! Undefined control sequence.
\l__chemmacros_tmpa_tl ->1,2-
                             di|methyl|benzene
l.7 \begin{document}

Tudo fica bem com article, ou com o mesmo \iupaccomando no corpo e não no título.

Responder1

Isso foi corrigido na chemmacrosv5.11 (07/03/2020).


Há um pequeno problema de tempo com achemso/ chemmacros. Primeiro achemsoredefine \begin{document}para adicionar \maketitleno final. Em seguida , chemmacroscarrega etoolbox, que é anexado \@afterendpreamblehooka \document(então agora \begin{document}é equivalente a \begin{document}\maketitle\@afterendpreamblehook).

O problema é que \iupactorna vários caracteres ativos, e é melhor não fazer isso no preâmbulo, então chemmacrosatrasa esse tornar-ativo com \AfterEndPreamble, para que as coisas só tenham sua definição em \@afterendpreamblehook, para que você possa ver onde isso vai dar. No momento em que o título é usado, em \maketitle, é um pouco cedo para usá-lo \iupac, embora provavelmente não devesse ser.

Com uma visão (provavelmente também) rápida do código, parece-me que chemmacrosdeveria servir \bool_set_true:N \l__chemmacros_in_document_boolna definição \chemmacros_iupac:nnpara que todas as definições estejam lá quando necessário.

Existem algumas maneiras de contornar isso, mas a mais fácil parece trocar a ordem em que as coisas são adicionadas \begin{document}, para que o preâmbulo "termine" antes \maketitle(o que provavelmente é uma boa ideia). Para fazer isso, basta carregar etoolboxantes \documentclass{achemso}:

\RequirePackage{etoolbox}
\documentclass{achemso}
\usepackage{chemmacros}

\title{Study of \iupac{1,2-di|methyl|benzene}}

\begin{document}
\maketitle
\end{document}

informação relacionada