我想使用mhchem
的\ce
命令来排版过渡金属簇。如果我使用\ce{[Ru(cod)($2\text{-}$methylallyl)2]}
,我会得到正确的输出,但这很不合理。我尝试过使用 ,\ce{[Ru(cod)(2-methylallyl)2]}
但这错误地将第一个设置2
为下标。处理这个问题的正确方法是什么?
\documentclass{article}
\usepackage{mhchem}
\begin{document}
Compare \ce{[Ru(cod)($2\text{-}$methylallyl)2]} with \ce{[Ru(cod)(2-methylallyl)2]}.
\end{document}
答案1
这是个好问题!mhchem
的手册没有提到逃避其公式解析,这不仅将设置2
为下标,而且还将破折号(-
)转换为单键。
它确实隐含地提到了一种方法:使用$...$
。因此,通常的预防方法是mhchem
。因此,阻止解析的IE$...$
,在 内使用\ce{}
。因此,您的 hack 并不是真正的 hack,而是在许多情况下可行的方法。不过,不幸的是,要退出数学模式,然后再次返回文本模式\text{}
。在像您这样的情况下, an\mbox{}
可能更好,或者至少更容易和更少地输入:
\ce{[Ru(cod)(\mbox{2-}methylallyl)2]}
另一种方法是省略$...$
并使用\text{}
:mhchem
的公式都已处于数学模式!文档没有宣传这一点(有时会导致意外错误)。
\ce{[Ru(cod)(\text{2-methylallyl})2]}
实际上,还有另一种隐式的方法可以防止将数字设置为下标:mhchem
通过在数字前留一个空白来假装它是一个化学计量因子:
\ce{[Ru(cod)( 2-methylallyl)2]}
然而,这将导致不必要的空间后破折号!这是mhchem
在计量因子后插入的空格,可以通过设置 来验证\mhchemoptions{skip-after-amount=}
。由于-
不是字母(即它没有 catcode 11),因此它被解释为计量因子的一部分。
不同情况的比较:
\documentclass{article}
\usepackage{mhchem}
\begin{document}
\begin{tabular}{ll}
\verb!\ce{[Ru(cod)(2-methylallyl)2]}! & \ce{[Ru(cod)(2-methylallyl)2]} \\
\verb!\ce{[Ru(cod)($2\text{-}$methylallyl)2]}! & \ce{[Ru(cod)($2\text{-}$methylallyl)2]} \\
\verb!\ce{[Ru(cod)( 2-methylallyl)2]}! & \ce{[Ru(cod)( 2-methylallyl)2]} \\
\verb!\mhchemoptions{skip-after-amount=}!: \\
\verb!\ce{[Ru(cod)( 2-methylallyl)2]}! & \mhchemoptions{skip-after-amount=}\ce{[Ru(cod)( 2-methylallyl)2]} \\
\verb!\catcode`\-=11!: \\
\verb!\ce{[Ru(cod)( 2-methylallyl)2]}! & \catcode`\-=11 \ce{[Ru(cod)( 2-methylallyl)2]} \\
\verb!\ce{[Ru(cod)(\mbox{2-}methylallyl)2]}! & \ce{[Ru(cod)(\mbox{2-}methylallyl)2]} \\
\verb!\ce{[Ru(cod)(\text{2-methylallyl})2]}! & \ce{[Ru(cod)(\text{2-methylallyl})2]}
\end{tabular}
\end{document}
编辑 2017/05/30
当前版本不存在该问题mhchem
:
\documentclass{article}
\usepackage[version=4]{mhchem}
\begin{document}
\verb!\ce{[Ru(cod)(2-methylallyl)2]}! \ce{[Ru(cod)(2-methylallyl)2]}
\end{document}
答案2
使用 mhchem v4.00,您可以编写
\documentclass{article}
\usepackage[version=4]{mhchem}
\begin{document}
\ce{[Ru(cod)(2-methylallyl)2]}
\end{document}