如何在LaTeX幻灯片指定位置放置tikzpicture图形?
在LaTeX幻灯片指定位置放置TikZ图形的方法
要实现类似PowerPoint的“指定位置插入图形且不影响原有文本布局”的效果,核心是让TikZ图形脱离文档流,不占用排版空间。以下是两种最实用的实现方式:
方法一:使用textpos包实现绝对定位
通过textpos包可以直接指定图形在幻灯片上的绝对坐标,完全不干扰原有文本的位置。
- 导言区引入包:
\usepackage[absolute,overlay]{textpos} \usepackage{tikz}
absolute:启用绝对坐标定位overlay:让图形不参与文档流排版,不会挤压原有内容
- 幻灯片中的示例代码:
\begin{frame} % 原有文本,位置不受图形影响 这是幻灯片上的原有文本,布局保持不变。 % 在指定位置插入TikZ图形 \begin{textblock*}{4cm}(2.5cm,3cm) % 第一个参数是图形宽度,括号内为左上角坐标(x,y) \begin{tikzpicture} \draw[red, thick] (0,0) rectangle (3,1.5); \node at (1.5,0.75) {自定义图形}; \end{tikzpicture} \end{textblock*} \end{frame}
调整括号内的(2.5cm,3cm)数值,即可将图形放到幻灯片的任意位置。
方法二:使用TikZ自带的overlay选项
利用TikZ的remember picture, overlay组合选项,配合幻灯片锚点实现定位,无需额外引入包。
- 导言区仅需引入TikZ:
\usepackage{tikz}
- 幻灯片中的示例代码:
\begin{frame} % 原有文本 这是幻灯片上的原有内容,位置不会改变。 \begin{tikzpicture}[remember picture, overlay] % 以幻灯片左下角为基准,偏移(x,y)位置绘制图形 \node at (current page.south west) [shift={(3cm,4cm)}] { \begin{tikzpicture} \draw[blue, thick] (0,0) circle (1cm); \node at (0,0) {圆形图形}; \end{tikzpicture} }; \end{tikzpicture} \end{frame}
current page.south west代表幻灯片左下角,也可替换为current page.north west(左上角)等锚点shift={(3cm,4cm)}用于调整图形相对于锚点的偏移量
可选:相对于特定文本定位
如果需要将图形关联到某段文本旁,可使用tikzmark命令实现精准关联:
\usepackage{tikz} \usetikzlibrary{tikzmark} \begin{frame} 这段文本旁边要放图形\tikzmark{target}。 \begin{tikzpicture}[remember picture, overlay] \node[above=8pt of pic cs:target, green] { \begin{tikzpicture} \draw (0,0) -- (1,1) -- (1,0) -- cycle; \end{tikzpicture} }; \end{tikzpicture} \end{frame}
内容的提问来源于stack exchange,提问作者Hadi Omidi
相关产品推荐
相关产品推荐

