-Umgebung.png)
Im folgenden MWE habe ich versucht, align
dafür zu sorgen, dass ähnlich gefärbte Begriffe übereinander angeordnet sind. Ich suche nach einer Lösung, die:
- Zentriert farbige Begriffe um eine gemeinsame vertikale Achse, die selbst in Bezug auf den zugewiesenen horizontalen Raum zentriert ist.
- Sorgen Sie dafür, dass die gesamte ausgerichtete Umgebung nur so viel horizontalen Platz einnimmt wie nötig (wie in Beispiel 2).
- Geben Sie jeder Gleichung ein eigenes Tag/Label (wie in Beispiel 1)
- 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
align
bereits 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}
Hier ist ungefähr das Ergebnis, das ich erreichen möchte:
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}
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
\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 .aux
und bei einem nachfolgenden Durchgang eingelesen wird. Alle Änderungen an Elementen innerhalb der breitesten Breite <stuff>
erfordern zusätzliche Durchläufe.