에서MWE 아래에서 나는 정의했습니다
\def\MaxRow{3}
\def\MaxColumn{4}
\MaxRow
즉, 상수 와 를 조정하지 않고 행렬에 행이나 열을 추가하면 이 코드가 작동하지 않습니다 \MaxColumn
. 쉽게 판단할 수 있는 방법이 있나요?
- 최대 행 수 및
- 최대 열 수
의 matrix of math nodes
?
아래 코드에서는 남서쪽 입구와 북동쪽 입구 사이에 선을 그립니다.
암호:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\def\MaxRow{3}
\def\MaxColumn{4}
\begin{document}
\begin{tikzpicture}
\matrix (m) [
matrix of math nodes,
]{
1 & 2 & 3 & a\\
4 & 5 & 6 & b\\
7 & 8 & 9 & c\\
};
%% How to determine \MaxRow and \MaxColumn here?
\draw [red, thick, -latex](m-\MaxRow-1.south west) -- (m-1-\MaxColumn.north east);
\end{tikzpicture}
\end{document}
답변1
놀랍게도 내부 카운트를 사용하는 것만큼 쉽고 \pgfmatrixcurrentrow
매트릭스 \pgfmatrixcurrentcolumn
가 구성된 후에는 재설정되지 않습니다.
물론, 이 값은 다음 행렬이 구성될 때까지만 유효합니다.
matrix with last
대안 으로 행렬을 설정하는 키를 추가했습니다.
<matrix name>-<row>-Z
행의 마지막 노드를 참조합니다<row>
.<matrix name>-Z-<column>
열의 마지막 노드를 참조<column>
하고<matrix name>-Z-Z
행렬의 마지막 노드를 참조합니다.
(이는 셀 내부의 모든 노드에 적용되므로 더 복잡한 행렬의 경우에는 간단하지 않습니다.)
암호
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand*\MaxRow{\the\pgfmatrixcurrentrow}
\newcommand*\MaxColumn{\the\pgfmatrixcurrentcolumn}
\tikzset{
matrix with last/.default=Z,
matrix with last/.style={
every matrix/.append style={
nodes={
alias=\tikzmatrixname-\the\pgfmatrixcurrentrow-#1,
alias=\tikzmatrixname-#1-\the\pgfmatrixcurrentcolumn,
alias=\tikzmatrixname-#1-#1}}}}
\begin{document}
\begin{tikzpicture}
\matrix (m) [
matrix of math nodes,
matrix with last
]{
1 & 2 & 3 & a\\
4 & 5 & 6 & b\\
7 & 8 & 9 & c\\
};
\draw[red, thick, -latex](m-\MaxRow-1.south west) -- (m-1-\MaxColumn.north east);
\draw[blue, bend left] (m-Z-1.south west) to (m-1-Z.north east) to (m-Z-Z.center);
\end{tikzpicture}
\end{document}
답변2
nicematrix
자세한 내용은 (및 화살표를 그리는 TikZ)를 사용하여 이러한 그림을 만드는 방법이 있습니다 .
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
$\begin{NiceMatrix}
1 & 2 & 3 & a \\
4 & 5 & 6 & b \\
7 & 8 & 9 & c
\CodeAfter
\tikz \draw [red,thick,-latex] (last-|1) -- (1-|last) ;
\end{NiceMatrix}$
\end{document}