在类\iupac
内部使用时出现错误:\title
achemso
\documentclass{achemso}
\usepackage{chemmacros}
\title{Study of \iupac{1,2-di|methyl|benzene}}
\begin{document}
\maketitle
\end{document}
这是错误:
ABD: EveryShipout initializing macros
! Undefined control sequence.
\l__chemmacros_tmpa_tl ->1,2-
di|methyl|benzene
l.7 \begin{document}
使用 ,或者在正文中article
使用相同的命令而不是在标题中使用,一切看起来都很好。\iupac
答案1
chemmacros
此问题已在v5.11 (2020/03/07)中修复。
achemso
/存在轻微的时间问题chemmacros
。首先achemso
重新定义为在末尾\begin{document}
添加。然后加载,然后附加到(因此现在相当于)。\maketitle
chemmacros
etoolbox
\@afterendpreamblehook
\document
\begin{document}
\begin{document}\maketitle\@afterendpreamblehook
问题是\iupac
使多个字符处于活动状态,最好不要在序言中这样做,因此chemmacros
使用 延迟了此活动状态\AfterEndPreamble
,因此事物仅在 中得到定义\@afterendpreamblehook
,因此您可以看到这将走向何方。在 中使用标题时\maketitle
,使用 有点太早了\iupac
,尽管可能不应该这样。
通过(可能过于)快速地查看代码,在我看来应该在定义中这样chemmacros
做,以便在需要时所有定义都存在。\bool_set_true:N \l__chemmacros_in_document_bool
\chemmacros_iupac:nn
有几种方法可以解决这个问题,但最简单的方法似乎是交换添加到 的顺序\begin{document}
,以便前言在 之前“结束” \maketitle
(这可能是一个好主意)。要做到这一点,只需etoolbox
在 之前加载\documentclass{achemso}
:
\RequirePackage{etoolbox}
\documentclass{achemso}
\usepackage{chemmacros}
\title{Study of \iupac{1,2-di|methyl|benzene}}
\begin{document}
\maketitle
\end{document}