方程式の水平方向の間隔

方程式の水平方向の間隔

単純な多項式に対して、単純な数式モードとまったく同じ出力を再現しようとしていますが、多項式の項を右揃えにしたり、一部を空白のままにしたりしたいので、 を使用しています。他の理由でどちらも\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

表形式のスタックをオプションとして検討しますか?

ここでは、1 回限りの呼び出しで設定しました。

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

次に、表形式の区切り文字を模倣した構文を使用して、さまざまな形式の表形式スタックの 1 つを呼び出します。

\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}

ここに画像の説明を入力してください

関連情報