我正在尝试在我的论文中排版一些化学方程式,并且我希望化学方程式与常规方程式有唯一的对应关系。
我还需要让其中一些与 -> 对齐。我知道我可以在 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(论坛新手)。
我希望这对大家有所帮助。如果有人能找到更好的方法来实现这一点,请告诉我!
编辑:这是解决这个问题的困难方法。请参阅上面的评论以了解更有效的选项。