align* 환경에서 하나의 정렬 방정식에만 \tcbhighmath를 사용합니까?

align* 환경에서 하나의 정렬 방정식에만 \tcbhighmath를 사용합니까?

\tcbhighmath환경 내의 세트에서 하나의 방정식만 사용하여 양식화된 상자를 넣는 방법을 알아내려고 노력 중입니다 align*. 예를 들면 다음과 같습니다.

\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   z &= 3 + x
\end{align*}

나는 마지막 방정식인 z = 3 + x 주위에 상자만 원합니다.

답변1

두 열에 걸쳐 상자를 align직접 확장할 수는 없지만 원하는 결과를 얻을 수 있는 해결 방법은 다음과 같습니다.

align두 단계를 사용하여 방정식을 조판합니다. 첫 번째 단계는 모든 구성 요소의 높이/너비를 측정하고 두 번째 단계는 실제로 이를 조판합니다. \mathbox{...&...}방정식의 왼쪽과 오른쪽 부분을 수집하는 새로운 명령을 정의합니다 . 측정 단계( \ifmeasuring@true)에서 우리는 일반적으로 올바른 너비를 얻기 위해 열 텍스트를 설정합니다.

두 번째 단계에서는 \tcbhighmath열의 텍스트가 포함된 너비가 0인 상자를 설정하고, 추가로 왼쪽 열의 텍스트 너비와 상자 스타일의 여러 매개변수(내부 여백, 규칙 너비 등)의 합계에 따라 왼쪽으로 이동합니다. 등호가 상자 외부의 기호와 정렬되도록 합니다. 결과는 기본적으로 왼쪽 열의 상자가 두 열과 겹치는 빈 오른쪽 열입니다.

최소 예제 코드:

\documentclass{article}
\usepackage{mathtools}
\usepackage[theorems]{tcolorbox}

\makeatletter

\def\mathbox#1{\mathbox@#1\@end}
\def\mathbox@#1&#2\@end{%
    \ifmeasuring@
        #1%
    \else
        \begingroup
        \setbox0=\hbox{$\displaystyle#1$}%
        \dimen0=\dimexpr\wd0+\kvtcb@left@rule+\kvtcb@leftupper
                            +\kvtcb@boxsep+\kvtcb@bbleft\relax
        \hskip-\dimen0\relax
        \mathrlap{\tcbhighmath{\displaystyle#1 #2}}%
        \hskip\dimen0\relax
        \endgroup
    \fi
    &
    \ifmeasuring@
        #2%
    \fi
}

\makeatother

\begin{document}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   z &= 3 + x
\end{align*}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \mathbox{z &= 3 + x}
\end{align*}
\end{document}

출력

여기에 이미지 설명을 입력하세요

답변2

\documentclass{article}
\usepackage{mathtools}
\usepackage[theorems]{tcolorbox}
\tcbset{
highlight math/.append style={
        grow to left by =4.25mm,}
}
  \let\boxed=\tcbhighmath
\begin{document}
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \Aboxed{z &= 3 + x}
\end{align*}
\end{document}

여기에 이미지 설명을 입력하세요

몇 가지 설명

패키지 는 다음과 같이 사용할 수 있는 명령을 mathtools제공합니다 .\Aboxed

\usepackage{mathtools}
...
\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \Aboxed{z &= 3 + x}
\end{align*}

다음과 같은 솜을 생산하려면 :

여기에 이미지 설명을 입력하세요

매뉴얼 에 따르면 mathtools: internally \Aboxed does use \boxed.

\Aboxed명령이 상자를 사용 하도록 하려면 다음을 사용하여 명령 \tcbhighmath을 재정의하면 다음을 얻습니다.\boxed\let\boxed\tcbhightmath

여기에 이미지 설명을 입력하세요

보시다시피 상자의 위치를 ​​조정하여 스타일 grow to left by = <some distance>에 옵션을 추가해야 합니다 highlight math.\tcbset{highlight math/.append style={grow to left by =4.25mm,}}

답변3

당신이 사용할 수있는 hf-tikz:

\documentclass{article}
\usepackage{amsmath,hf-tikz}

\begin{document}

\begin{align*}
   x &= 2 + y \\
   y &= 1 + z \\
   \tikzmarkin{a}z &= 3 + x\tikzmarkend{a}
\end{align*}

\end{document}

\tikzmarkin및 에 대한 인수는 \tikzmarkend고유한 문자열이어야 합니다.

여기에 이미지 설명을 입력하세요

관련 정보