Uma caixa para matemática com a mesma altura (e largura) de alguma outra expressão matemática (especialmente para elementos/blocos de matriz)

Uma caixa para matemática com a mesma altura (e largura) de alguma outra expressão matemática (especialmente para elementos/blocos de matriz)

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 omathtoolso pacote deve ser necessário para o comando \mathmakebox; estou usando oeasybmatpackage porque é uma ótima ferramenta para lidar com blocos em matrizes, o que é necessário para meus propósitos; ophysicspackage aqui é usado apenas para notação vetorial rápida, mas é claro que não é necessário. Deve-se obter este resultado: Resultados

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 \mathmakeboxe \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:

  1. Existe alguma solução mais limpa do que a que usei acima (no MWE)?
  2. (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 \heightofin \mathmakeboxnão funciona. [**]
  3. (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}

informação relacionada