kbordermatrix 中的行间距

kbordermatrix 中的行间距

我想创建一个带有行和列标签(矩阵分隔符之外)的矩阵。经过大量的谷歌搜索,我发现 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}

上述代码的输出

相关内容