Estoy tratando de descubrir cómo colocar una caja estilizada usando \tcbhighmath
solo una ecuación en un conjunto dentro del align*
entorno. Así por ejemplo:
\begin{align*}
x &= 2 + y \\
y &= 1 + z \\
z &= 3 + x
\end{align*}
Solo quiero un cuadro alrededor de la última ecuación: z = 3 + x.
Respuesta1
No puede dividir un cuadro en dos align
columnas directamente, pero aquí hay una solución para obtener el resultado deseado.
align
utiliza dos pasadas para componer las ecuaciones: la primera mide las alturas/anchos de todos los componentes, la segunda pasada realmente las escribe. Definimos un nuevo comando \mathbox{...&...}
que recoge la parte izquierda y derecha de la ecuación. En la pasada de medición ( \ifmeasuring@
es cierto), normalmente configuramos el texto de la columna para obtener los anchos correctos.
La segunda pasada establece un cuadro de ancho cero \tcbhighmath
con el texto de las columnas, además desplazado hacia la izquierda por la suma de los anchos del texto de la columna izquierda más varios parámetros del estilo del cuadro (margen interior, ancho de regla, etc.). de modo que el signo igual esté alineado con los que están fuera del cuadro. El resultado es básicamente una columna derecha vacía con el cuadro de la columna izquierda superpuesto a ambas columnas.
Código de ejemplo mínimo:
\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}
salidas
Respuesta2
\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}
Alguna explicación
El mathtools
paquete proporciona el \Aboxed
comando que se puede utilizar así:
\usepackage{mathtools}
...
\begin{align*}
x &= 2 + y \\
y &= 1 + z \\
\Aboxed{z &= 3 + x}
\end{align*}
para producir algo como esto:
Según el mathtools
manual: internally \Aboxed does use \boxed
.
Para permitir que el \Aboxed
comando use el \tcbhighmath
cuadro, redefinimos el \boxed
comando \let\boxed\tcbhightmath
y obtenemos:
Como se puede ver, necesitamos ajustar la posición del cuadro, por lo que agregamos la grow to left by = <some distance>
opción al highlight math
estilo:\tcbset{highlight math/.append style={grow to left by =4.25mm,}}