如何不使用 nicematrix 在第 m 列后放置一条垂直线?

如何不使用 nicematrix 在第 m 列后放置一条垂直线?

我有以下矩阵

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
    \begin{flalign*}
    &\bordermatrix{ & u_1 & u_2 & u_3 & \dots & u_{m-1} & u_m &v_1 & v_2 &v_3& \dots&v_{n-1}& v_n\cr
        u_1 & 5 & 8 & 1 &\dots & 1 &1 &1 &1&1&\dots &1&1 \cr
        u_2 & 2 & 0 & 1 &\dots & 1 &1 &1&1&1&\dots &1 &1\cr
        u_3 & 1 & 1 & 0 &\dots & 1 &1 &1&1&1&\dots &1 &1\cr
        \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots &     \cr
        \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots &     \cr
        u_{m-1} & 1 & 1 & 1 &\dots & 40 &47 &1&1&1&\dots &1&1           \cr
        u_m &   14 & 41 & 61 &\dots & 11 &10 &14&15&1   &\dots  &1&1\cr
        \\
        \hline
        \\
        v_1 &   1 & 15 & 16 &\dots & 41 &17 &0&2&2&\dots &27 &2                 \cr
        v_2 &   1 & 1 & 1 &\dots & 1 &1 &2&0&2&\dots        &2 &2           \cr
        v_3 &   1 & 1 & 1 &\dots & 1 &1 &2&2&0&\dots&2 &2                   \cr
        \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \cr
        \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \cr
        v_{n-1} &   1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots    &0 &2               \cr
        v_n &1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots  &2 &8                \cr
    }. \qquad
    \end{flalign*}
\end{document}

我在矩阵的第 m 行后面放了一条水平线。但我还想在矩阵的第 m 列后面放一条垂直线。我希望矩阵有 4 个块。

我该怎么做?是否可以在第 m 列后放置一条垂直线?

编辑:我收到了一个解决方案,但它使用了“nicematrix”包。我收到以下错误:File未找到 nicematrix.sty。\renewcommand`

有人可以给出一个不使用 nicematrix 的解决方案吗?

答案1

您收到错误:File nicematrix.sty not found.因为您的 TeX 发行版未更新。
我建议您更新它。
如果您不能,这里有一个使用 TikZ 矩阵的解决方案。

\documentclass[10pt,a4paper, draft]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{positioning}
\usetikzlibrary{decorations.pathreplacing}
\tikzset{
    mymatr/.style={
        matrix of math nodes,
        nodes={text width=width("$\dots$"), text centered, text height=height("$1$"), 
        text depth=depth("$u_{m-1}$")},
        column 5/.style={nodes={text width=width("$u_{m-1}$"), text centered}},
        column 11/.style={nodes={text width=width("$v_{n-1}$"), text centered}}
        }
    }
\begin{document}
\begin{tikzpicture}    
\matrix[mymatr, 
  left delimiter=(,right delimiter=)]
     (m) {    
5 & 8 & 1 &\dots & 1 &1 &[6pt] 1 &1&1&\dots &1&1 \\
2 & 0 & 1 &\dots & 1 &1 &1&1&1&\dots &1 &1\\
1 & 1 & 0 &\dots & 1 &1 &1&1&1&\dots &1 &1\\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots &     \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots &     \\
1 & 1 & 1 &\dots & 40 &47 &1&1&1&\dots &1&1           \\
14 & 41 & 61 &\dots & 11 &10 &14&15&1   &\dots  &1&1\\[30pt]
1 & 15 & 16 &\dots & 41 &17 &0&2&2&\dots &27 &2                 \\
1 & 1 & 1 &\dots & 1 &1 &2&0&2&\dots        &2 &2           \\
1 & 1 & 1 &\dots & 1 &1 &2&2&0&\dots&2 &2                   \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \\
1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots    &0 &2               \\
1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots  &2 &8                \\
};
\matrix[mymatr, anchor=south west,
        ] at (m.north west) 
{u_1 & u_2 & u_3 & \dots & u_{m-1} & u_m &[6pt] v_1 & v_2 &v_3& \dots&v_{n-1}& v_n\\};
\matrix[mymatr, anchor=north east, column 1/.style={nodes={text width=width("$u_{m-1}$"), text centered}},
xshift=-6pt] at (m.north west) {
u_1\\   
u_2 \\  
u_3 \\  
\dots \\    
\dots   \\
u_{m-1}\\
u_m     \\[30pt]
v_1     \\
v_2     \\
v_3     \\
\dots   \\
\dots   \\
v_{n-1}\\
v_n     \\};
\draw ([xshift=-6pt]m.west) -- ([xshift=6pt]m.east);
\draw ([xshift=2pt]m.north) -- ([xshift=2pt]m.south);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这是一个{pNiceArray}使用 的解决方案nicematrix

\documentclass[10pt,a4paper]{article}
\usepackage{nicematrix}

\begin{document}

\begin{flalign*}
\setcounter{MaxMatrixCols}{15}
\begin{pNiceArray}[first-row,first-col]{cccccc|cccccc}
    & u_1 & u_2 & u_3 & \dots & u_{m-1} & u_m &v_1 & v_2 &v_3& \dots&v_{n-1}& v_n\\
u_1 & 5 & 8 & 1 &\dots & 1 &1 &1 &1&1&\dots &1&1 \\
u_2 & 2 & 0 & 1 &\dots & 1 &1 &1&1&1&\dots &1 &1\\
u_3 & 1 & 1 & 0 &\dots & 1 &1 &1&1&1&\dots &1 &1\\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots &\dots &  \dots \\
u_{m-1} & 1 & 1 & 1 &\dots & 40 &47 &1&1&1&\dots &1&1 \\
u_m &   14 & 41 & 61 &\dots & 11 &10 &14&15&1   &\dots  &1&1\\
\\
\hline
\\
v_1 &   1 & 15 & 16 &\dots & 41 &17 &0&2&2&\dots &27 &2 \\
v_2 &   1 & 1 & 1 &\dots & 1 &1 &2&0&2&\dots &2 &2 \\
v_3 &   1 & 1 & 1 &\dots & 1 &1 &2&2&0&\dots&2 &2 \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \\
\dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots & \dots&  \dots   \\
v_{n-1} &   1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots  &0 &2 \\
v_n &1 & 1 & 1 &\dots & 1 &1 &2&2&2&\dots  &2 &8 \\
\end{pNiceArray}
\end{flalign*}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容