這是我的 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
這裡的 package 只是用於快速向量表示,但當然不是必要的。人們應該得到這樣的結果:
我經常需要將一個矩陣分成幾個扇區,或者將幾個塊合併成一些更大的塊,等等......在這樣做時我經常會喜歡對應的物體具有完全相同的視覺尺寸。
在上面的 MWE 中,我試圖展示如何使用 和 來製作同一行中一些連續元素的相同寬度的「多列」矩陣\mathmakebox
元素\widthof
。 [*]
在「第一次嘗試」中,我們發現這個技巧對於水平間距非常有效,但對於垂直間距則不然;在“第二次嘗試”中,顯示了垂直間距的解決方法。
我的問題是:
- 有沒有比我上面(在 MWE 中)使用的解決方案更乾淨的解決方案?
- (基本的)是否有類似的過程可以使同一列中的某些連續元素具有相同高度的「多行」矩陣元素?(C1,C2)與一個向量C,類似於所做的(b1,b2)和乙;我特別問這個問題是因為
\heightof
in\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}