好的,我很久以前就问过这个问题,但我一直没有解决,所以我将再次尝试我的运气。
我有以下代码。
\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}