align(ed) 환경에서 할당된 공간 내에서 요소를 중앙에 배치

align(ed) 환경에서 할당된 공간 내에서 요소를 중앙에 배치

align다음 MWE에서는 유사한 색상의 용어가 서로 위에 위치하는지 확인하는 데 사용하려고 했습니다 . 나는 다음과 같은 해결책을 찾고 있습니다.

  1. 색상이 지정된 용어는 할당된 수평 공간을 기준으로 중앙에 있는 공동 수직 축을 중심으로 정렬됩니다.
  2. 전체 정렬된 환경이 필요한 만큼만 수평 공간을 차지하도록 합니다(예 2에서와 같이).
  3. 각 방정식에 고유한 태그/레이블을 지정합니다(예 1에서와 같이).
  4. 이것들은 많은 것 중 하나의 예입니다. 이미 알고 있는 것 이상으로 "이 부분에서 저 부분까지"의 정렬을 수동으로 지정하지 않아도 되기를 바랍니다 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}

최종 결과: @베르너님 감사합니다.

\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>s는 비슷한 크기의 상자(너비 기준, 가장 넓은 것과 일치)를 생성하며 여기서 내용도 <stuff>변경할 수 있습니다 (기본값은 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>추가 실행이 필요합니다.

관련 정보