Verwenden Sie \tcbhighmath für nur eine ausgerichtete Gleichung in der align*-Umgebung?

Verwenden Sie \tcbhighmath für nur eine ausgerichtete Gleichung in der align*-Umgebung?

Ich versuche herauszufinden, wie ich eine stilisierte Box mit \tcbhighmathnur einer Gleichung in einem Satz innerhalb der align*Umgebung einfügen kann. Also zum Beispiel:

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

Ich möchte nur ein Kästchen um die letzte Gleichung: z = 3 + x.

Antwort1

Sie können ein Feld nicht direkt über zwei Spalten aufspannen align, aber mit der folgenden Problemumgehung können Sie das gewünschte Ergebnis erzielen.

alignverwendet zwei Durchgänge, um die Gleichungen zu setzen: Der erste misst die Höhen/Breiten aller Komponenten, der zweite Durchgang setzt sie tatsächlich. Wir definieren einen neuen Befehl, \mathbox{...&...}der den linken und rechten Teil der Gleichung erfasst. Beim Messdurchgang ( \ifmeasuring@ist wahr) setzen wir normalerweise den Spaltentext, um die richtigen Breiten zu erhalten.

Der zweite Durchgang setzt eine Box mit der Breite Null, \tcbhighmathin der sich der Text der Spalten befindet. Diese wird zusätzlich um die Summe der Breiten des Textes der linken Spalte plus mehrere Parameter des Boxstils (innerer Rand, Linienbreite usw.) nach links verschoben, sodass das Gleichheitszeichen mit denen außerhalb der Box ausgerichtet ist. Das Ergebnis ist im Grunde eine leere rechte Spalte, wobei die Box in der linken Spalte beide Spalten überlappt.

Minimaler Beispielcode:

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

Ausgänge

Bildbeschreibung hier eingeben

Antwort2

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

Bildbeschreibung hier eingeben

Einige Erklärungen

Das mathtoolsPaket stellt den \AboxedBefehl bereit, der wie folgt verwendet werden kann:

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

um so etwas wie das hier zu produzieren:

Bildbeschreibung hier eingeben

Laut mathtoolsHandbuch: internally \Aboxed does use \boxed.

Damit der \AboxedBefehl das \tcbhighmathFeld verwenden kann, definieren wir den \boxedBefehl neu \let\boxed\tcbhightmath und erhalten:

Bildbeschreibung hier eingeben

Wie man sehen kann, müssen wir die Position der Box anpassen, also fügen wir grow to left by = <some distance>dem highlight mathStil die Option hinzu:\tcbset{highlight math/.append style={grow to left by =4.25mm,}}

Antwort3

Sie können Folgendes verwenden 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}

Das Argument für \tikzmarkinund \tikzmarkendsollte eine eindeutige Zeichenfolge sein.

Bildbeschreibung hier eingeben

verwandte Informationen