
Estou recebendo um erro ao usar o \iupac
inside \title
com a achemso
classe:
\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 \iupac
comando no corpo e não no título.
Responder1
Isso foi corrigido na chemmacros
v5.11 (07/03/2020).
Há um pequeno problema de tempo com achemso
/ chemmacros
. Primeiro achemso
redefine \begin{document}
para adicionar \maketitle
no final. Em seguida , chemmacros
carrega etoolbox
, que é anexado \@afterendpreamblehook
a \document
(então agora \begin{document}
é equivalente a \begin{document}\maketitle\@afterendpreamblehook
).
O problema é que \iupac
torna vários caracteres ativos, e é melhor não fazer isso no preâmbulo, então chemmacros
atrasa 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 chemmacros
deveria servir \bool_set_true:N \l__chemmacros_in_document_bool
na definição \chemmacros_iupac:nn
para 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 etoolbox
antes \documentclass{achemso}
:
\RequirePackage{etoolbox}
\documentclass{achemso}
\usepackage{chemmacros}
\title{Study of \iupac{1,2-di|methyl|benzene}}
\begin{document}
\maketitle
\end{document}