以下 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
\newacronym
chemformula
\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
(在定义术语之前)。
(默认情况下,在定义术语时,除name
、description
和之外的所有字段symbol
的值都会扩展,以允许使用编程方式定义术语的命令。由于历史原因, name
、description
和symbol
字段的扩展默认关闭。)