오른쪽 색상의 화살표와 xshift 및 y Shift가 있는 테이블의 tikz

오른쪽 색상의 화살표와 xshift 및 y Shift가 있는 테이블의 tikz

이미지 아래에서 볼 수 있듯이 다음 코드가 있습니다. 지금 내가 가진 출력은 아래 첫 번째 이미지와 같습니다.

전류 출력

아래 이미지와 같이 중간에 파란색과 빨간색 화살표가 있는 출력을 원합니다. 색상과 화살표 위치를 변경할 수 없는 것 같습니다.
필요한 출력

코드는 아래와 같습니다. 누구든지 나를 도와줄 수 있나요?

\begin{tabular}{|r|r|r|r|r|r|}
\hline
V   & M   & V   & M   & V   & M   \\ \hline
6   & 4  & NaN & NaN & NaN & NaN \\ \hline
7   & 3   & 5   & 5 \tikzmark{f}   & NaN & NaN \\ \hline
NaN & NaN & 8   & \tikzmark{d}{2} \tikzmark{e}  & \tikzmark{c}{4}   &     \tikzmark{b}{6}   \\ \hline
NaN & NaN & NaN & NaN & 10  & \tikzmark{a}{0}   \\ \hline
\end{tabular}
\begin{tikzpicture}[overlay, remember picture, shorten >=.5pt, shorten <=.5pt]
\draw [->] ({pic cs:a}) [line width=0.35mm, yshift=-1] to ({pic cs:b});
\draw [->] ({pic cs:c}) [line width=0.35mm, yshift=-1] to ({pic cs:d});
\draw [->] ({pic cs:e}) [line width=0.35mm, yshift=-1] to ({pic cs:f});
\end{tikzpicture}

답변1

사용하는 대신 tikz 내부 \tikzmark를 사용합니다 . 테이블 형식 환경 내에서 항목을 그릴 때 사용으로 변경하면 실제로 코드가 단순화됩니다.matrix of math nodes\matrixmatrix of math nodes

출력과 코드를 제공하고 작동 방식을 설명하겠습니다. 먼저 출력은 다음과 같습니다.

여기에 이미지 설명을 입력하세요

다음 코드는 다음과 같습니다.

\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

  \begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
    \matrix (M)[matrix of math nodes,row sep=0mm,column sep=0mm,
                nodes=draw, minimum size=12mm]{
        V   & M   & V   & M   & V   & M   \\
        6   & 4   & NaN & NaN & NaN & NaN \\
        7   & 3   & 5   & 5   & NaN & NaN \\
        NaN & NaN & 8   & 2   &  4  &  6  \\
        NaN & NaN & NaN & NaN & 10  &  0  \\
     };
    \draw[ultra thick,blue,->] (M-5-6.west) -- (M-4-6.west);
    \draw[ultra thick,red,->]  (M-5-5.north) -- (M-5-4.north);
    \draw[ultra thick,blue,->] (M-4-4.west) -- (M-3-4.west);
    \draw[ultra thick,red,->]  (M-4-3.north) -- (M-4-2.north);
    \draw[ultra thick,blue,->] (M-3-2.west) -- (M-2-2.west);
  \end{tikzpicture}

\end{document}

이제 설명은 다음과 같습니다.

\matrix (M)명령은 로 지정된 좌표를 사용하여 행렬을 설정합니다 (M-<row>-<col>). 여기서 <row><col>는 행 및 열 인덱스입니다. 대신 썼다면 \matrix (mat)좌표를 (mat-<row>-<col>).

north다음으로 , south, 등 west을 사용하여 north west노드 사양이 참조하는 매트릭스 셀 부분을 조정할 수 있습니다 . 예를 들어, (M-4-3.west)행 4와 열 3에 있는 노드의 서쪽 가장자리를 나타냅니다. 이제 거의 모든 것이 명확해졌으면 좋겠습니다!

에서 matrix of math nodes내가 설정했습니다 row sep=0mm,column sep=0mm, nodes=draw, minimum size=12mm. 이는 그리드를 그리는 것입니다. 행과 열 사이에 간격이 없으며 각 노드 주위에 직사각형이 그려져 있어야 하며 12mOP 셀의 내용에 맞게 최소 셀 크기가 선택되었습니다. 개인적으로 나는 그리드를 그리지 않을 것입니다.책꽂이패키지는 테이블에서 수직선을 피해야 하는 이유를 설명하지만, 이는 질문에서 요구한 것입니다....

내 코드에서 정사각형 셀이 아닌 직사각형 셀을 사용하여 레이아웃을 MWE와 동일하게 만들고 싶다면 minimum size=12mmminimum width=12mm. 이것이 어떻게 보이는지 보여주고 노드 사양을 더욱 강조하기 위해 그리기 문을 다음과 같이 변경하면 됩니다.

    \draw[ultra thick,blue,->] (M-5-6.south west) -- (M-4-6.south west);
    \draw[ultra thick,red,->]  (M-5-5.north east) -- (M-5-4.north west);
    \draw[ultra thick,blue,->] (M-4-4.south west) -- (M-3-4.south west);
    \draw[ultra thick,red,->]  (M-4-3.north east) -- (M-4-2.north west);
    \draw[ultra thick,blue,->] (M-3-2.south west) -- (M-2-2.south west);

그럼 minimum size=12mm너랑 같이

여기에 이미지 설명을 입력하세요

편집하다(질문은 댓글로 답변)

열을 음영 처리하려면 행렬 옵션에 다음 every odd column과 스타일을 추가하면 충분합니다 .every even column

every odd column/.style={nodes={fill=pink}},
every even column/.style={nodes={fill=blue!20!white}},

이를 사용하면 그림이 다음과 같이 됩니다.

여기에 이미지 설명을 입력하세요

당신이 보고 있는 "이중" 선은 렌더링 오류이며 아마도 브라우저에 따라 다르며 인쇄할 때 나타나지 않을 수도 있습니다(모르겠어요, 확인하지 않았습니다). 위의 그림에서는 매우 빠르게 제거했습니다.애드 혹행과 열 구분을 다음과 같이 변경하면 됩니다.

row sep=-0.1mm,column sep=-0.1mm

관련 정보