在 mhchem 中对齐标记反应

在 mhchem 中对齐标记反应

好的,我很久以前就问过这个问题,但我一直没有解决,所以我将再次尝试我的运气。

我有以下代码。

\documentclass{report}

\usepackage[version=3]{mhchem}  %kemiske ligninger

\makeatletter
\newcounter{reaction}
\renewcommand\thereaction{R\,\thechapter.\arabic{reaction}}
\@addtoreset{reaction}{chapter}
\newcommand\reactiontag%
{\refstepcounter{reaction}\tag{\thereaction}}
\newcommand\reaction@[2][]%
{\begin{equation}\ce{#2}%
    \ifx\@empty#1\@empty\else\label{#1}\fi%
    \reactiontag\end{equation}}
\newcommand\reaction@nonumber[1]%
{\begin{equation*}\ce{#1}\end{equation*}}
\newcommand\reaction%
{\@ifstar{\reaction@nonumber}{\reaction@}}
\makeatother


\begin{document}

\reaction{CH4 + O2 -> CO2 + 2H2O}\\
\reaction{C2H6 + O2 -> 2CO2 + 3H2O}\\
\reaction{C3H8 + O2 -> 4CO2 +5H2O}\\
\reaction{C4H10 + O2 -> 3CO2 + 4H2O}

\end{document}

我想以一种好的方式对齐方程式。但是对齐环境和我尝试的任何其他方法都不起作用。我希望你能帮忙。

真诚的米克尔。

答案1

\documentclass{report}

\usepackage[version=3]{mhchem}

\makeatletter
\newcounter{reaction}
\renewcommand\thereaction{R\,\thechapter.\arabic{reaction}}
\@addtoreset{reaction}{chapter}
\newcommand\reactiontag%
{\refstepcounter{reaction}\tag{\thereaction}}
\newcommand\areaction[2][]%
  {\ce{#2}%
  \ifx\@empty#1\@empty\else\label{#1}\fi%
  \reactiontag}
\makeatother

\begin{document}

\begin{alignat}{3}
\areaction{CH4   &+ O2 ->& CO2  &+ 2H2O}\\
\areaction{C2H6  &+ O2 ->& 2CO2 &+ 3H2O}\\
\areaction{C3H8  &+ O2 ->& 4CO2 &+ 5H2O}\\
\areaction{C4H10 &+ O2 ->& 3CO2 &+ 4H2O}
\end{alignat}

\end{document}

答案2

使用最新版本的chemmacros

\documentclass{report}
\usepackage{chemmacros}[2016/05/04]
\usepackage[version=4]{mhchem}

\chemsetup{
  formula = mhchem ,
  modules  = {reactions}
}

\renewcommand\thereaction{R\,\thechapter.\arabic{reaction}}
\renewtagform{reaction}{(}{)}
\NewChemReaction{reactionsat}[1]{alignat}

\begin{document}

\begin{reactions}
  CH4 + O2   &->  CO2 + 2H2O \\
  C2H6 + O2  &-> 2CO2 + 3H2O \\
  C3H8 + O2  &-> 4CO2 + 5H2O \\
  C4H10 + O2 &-> 3CO2 + 4H2O
\end{reactions}

\begin{reactionsat}{3}
  CH4   &+ O2 ->&  CO2 &+ 2H2O \\
  C2H6  &+ O2 ->& 2CO2 &+ 3H2O \\
  C3H8  &+ O2 ->& 4CO2 &+ 5H2O \\
  C4H10 &+ O2 ->& 3CO2 &+ 4H2O
\end{reactionsat}

\end{document}

在此处输入图片描述

相关内容