我想创建一个小表格,用于 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}