我有包含密集表达式的矩阵,我想稍微放松一下矩阵括号。我希望能够控制从括号到第一个字母(两侧)的水平距离以及表达式之间的垂直距离。垂直方向,我只想更改行下方的大小,不像这样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}
我定义了许多新命令并演示了它们的用法。根据您想要在局部和全局调整之间做出的权衡,其中一个可能更适合您的目的。