chemmacros:在 \iupac{} 中使用 \mbox{} 会导致运行标题中出现 @x

chemmacros:在 \iupac{} 中使用 \mbox{} 会导致运行标题中出现 @x

我在用化学宏指令在我的论文中存在以下问题:

在或中使用\mbox{}within会导致在运行标题中打印“@x”。此外,还会产生以下错误消息:\iupac{}\section{}\subsection{}

未定义的控制序列。\end{document}
缺少数字,视为零。\end{document}

但是,\mbox{}除了\iupac{}没有任何错误消息之外,其他都运行正常。

这是我的 MWE:

\documentclass[twoside,open=right]{scrreprt}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}

\usepackage{chemmacros}

\begin{document}
    \section{It works fine here: awe\mbox{-}some}
    \cleardoublepage
    \section{It does not work here: \iupac{2,2,6,6\mbox{-}Tetramethylpiperidine}}
\end{document}

为什么这如此重要?复合名称在数字后不应该有换行符。但是,在我的论文中,有些非常长的名称有时会像这样拆分:

...1,1'-
联苯...

我感谢您的帮助!

问候,
basseur

答案1

虽然\mbox通常不被认为是易碎的,但在这种情况下,由于所做的处理,它是易碎的\iupac

您可能使用\protect\mbox{-},但我不推荐这样做。最好为这个连字符定义一个新的宏:

\documentclass[twoside,open=right]{scrreprt}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}

\usepackage{chemmacros}

\NewDocumentCommand{\nbh}{}{\mbox{-}\nobreak\hspace{0pt}}

\begin{document}

\section{It works here: \iupac{2,2,6,6\protect\mbox{-}Tetramethylpiperidine}}

\section{It works here: \iupac{2,2,6,6\nbh Tetramethylpiperidine}}

\parbox[t]{0pt}{It works here: \iupac{2,2,6,6\protect\mbox{-}Tetramethylpiperidine}}
\hfill
\parbox[t]{0pt}{It works here: \iupac{2,2,6,6\nbh Tetramethylpiperidine}}
\hfill\mbox{}

\end{document}

正如您从零宽度框(在所有可行点强制连字)中看到的那样,它\mbox{-}后面不允许换行,而\nbh允许。

在此处输入图片描述

正如软件包作者所建议的,还可以添加简写:

\NewChemIUPACShorthand{=}{\nbh}

允许输入化合物作为2,2,2,6=Tetramethylpiperidine

完整示例:

\documentclass[twoside,open=right]{scrreprt}

\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}

\usepackage{chemmacros}

\NewDocumentCommand{\nbh}{}{\mbox{-}\nobreak\hspace{0pt}}
\NewChemIUPACShorthand{=}{\nbh}

\begin{document}

\section{It works here: \iupac{2,2,6,6=Tetramethylpiperidine}}

\parbox[t]{0pt}{It works here: \iupac{2,2,6,6=Tetramethylpiperidine}}

\end{document}

在此处输入图片描述

相关内容