%20%D1%81%D1%80%D0%B5%D0%B4%D0%B5.png)
В следующем MWE я попытался использовать, align
чтобы гарантировать, что одинаково окрашенные термины расположены друг над другом. Я ищу решение, которое:
- Центрирует цветные термины вокруг общей вертикальной оси, которая в свою очередь центрируется относительно выделенного горизонтального пространства.
- Пусть вся выровненная среда занимает ровно столько горизонтального пространства, сколько необходимо (как в примере 2)
- Дайте каждому уравнению собственный тег/метку (как в примере 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
' s \eqmakebox[<tag>][<align>]{<stuff>}
. Подобные <tag>
s дадут блоки схожего размера (по ширине, соответствующие самому широкому ), где вы также <stuff>
можете изменить ment (по умолчанию 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}
Компилировать дважды в первый раз, так как ширина самого широкого элемента записывается в .aux
и считывается во время последующего запуска. Любые изменения элементов в пределах самого широкого <stuff>
потребуют дополнительных запусков.