![重新定义包 {mhchem} 中的一些简单的 \cee 类型命令,以避免使用该包](https://linux22.com/image/450302/%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%E5%8C%85%20%7Bmhchem%7D%20%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E7%AE%80%E5%8D%95%E7%9A%84%20%5Ccee%20%E7%B1%BB%E5%9E%8B%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%BB%A5%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%E8%AF%A5%E5%8C%85.png)
是否可以\cee
在包中定义一个简单的宏替换{mhchem}
(因为包会导致错误)?谢谢。
答案1
您可以使用该选项[version=1]
加载软件包的早期版本。这样可以修复错误,并且您无需定义命令。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[version=1]{mhchem}
\begin{document}
\cee{CO2 + C -> 2 CO}
\end{document}
另一种方法是使用\ce
以下命令version 4
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[version=4]{mhchem}
\begin{document}
\ce{CO2 + C -> 2 CO}
\end{document}
使用版本 1 的输出图片:
如果你真的想要定义自己的宏:
这是它在包中的遗留选项中的定义方式mhchem
:
\DeclareRobustCommand\cee[1]{\mhchem@cee{#1}}
我猜\mhchem@cee{#1}
是这么定义的:
\ExplSyntaxOn
\cs_new_protected:Npn \mhchem@cee #1 % \__mhchem_cee:n
\ExplSyntaxOff
使用该expl3
包。
然后,\cs_new_protected:Npn
定义为
\ExplSyntaxOn
\cs_new_protected:Npn \__mhchem_regex_peek_compile:Nn #1#2
{
\regex_const:Nn #1 { \A the\ (character|letter)\ (#2) \Z }
}
\cs_new_protected:Npn \__mhchem_regex_peek:NTF #1#2#3
{
\peek_catcode:NTF ##
{#3}
{
\regex_match:NoTF
#1
{ \token_to_meaning:N \l_peek_token } {#2} {#3}
}
}
\ExplSyntaxOff
然后你需要找出这些的定义等等。
我从包中包含了很多内容mhchem
,但仍然无法重现该命令。如果你真的想这样做,你可以看看包装文档在 ctan,特别是.sty 文件。