如何在 LaTeX 中显示距离矩阵

如何在 LaTeX 中显示距离矩阵

我想显示一个距离矩阵

在此处输入图片描述

在 LaTeX 中,我尝试:

\documentclass{article}

\usepackage{amsmath,amssymb}

\begin{document}
We obtain a distance matrix as follows:
$$
\boldsymbol{D}=\{d_{ij}\}=
\begin{array}{c}
\begin{matrix}  1 & 2 & 3 & 4 & 5 \end{matrix}
\\
\begin{matrix} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{matrix}
\begin{bmatrix}
0 & & & & \\
9 & 0 & & & \\
3 & 7 & 0 & & \\
6 & 5 & 9 & 0 & \\
11 & 10 & 2 & 8 & 0
\end{bmatrix}
\end{array}
$$
\end{document}

表明

在此处输入图片描述

结果比较平庸,而且结果的对齐(我不是很满意)仍然可以改进。

如果只使用基本\usepackage{amsmath,amssymb}包而不使用其他(复杂)包,例如\usepackage{kbordermatrix},如何以简洁优雅的方式改善对齐? PS:简单的原生 LaTeX 命令可以轻松应用于 Markdown 数学方程式。

另外,尽量避免使用 等手动调整\qquad, \quad, \:, \;LaTeX 中的间距。这是因为如果矩阵中的数字发生变化(例如从 2 变为 200),则会进一步增加对齐工作量。

答案1

您可以使用具有固定列宽的内部数组来确保相同的对齐方式。底部数组可以用缩放的方括号括起来。这仍然容易出现错位,并且每次更新内容时都需要调整列宽。检查这种方法是否可以通过转换。

代码

\documentclass{article}
\usepackage{array}
\usepackage{amsmath}
\usepackage{amssymb}

\setlength\arraycolsep{3pt}
\newlength\collen
\settowidth\collen{$00$}
\newcolumntype{D}{>{\centering\arraybackslash}p{\collen}}


\begin{document}
We obtain a distance matrix as follows:
\[
  \boldsymbol{D} = \{d_{ij}\} =
  \begin{array}{c@{}c}
    & \begin{array}{*5{D}}
        1 & 2 & 3 & 4 & 5
      \end{array} \\[3pt]
    \begin{array}{r} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{array}
    & \left[
        \begin{array}{*5{D}}
          0  &    &   &   &   \\
          9  & 0  &   &   &   \\
          3  & 7  & 0 &   &   \\
          6  & 5  & 9 & 0 &   \\
          11 & 10 & 2 & 8 & 0
        \end{array}
      \right]
  \end{array}
\]
\end{document}

在此处输入图片描述

答案2

您可以使用nicematrix

\documentclass{article}

\usepackage{amsmath,amssymb,bm,nicematrix}

\begin{document}

We obtain a distance matrix as follows:
\[
\bm{D}=\{d_{ij}\}=
\begin{bNiceMatrix}[
  first-row,first-col,
  code-for-first-row=\scriptstyle,
  code-for-first-col=\scriptstyle,
]
  &  1 &  2 & 3 & 4 & 5 \\
1 &  0 &    &   &   &   \\
2 &  9 &  0 &   &   &   \\
3 &  3 &  7 & 0 &   &   \\
4 &  6 &  5 & 9 & 0 &   \\
5 & 11 & 10 & 2 & 8 & 0
\end{bNiceMatrix}
\]

\end{document}

在此处输入图片描述

避免$$在 LaTeX 中使用,请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?

答案3

使用简单的blkarray包更加容易。

\documentclass[12pt]{article}
\usepackage{amsmath,amssymb,blkarray}
\begin{document}
\[
  \mathbf{D}=\{d_{ij}\}=
    \begin{blockarray}{ccccccc}
        & {\scriptstyle 1} & {\scriptstyle 2} & {\scriptstyle 3} & {\scriptstyle 4} & {\scriptstyle 5}\\
      \begin{block}{c[ccccc]c}
       {\scriptstyle1} & 0 & & & & & \\
      {\scriptstyle 2}& 9 & 0 & & & & \\
       {\scriptstyle 3}& 3 & 7 & 0 & & & \\
      {\scriptstyle 4}& 6 & 5 & 9 & 0 & & \\
      {\scriptstyle 5}&11 & 10 & 2 & 8 & 0 &\\
      \end{block}
      \end{blockarray}
\]
\end{document}

在此处输入图片描述

相关内容