Estou tentando descobrir como colocar uma caixa estilizada usando \tcbhighmath
apenas uma equação em um conjunto dentro do align*
ambiente. Então, por exemplo:
\begin{align*}
x &= 2 + y \\
y &= 1 + z \\
z &= 3 + x
\end{align*}
Eu só quero uma caixa ao redor da última equação: z = 3 + x.
Responder1
Você não pode estender uma caixa align
diretamente por duas colunas, mas aqui está uma solução alternativa para obter o resultado desejado.
align
usa duas passagens para compor as equações: a primeira mede as alturas/larguras de todos os componentes, a segunda passagem realmente as compõe. Definimos um novo comando \mathbox{...&...}
que coleta as partes esquerda e direita da equação. Na passagem de medição ( \ifmeasuring@
é verdadeiro), normalmente definimos o texto da coluna para obter as larguras corretas.
A segunda passagem define uma caixa de largura zero \tcbhighmath
com o texto das colunas, adicionalmente deslocada para a esquerda pela soma das larguras do texto da coluna esquerda mais vários parâmetros do estilo da caixa (margem interna, largura da regra etc.), de modo que o sinal de igual fique alinhado com os que estão fora da caixa. O resultado é basicamente uma coluna direita vazia com a caixa na coluna esquerda sobrepondo ambas as colunas.
Código de exemplo 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}
saídas
Responder2
\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}
Alguma explicação
O mathtools
pacote fornece o \Aboxed
comando que pode ser usado assim:
\usepackage{mathtools}
...
\begin{align*}
x &= 2 + y \\
y &= 1 + z \\
\Aboxed{z &= 3 + x}
\end{align*}
para produzir algo assim:
De acordo com o mathtools
manual: internally \Aboxed does use \boxed
.
Para permitir que o \Aboxed
comando use a \tcbhighmath
caixa, redefinimos o \boxed
comando \let\boxed\tcbhightmath
e obtemos:
Como pode ser visto precisamos ajustar a posição da caixa então adicionamos a grow to left by = <some distance>
opção ao highlight math
estilo:\tcbset{highlight math/.append style={grow to left by =4.25mm,}}