将表置于节点上方

将表置于节点上方

我想创建一个小表格,用于 tikz 中的节点上方。它由一个居中的数字、一个箭头以及三对数字组成,数字之间有一个箭头和一条线。这是我尝试的:

\documentclass{article}
\begin{document}

\begin{tabular}{cc}
\multicolumn{2}{c}{4}   \\
%Arrow
\multicolumn{2}{c}{
\begin{tikzpicture}
\draw[<-] (-.5,0) -- (.5,0);
\end{tikzpicture}
}                       \\
1   &   2               \\
%Arrow    
\multicolumn{2}{c}{
\begin{tikzpicture}
\draw[->] (-.5,0) -- (.5,0);
\end{tikzpicture}
}                       \\
10  &   20              \\
%Line    
\multicolumn{2}{c}{
\begin{tikzpicture}
\draw (-.5,0) -- (.5,0);
\end{tikzpicture}
}                       \\
15  &   25              \\
\end{tabular}

\end{document}

在此处输入图片描述

我想知道是否有更好的方法来实现这一点(例如减少一对数字和箭头之间的垂直间距)。另外,我如何将其放在节点上方?

答案1

这里有一个建议,允许您保留表格并仅添加箭头作为覆盖。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\begin{document}
\newcommand{\tikznode}[2]{\tikz[remember picture,baseline=(#1.base),inner
     sep=0pt]{\node(#1)[inner sep=0pt]{#2};}}


\begin{tabular}{cc}
\multicolumn{2}{c}{4}   \\[2mm]
\tikznode{1}{1}   &   \tikznode{2}{2}               \\[1mm]
\tikznode{10}{10}  &   \tikznode{20}{20}              \\[1mm]
\tikznode{15}{15}  &   \tikznode{25}{25}              \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw[latex-] ([yshift=1mm]1.north west) -- ([yshift=1mm]2.north east);
\draw[-latex] ([yshift=1mm]10.north west) -- ([yshift=1mm]20.north east);
\draw[-] ([yshift=1mm]15.north west) -- ([yshift=1mm]25.north east);
\end{tikzpicture}
\end{document}

如果您认为太拥挤,只需增加距离即可1mm

至于您的评论,这里有一种将表格的某一行变成一个节点的方法。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\newcommand{\tikznode}[2]{\tikz[remember picture,baseline=(#1.base),inner
     sep=0pt]{\node(#1)[inner sep=0pt]{#2};}}


\begin{tabular}{cc}
\multicolumn{2}{c}{4}   \\[2mm]
\tikznode{1}{1}   &   \tikznode{2}{2}               \\[1mm]
\tikznode{10}{10}  &   \tikznode{20}{20}              \\[1mm]
\tikznode{15}{15}  &   \tikznode{25}{25}              \\[1mm]
\tikznode{175}{17.5}  &   \tikznode{275}{27.5}              \\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw[latex-] ([yshift=1mm]1.north west) -- ([yshift=1mm]2.north east);
\draw[-latex] ([yshift=1mm]10.north west) -- ([yshift=1mm]20.north east);
\draw[-] ([yshift=1mm]15.north west) -- ([yshift=1mm]25.north east);
\node[draw,fit=(175) (275)]{};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容