chemmacros \iupac-Befehl bricht in achemso's \title ab

chemmacros \iupac-Befehl bricht in achemso's \title ab

\iupacBei der Verwendung von inside \titlemit der achemsoKlasse wird ein Fehler angezeigt :

\documentclass{achemso}
\usepackage{chemmacros}

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

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

Dies ist der Fehler:

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

Alles sieht gut aus mit articleoder mit dem gleichen \iupacBefehl im Text und nicht im Titel.

Antwort1

Dies wurde in chemmacrosv5.11 (07.03.2020) behoben.


Es gibt ein kleines Timingproblem mit achemso/ chemmacros. Zuerst achemsowird neu definiert , um am Ende \begin{document}hinzuzufügen . Dann wird geladen , was dann an angehängt wird (ist also jetzt gleichwertig mit ).\maketitlechemmacrosetoolbox\@afterendpreamblehook\document\begin{document}\begin{document}\maketitle\@afterendpreamblehook

Das Problem ist, dass \iupacmehrere Charaktere aktiviert werden, und das sollte man besser nicht in der Präambel tun, also chemmacrosverzögert man dieses Aktivieren mit \AfterEndPreamble, sodass die Dinge ihre Definition erst in bekommen \@afterendpreamblehook, damit Sie sehen können, worauf das hinausläuft. Zu dem Zeitpunkt, an dem der Titel in verwendet wird, \maketitleist es ein bisschen zu früh, um zu verwenden \iupac, obwohl es das wahrscheinlich nicht sein sollte.

Bei einem (wahrscheinlich zu) schnellen Blick auf den Code scheint mir dies in der Definition von chemmacroszu tun , damit bei Bedarf alle Definitionen vorhanden sind.\bool_set_true:N \l__chemmacros_in_document_bool\chemmacros_iupac:nn

Es gibt ein paar Möglichkeiten, dies zu umgehen, aber die einfachste scheint zu sein, die Reihenfolge zu ändern, in der Dinge hinzugefügt werden \begin{document}, so dass die Präambel vorher „endet“ \maketitle(was wahrscheinlich eine gute Idee ist). Dazu laden Sie einfach etoolboxvorher \documentclass{achemso}:

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

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

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

verwandte Informationen