beamer 中使用 tikz 画图和动画

简介: 之前使用beamer写slides,都是直接找的图片,所以直接采用贴图的方式。前几天搜索到了tikz这个宏包,发现它可以用来绘制图表,并结合到beamer中形成动画效果,因此找了一些资料,并尝试画简单的流程图。 首先,需要在源文件中指定引用tikz宏包,并且定义一些简单的图形: [cce lan

之前使用beamer写slides,都是直接找的图片,所以直接采用贴图的方式。前几天搜索到了tikz这个宏包,发现它可以用来绘制图表,并结合到beamer中形成动画效果,因此找了一些资料,并尝试画简单的流程图。
首先,需要在源文件中指定引用tikz宏包,并且定义一些简单的图形:
[cce lang=’latex’]
\usepackage{tikz}

\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=4em, text centered, rounded corners]
\tikzstyle{hugeBlock} = [rectangle, draw, fill=blue!20,
text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex’]
[/cce]
这里定义了两个图形,一个是普通的“块”,用蓝色填充,文字居中,有圆角;还有一个“大块”,其他都一样,只是文字宽度和“块”最小宽度不同。
试着画一个简单的静态图:
[cce lang=’latex’]
\begin{frame}{集中式工作流}
工作流程和svn类似,基本形态如图:
\begin{tikzpicture}[node distance = 2cm, auto]
\node [block] (center) {共享仓库};
\node[block, below of=center, node distance = 3cm](centerDevelop){开发者2};
\node[block, left of=centerDevelop, node distance = 3cm](leftDevelop){开发者1};
\node[block, right of=centerDevelop,node distance = 3cm](rightDevelop){开发者3};
\path[line,<->](center) — (leftDevelop);
\path[line,<->](center) — (centerDevelop);
\path[line,<->](center) — node{push/pull} (rightDevelop);
\end{tikzpicture}
\end{frame}
[/cce]
首先是开始一个tikzpicture绘图区域,然后使用\node绘制节点,节点都是使用前面定义的“块”。可以通过位置参数来控制绘制的节点和其他节点的相对位置关系。绘制完节点之后,绘制节点的连线:通过\path指令。这里使用双向箭头,所以在参数里面增加了<->符号。连接节点的方式很简单,用前面定义的节点名字,之间用–连起来就好了。这幅图是参照pro git中的集中式工作流介绍中的插图画的,源图为:集中式工作流
绘制出来的图为:

虽然不是太好看,当然也可以通过修改“块”的图形,弄的更好看些。

将tikz用在beamer中,最主要的当然是为了让生成的pdf有“动画”效果了,也就是能够自动生成多张pdf页面,在播放的时候有类似分布展现的效果。
[cce lang=’latex’]
\begin{frame}\frametitle{集成管理员工作流}\framesubtitle{参与者流程}
\begin{tikzpicture}[node distance = 3cm, auto]
\path[use as bounding box] (-1,0) rectangle (10,-2);
\path[line]<1-> node[block](fock){fock工程};
\path[line]<2-> node[block, right of=fock, node distance=3cm](clone){克隆到本地}
(fock) — (clone);
\path[line]<3-> node[block, right of=clone, node distance=3cm](edit){修改}
(clone) — (edit);
\path[line]<4-> node[block, below of=edit, node distance=3cm](commit){提交}
(edit) — (commit);
\path[line]<5-> node[block, left of=commit, node distance=3cm](push){推送远程}
(commit) — (push);
\path[line]<6-> node[block, left of=push, node distance=3cm](mergeRequst){请求merge}
(push) — (mergeRequst);
\end{tikzpicture}
\end{frame}
[/cce]
这里主要靠\path指令,用法和beamer中的itemize/item相同,通过指定<n->,让tex在后面第n页上绘制。需要特别注意的是第一个path。必须要绘制一个bounding box,否则在排版的时候会自动把节点进行居中等重排,导致后面的页面和前面的节点绝对位置有所移动。这里每个path会生成一页,这一个frame会包含6页。


转载自:https://coolex.info/blog/298.html

目录
相关文章
|
前端开发 JavaScript 定位技术
threejs绘制风羽
threejs绘制风羽
241 0
|
27天前
Threejs绘制圆锥体
这篇文章讲解了如何在Three.js中创建并正确定向圆锥体,确保其在不同场景下的稳定显示,涵盖了生成圆锥体几何体、设置材质和纹理以及解决可能的倾斜显示问题等内容。
30 1
Threejs绘制圆锥体
|
29天前
ThreeJs绘制贝塞尔曲线
这篇文章介绍了如何利用Three.js绘制贝塞尔曲线,并提供了实现的代码示例与说明。
23 2
ThreeJs绘制贝塞尔曲线
|
28天前
Threejs绘制传送带
这篇文章详细介绍了如何使用Three.js绘制一个动态的传送带模型,包括传送带的几何体创建、纹理应用以及实现带体循环移动的动画效果。
18 0
Threejs绘制传送带
|
6月前
|
前端开发 JavaScript 搜索推荐
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
142 1
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
|
前端开发
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
491 0
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
|
前端开发 开发者
Canvas中的拖拽、缩放、旋转 (下)——代码实现
Canvas中的拖拽、缩放、旋转 (下)——代码实现
574 0
Canvas中的拖拽、缩放、旋转 (下)——代码实现
|
前端开发 JavaScript
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
883 0
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
|
前端开发
用canvas绘制一个烟花动画
前言 在我们日常开发中贝塞尔曲线无处不在: svg 中的曲线(支持 2阶、 3阶) canvas 中绘制贝塞尔曲线 几乎所有前端2D或3D图形图表库(echarts,d3,three.js)都会使用到贝塞尔曲线 所以掌握贝塞尔曲线势在必得。这篇文章主要是实战篇,不会介绍和贝塞尔相关的知识, 如果有同学对贝塞尔曲线不是很清楚的话:可以查看我这篇文章——深入理解SVG 绘制贝塞尔曲线 第一步我们先创建ctx, 用ctx 画一个二阶贝塞尔曲线看下。二阶贝塞尔曲线有1个控制点,一个起点,一个终点。 const canvas = document.getElementById( 'canvas'
用canvas绘制一个烟花动画
|
前端开发 JavaScript Serverless
在 CSS 中使用三角函数绘制曲线图形及展示动画
在 CSS 中使用三角函数绘制曲线图形及展示动画
364 0
在 CSS 中使用三角函数绘制曲线图形及展示动画