
\iupac
クラス内\title
でinsideを使用するとエラーが発生します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}