与其他数学表达式(尤其是矩阵元素/块)具有相同高度(和宽度)的数学框

与其他数学表达式(尤其是矩阵元素/块)具有相同高度(和宽度)的数学框

这是我的 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 中,只需考虑更换列(C1,C2带有向量C,类似于(二)1,b2b;我特意问这个问题,因为\heightofin\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}

相关内容