
클래스 와 함께 \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}