用独特的计数器创建新类型的对齐环境

用独特的计数器创建新类型的对齐环境

我正在尝试在我的论文中排版一些化学方程式,并且我希望化学方程式与常规方程式有唯一的对应关系。

我还需要让其中一些与 -> 对齐。我知道我可以在 align 环境中使用 mhchem 包中的 \cee{},但我不知道如何分离计数器。

我尝试创建一个新环境,但根本无法让它正常工作(第一次尝试……)。我希望有一个对齐的环境“化学品”可以完成所有这些工作。

提前感谢你的帮助!

答案1

因此,我弄清楚了如何通过创建一个新环境(以子方程实现为模型)来实现我想要的效果。此外,我还创建了一个“子反应”环境。

\documentclass{report}

\usepackage[version=3]{mhchem}
\usepackage{amsmath}
\usepackage[english]{babel}

\newcounter{reaction}
\renewcommand\thereaction{C\,\thechapter.\arabic{reaction}}

\renewcommand{\thereaction}{C\,\thechapter.\arabic{reaction}}
\newcommand{\thealignedreaction}{C\,\thechapter.\arabic{equation}}

\makeatletter
\newenvironment{reactionalign}{%
    \mathchardef\c@mainequation\c@equation
    \protected@edef\themainequation{\theequation}%
    \let\theequation\thealignedreaction
    \global\c@equation\c@reaction
    }%
    {
    \global\c@equation\c@mainequation
    \global\@ignoretrue
    }
\makeatother


\newcommand{\thesubreaction}{\themainreaction\alph{equation}}

\makeatletter   
\newenvironment{subreactions}{%
    \refstepcounter{reaction}%
    \mathchardef\c@mainequation\c@equation
    \protected@edef\themainequation{\theequation}%
    \mathchardef\c@mainreaction\c@reaction
    \protected@edef\themainreaction{\thereaction}%
    \let\theequation\thesubreaction
    \global\c@equation\z@
    }{%
    \global\c@reaction\c@mainreaction
    \global\c@equation\c@mainequation
    \global\@ignoretrue
    }
\makeatother

%%%%%%%%%%%%%

\begin{document}
\chapter{Example}
\begin{equation}
    A = B
\end{equation}

\begin{subreactions}
    \begin{align}
        \cee{2H2 + O2 &-> 2H2O}\\
        \cee{CH4 + 2O2 &-> 2H2O + CO2}
    \end{align}
\end{subreactions}

\begin{reactionalign}
    \begin{align}
        \cee{H2O2 + H2 &-> 3H2O}\\
        \cee{2C2H6 + 7O2 -> 4CO2 + 6H2O}
    \end{align}
\end{reactionalign}

\begin{equation}
    C = D
\end{equation}
\end{document}

这非常完美,保留了方程计数器的正确最后值,同时也与反应计数器配合良好。

抱歉,代码有点乱。我不明白如何发布 MWE(论坛新手)。

我希望这对大家有所帮助。如果有人能找到更好的方法来实现这一点,请告诉我!

编辑:这是解决这个问题的困难方法。请参阅上面的评论以了解更有效的选项。

相关内容