块矩阵维度的花括号的厚度和对齐方式

块矩阵维度的花括号的厚度和对齐方式

我需要创建具有正确维度的块矩阵。矩阵的块具有不同的维度。

以下是 MWE:

\documentclass{article}
\usepackage{easybmat}
\usepackage{bm}

\newcommand{\smsub}[1]{\scriptscriptstyle\mathrm{#1}}

\begin{document}

\begin{equation}
  \hat{\bm{P}}=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    P_{\smsub{1}}  \\ 
    \vdots \\
    P_{\smsub{K-1}}\\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    \vphantom{\vdots} \\
    \bm{\breve{P}} \\ 
    \vphantom{\vdots} \\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)
  \begin{BMAT}(@)[1pt,10pt,0pt]{l}{cc}
    \left. \vphantom{\rule{0mm}{30pt}}\right\rbrace{\scriptstyle (K-1)\times 1}\\ 
    \left. \vphantom{\rule{0mm}{10pt}}\right\rbrace{\scriptstyle \; 1 \times 1}\\ 
  \end{BMAT}
\end{equation} 

\end{document}

问题:

  1. 我不知道如何创建厚度相同的支架。如您所见,(k-1)x1 尺寸的上部支架比下部块的支架更大且更厚。理想情况下,它们应该具有相同的厚度,并且应该很薄。

  2. 第三个 BMAT 中添加的括号与其他两个 BMAT 的对齐是手动完成的。有没有办法自动对齐括号?

我并不一定要使用 easybmat,因此如果有人能提出更好的解决方案,我也会接受。

答案1

重新修订答案,采纳了芭芭拉评论中的深刻建议。在这里,与之前的答案一样,我使用 Knuth 的\underbrace旋转来制作垂直支架。但是,我采纳了芭芭拉的建议,使短支架看起来更好,\underbrace方法是先将其宽度增加一倍,然后将其挤压成两半。最终效果是使支架的点在垂直方向上更加压缩。

控制参数 控制\hsqz括号的水平压缩,以及\sqz和它的倒数\sqzinverse控制括号点的垂直压缩。和前面一样,bls经验上与行距匹配BMAT,因此 的第一个参数\scalebrace可以作为行数的整数给出,而不是长度。

\documentclass{article}
\usepackage{easybmat}
\usepackage{bm}
\usepackage{graphicx}
\def\sqz{.5}
\def\sqzinverse{2}
\def\hsqz{.7}
\newcommand{\smsub}[1]{\scriptscriptstyle\mathrm{#1}}
\newlength\bls
\bls=1.5\baselineskip\relax
\newlength\tmplength
\def\scalebrace#1#2{\tmplength=#1\bls\relax%
  \scalebox{\hsqz}[\sqz]{\rotatebox{90}{$\underbrace{\hspace{\sqzinverse\tmplength}}$}}%
  \raisebox{\dimexpr+.5\tmplength+.5\dp\strutbox-.5\ht\strutbox}{$\scriptstyle \; #2$}}
\begin{document}

\begin{equation}
  \hat{\bm{P}}=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    P_{\smsub{1}}  \\ 
    \vdots \\
    P_{\smsub{K-1}}\\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    \vphantom{\vdots} \\
    \bm{\breve{P}} \\ 
    \vphantom{\vdots} \\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)
  \begin{BMAT}(@)[1pt,10pt,0pt]{l}{cc}
    \scalebrace{3}{(K-1)\times 1}\\ 
    \scalebrace{1}{1 \times 1}\\ 
  \end{BMAT}
\end{equation} 
\end{document}

在此处输入图片描述

修改后的答案(scalerel用旋转的 替换拉长的括号\underbrace)。用户语法将与原始答案相同(例如\scalebrace{1}{1 \times 1}),但生成的括号看起来会有所不同(并且更好)。

\documentclass{article}
\usepackage{easybmat}
\usepackage{bm}
\usepackage{graphicx}
\newcommand{\smsub}[1]{\scriptscriptstyle\mathrm{#1}}
\newlength\bls
\bls=1.5\baselineskip\relax
\newlength\tmplength
\def\scalebrace#1#2{\tmplength=#1\bls\relax%
  \scalebox{.7}[1]{\rotatebox{90}{$\underbrace{\hspace{\tmplength}}$}}%
  \raisebox{\dimexpr+.5\tmplength+.5\dp\strutbox-.5\ht\strutbox}{$\scriptstyle \; #2$}}
\begin{document}

\begin{equation}
  \hat{\bm{P}}=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    P_{\smsub{1}}  \\ 
    \vdots \\
    P_{\smsub{K-1}}\\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    \vphantom{\vdots} \\
    \bm{\breve{P}} \\ 
    \vphantom{\vdots} \\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)
  \begin{BMAT}(@)[1pt,10pt,0pt]{l}{cc}
    \scalebrace{3}{(K-1)\times 1}\\ 
    \scalebrace{1}{1 \times 1}\\ 
  \end{BMAT}
\end{equation} 
\end{document}

在此处输入图片描述

括号的宽度由\scalebox定义中的参数 控制\scalebrace,当前设置为.7。将其更改为1将只产生一个简单的旋转\underbrace

原始答案:

这是一种方法。该scalerel包允许限制宽度的缩放。因此,当我将右上括号缩放到 3 行高,将右下括号缩放到 1 行高时,我将每个括号的缩放宽度限制为 1.2ex。在这种情况下,我使用语法

\scaleleftright[1.2ex]{.}{phantom rule}{\}}

其中我使用新定义的幻影规则创建了\irule以整数行数作为参数的规则。

我把所有事情都包裹在一个宏里

\scalebrace{rows}{aftertext}

仅供参考:矩阵内的“行高”是根据经验确定的1.5\baselineskip,设置为长度\bls

\documentclass{article}
\usepackage{easybmat}
\usepackage{bm}
\usepackage{scalerel}
\newcommand{\smsub}[1]{\scriptscriptstyle\mathrm{#1}}
\newlength\bls
\bls=1.5\baselineskip\relax
\newlength\tmplength
\def\irule#1{\tmplength=#1\bls\relax%
  \rule[-.5\tmplength-.5\dp\strutbox+.5\ht\strutbox]{0ex}{\tmplength}}
\def\scalebrace#1#2{%
  \scaleleftright[1.2ex]{.}{\irule{#1}}{\}}{\scriptstyle \; #2}}
\begin{document}

\begin{equation}
  \hat{\bm{P}}=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    P_{\smsub{1}}  \\ 
    \vdots \\
    P_{\smsub{K-1}}\\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)=
  \left(
  \begin{BMAT}(b){c}{ccc.c}
    \vphantom{\vdots} \\
    \bm{\breve{P}} \\ 
    \vphantom{\vdots} \\
    P_{\smsub{K}}   
  \end{BMAT}
  \right)
  \begin{BMAT}(@)[1pt,10pt,0pt]{l}{cc}
    \scalebrace{3}{(K-1)\times 1}\\ 
    \scalebrace{1}{1 \times 1}\\ 
  \end{BMAT}
\end{equation} 
\end{document}

在此处输入图片描述

相关内容