如何在表格中绘制这样的箭头?

如何在表格中绘制这样的箭头?

如何在表格中绘制这样的箭头?在此处输入图片描述

答案1

下次,请提供一个小示例文档,供大家作为答案的基础。例如,在这种情况下,由于您的问题是关于箭头的,您应该提供表格的代码,以便人们可以专注于回答问题,而不必先构建合适的表格。

一种方法是使用tikzmark标记表内的坐标,然后可以使用它来覆盖tikzpicture包含箭头的坐标。

例如,以下代码说明了您需要的两种箭头:同一列中从一行到另一行的弯曲箭头以及连续列中单元格之间的直箭头:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}
  \begin{tabular}{cc}
    14\tikzmark{a}  &   78  \\
    71\tikzmark{b}  &   \tikzmark{c}93  \\
  \end{tabular}
  \begin{tikzpicture}[overlay, remember picture, shorten >=.5pt, shorten <=.5pt, transform canvas={yshift=.25\baselineskip}]
    \draw [->] ({pic cs:a}) [bend left] to ({pic cs:b});
    \draw [->] ([yshift=.75pt]{pic cs:a}) -- ({pic cs:c});
  \end{tikzpicture}
\end{document}

桌子上覆盖着箭头

答案2

如果您想使用矩阵而不是表格,您可以从以下代码中获得启发:

% Code by Anonymous User from https://www.latex4technics.com/?note=1w9f
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\tikzset{ 
table/.style={
  matrix of nodes,
  row sep=-\pgflinewidth,
  column sep=-\pgflinewidth,
  nodes={rectangle,text width=3em,align=center},
  text depth=1.25ex,
  text height=2.5ex,
  nodes in empty cells
},
row 1/.style={nodes={fill=green!10,text depth=0.4ex,text height=2ex}},
row 6/.style={nodes={text depth=0.4ex,text height=2ex}},
column 1/.style={nodes={fill=green!10}},
}

\begin{document}

\begin{tikzpicture}
% the matrix entries
\matrix (mat) [table]
{
& $D_1$ & $D_2$ & $D_3$ & $D_4$ & foo \\
$O_1$ & 50  & 0 & & & 50 \\
$O_2$ & & 60 & & & 60 \\
$O_3$ & & 10 & 30 & 10 & 50 \\
$O_4$ & & & & 50 & 50 \\
bar & 50 & 70 & 30 & 60 & 210 \\
};
% the matrix rules
\foreach \x in {1,...,5}
{
  \draw 
    ([xshift=-.5\pgflinewidth]mat-\x-1.south west) --   
    ([xshift=-.5\pgflinewidth]mat-\x-6.south east);
  }
\foreach \x in {1,...,5}
{
  \draw 
    ([yshift=.5\pgflinewidth]mat-1-\x.north east) -- 
    ([yshift=.5\pgflinewidth]mat-6-\x.south east);
}    
% the arrows
\begin{scope}[shorten >=7pt,shorten <= 7pt]
\draw[->]  (mat-2-2.center) -- (mat-2-3.center);
\draw[->]  (mat-2-3.center) -- (mat-3-3.center);
\draw[->]  (mat-3-3.center) -- (mat-4-3.center);
\draw[->]  (mat-4-3.center) -- (mat-4-4.center);
\draw[->]  (mat-4-4.center) -- (mat-4-5.center);
\draw[->]  (mat-4-5.center) -- (mat-5-5.center);
\draw[->]  (mat-5-5.center) -- (mat-6-6.center);
\end{scope}
\end{tikzpicture}

\end{document}

在此处输入图片描述

您可以在此处试验代码:https://www.latex4technics.com/?note=1w9f

答案3

您可以使用 来实现这一点{NiceArray}nicematrix此环境类似于经典环境{array}array),但在单元格下构建 PGF/Tikz 节点。然后,可以将这些节点与 Tikz 一起使用。

\documentclass{article}

\usepackage{nicematrix,tikz}

\begin{document}

\renewcommand{\arraystretch}{1.5}
$\begin{NiceArray}{*{9}{c}}
0 & 1  & 2  & 3  & 4  & 5  & 6  & 7  & 8 \\
  & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 \\
  & 19 &    & 21 & 22 & 23 & 24 & 25 & 26 \\
  & 28 &    & 30\rlap{${}=s$} &   & 32 & 33 & 34 & 35 \\
  & 37 &    & 39 &    & 41 &    & 43 & 44 \\
  & 46 &    & 48 &    & 50 &    & 52 &    \\
  & 55 &    & 57 &    & 59 &    & 61 &    \\
  &    &    & 66 &    & 68 &    & 70 &    \\
  &    &    &    &    & 77 &    & 79\rlap{${}=t=30+3a+2b$} \\
  &    &    &    &    &    &    & 88 &    \\
\CodeAfter
\begin{tikzpicture}
\draw (1-1)  circle (2mm) 
      (2-3)  circle (2mm) 
      (3-5)  circle (2mm) 
      (4-7)  circle (2mm) 
      (5-9)  circle (2mm) 
      (7-2)  circle (2mm) 
      (8-4)  circle (2mm) 
      (9-6)  circle (2mm) 
      (10-8) circle (2mm) ;
\begin{scope} [->]
\draw (4-4.east) to [bend left=45] (5-4.east) ;
\draw (5-4.east) to [bend left=45] (6-4.east) ;
\draw (6-4.east) to [bend left=45] (7-4.east) ;
\draw (7-4) -- (8-6) ; 
\draw (8-6) -- (9-8) ;
\end{scope}
\end{tikzpicture}
\end{NiceArray}$

\end{document}

您需要多次编译(因为nicematrix使用 PGF/Tikz 节点)。

上述代码的输出

相关内容