请告诉我如何编写 latex 代码来生成下图形式的矩阵。非常感谢。我当前的代码不是我想要的。
\documentclass[a4paper]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
U^{(k+1)}_a=
\left(
\begin{array}{ccccc|c}
& & & & & \left(U^{(k+1)}_a\right)_{0k} \\
& & & & & \left(U^{(k+1)}_a\right)_{1k} \\
& & U^{(k)}_a & & & \vdots \\
& & & & & \vdots \\
& & & & & \vdots \\
\hline
a_k & 0 & \dots & 0 & 0 & \left (U^{(k+1)}_a\right)_{kk}
\end{array}
\right).
\end{equation}
\end{document}
答案1
这可以使用\multicolumn
命令来完成。该\cline
命令会生成部分水平线。\multicolumn
最后一行的 1 列会消除垂直线的最后一部分。使用\multicolumn
该U^{(k)}_a
命令会自动将其水平居中,而不是将其放在第三列。
\arraystretch
我还通过设置为在行之间添加了一点空间1.6
。
\documentclass[a4paper]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
U^{(k+1)}_a=
\left(
\renewcommand{\arraystretch}{1.6}
\begin{array}{ccccc|c}
& & & & & \left(U^{(k+1)}_a\right)_{0k} \\
& & & & & \left(U^{(k+1)}_a\right)_{1k} \\
\multicolumn{5}{c|}{U^{(k)}_a} & \vdots \\
& & & & & \vdots \\
& & & & & \vdots \\
\cline{1-5}
a_k & 0 & \dots & 0 & \multicolumn{1}{c}{0} & \left (U^{(k+1)}_a\right)_{kk}
\end{array}
\right).
\end{equation}
\end{document}
我可能还会删除 的第 4 列和 的两行\vdots
,并使用\cdots
代替\dots
,但这只是我的意见。如果添加,\usepackage{array}
您将获得水平线和垂直线之间更清晰的连接。
U^{(k+1)}_a=
\left(
\renewcommand{\arraystretch}{2}
\begin{array}{cccc|c}
& & & & \left(U^{(k+1)}_a\right)_{0k} \\
\multicolumn{4}{c|}{U^{(k)}_a} & \left(U^{(k+1)}_a\right)_{1k} \\
& & & & \vdots \\
\cline{1-4}
a_k & 0 & \cdots & \multicolumn{1}{c}{0} & \left (U^{(k+1)}_a\right)_{kk}
\end{array}
\right).
答案2
它实际上是一个二乘二的矩阵,带有嵌套的矩阵:
\documentclass{article}
\usepackage{amsmath,array}
\begin{document}
\[
U'=\left(
\begin{array}{@{}c|c@{}}
U & \begin{array}{@{}c@{}} a \\ b \\ \vdots \end{array} \\
\cline{1-1}
\multicolumn{1}{@{}c}{
\begin{matrix} a & b & \cdots \end{matrix}
} & z
\end{array}
\right)
\]
\end{document}
答案3
如果您希望不受干扰地获得更多的点,您可能希望使用tikz
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\[U'~=~\left(
\vcenter{\hbox{\begin{tikzpicture}
\node[matrix of math nodes] (mymat) {
& & ~& \left(U^{(k+1)}_a\right)_{0k} \\
& & ~& \left(U^{(k+1)}_a\right)_{1k} \\
& ~~~~~~{\text{\Huge$U$}}~~~~~~ & & \\[1cm]
~ & & ~ & ~ \\
a & & & \left (U^{(k+1)}_a\right)_{kk}\\
};
\draw (mymat-1-4.north west) -- (mymat-5-4.north west);
\draw (mymat-4-1.south west) -- (mymat-4-3.south east);
\draw[ultra thick,line cap=round,dash pattern=on 0 off 1.6mm](mymat-2-4)--(mymat-4-4);
\draw[ultra thick,line cap=round,dash pattern=on 0 off 1.6mm](mymat-5-1)--(mymat-5-4);
\end{tikzpicture}}}\right)
\]
\end{document}
答案4
使用{pNiceArray}
。在该环境下,由(类似于)和前言中的说明符nicematrix
指定的规则不会在由连续虚线(和)命令分隔的虚拟块中绘制。\Hline
hline
|
\Vdots
\Cdots
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$U' =
\begin{pNiceArray}{ccc|c}[xdots/shorten=4pt,left-margin=2pt]
\Block{3-3}{U}
& & & a \\
& & & b \\
& & & \Vdots \\
\Hline
a & b & \Cdots & z
\end{pNiceArray}$
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。