![如何不使用 nicematrix 在第 m 列后放置一条垂直线?](https://linux22.com/image/445195/%E5%A6%82%E4%BD%95%E4%B8%8D%E4%BD%BF%E7%94%A8%20nicematrix%20%E5%9C%A8%E7%AC%AC%20m%20%E5%88%97%E5%90%8E%E6%94%BE%E7%BD%AE%E4%B8%80%E6%9D%A1%E5%9E%82%E7%9B%B4%E7%BA%BF%EF%BC%9F.png)
我有以下矩阵
\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 节点)。