在 smallmatrix 中缩放 \ddots

在 smallmatrix 中缩放 \ddots

我正在尝试可视化一个非常大的矩阵。为此,我尝试在环境中使用\vdots和。它可以工作,但它们无法像以前那样正确缩放。现在,在下面的最小可重现示例中,我找到了解决方法\ddotsbsmallmatrix\cdots这里可以,但是仅有的垂直点而不是对角点。我不明白为什么它不适用于\ddots

\documentclass{article}

\usepackage{mathtools}
\newcommand{\svdots}{\raisebox{3pt}{\scalebox{.75}{\vdots}}} % <- Works
\newcommand{\sddots}{\raisebox{3pt}{\scalebox{.75}{\ddots}}} % <- Do not work

\begin{document}

\begin{equation*}
  \begin{bsmallmatrix}
    a_{11}  & a_{12}  & \cdots  & a_{1m}  \\
    a_{21}  & a_{22}  & \cdots  & a_{2m}  \\
    \svdots & \svdots & \sddots & \svdots \\
    a_{n1}  & a_{n2}  & \cdots  & a_{nm}
  \end{bsmallmatrix}
\end{equation*}

\end{document}

编译错误与缺少$和括号有关。替换时文档符合要求\sddots\ddots但显然 ddot 的大小不正确。

我怎样才能最好地实现我想要的结果?

答案1

以下示例重新定义\vdots和,\ddots以根据当前数学样式获得可调整大小的版本。点之间的垂直间距取自水平点。此外,中的点与的\ddots垂直间距\vdots和中水平点的水平间距相匹配\cdots\cdots在右侧添加了一个细小的空间。为了在矩阵中更好地对齐,重新定义\ddots的也添加了这个空间。

\vdots和上方的空间不是固定的,点之间的空间用于符号上方的额外垂直空间。和比原始符号\ddots小一点,但和的调整大小效果要好得多,如示例所示。\textstyle\displaystyle\scriptstyle\scriptscriptstylebsmallmatrix

以下示例显示了bsmallmatrix带有可调整大小的点的 。然后是正常的 ,bmatrix以正常的较大样式显示符号。然后是 ,bmatrix其中包含原始的\vdots\ddots,保存在\orgvdots和 中\orgddots

在示例的最后,显示了不同数学样式中符号的边界框,首先是原始符号,然后是重新定义的符号。

\documentclass{article}

\usepackage{mathtools}

\usepackage{letltxmacro}
\LetLtxMacro\orgvdots\vdots
\LetLtxMacro\orgddots\ddots

\makeatletter
\DeclareRobustCommand\vdots{%
  \mathpalette\@vdots{}%
}
\newcommand*{\@vdots}[2]{%
  % #1: math style
  % #2: unused
  \sbox0{$#1\cdotp\cdotp\cdotp\m@th$}%
  \sbox2{$#1.\m@th$}%
  \vbox{%
    \dimen@=\wd0 %
    \advance\dimen@ -3\ht2 %
    \kern.5\dimen@
    % remove side bearings
    \dimen@=\wd2 %
    \advance\dimen@ -\ht2 %
    \dimen2=\wd0 %
    \advance\dimen2 -\dimen@
    \vbox to \dimen2{%
      \offinterlineskip
      \copy2 \vfill\copy2 \vfill\copy2 %
    }%
  }%
}
\DeclareRobustCommand\ddots{%
  \mathinner{%
    \mathpalette\@ddots{}%
    \mkern\thinmuskip
  }%
}
\newcommand*{\@ddots}[2]{%
  % #1: math style
  % #2: unused
  \sbox0{$#1\cdotp\cdotp\cdotp\m@th$}%
  \sbox2{$#1.\m@th$}%
  \vbox{%
    \dimen@=\wd0 %
    \advance\dimen@ -3\ht2 %
    \kern.5\dimen@
    % remove side bearings
    \dimen@=\wd2 %
    \advance\dimen@ -\ht2 %
    \dimen2=\wd0 %
    \advance\dimen2 -\dimen@
    \vbox to \dimen2{%
      \offinterlineskip
      \hbox{$#1\mathpunct{.}\m@th$}%
      \vfill
      \hbox{$#1\mathpunct{\kern\wd2}\mathpunct{.}\m@th$}%
      \vfill
      \hbox{$#1\mathpunct{\kern\wd2}\mathpunct{\kern\wd2}\mathpunct{.}\m@th$}%
    }%
  }%
}
\makeatother

\begin{document}

\begin{gather*}
  \begin{bsmallmatrix}
    a_{11}  & a_{12}  & \cdots  & a_{1m}  \\
    a_{21}  & a_{22}  & \cdots  & a_{2m}  \\
    \vdots & \vdots & \ddots & \vdots \\
    a_{n1}  & a_{n2}  & \cdots  & a_{nm}
  \end{bsmallmatrix}
\\
  \begin{bmatrix}
    a_{11}  & a_{12}  & \cdots  & a_{1m}  \\
    a_{21}  & a_{22}  & \cdots  & a_{2m}  \\
    \vdots & \vdots & \ddots & \vdots \\
    a_{n1}  & a_{n2}  & \cdots  & a_{nm}
  \end{bmatrix}
\\
  \begin{bmatrix}
    a_{11}  & a_{12}  & \cdots  & a_{1m}  \\
    a_{21}  & a_{22}  & \cdots  & a_{2m}  \\
    \orgvdots & \orgvdots & \orgddots & \orgvdots \\
    a_{n1}  & a_{n2}  & \cdots  & a_{nm}
  \end{bmatrix}
\end{gather*}

\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{.1pt}

\newcommand*{\test}[1]{%
  \fbox{$#1\orgvdots$}%
  \fbox{$#1\orgddots$}%
  \fbox{$#1\vdots$}%
  \fbox{$#1\ddots$}%
  \fbox{$#1\dots$}%
  \fbox{$#1\cdots$}%
  \fbox{$#1\cdotp\cdotp\cdotp$}%
}
\begin{gather*}
  \test{}\\
  \test{\scriptstyle}\\
  \test{\scriptscriptstyle}
\end{gather*}
\end{document}

结果

答案2

您还缺少一双$...$

\documentclass{article}

\usepackage{mathtools}
\newcommand{\svdots}{\raisebox{3pt}{$\scalebox{.75}{\vdots}$}} % <- Works
\newcommand{\sddots}{\raisebox{3pt}{$\scalebox{.75}{$\ddots$}$}} % <- Do not work

\begin{document}

\begin{equation*}
  \begin{bsmallmatrix}
    a_{11}  & a_{12}  & \cdots  & a_{1m}  \\
    a_{21}  & a_{22}  & \cdots  & a_{2m}  \\
    \svdots & \svdots & \sddots & \svdots \\
    a_{n1}  & a_{n2}  & \cdots  & a_{nm}
  \end{bsmallmatrix}
\end{equation*}

\end{document}

输出:

示例代码的输出

答案3

供参考,该软件包nicematrix提供了同类的工具来构建带有虚线的数学矩阵,其中包括带有键的“小矩阵” small

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{equation*}
  \begin{bNiceMatrix}[small,xdots/shorten=5pt]
    a_{11}  & a_{12}  & \Ldots  & a_{1m}  \\
    a_{21}  & a_{22}  & \Ldots  & a_{2m}  \\
    \Vdots  & \Vdots  & \Ddots  & \Vdots \\
    a_{n1}  & a_{n2}  & \Ldots  & a_{nm}
  \end{bNiceMatrix}
\end{equation*}
\end{document}

上述代码的输出

相关内容