Este é o meu MWE:
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\usepackage{physics}
\usepackage{easybmat}
\begin{document}
First attempt:
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix} b_1& b_2 \end{matrix} \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
Second attempt:
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix} b_1& b_2 \end{matrix} \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix}
\mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}
\end{matrix}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \begin{matrix}
\mathmakebox[\widthof{$\begin{matrix} b_1& b_2 \end{matrix} $}]{\vb*b}
\end{matrix}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
\end{document}
Aqui omathtools
o pacote deve ser necessário para o comando \mathmakebox
; estou usando oeasybmat
package porque é uma ótima ferramenta para lidar com blocos em matrizes, o que é necessário para meus propósitos; ophysics
package aqui é usado apenas para notação vetorial rápida, mas é claro que não é necessário. Deve-se obter este resultado:
Muitas vezes preciso dividir uma matriz em vários setores, ou fundir vários blocos em blocos maiores, e assim por diante... Ao fazer isso, muitas vezes gostariaobjetos correspondentes tenham as mesmas dimensões visuais.
No MWE acima, tentei mostrar como é possível fazer um elemento de matriz "multicolunas" com a mesma largura de alguns elementos consecutivos na mesma linha com \mathmakebox
e \widthof
. [*]
Na "primeira tentativa" é mostrado que este truque funciona perfeitamente com espaçamento horizontal, mas não com espaçamento vertical; na "segunda tentativa" é mostrada uma solução alternativa para o espaçamento vertical.
Minhas perguntas são:
- Existe alguma solução mais limpa do que a que usei acima (no MWE)?
- (fundamental)Existe um procedimento semelhante para ter um elemento matricial "multilinha" com a mesma altura de alguns elementos consecutivos dentro da mesma coluna?, no MWE, basta pensar em substituir a coluna(c1,c2)com um vetorc, de forma análoga ao que foi feito com(b1,b2)eb; Pergunto isso especialmente porque
\heightof
in\mathmakebox
não funciona. [**] - (Mais general)Existe uma maneira de fazer uma caixa, destinada a ser preenchida com matemática, com as mesmas dimensões (altura e largura) de alguma outra expressão matemática?, eventualmente existe uma maneira de usar duas expressões diferentes, uma para largura e outra para altura?
[*] Devo acrescentar aqui que normalmente evito mesclar colunas e/ou linhas ao gerenciar matrizes; Acho que o aninhamento de matrizes é uma solução mais simples; claro, posso muito bem estar errado nisso!, de qualquer forma esta questão pode eventualmente fazer sentido também para outros propósitos, não relacionados a matrizes.
[**] Posso ter uma solução alternativa também para esse problema, usando caixas com largura nula nas quais colocar expressões fantasmas; Abstive-me de postar: é tão deselegante que, se tivesse postado, teria sido banido para sempre.
Responder1
Você pode evitar trabalho duplicado usando um savebox.
\documentclass{article}
\usepackage{mathtools}
\usepackage{easybmat}
\newsavebox{\tempbox}% \sbox0 doesn't work
\begin{document}
\savebox\tempbox{$\begin{matrix} b_1 & b_2 \end{matrix}$}% must be outside align environment
\begin{align*}
&\left[\begin{BMAT}{c1c}{c1c}
a& \usebox\tempbox \\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\wd\tempbox]{\boldsymbol{b}}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]\\
&\left[\begin{BMAT}{c1c}{c1c}
a& \mathmakebox[\wd\tempbox]{\boldsymbol{b}}\\
\begin{matrix} c_1 \\ c_2 \end{matrix}& D
\end{BMAT}\right]
\end{align*}
\end{document}