我正在尝试排版这个矩阵,但似乎第四行和第五行之间的间距不对,可能是由于对角点造成的:
这是我的乳胶代码:
\[ \mathrm{Mat}_{\mathcal B}D = \begin{pmatrix}
1 & 1 & 0 & & & \\
0 & 1 & 2 & \ddots & & \\
& \ddots & \ddots & 3 & \ddots & \\
& & & \ddots & \ddots & 0 \\
& (0) & & \ddots & 1 & n \\
& & & & 0 & 1 \end{pmatrix}\]
我该怎么做才能修复这个问题?
答案1
该tabstackengine
包有一个\fixTABwidth{T}
宏,用于强制所有列的宽度相等(基于最宽的列)。除此之外,我只需使用 设置列间距,\setstacktabbedgap{}
使用 设置垂直基线跳过\setstackgap{L}{}
,即可使用宏实现所需的任何间距\parenMatrixstack
。
\documentclass{article}
\usepackage{tabstackengine}
\setstackgap{L}{1.2\normalbaselineskip}
\setstacktabbedgap{.4em}
\fixTABwidth{T}
\begin{document}
\[ \mathrm{Mat}_{\mathcal B}D = \parenMatrixstack{
1 & 1 & 0 & & & \\
0 & 1 & 2 & \ddots & & \\
& \ddots & \ddots & 3 & \ddots & \\
& & & \ddots & \ddots & 0 \\
& (0) & & \ddots & 1 & n \\
& & & & 0 & 1 }\]
\end{document}
答案2
除了矩阵最后两行之间的垂直空间小于其他行之间的垂直空间之外,水平的前两列之间的空间(以及最后两列之间的空间)小于其他列之间的空间。第一个问题出现的原因是高度字形的\ddots
是 - 假设您使用的是 Computer Modern 字体系列,主文档字体大小为 10pt - 是15.1pt
,而 和0
的1
只是6.4pt
。第二个问题出现是因为宽度字形的\ddots
是11.7pt
,而0
和1
只是5pt
。
最简单的补救办法(barbara beeton 在评论中已经提出过)是在矩阵的右上单元格中插入一个\hphantom{\ddots}
(“水平幻影”,宽度为但没有高度或深度)指令,并在矩阵的左下单元格中插入一个(“幻影”,宽度、高度和深度为)指令。\ddots
\phantom{\ddots}
\ddots
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\mathrm{Mat}_{\mathcal B}D =
\begin{pmatrix}
1 & 1 & 0 & & & \hphantom{\ddots} \\
0 & 1 & 2 & \ddots & & \\
& \ddots & \ddots & 3 & \ddots & \\
& & & \ddots & \ddots & 0 \\
& (0) & & \ddots & 1 & n \\
\phantom{\ddots} & & & & 0 & 1
\end{pmatrix}
\]
\end{document}
在旁边:如果您的视力非常敏锐,您可能会注意到矩阵的第 1 列和第 2 列(以及第 2 列和第 3 列)之间的水平距离仍然不完全等于其他列之间的水平距离。这是因为的宽度\ddots
为11.7pt
(如前所述),而(0)
第二列中条目的宽度为12.8pt
。考虑到矩阵的整体稀疏性,我认为这种宽度差异并不重要;它当然不应该影响“读取”矩阵的能力。(但是,如果您对印刷完美性非常挑剔,您可能希望加载包mathtools
而不是包amsmath
,并替换(0)
为\mathclap{(0)}
。)