方程中的水平间距

方程中的水平间距

我试图复制与普通数学模式为简单多项式公式提供的完全相同的输出,但使用是\matrix因为我想右对齐多项式中的项或将其中一些项留空。\alignat由于其他原因,我无法使用任何一个。

我取得了一些进展,但间距很难正确。在下图中,您可以看到纯数学模式下的输出,使用 \alignat和我尝试使用\matrix(我使用便利宏 \arr)。

在此处输入图片描述

如您所见,我的版本有些偏差。我认为最大的错误在于等号周围的间距。

\documentclass[a4paper,11pt]{article}
\usepackage{amsmath}
\makeatletter
% http://tex.stackexchange.com/questions/2233/
\renewcommand*\env@matrix[1][*\c@MaxMatrixCols r]{%
  \hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{#1}}
\newcommand{\arr}{\@ifstar\arr@star\arr@nostar}
\newcommand{\arr@nostar}[2][*\c@MaxMatrixCols r]{%
  \begin{bmatrix}[#1]#2\end{bmatrix}%
}
\newcommand{\arr@star}[2][*\c@MaxMatrixCols r]{%
  \begin{matrix}[#1]#2\end{matrix}%
}
\makeatother

\begin{document}

\begin{equation}
  C + 3D = 2
\end{equation}
%
\begin{alignat}{3}
  C  &+{}& 3D &={}& 2 & \notag
\end{alignat}
%
\begin{equation}
  \arr*[@{}r@{\,}c@{\,}r@{\,}c@{\,}r@{}]{
    C  &+{}& 3D &=& 2 \notag
  }
\end{equation}

\end{document}

答案1

您会考虑将表格堆栈作为一种选择吗?

在这里我使用一次性调用进行设置:

\usepackage{tabstackengine}
\stackMath
\setstacktabulargap{0pt}
\TABbinary

然后我使用模仿表格分隔符的语法来调用各种形式的表格堆栈之一。

\documentclass[a4paper,11pt]{article}
\usepackage{amsmath}
\usepackage{tabstackengine}
\stackMath
\setstacktabulargap{0pt}
\TABbinary
\begin{document}

\begin{equation}
  C + 3D = 2
\end{equation}
%
\begin{alignat}{3}
  C  &+{}& 3D &={}& 2 & \notag
\end{alignat}
%
\begin{equation}
  \tabularCenterstack{rcrcr}{
  C&+&3D&=&2
  }
\end{equation}
\begin{equation}
  \tabularCenterstack{rcrcr}{
  C&+&3D&=&2\\
  4C&-&D&=&27
  }
\end{equation}
\end{document}

在此处输入图片描述

相关内容