如何在LaTeX Beamer幻灯片中绘制跨区域的大箭头?
没问题!要在幻灯片的文本公式和表格数字之间画箭头,TikZ完全能搞定,核心思路就是给这两个需要连接的元素标记定位节点,然后在全局的overlay层绘制箭头就行。下面给你具体的实现方案和示例代码:
核心方案:用TikZ节点定位+overlay层绘制
首先在导言区加载必要的包:
\usepackage{tikz} \usetikzlibrary{calc} % 可选,用来微调箭头位置
然后在你的幻灯片里,给公式和表格里的数字分别添加定位节点,最后绘制箭头:
\begin{frame}{等价关系标注} % 顶部的数学公式,给它加一个对齐基线的定位节点 我们定义的等价式:$f(x) = \sum_{i=1}^n x_i$ \tikz[remember picture, baseline] \node (top-node) {}; \vspace{3cm} % 模拟中间的内容间距 \begin{tabular}{|c|c|c|} \hline 序号 & 数值 & 备注 \\ \hline 1 & 5 \tikz[remember picture, baseline] \node (bottom-node) {}; & 对应求和结果 \\ \hline 2 & 3 & 示例值 \\ \hline \end{tabular} % 在overlay层绘制箭头,不占用文档流空间 \begin{tikzpicture}[overlay, remember picture, thick, red] % 直接画直线箭头 \draw[->] (top-node.south) -- (bottom-node.north); % 如果想要弯曲的箭头,换成这个: % \draw[->] (top-node.south) to[out=270, in=90] (bottom-node.north); % 还可以在箭头中间加标注: % \draw[->] (top-node.south) -- (bottom-node.north) node[midway, right, black] {等价}; \end{tikzpicture} \end{frame}
关键参数解释
remember picture:让TikZ记住这些节点的位置,哪怕跨了tabular或者文本环境也能访问overlay:让箭头只在当前幻灯片上绘制,不会影响文档的排版布局baseline:让定位节点和文本/表格内容的基线对齐,保证箭头起点和终点的位置精准- 如果需要微调位置,可以用
calc库的坐标计算,比如(top-node.south)+(0,-0.2cm)来稍微下移起点
备选方案:用tikzmark包简化标记
如果你觉得手动加节点麻烦,可以用专门的tikzmark包,它更适合标记文本中的零散位置:
\usepackage{tikzmark} \begin{frame}{等价关系标注} 我们定义的等价式:$f(x) = \sum_{i=1}^n x_i$ \tikzmark{top-mark} \vspace{3cm} \begin{tabular}{|c|c|c|} \hline 序号 & 数值 & 备注 \\ \hline 1 & 5 \tikzmark{bottom-mark} & 对应求和结果 \\ \hline 2 & 3 & 示例值 \\ \hline \end{tabular} \begin{tikzpicture}[overlay, remember picture, thick, blue] \draw[->] ({pic cs:top-mark}) -- ({pic cs:bottom-mark}); \end{tikzpicture} \end{frame}
注意事项
- 编译的时候要至少编译两次!因为TikZ需要第一次收集所有节点的位置信息,第二次才能正确画出箭头
- 如果是Beamer幻灯片,确保所有标记和箭头都在同一个
frame里,跨帧的话需要额外处理,但你这里是同一页,不用操心 - 可以自定义箭头样式:比如改颜色
blue、粗细ultra thick、箭头形状stealth->等,按需调整就行
内容的提问来源于stack exchange,提问作者mnr
相关产品推荐
相关产品推荐

