在词汇表条目中使用 mhchem 和 chemformula

在词汇表条目中使用 mhchem 和 chemformula

以下 MWE 中,带有化学式定义的词汇表条目按mhchem预期呈现,且没有错误:

\documentclass{article}

\usepackage[modules={all}]{chemmacros}

\usepackage[version=4]{mhchem}

\usepackage[colorlinks=true]{hyperref}

\usepackage[xindy]{glossaries}
\makeglossaries

\newacronym{DMSO}{DMSO}{dimethyl sulfoxide \ce{(CH3)2SO}}

\begin{document}

\glsunsetall

Solvent: \gls{DMSO}

\printglossaries

\end{document}

在此处输入图片描述


但是,当我更改为\ce(例如切换到)时:\ch\newacronymchemformula

\documentclass{article}

\usepackage[modules={all}]{chemmacros}

\usepackage[version=4]{mhchem}

\usepackage[colorlinks=true]{hyperref}

\usepackage[xindy]{glossaries}
\makeglossaries

\newacronym{DMSO}{DMSO}{dimethyl sulfoxide \ch{(CH3)2SO}}

\begin{document}

\glsunsetall

Solvent: \gls{DMSO}

\printglossaries

\end{document}

我收到以下错误:

! Undefined control sequence. \@glo@first ->dimethyl sulfoxide \ch{(CH3)2SO}\glsspace(DMSO)l.12 ...O}{DMSO}{dimethyl sulfoxide \ch{(CH3)2SO}}

pdflatex和都存在问题xelatex(后者显然有不同的软件包集,但给出了相同的错误)。我做错了什么?

答案1

如果任何字段包含脆弱的命令,您需要关闭默认扩展使用\glsnoexpandfields(在定义术语之前)。

(默认情况下,在定义术语时,除namedescription和之外的所有字段symbol的值都会扩展,以允许使用编程方式定义术语的命令。由于历史原因, namedescriptionsymbol字段的扩展默认关闭。)

相关内容