在小矩阵中正确格式化 \vdots

在小矩阵中正确格式化 \vdots

我想以\scriptsize字体大小格式化这个矩阵:

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{amsmath}

\begin{document}

\scriptsize

$S=\begin{pmatrix}\sigma_1 & 0     & 0\\ 
                0        &\sigma_2 & \vdots\\
                0        &\dots    &
\end{pmatrix}$

\end{document}

但是它看起来不平衡 - 第一行和第二行之间有多余的空白,并且\vdots比第二行的要高$0$。正确排版此表达式的最佳方法是什么?

编辑1:

解决方法是简单地写

$$S=\text{diag}(\sigma_1,\sigma_2,\ldots,0,\ldots),$$

其中术语$0,\ldots$表示矩阵必须用零填充,如$S\in\mathbb{R}^{m\times n}$。我仍然想知道如何正确排版矩阵。

编辑2:

我想从参考源复制此矩阵。它看起来像这样:

在此处输入图片描述

看起来点之间的空白已经调整,并且它们在垂直方向上也进行了手动移动。我觉得理想的选择是将最顶部的点与 的顶部对齐,将0最底部的点与 的底部对齐$2$。有没有办法像这样格式化矩阵?

答案1

我建议使用\svdots宏来“缩放”垂直点。说实话,我从来都不喜欢标准定义。

\documentclass{article}
\usepackage{amsmath}

\DeclareRobustCommand{\svdots}{% s for `scaling'
  \vbox{%
    \baselineskip=0.33333\normalbaselineskip
    \lineskiplimit=0pt
    \hbox{.}\hbox{.}\hbox{.}%
    \kern-0.2\baselineskip
  }%
}

\begin{document}

$S=
\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & \svdots\\
  0        & \dots    &
\end{pmatrix}
\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & 0\\
  0        & \dots    &
\end{pmatrix}$

\scriptsize

$S=\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & \svdots\\
  0        & \dots    &
\end{pmatrix}$

\end{document}

在此处输入图片描述

如果您希望垂直点相对于公式轴居中,您可以这样做

\documentclass{article}
\usepackage{amsmath}

\DeclareRobustCommand{\svdots}{% s for `scaling'
  \vcenter{%
    \offinterlineskip
    \hbox{.}
    \vskip0.25\normalbaselineskip
    \hbox{.}
    \vskip0.25\normalbaselineskip
    \hbox{.}%
  }%
}

\begin{document}

$S=
\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & \svdots\\
  0        & \dots    &
\end{pmatrix}
\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & 0\\
  0        & \dots    &
\end{pmatrix}$

\scriptsize

$S=\begin{pmatrix}
  \sigma_1 & 0        & 0\\ 
  0        & \sigma_2 & \svdots\\
  0        & \dots    &
\end{pmatrix}$

\end{document}

在此处输入图片描述

答案2

我会用 来做到这一点stackengine,它有一个\Vectorstack数学模式命令:

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{stackengine}

\begin{document}

\scriptsize

$S=\begin{pmatrix}\sigma_1 & 0 & 0\\
                0 &\sigma_2 & \Vectorstack{\vdots}\\
                0 &\dots &
\end{pmatrix}$

\end{document} 

在此处输入图片描述

对于以行中 0 的中间为中心的 \vdots,您可以尝试以下操作:

$S=\begin{pmatrix}\sigma_1 & 0 & 0\\[0.5ex]
                0 &\sigma_2 & \raisebox{-0.12\height}[0pt][0pt]{$\vdots$}\\[0.5ex]
                0 &\dots &
\end{pmatrix}$

在此处输入图片描述

答案3

使用包nicematrix将值调整\NiceMatrixOptions-5pt(最小值),

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{nicematrix}

\begin{document}
\NiceMatrixOptions{cell-space-top-limit=-5pt,cell-space-bottom-limit=-5pt}
$S=\begin{pNiceMatrix}
\sigma_{1} & 0 & 0\\
0 & \sigma_{2} & \vdots \\
0 & \ldots &
\end{pNiceMatrix}$

\end{document}

您可以获得类似的输出。

在此处输入图片描述

相关内容