newenvironment 和 chemfig

newenvironment 和 chemfig

由于不能将标签与chemfig包装发生化学反应,唯一的解决方案是将方案置于\begin{equation}和之间\end{equation}

\begin{equation}
\schemestart
2 \ce{H_{2}O} \arrow{<=>} \ce{H_{3}O^{+}} \+ \ce{OH^{-}}
\schemestop
\end{equation}

这个,效果很好。所以,我想创造一个新的环境,叫做“反应”:这是我的尝试

\documentclass[12pt]{article}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}

\newenvironment{reaction}
    {
    \centering
    \begin{equation}
    \schemestart
    \schemestop
    \end{equation}
    }

\begin{document}

    \begin{reaction}
    2 \ce{H_{2}O} \arrow{<=>} \ce{H_{3}O^{+}} \+ \ce{OH^{-}}
    \end{reaction}

\end{document}

这是错误信息:

! Undefined control sequence. 2 \ce{H_{2}O} \arrow

似乎\arrow序列在反应环境中不起作用

我该如何改善新环境?

答案1

您缺少最后一个参数\newenvironment(选择空白行以避免错误),所以您的等式始终为空,并且环境内容紧随其后。

在此处输入图片描述

化学宏似乎不喜欢正常的新环境,因此在这里使用 xparse 来获取环境主体

\documentclass[12pt]{article}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}

\usepackage{xparse}
\NewDocumentEnvironment{reaction}{b}
    {%
    \begin{equation}%
    \schemestart
     #1
    \schemestop
    \end{equation}%
    }

\begin{document}

\begin{reaction}
    2 \ce{H_{2}O} \arrow{<=>} \ce{H_{3}O^{+}} \+ \ce{OH^{-}}
\end{reaction}

\end{document}

相关内容