Ich versuche herauszufinden, wie ich eine stilisierte Box mit \tcbhighmath
nur 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.
align
verwendet 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, \tcbhighmath
in 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\@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
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}
Einige Erklärungen
Das mathtools
Paket stellt den \Aboxed
Befehl 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:
Laut mathtools
Handbuch: internally \Aboxed does use \boxed
.
Damit der \Aboxed
Befehl das \tcbhighmath
Feld verwenden kann, definieren wir den \boxed
Befehl neu \let\boxed\tcbhightmath
und erhalten:
Wie man sehen kann, müssen wir die Position der Box anpassen, also fügen wir grow to left by = <some distance>
dem highlight math
Stil 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 \tikzmarkin
und \tikzmarkend
sollte eine eindeutige Zeichenfolge sein.