当使用以下代码时,一切都正常:
\documentclass{article}
\usepackage{siunitx}
\usepackage[modules=all]{chemmacros}
\begin{document}
\ch{!(colorless)( VO3- ) ->[\SI{-0.255}{V}][ Fe^2+ ] !(blue)( VO^2+ )}
\end{document}
但我需要在电位和还原剂之间切换位置:
\documentclass{article}
\usepackage{siunitx}
\usepackage[modules=all]{chemmacros}
\begin{document}
\ch{!(colorless)( VO3- ) ->[ Fe^2+ ][\SI{-0.255}{V}] !(blue)( VO^2+ )}
\end{document}
编译失败并出现以下错误:Extra }, or forgotten \endgroup. ... Fe^2+ ][\SI{-0.255}{V}] !(blue)( VO^2+ )}
。这里发生了什么,我如何siunitx
在标签中正确使用语法以下箭?
答案1
一旦你了解了原因,就会明白。记住,chemformula
它的输入分为每一个空间!让我们看看不同的输入和chemformula
看到的内容:
案例->[\SI{-0.255}{V}][ Fe^2+ ]
chemformula
解析分为三部分:
->[\SI{-0.255}{V}][
– 这被检测为箭这意味着除了->
用箭头命令替换之外,一切都保持原样Fe^2+
– 这被检测为化学式并如此对待]
– 这被检测为化学式并如此对待
案例->[ Fe^2+ ][\SI{-0.255}{V}]
chemformula
解析分为三部分:
->[
– 这被检测为箭Fe^2+
– 这被检测为化学式][\SI{-0.255}{V}]
– 这被检测为化学式并受到同等对待;例如,这意味着数字将根据手册中解释的规则转换为下标和上标!因此\SI
无法再解析其参数!
案例->[ Fe^2+ ][ "\SI{-0.255}{V}" ]
chemformula
解析中分为五个部分:
->[
– 这被检测为箭Fe^2+
– 这被检测为化学式][
– 这被检测为化学式"\SI{-0.255}{V}"
– 这被检测为转义文本;"
被剥离,其余部分保持原样]
– 这被检测为化学式
有一个基本规则:不能干净地检测为特殊输入(文本,化学计量因子,箭头等)的部分始终被视为化学式。