当我尝试使用热力学状态(以及通过自定义状态变量\DeclareChemState
)时,会引发参数错误chemmacros
的reactions
环境。
问题末尾提供的 MWE 将在使用最新版本的 TeX Live 2012 排版时(在提出此问题时)重现以下错误。
错误:
[...] Argument of \chemformula_superscript:n has an extra }.
<inserted text>
\par
l.8 \end{reactions}
妇女权利委员会:
\documentclass[12pt]{article}
\usepackage{chemmacros}
\DeclareChemState[delta=false]{StdElPot}{E}{\volt}
\begin{document}
\begin{reactions}
Pd\pch[2]\aq{} + 2 \el{} &<=> Pd\sld{} &&\StdElPot{0.83} \\
PdCl4\mch[2]\aq{} + 2 \el{} &<=> Pd\sld{} + 4 Cl\mch\aq{} &&\StdElPot{0.64}
\end{reactions}
\end{document}
答案1
该\ch{}
命令将输入中的数字视为下标前命令展开。引用手册chemformula
:
复合命令允许使用 [...] ,但是,如果命令要求数字作为参数,例如 [...][
\hspace{}
] ,则直接使用将失败。这是因为在命令展开之前,数字被视为下标。
这也适用于\StdElPot
。——chemmacros
或者更确切地说,chemformula
执行公式解析的包——有一种解决方法:可以通过将输入放在'...'
或之间来转义输入"..."
。
如果您在
" "
或之间放置某些内容,' '
则输入将被视为普通文本 [...]
您的示例的首选语法如下:
\documentclass[12pt]{article}
\usepackage{chemmacros}
\chemsetup{
modules={reactions,thermodynamics}
}
\NewChemState\StdElPot{
symbol=E , subscript-pos=right , pre = , unit=\volt
}
\begin{document}
\begin{reactions}
Pd^2+ \aq{} + 2 e- &<=> Pd\sld{} && "\StdElPot{0.83}" \\
PdCl4^2- \aq{} + 2 e- &<=> Pd\sld{} + 4 Cl- \aq{} && "\StdElPot{0.64}"
\end{reactions}
\end{document}