chemmacros \iupac 명령이 achemso의 \title에서 중단됩니다.

chemmacros \iupac 명령이 achemso의 \title에서 중단됩니다.

클래스 와 함께 \iupac내부를 사용할 때 오류가 발생합니다 .\titleachemso

\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}\maketitlechemmacrosetoolbox\@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}

관련 정보