列向量/amsmath 矩阵中的垂直虚线

列向量/amsmath 矩阵中的垂直虚线

我想要排版以下一组方程式: 在此处输入图片描述

...但在列向量中有连续的垂直虚线,使得矩阵和向量的顶行和底行很好地对齐。

\vdots在这里似乎不是正确的选择,因为我用它来制作上面的图形。代码如下:

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{equation}
  \begin{pmatrix}
    a_1 & b_1 &     &     &     &\\
    c_2 & a_2 & b_2 &     &     &\\
        & c_3 & a_3 & b_3 &     &\\
        &     & c_4 & a_4 & b_4 &\\
        &     &     & c_5 & a_5 & b_5\\
        &     &     &     & c_6 & a_6
  \end{pmatrix}
  \begin{pmatrix}
    T_1\\
    \vdots\\
    \vdots\\
    \vdots\\
    \vdots\\
    T_6
  \end{pmatrix}=
  \begin{pmatrix}
    d_1\\
    \vdots\\
    \vdots\\
    \vdots\\
    \vdots\\
    d_6
  \end{pmatrix}
\end{equation}
\end{document} 

如果这不是数学符号约定方面的好风格(我不知道),那么我当然会写出向量的元素。欢迎澄清。

答案1

你可以这样做,只要你的主矩阵没有异常大的对象(否则你可以使用第一个参数来\dottedcolumn接受十进制数)。

\documentclass{article}
\usepackage{amsmath}

\newcommand{\dottedcolumn}[3]{%
  \settowidth{\dimen0}{$#1$}
  \settowidth{\dimen2}{$#2$}
  \ifdim\dimen2>\dimen0 \dimen0=\dimen2 \fi
  \begin{pmatrix}\,
    \vcenter{
      \kern.6ex
      \vbox to \dimexpr#1\normalbaselineskip-1.2ex{
        \hbox{$#2$}
    \kern3pt
    \xleaders\vbox{\hbox to \dimen0{\hss.\hss}\vskip4pt}\vfill
    \kern1pt
    \hbox{$#3$}
  }\kern.6ex}\,
  \end{pmatrix}
}

\begin{document}
\begin{equation}
  \begin{pmatrix}
    a_1 & b_1 &     &     &     &\\
    c_2 & a_2 & b_2 &     &     &\\
        & c_3 & a_3 & b_3 &     &\\
        &     & c_4 & a_4 & b_4 &\\
        &     &     & c_5 & a_5 & b_5\\
        &     &     &     & c_6 & a_6
  \end{pmatrix}
  \dottedcolumn{6}{T_1}{T_6}=\dottedcolumn{6}{d_1}{d_6}
\end{equation}
\end{document} 

在此处输入图片描述

答案2

从中获取一些代码如何得到好的“被整除”符号?,您可以创建自己的\vdots具有任意数量预定义点的点。在这里我定义了\sixvdots

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\newcommand{\sixvdots}{%
  \vbox{\baselineskip1ex\lineskiplimit0pt%
  \hbox{.}\hbox{.}\hbox{.}\hbox{.}\hbox{.}\hbox{.}}}
\begin{document}
\begin{equation}
  \begin{pmatrix}
    a_1 & b_1 &     &     &     &\\
    c_2 & a_2 & b_2 &     &     &\\
        & c_3 & a_3 & b_3 &     &\\
        &     & c_4 & a_4 & b_4 &\\
        &     &     & c_5 & a_5 & b_5\\
        &     &     &     & c_6 & a_6
  \end{pmatrix}
  \begin{pmatrix}
    T_1\\
    \sixvdots\\
    T_6
  \end{pmatrix}=
  \begin{pmatrix}
    d_1\\
    \sixvdots\\
    d_6
  \end{pmatrix}
\end{equation}
\end{document}

增加值会\baselineskip拉伸点。

答案3

nicematrix我建议使用具有专门针对此问题的功能的软件包。

只需在序言中添加:

\usepackage{nicematrix}
\NiceMatrixOptions{renew-dots,renew-matrix,nullify-dots}

我们获得: 在此处输入图片描述

这是完整的代码。

 \documentclass{article}
 \usepackage{amsmath}

 \usepackage{nicematrix}
 \NiceMatrixOptions{renew-dots,renew-matrix,nullify-dots}

 \begin{document}
 \begin{equation}
   \begin{pmatrix}
     a_1 & b_1 &     &     &     &\\
     c_2 & a_2 & b_2 &     &     &\\
         & c_3 & a_3 & b_3 &     &\\
         &     & c_4 & a_4 & b_4 &\\
         &     &     & c_5 & a_5 & b_5\\
         &     &     &     & c_6 & a_6
   \end{pmatrix}
   \begin{pmatrix}
     T_1\\
     \vdots\\
     \vdots\\
     \vdots\\
     \vdots\\
     T_6
   \end{pmatrix}=
   \begin{pmatrix}
     d_1\\
     \vdots\\
     \vdots\\
     \vdots\\
     \vdots\\
     d_6
   \end{pmatrix}
 \end{equation}
 \end{document} 

相关内容