混合多行和对齐

混合多行和对齐

我试图将第一个方程分成两条线,第一条线左对齐,第二条线右对齐,方程编号位于这两行的中心,然后第二个(编号)方程在某一特定点与第二行的符号对齐。

我搜索了一下,但没有找到针对这种情况的非手动间距解决方案。

代码如下

\documentclass{article}

\usepackage{mathtools}
\usepackage{mhchem}

\begin{document}

\begin{align}
    \begin{multlined}[.88\linewidth]
        \ce{2CaCO3 + 5C + 2CaC2 + 4H2O + 2Ca(OH)2 + 2CO2} \\
        \ce{&-> 2CaC2 + 3CO2 + 2Ca(OH)2 + 2C2H2 + 2CaCO3 + 2H2O}
    \end{multlined}\\
    \ce{5C + 2H2O &-> CO2 + 2C2H2}.
\end{align}

\end{document}

当然,这不起作用。如果起作用,它应该看起来像这样:

2 CaCO₃ + 5 C + 2 CaC₂ + 4 H₂O + 2 Ca(OH)₂ + 2 CO₂
                         ——⟶ 2 CaC₂ + 3 CO₂ + 2 Ca(OH)₂ + 2 C₂H₂ + 2 CaCO₃ + 2 H₂O
             5 C + 2 H₂O ——⟶ CO₂ + 2 C₂H₂

前两行有一个方程编号,垂直居中,最后一行有一个方程编号。

该代码还提供了手动解决方案,大致给出了我期望的结果

\documentclass{article}

\usepackage[margin=2cm]{geometry}
\usepackage{mathtools}
\usepackage{mhchem}

\begin{document}

\begin{align}
    \begin{split}
        \ce{2CaCO3 + 5C + 2CaC2 + 4H2O& + 2Ca(OH)2 + 2CO2} \\                                                                                                                                                                                                                  
        \ce{&-> 2CaC2 + 3CO2 + 2Ca(OH)2 + 2C2H2 + 2CaCO3 + 2H2O}
    \end{split}\\
    \ce{5C + 2H2O &-> CO2 + 2C2H2}.
\end{align}

\end{document}

工作手册示例 但它需要手动找到放置第一个的位置,&所以我正在寻找一个更通用的解决方案。

只要它们符合我在第一段中提出的要求(例如,在使用分割时左/右对齐第一个方程式),我就会接受使用其他环境的解决方案。

答案1

我会用 来做split。第一行被人为地做成与最后一行箭头前的部分相同的大小。

\documentclass{article}
\usepackage{geometry}

\usepackage{mathtools}
\usepackage[version=4]{mhchem}

\begin{document}

\begin{align}
\begin{split}
\sbox0{\ce{5C + 2H2O}}
\makebox[\wd0][l]{\ce{2CaCO3 + 5C + 2CaC2 + 4H2O + 2Ca(OH)2 + 2CO2}} \\
\ce{&-> 2CaC2 + 3CO2 + 2Ca(OH)2 + 2C2H2 + 2CaCO3 + 2H2O}
\end{split}\\
\ce{5C + 2H2O &-> CO2 + 2C2H2}.
\end{align}

\end{document}

在此处输入图片描述

我加载是geometry因为反应不适合标准文本宽度article

以下是将第一行移动到左边距的方法。

\documentclass{article}
\usepackage[margin=2cm,showframe]{geometry}

\usepackage{mathtools}
\usepackage[version=4]{mhchem}

\makeatletter
\def\column@width#1{\ifcase\@xp#1\maxcolumn@widths\fi}
\def\shift@{%
  \ifmeasuring@
    0pt
  \else
    \dimexpr(\displaywidth+\column@width{1}-\column@width{2})/2\relax
  \fi
}
\def\movetoleft#1{%
  &\makebox[0pt][l]{\hspace{-\shift@}#1}%
}
\makeatother

\begin{document}

\begin{align}
\begin{split}
\movetoleft{\ce{2CaCO3 + 5C + 2CaC2 + 4H2O + 2Ca(OH)2 + 2CO2}} \\
\ce{&-> 2CaC2 + 3CO2 + 2Ca(OH)2 + 2C2H2 + 2CaCO3 + 2H2O}
\end{split}\\
\ce{5C + 2H2O &-> CO2 + 2C2H2}.
\end{align}

\end{document}

在此处输入图片描述

相关内容