当将 a 添加tikzpicture
到在矩阵外绘制线条的 a 时NiceMatrix
,矩阵的“边界框”不会增加。 有办法解决这个问题吗?
梅威瑟:
\documentclass[10pt, a4paper]{article}
\usepackage{nicematrix}
\begin{document}
\begin{align*}
\begin{pNiceMatrix}[name=mymatrix]
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}\rightarrow
\begin{pNiceMatrix}
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}
\end{align*}
\begin{tikzpicture}[remember picture, overlay]
\draw (mymatrix-1-5) -- ++(5em,0) |- (mymatrix-2-5);
\end{tikzpicture}
\end{document}
生产
我猜问题出overlay
在选项上tikzpicture
,但删除它时,绘图没有被放置在矩阵,但仅限于下方。
答案1
您的分析是正确的,overlay
这意味着边界框不会增加,但对于向之前创建的节点添加注释至关重要。但是,可以测量注释超出原始矩阵的程度,并添加相应的水平空间。
您似乎正在使用旧版本的nicematrix
。这里有一些东西可以在第一个矩阵之后添加所需的水平空间。类似的方法也可用于较新的版本。由于这只是原理证明,因此我没有努力避免使用全局宏,尤其是因为在下一个版本的 pgf 中这将变得更加容易。
\documentclass[10pt, a4paper]{article}
\usepackage{mathtools}
\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{calc,tikzmark}
\makeatletter% from https://tex.stackexchange.com/a/548004
\ExplSyntaxOn
\NewDocumentCommand \WhenNotMeasuring { } { \legacy_if:nF {measuring@} }
\makeatother
\ExplSyntaxOff
\makeatother
\begin{document}
\begin{align*}
\begin{pNiceMatrix}[name=mymatrix]
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}\tikzmark{R1}
\WhenNotMeasuring
{\begin{tikzpicture}[remember picture, overlay]
\begin{scope}[local bounding box=annot]
\draw (mymatrix-1-5) -- ++(5em,0) |- (mymatrix-2-5);
\end{scope}
\path let \p1=($(pic cs:R1)-(annot.west)$),
\p2=($(annot.east)-(annot.west)$)
in \pgfextra{\xdef\myshift{\the\dimexpr\x2-\x1}};
\end{tikzpicture}
\hspace{\myshift}}
\rightarrow
\begin{pNiceMatrix}
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}
\end{align*}
\begin{align*}
\begin{pNiceMatrix}[name=myothermatrix]
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}\tikzmark{R2}
\WhenNotMeasuring
{\begin{tikzpicture}[remember picture, overlay]
\begin{scope}[local bounding box=annot]
\draw (myothermatrix-1-5) -- ++(5em,0) |- (myothermatrix-2-5)
node[pos=0.25,right]{$a$};
\end{scope}
\path let \p1=($(pic cs:R2)-(annot.west)$),
\p2=($(annot.east)-(annot.west)$)
in \pgfextra{\xdef\myshift{\the\dimexpr\x2-\x1}};
\end{tikzpicture}
\hspace{\myshift}}
\rightarrow
\begin{pNiceMatrix}
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 2 \\
3 & 3 & 3 & 3 & 3 \\
4 & 4 & 4 & 4 & 4 \\
5 & 5 & 5 & 5 & 5 \\
\end{pNiceMatrix}
\end{align*}
\end{document}