Tikz "수학 노드 행렬"에 대한 최대 열/최대 행 번호를 결정하는 자동화된 방법

Tikz "수학 노드 행렬"에 대한 최대 열/최대 행 번호를 결정하는 자동화된 방법

에서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}

위 코드의 출력

관련 정보