Ящик для математических выражений с той же высотой (и шириной), что и у некоторых других математических выражений (особенно для элементов/блоков матриц)

Ящик для математических выражений с той же высотой (и шириной), что и у некоторых других математических выражений (особенно для элементов/блоков матриц)

Это мой 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}

Здесьmathtoolsпакет должен быть необходим для команды \mathmakebox; я используюeasybmatпакет, потому что это отличный инструмент для работы с блоками в матрицах, что необходимо для моих целей;physicsПакет здесь используется только для быстрой записи векторов, но, конечно, это не обязательно. Должен получиться такой результат: Полученные результаты

Мне часто нужно разделить матрицу на несколько секторов или объединить несколько блоков в несколько более крупных блоков и т. д. При этом мне часто хочетсясоответствующие объекты должны иметь одинаковые визуальные размеры.
В MWE выше я попытался показать, как можно сделать элемент матрицы "многостолбцовой" одинаковой ширины из некоторых последовательных элементов в одной строке с помощью \mathmakeboxи \widthof. [*]
В "первой попытке" показано, что этот трюк отлично работает с горизонтальным интервалом, но не с вертикальным; во "второй попытке" показан обходной путь для вертикального интервала.
Мои вопросы:

  1. Есть ли более чистые решения, чем то, которое я использовал выше (в MWE)?
  2. (фундаментальный)Существует ли аналогичная процедура для получения «многострочного» матричного элемента одинаковой высоты из некоторых последовательных элементов в одном столбце? В MWE просто подумайте о замене столбца12)с векторомс, аналогично тому, что было сделано с12)иб; Я спрашиваю об этом особенно потому, что \heightofэто \mathmakeboxне решает проблему. [**]
  3. (более общее)Есть ли способ создать ящик, предназначенный для заполнения математическими данными, с такими же размерами (высотой и шириной), как у какого-то другого математического выражения? В конце концов, есть ли способ использовать два разных выражения: одно для ширины, а другое для высоты?

[*] Здесь я должен добавить, что обычно избегаю объединения столбцов и/или строк при управлении матрицами; я считаю, что вложенные матрицы — более простое решение; конечно, я вполне могу ошибаться!, в любом случае этот вопрос может в конечном итоге иметь смысл и для других целей, не связанных с матрицами.
[**] У меня также может быть обходной путь для этой проблемы с использованием полей с нулевой шириной, в которые помещаются фантомные выражения; я воздержался от его публикации: это настолько неэлегантно, что если бы я опубликовал его, меня бы забанили навсегда.

решение1

Вы можете избежать дублирования работы, используя ящик сохранения.

\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}

Связанный контент