重新定义包 {mhchem} 中的一些简单的 \cee 类型命令,以避免使用该包

重新定义包 {mhchem} 中的一些简单的 \cee 类型命令,以避免使用该包

是否可以\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 文件

相关内容