
이미지 아래에서 볼 수 있듯이 다음 코드가 있습니다. 지금 내가 가진 출력은 아래 첫 번째 이미지와 같습니다.
아래 이미지와 같이 중간에 파란색과 빨간색 화살표가 있는 출력을 원합니다. 색상과 화살표 위치를 변경할 수 없는 것 같습니다.
코드는 아래와 같습니다. 누구든지 나를 도와줄 수 있나요?
\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
\matrix
matrix 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
. 이는 그리드를 그리는 것입니다. 행과 열 사이에 간격이 없으며 각 노드 주위에 직사각형이 그려져 있어야 하며 12m
OP 셀의 내용에 맞게 최소 셀 크기가 선택되었습니다. 개인적으로 나는 그리드를 그리지 않을 것입니다.책꽂이패키지는 테이블에서 수직선을 피해야 하는 이유를 설명하지만, 이는 질문에서 요구한 것입니다....
내 코드에서 정사각형 셀이 아닌 직사각형 셀을 사용하여 레이아웃을 MWE와 동일하게 만들고 싶다면 minimum size=12mm
를 minimum 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