在具有偶数行的稀疏矩阵中以 \vdots 为中心

在具有偶数行的稀疏矩阵中以 \vdots 为中心

我试图在稀疏矩阵中仅定义非零元素,因此使用一些\vdots条目为零的元素并在需要时指定行(使用前言中的blockarray命令\usepackage{blkarray})。我的矩阵只有 2 列(或 4 列),所以我无法\vdots像我希望的那样居中(如果矩阵有奇数列,问题就会解决)。以下是一个例子:

$\begin{blockarray}{ccc}
  \begin{block}{[cc]l}
   \vdots \\
   a & b & /K-1  \\
   c & d & /K \\
  \vdots \\
 \end{block}
\end{blockarray}$

正如您在本例中看到的,虽然我指定将条目置于[和之间],但\vdots在第一列上居中。如果我用、和cc的任意组合替换,仍然不令人满意。此外,如果我将 放在右侧和/或左侧的任意数量的 之间,它仍然不起作用。rcl\vdots&

我的另一个解决方案(但也不令人满意)是添加另一列:

$\begin{blockarray}{cccc}
  \begin{block}{[ccc]l}
   &\vdots& \\
   a & & b & /K-1  \\
   c & & d & /K \\
  &\vdots& \\
 \end{block}
\end{blockarray}$

但正如您现在所看到的,非零条目相距太远,结果并不是很漂亮。

感谢您的时间和帮助。

答案1

blkarray无需额外的软件包即可完成此操作,只需使用\BAmulticolumn,这是特定的命令blockarray

\documentclass{article}
\usepackage{blkarray}

\begin{document}

\[
\begin{blockarray}{ccc}
  \begin{block}{[cc]l}
   \BAmulticolumn{2}{c}{\vdots} & \\
   a & b & /K-1  \\
   c & d & /K \\
   \BAmulticolumn{2}{c}{\vdots} & \\
 \end{block}
\end{blockarray}
\]

\end{document}

在此处输入图片描述

答案2

两种可能性:第一种是使用额外的柱子和@{...}构造来减少柱间距;第二种是用来\tikzmark放置一些标记,然后\vdots使用这些标记进行放置。

\documentclass{article}
\usepackage{blkarray}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand\tikzmark[1]{%
  \tikz[remember picture,overlay] \node (#1) {};}

\begin{document}

\[
\begin{blockarray}{cccc}
  \begin{block}{[c@{\hspace{3pt}}c@{\hspace{3pt}}c]l}
   &\vdots& \\
   a & & b & /K-1  \\
   c & & d & /K \\
  &\vdots& \\
 \end{block}
\end{blockarray}
\]

\[
\begin{blockarray}{ccc}
  \begin{block}{[cc]l}
   \tikzmark{a} & \tikzmark{b} \\
   a & b & /K-1  \\
   c & d & /K \\
   \tikzmark{c} & \tikzmark{d} \\
 \end{block}
\end{blockarray}
\]
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=0.5ex] at ( $ (a)!0.5!(b) $ ) {$\vdots$};
\node[yshift=1.7ex] at ( $ (c)!0.5!(d) $ ) {$\vdots$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

与。{bNiceArray}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\renewcommand{\arraystretch}{1.4}

$\begin{bNiceArray}{c:c}[last-col]
\\
\Block{2-2}{} % prevent the vertical dotted rule in the \Block
a & b & / K -1 \\
c & d & / K \\
\\
\end{bNiceArray}$

\end{document}

上述代码的输出

相关内容