Это мой 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
. [*]
В "первой попытке" показано, что этот трюк отлично работает с горизонтальным интервалом, но не с вертикальным; во "второй попытке" показан обходной путь для вертикального интервала.
Мои вопросы:
- Есть ли более чистые решения, чем то, которое я использовал выше (в MWE)?
- (фундаментальный)Существует ли аналогичная процедура для получения «многострочного» матричного элемента одинаковой высоты из некоторых последовательных элементов в одном столбце? В MWE просто подумайте о замене столбца(с1,с2)с векторомс, аналогично тому, что было сделано с(б1,б2)иб; Я спрашиваю об этом особенно потому, что
\heightof
это\mathmakebox
не решает проблему. [**] - (более общее)Есть ли способ создать ящик, предназначенный для заполнения математическими данными, с такими же размерами (высотой и шириной), как у какого-то другого математического выражения? В конце концов, есть ли способ использовать два разных выражения: одно для ширины, а другое для высоты?
[*] Здесь я должен добавить, что обычно избегаю объединения столбцов и/или строк при управлении матрицами; я считаю, что вложенные матрицы — более простое решение; конечно, я вполне могу ошибаться!, в любом случае этот вопрос может в конечном итоге иметь смысл и для других целей, не связанных с матрицами.
[**] У меня также может быть обходной путь для этой проблемы с использованием полей с нулевой шириной, в которые помещаются фантомные выражения; я воздержался от его публикации: это настолько неэлегантно, что если бы я опубликовал его, меня бы забанили навсегда.
решение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}