我想创建一个带有行和列标签(矩阵分隔符之外)的矩阵。经过大量的谷歌搜索,我发现 TeX 宏kbordermatrix
最适合此目的。这是我的代码
\kbordermatrix{ & g_1 & g_2 & g_3 & \cdots & g_k \cr
g_1 & 1 & IV_{12} & IV_{13} & \cdots & IV_{1k} \cr
g_2 & ^1/_{IV_{12}} & 1 & IV_{12} & \cdots & IV_{2k} \cr
g_3 & ^1/_{IV_{13}} & ^1/_{IV_{23}} & 1 & \cdots & IV_{3k} \cr
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr
g_k & ^1/_{IV_{1k}} & ^1/_{IV_{2k}} & ^1/_{IV_{33}} & \cdots & 1 }
正如您所注意到的,矩阵中有分数。现在我想使用常规分数\dfrac
而不是上标-下标符号。但使用全尺寸分数几乎会合并行。这就是我需要增加行间距的原因。
那么,该怎么做呢?TIA
答案1
包裹kbordermatrix
(文档) 支持\arraystretch
增加所有行的高度。或者,可以添加不可见的规则来增加个别行的高度。
下面的示例首先通过 显示了具有均匀拉伸线条的矩阵\arraystretch
。然后,它不使用不可见的规则,\kdfrac
而是使用宏\dfrac
来测量分数的高度和深度,并在上方和下方添加一个空间。可以通过长度配置空间\kdsep
。这样,第二个矩阵只会拉伸带有分数的线条。
\documentclass{article}
\usepackage{amsmath}
\usepackage{kbordermatrix}
\begin{document}
\begingroup
\renewcommand*{\arraystretch}{2}%
\kbordermatrix{
& g_1 & g_2 & g_3 & \cdots & g_k \cr
g_1 & 1 & IV_{12} & IV_{13} & \cdots & IV_{1k} \cr
g_2 & \dfrac{1}{IV_{12}} & 1 & IV_{12} & \cdots & IV_{2k} \cr
g_3 & \dfrac{1}{IV_{13}} & \dfrac{1}{IV_{23}} & 1 & \cdots & IV_{3k} \cr
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr
g_k & \dfrac{1}{IV_{1k}} & \dfrac{1}{IV_{2k}} & \dfrac{1}{IV_{33}} & \cdots & 1
}%
\endgroup
\bigskip
\makeatletter
\newlength{\kdsep}
\setlength{\kdsep}{.5ex}
\newcommand*{\kdfrac}[2]{%
\begingroup
\sbox0{$\m@th\displaystyle\frac{#1}{#2}$}%
\ht0=\dimexpr\ht0 + \kdsep\relax
\dp0=\dimexpr\dp0 + \kdsep\relax
\box0 %
\endgroup
}
\makeatother
\kbordermatrix{
& g_1 & g_2 & g_3 & \cdots & g_k \cr
g_1 & 1 & IV_{12} & IV_{13} & \cdots & IV_{1k} \cr
g_2 & \kdfrac{1}{IV_{12}} & 1 & IV_{12} & \cdots & IV_{2k} \cr
g_3 & \kdfrac{1}{IV_{13}} & \kdfrac{1}{IV_{23}} & 1 & \cdots & IV_{3k} \cr
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr
g_k & \kdfrac{1}{IV_{1k}} & \kdfrac{1}{IV_{2k}} & \kdfrac{1}{IV_{33}} & \cdots & 1
}%
\end{document}
答案2
该软件包中nicematrix
有专门用于解决此类问题的工具。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$\begin{bNiceMatrix}[first-row,first-col,cell-space-limits=3pt]
& g_1 & g_2 & g_3 & \cdots & g_k \\
g_1 & 1 & IV_{12} & IV_{13} & \cdots & IV_{1k} \\
g_2 & \dfrac{1}{IV_{12}} & 1 & IV_{12} & \cdots & IV_{2k} \\
g_3 & \dfrac{1}{IV_{13}} & \dfrac{1}{IV_{23}} & 1 & \cdots & IV_{3k} \\
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\
g_k & \dfrac{1}{IV_{1k}} & \dfrac{1}{IV_{2k}} & \dfrac{1}{IV_{33}} & \cdots & 1
\end{bNiceMatrix}$
\end{document}