align(ed)環境内の割り当てられたスペース内で要素を中央揃えする

align(ed)環境内の割り当てられたスペース内で要素を中央揃えする

align次の MWE では、同様の色の用語が互いに重なるようにするために使用してみました。次のような解決策を探しています。

  1. 割り当てられた水平スペースを基準にして、色付きの用語を共同垂直軸の周囲に中央揃えします。
  2. 整列した環境全体が、必要な水平方向のスペースのみを占めるようにします(例2を参照)。
  3. 各方程式に独自のタグ/ラベルを付ける(例1のように)
  4. これらは、多くの例の 1 つにすぎませんが、すでにわかっている範囲を超えて、「この部分からこの部分へ」という配置を手動で指定する必要がないようにしたいと思いますalign

これが私の MWE です:

\documentclass{article} 
\usepackage{amsmath} 
\usepackage{xcolor} 
\newcommand{\COne}{\color{red}}
\newcommand{\CTwo}{\color{blue}}

\begin{document}
\begin{align}
( \varphi \rightarrow (&{\COne\psi} &\rightarrow {\CTwo\chi} ) )   \\
( \varphi \rightarrow ( &{\COne( \varphi \rightarrow \varphi )} &\rightarrow{\CTwo\varphi} ) )
\end{align}

\begin{equation}
\begin{aligned}
( \varphi \rightarrow (&{\COne\psi} &&\rightarrow {\CTwo\chi} ) )   \\
( \varphi \rightarrow ( &{\COne( \varphi \rightarrow \varphi )} &&\rightarrow{\CTwo\varphi} ) )
\end{aligned}
\end{equation}

\end{document}

これまでの私の努力

私が求めている結果はだいたい次のようになります:

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

アップデート: @Werner の解決策はうまく機能しますが、大きな式を除いて、出力に意図しない「伸縮」がまだ発生します。

\begin{align}
( \varphi \rightarrow (&\eqmakebox[a]{$\COne\psi$} \rightarrow {\CTwo\chi} )  \rightarrow 
 ( ( \varphi \rightarrow &\eqmakebox[b]{$\COne\psi$} ) \rightarrow ( \varphi \rightarrow{\CTwo \chi} ) )  \\
( \varphi \rightarrow ( &\eqmakebox[a]{$\COne( \varphi \rightarrow \varphi )$} \rightarrow  {\CTwo\varphi} ) ) \rightarrow  
( ( \varphi \rightarrow &\eqmakebox[b]{$\COne( \varphi \rightarrow \varphi ) $}) \rightarrow ( \varphi \rightarrow {\CTwo\varphi} ) )
\end{align}

最終結果: @Werner さん、ありがとうございます。

\documentclass{article} 
\usepackage{amsmath,eqparbox,xcolor} 
\newcommand{\COne}{\color{red}}
\newcommand{\CTwo}{\color{blue}}

\begin{document}

\begin{alignat}{5}
\varphi \rightarrow (&\eqmakebox[a]{$\COne\psi$} &\rightarrow &{\CTwo\chi} ) &\rightarrow 
( ( \varphi \rightarrow &\eqmakebox[b]{$\COne\psi$} ) \rightarrow ( \varphi \rightarrow{\CTwo \chi} )  \\
\varphi \rightarrow ( &\eqmakebox[a]{$\COne( \varphi \rightarrow \varphi )$} &\rightarrow  &{\CTwo\varphi} ) ) &\rightarrow  
( ( \varphi \rightarrow &\eqmakebox[b]{$\COne( \varphi \rightarrow \varphi ) $}) \rightarrow ( \varphi \rightarrow {\CTwo\varphi} ) 
\end{alignat}


\end{document}

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

答え1

同じ幅のアイテムを同じ幅のボックス内に配置するには、eqparboxの です\eqmakebox[<tag>][<align>]{<stuff>}。同様の<tag>は、同様のサイズのボックス (幅方向、最も広い に一致<stuff>) を生成します。ここで、 ment も変更できます<align>(デフォルトはcentre)。

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

\documentclass{article}
\usepackage{amsmath,xcolor,eqparbox}
\newcommand{\COne}{\color{red}}
\newcommand{\CTwo}{\color{blue}}

\begin{document}

\begin{align}
  ( \varphi \rightarrow ( &{\COne\psi} &\rightarrow {\CTwo\chi} ) )   \\
  ( \varphi \rightarrow ( &{\COne( \varphi \rightarrow \varphi )} &\rightarrow{\CTwo\varphi} ) )
\end{align}

\begin{equation}
  \begin{aligned}
  ( \varphi \rightarrow ( &{\COne\psi} &&\rightarrow {\CTwo\chi} ) )   \\
  ( \varphi \rightarrow ( &{\COne( \varphi \rightarrow \varphi )} &&\rightarrow{\CTwo\varphi} ) )
  \end{aligned}
\end{equation}

\begin{align}
  ( \varphi \rightarrow ( &\eqmakebox[psi]{$\COne\psi$} \rightarrow {\CTwo\chi} ) )   \\
  ( \varphi \rightarrow ( &\eqmakebox[psi]{$\COne( \varphi \rightarrow \varphi )$}\rightarrow{\CTwo\varphi} ) )
\end{align}

\end{document}

最も広い要素幅が書き込まれ.aux、その後の実行中に読み込まれるため、最初の実行では 2 回コンパイルします。最も広い要素内の要素を変更する場合は、<stuff>追加の実行が必要になります。

関連情報