我想做一个弯曲如下图所示,用标签连接两个单元格。为了使标签突出,标签的边界框和边框必须覆盖其下方的任何对象。
\documentclass[border=12pt,12pt,varwidth]{standalone}
\usepackage{longtable}
\usepackage{array}
\usepackage{xcolor}
\def\tc#1#2{{\color{#1}#2}}
\begin{document}
\begin{longtable}{|*{5}{>{$}c<{$}|}}\hline
n & A & A-10 & B & B-10\\\hline
1 & 5 & 5 & 7 & 9 \\\hline
2 & 10 & \tc{red}{10} & 14 & \tc{green}{18}\\\hline
3 & 15 & 15 & 21 & 27\\\hline
4 & \tc{red}{20} & 20 & \tc{green}{28} & 36\\\hline
5 & 25 & 25 & 35 & 45\\\hline
\end{longtable}
\end{document}
答案1
您还可以使用nicematrix
使用 Ti 的包钾Z 绘制表格,从而可以很容易地引用某些单元格:
\documentclass[border=12pt,varwidth]{standalone}
\usepackage{nicematrix, tikz}
\begin{document}
\[\begin{NiceArray}{ccccc}[hvlines]
n & A & A-10 & B & B-10 \\
1 & 5 & 5 & 7 & 9 \\
2 & 10 & \color{red} 10 & 14 & \color{green!75!black} 18 \\
3 & 15 & 15 & 21 & 27 \\
4 & \color{red} 20 & 20 & \color{green!75!black} 28 & 36 \\
5 & 25 & 25 & 35 & 45 \\
\CodeAfter
\tikz{
\draw[->, red]
(5-2.north east)
to[bend left]
node[circle, fill=white, inner sep=1pt, pos=0.5, font=\scriptsize] {10}
(3-3.south west);
\draw[->, green!75!black]
(5-4.north east)
to[bend left]
node[circle, fill=white, inner sep=1pt, pos=0.5, font=\scriptsize] {10}
(3-5.south west);
}
\end{NiceArray}\]
\end{document}
答案2
您可以使用tikzmark
图书馆来做到这一点。
我修改了你的宏\tc
。现在它创建一个节点并接受三个参数(格式、节点名称、内容)。然后我添加一个,tikzpicture[remember picture,overlay]
并在节点之间绘制弯曲的箭头。
我的代码:
\documentclass{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\usepackage{longtable}
\usepackage{array}
%\usepackage{xcolor}
%\def\tc#1#2{{\color{#1}#2}}
\newcommand\tc[3][]{\tikzmarknode[#1]{#2}{#3}}
\begin{document}
\lipsum[1]
\begin{longtable}{|*{5}{>{$}c<{$}|}}\hline
n & A & A-10 & B & B-10\\\hline
1 & 5 & 5 & 7 & 9 \\\hline
2 & 10 & \tc[red]{a}{10} & 14 & \tc[green]{b}{18}\\\hline
3 & 15 & 15 & 21 & 27\\\hline
4 & \tc[red]{c}{20} & 20 & \tc[green]{d}{28} & 36\\\hline
5 & 25 & 25 & 35 & 45\\\hline
\end{longtable}
\begin{tikzpicture}[remember picture,overlay]
\draw[-latex,red] (c) to[out=10,in=180]node[fill=white,inner sep=1pt]{\tiny10} (a);
\draw[-latex,green] (d) to[out=10,in=180]node[fill=white,inner sep=1pt]{\tiny10} (b);
\end{tikzpicture}
\lipsum[2]
\end{document}