给一个用 tikz 的 matrix 实现的方法,和上面的回答一致,但大括号用 \big
配合 \delimitershortfall
命令实现,主要用一下 \delimitershortfall
\documentclass[border=1cm,tikz]{standalone}
\usetikzlibrary {matrix, calc}
\begin{document}
\begin{tikzpicture}
\matrix (m) [minimum width = 2em, minimum height = 3.5ex, matrix of nodes] {
1 & 0 & 2 & 0 & -3\\
0 & 1 & -1 & 0 & 4 \\
0 & 0 & 0 & 1 & 1 \\
0 & 0 & 0 & 0 & 0 \\
};
\draw[red, dashed] ($(m-1-1.north west)+(0.17,-0.13)$) |- (m-2-1.north east) |-(m-3-3.north east) |-($(m-4-5.north east)-(0.16,0)$);
\delimitershortfall=-42pt
\node at($(m.west)+(0.1,0)$) {$\big($ };
\node at($(m.east)-(0.15,0)$) {$\big)$ };
\end{tikzpicture}
\end{document}
以上采用 node 的参数 minimum width, minimum height
控制元素的间距,使元素的间距更加均匀,也更容易控制虚线位于两列元素之间的中线位置。
使用 calc 库方便精调括号的位置。
实践中看到,delimitershortfall 的参数对括号的长度控制成梯状,比如 \delimitershortfall=-37
到 \delimitershortfall=-42
大括号没有变化,但 \delimitershortfall=-43
就会变长。
tikz 相较于 nicematrix 输出矩阵效率低,但可以调细节,各取所需。
用nicematrix
的方案一:
\documentclass{article}
\usepackage{libertinus-otf}
\usepackage{nicematrix}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\[
X =
\begin{pNiceMatrix}[extra-margin=7pt,cell-space-limits=.125cm]
1\Block[borders={bottom,left,tikz=densely dashed}]{1-1}{} & 0 & 2 & 0 & -3 \\
0 & 1\Block[borders={bottom,left,tikz=densely dashed}]{1-2}{} & -1 & 0 & -4 \\
0 & 0 & 0 & 3\Block[borders={bottom,left,tikz=densely dashed}]{1-2}{} & 5 \\
0 & 0 & 0 & 0 & 0 \\
\end{pNiceMatrix}
= Y
\]
\lipsum[2]
\end{document}
用niceamtrix
的方案二:
\documentclass{article}
\usepackage{libertinus-otf}
\usepackage{nicematrix}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\[
X =
\begin{pNiceMatrix}[
create-large-nodes,
left-margin=7pt,
right-margin=2pt
]
1 & 0 & 2 & 0 & -3 \\
0 & 1 & -1 & 0 & -4 \\
0 & 0 & 0 & 3 & 5 \\
0 & 0 & 0 & 0 & 0 \\
\CodeAfter
\tikz \draw[densely dashed,violet]
(1|-1) -- (1|-2) -- (2|-2) -- (2|-3) -- (4|-3) -- (4|-4) -- (6|-4)
;
\end{pNiceMatrix}
= Y
\]
\lipsum[2]
\end{document}
这个问题怎么解决?
@u7693
嗯...
基于
tikz
的matrix
子库和
基于
nicemetrix
是两套平行的方案....
@u7693
读文档!
还有,代码要给 完整 ,从
\documentclass
开始到\end{document}
结束,方便他人测试,也方便自己。delimiter
参数nicematrix
呢.....