我有以下算法
\documentclass[12pt,english]{article}
\usepackage{nicematrix}
\NiceMatrixOptions{renew-dots}
\NiceMatrixOptions{renew-matrix}
\begin{document}
$$
\begin{bNiceMatrix}
\ve_{1,1} & \cdots &\ve_{1,k}&\ve_{1,k+1} &\cdots & \ve_{1,n} \\
& \Ddots& \vdots & \vdots & \Ddots & \vdots \\
& & \ve_{k,k} &\ve_{k,k+1} &\cdots& \ve_{k,n} \\
\hline
& & & \ve_{k+1,k+1} & \cdots & \ve_{k+1,n} \\
\Block{2-3}<\huge>{0}
& & && \Ddots & \vdots \\
& & & & & \ve_{n,n} \\
\end{bNiceMatrix}
$$
\end{document}
我有两个问题,下面重点介绍:
我想要的第一件事就是拥有那条垂直线来实现块分区矩阵的外观。
我遇到的第二个问题是突出显示区域中的点重叠,可以解决这个问题吗?
老实说,即使使用 nicematrix 等强大的软件包,处理分块矩阵也是很繁琐的,我希望有一些在线软件可以轻松创建分块矩阵并生成代码。
答案1
用于\CodeAfter
绘制虚线对角线和垂直线。
\documentclass[12pt,english]{article}
\usepackage{nicematrix}
\usepackage{tikz} % added <<<
\NiceMatrixOptions{renew-dots}
\NiceMatrixOptions{renew-matrix}
\newcommand{\ve}{\varepsilon}
\begin{document}
$$
\begin{bNiceMatrix}[margin]
\ve_{1,1} & \cdots &\ve_{1,k} &\ve_{1,k+1} &\cdots & \ve_{1,n} \\
& \Ddots &\vdots & \vdots & & \vdots \\
& &\ve_{k,k} &\ve_{k,k+1} &\cdots & \ve_{k,n} \\ \hline
& & & \ve_{k+1,k+1} & \cdots & \ve_{k+1,n} \\
\Block{2-3}<\huge>{0}& & & & \Ddots & \vdots \\
& & & & & \ve_{n,n} \\
\CodeAfter % added <<<<<<<<<<<<
\line{1-4}{3-6}
\tikz \draw (1-|4) -- (7-|4);
\end{bNiceMatrix}
$$
\end{document}
答案2
对于垂直规则,可以使用{pNiceArray}
具有前导码的{array}
。
对于对角虚线,您可以使用 键禁用并行化parallelize-diags=false
。
\documentclass[12pt,english]{article}
\usepackage{nicematrix}
\NiceMatrixOptions{renew-dots,renew-matrix}
\newcommand{\ve}{\varepsilon}
\begin{document}
\[
\begin{bNiceArray}{ccc|ccc}[margin,parallelize-diags=false]
\ve_{1,1} & \cdots & \ve_{1,k} & \ve_{1,k+1} & \cdots & \ve_{1,n} \\
& \ddots & \vdots & \vdots & \ddots & \vdots \\
& & \ve_{k,k} & \ve_{k,k+1} & \cdots & \ve_{k,n} \\ \hline
& & & \ve_{k+1,k+1} & \cdots & \ve_{k+1,n} \\
\Block{2-3}<\huge>{0}& & & & \ddots & \vdots \\
& & & & & \ve_{n,n} \\
\end{bNiceArray}
\]
\end{document}