bmatrix 中的垂直空间

bmatrix 中的垂直空间

我有包含密集表达式的矩阵,我想稍微放松一下矩阵括号。我希望能够控制从括号到第一个字母(两侧)的水平距离以及表达式之间的垂直距离。垂直方向,我只想更改行下方的大小,不像这样arraystretch做。

因此一致性非常重要,所以局部解决方案对我来说没有用。我尝试了arraystretch% \setlength{\extrarowheight}{10pt},但它们会在每行上方和下方添加额外的空间。对于文档中的所有矩阵,我希望输出类似于以下内容(最好是可调的)。

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\horizontaldistance{2pt}
\vertical_distance{5pt}

\[
\begin{bmatrix}
  \horizontaldistance s'^{\mathrm{T}} \horizontaldistance    \\[vertical_distance]
  \horizontaldistance I_{p\times p} \horizontaldistance
\end{bmatrix}
\]

\end{document}

我的目标是,我不需要将距离明确地写入矩阵,而是所有 bmarix 实例都具有相同的距离!

答案1

修订的解决方案(针对全球自动化):

这里使用 TABstacks 来代替bmatrix环境。

这里可以控制\setstackgap{L}{}基线垂直间距、\setstacktabbedgap{}矩阵内部水平间距以及\lrgap向量/矩阵左右端间距的全局设置。

\documentclass{article}
\usepackage{tabstackengine}
\stackMath
\setstackgap{L}{24pt}
\setstacktabbedgap{4pt}
\def\lrgap{\kern6pt}
\def\xbracketVectorstack#1{\left[\lrgap\Vectorstack{#1}\lrgap\right]}
\def\xbracketMatrixstack#1{\left[\lrgap\tabbedCenterstack{#1}\lrgap\right]}
\begin{document}
\[
\xbracketVectorstack{
  s'^{\mathrm{T}}  \\
  I_{p\times p}   
}=
\xbracketMatrixstack{
  A & B \\
  C & D   
}
\xbracketVectorstack{
  s'^{\mathrm{T}}  \\
  I_{p\times p}   
}
\]
\end{document}

在此处输入图片描述

原始解决方案

尝试以对 OP 代码进行最少的更改来实现目标。

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\def\horizontaldistance{\kern2pt}
\def\verticaldistance{5pt}

\[
\begin{bmatrix}
  \horizontaldistance s'^{\mathrm{T}} \horizontaldistance    \\[\verticaldistance]
  \horizontaldistance I_{p\times p}   \horizontaldistance
\end{bmatrix}
\]

\end{document}

答案2

好吧,我不确定你到底在要求什么,但我读到你想要一种更合理的方式来控制矩阵括号的宽度。我选择的方法是使用makeboxes。缺点是你需要重新进入数学模式,因为它似乎makeboxes会让你退出它。

代码如下:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\newcommand*{\horizontaldista}[3]{\makebox[#1][#2]{#3}}
\newcommand*{\horizontaldistb}[2]{\makebox[#1][c]{#2}}
\newcommand*{\fixeddist}[1]{\makebox[10em][c]{#1}}
\[
\begin{bmatrix}
    \makebox[4em][c]{$s'^{\mathrm{T}}$} \\[10ex]
    \horizontaldista{4em}{c}{$I_{p\times p}$}\\
\end{bmatrix}
\]
\vspace*{10ex}
\[
\begin{bmatrix}
    \fixeddist{$s'^{\mathrm{T}}$}\\[10ex]

    \fixeddist{$I_{p\times p}$}\\[10ex]

    \horizontaldistb{4em}{$I_{p\times p}$}
\end{bmatrix}
\]
\end{document}

我定义了许多新命令并演示了它们的用法。根据您想要在局部和全局调整之间做出的权衡,其中一个可能更适合您的目的。

相关内容