Zentrieren von Elementen innerhalb ihres zugewiesenen Raums in der align(ed)-Umgebung

Zentrieren von Elementen innerhalb ihres zugewiesenen Raums in der align(ed)-Umgebung

Im folgenden MWE habe ich versucht, aligndafür zu sorgen, dass ähnlich gefärbte Begriffe übereinander angeordnet sind. Ich suche nach einer Lösung, die:

  1. Zentriert farbige Begriffe um eine gemeinsame vertikale Achse, die selbst in Bezug auf den zugewiesenen horizontalen Raum zentriert ist.
  2. Sorgen Sie dafür, dass die gesamte ausgerichtete Umgebung nur so viel horizontalen Platz einnimmt wie nötig (wie in Beispiel 2).
  3. Geben Sie jeder Gleichung ein eigenes Tag/Label (wie in Beispiel 1)
  4. Dies ist nur ein Beispiel von vielen. Ich möchte vermeiden, eine Ausrichtung von „diesem Teil von diesem zu jenem Teil von jenem“ manuell angeben zu müssen, die über das hinausgeht, was ich alignbereits weiß.

Hier ist mein 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}

Meine bisherigen Bemühungen

Hier ist ungefähr das Ergebnis, das ich erreichen möchte:

Bildbeschreibung hier eingeben

Aktualisieren: Die Lösung von @Werner funktioniert großartig, außer bei größeren Ausdrücken kommt es immer noch zu unbeabsichtigten „Streckungen“ in der Ausgabe:

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

Endergebnis: Danke @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}

Bildbeschreibung hier eingeben

Antwort1

Platzieren Sie gleich breite Elemente in einer Box mit ähnlicher Breite, indem Sieeqparbox's \eqmakebox[<tag>][<align>]{<stuff>}. Ähnliche <tag>s ergeben ähnlich große Boxen (in der Breite passend zum breitesten ), wobei Sie auch <stuff>das Element ändern können (Standard ist entre):<align>c

Bildbeschreibung hier eingeben

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

Beim ersten Durchgang zweimal kompilieren, da die breiteste Elementbreite in das Element geschrieben .auxund bei einem nachfolgenden Durchgang eingelesen wird. Alle Änderungen an Elementen innerhalb der breitesten Breite <stuff>erfordern zusätzliche Durchläufe.

verwandte Informationen