
Recibo un error al usar \iupac
inside \title
con la achemso
clase:
\documentclass{achemso}
\usepackage{chemmacros}
\title{Study of \iupac{1,2-di|methyl|benzene}}
\begin{document}
\maketitle
\end{document}
Este es el error:
ABD: EveryShipout initializing macros
! Undefined control sequence.
\l__chemmacros_tmpa_tl ->1,2-
di|methyl|benzene
l.7 \begin{document}
Todo se ve bien con article
, o con el mismo \iupac
comando en el cuerpo y no en el título.
Respuesta1
Esto se solucionó en chemmacros
v5.11 (07/03/2020).
Hay un ligero problema de sincronización con achemso
/ chemmacros
. Primero achemso
redefine \begin{document}
para agregar \maketitle
al final. Luego chemmacros
carga etoolbox
, que luego se agrega \@afterendpreamblehook
a \document
(por lo que ahora \begin{document}
es equivalente a \begin{document}\maketitle\@afterendpreamblehook
).
El problema es que \iupac
activa varios caracteres, y es mejor no hacerlo en el preámbulo, por lo que chemmacros
retrasa esta activación con \AfterEndPreamble
, de modo que las cosas solo obtienen su definición en \@afterendpreamblehook
, para que pueda ver hacia dónde va esto. En el momento en que se usa el título, en \maketitle
, es demasiado pronto para usarlo \iupac
, aunque probablemente no debería ser así.
Con una (probablemente demasiado) vista rápida del código, me parece que chemmacros
debería funcionar \bool_set_true:N \l__chemmacros_in_document_bool
en la definición \chemmacros_iupac:nn
para que todas las definiciones estén ahí cuando sea necesario.
Hay algunas formas de solucionar este problema, pero la más fácil parece cambiar el orden en el que se agregan las cosas \begin{document}
, de modo que el preámbulo "termine" antes \maketitle
(lo cual probablemente sea una buena idea). Para hacer eso, simplemente cargue etoolbox
antes \documentclass{achemso}
:
\RequirePackage{etoolbox}
\documentclass{achemso}
\usepackage{chemmacros}
\title{Study of \iupac{1,2-di|methyl|benzene}}
\begin{document}
\maketitle
\end{document}