Beamer 使用 tikz 宏包实现画图和动画实例

之前使用beamer写slides,都是直接找的图片,所以直接采用贴图的方式。前几天搜索到了tikz这个宏包,发现它可以用来绘制图表,并结合到beamer中形成动画效果,因此找了一些资料,并尝试画简单的流程图。

首先,需要在源文件中指定引用tikz宏包,并且定义一些简单的图形:

 代码如下 复制代码

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']

这里定义了两个图形,一个是普通的“块”,用蓝色填充,文字居中,有圆角;还有一个“大块”,其他都一样,只是文字宽度和“块”最小宽度不同。

 

试着画一个简单的静态图:

 代码如下 复制代码
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}

首先是开始一个tikzpicture绘图区域,然后使用node绘制节点,节点都是使用前面定义的“块”。可以通过位置参数来控制绘制的节点和其他节点的相对位置关系。绘制完节点之后,绘制节点的连线:通过path指令。这里使用双向箭头,所以在参数里面增加了<->符号。连接节点的方式很简单,用前面定义的节点名字,之间用–连起来就好了。这幅图是参照pro git中的集中式工作流介绍中的插图画的,源图为:集中式工作流

 

绘制出来的图为:

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

将tikz用在beamer中,最主要的当然是为了让生成的pdf有“动画”效果了,也就是能够自动生成多张pdf页面,在播放的时候有类似分布展现的效果。

 代码如下 复制代码
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}

这里主要靠path指令,用法和beamer中的itemize/item相同,通过指定<n->,让tex在后面第n页上绘制。需要特别注意的是第一个path。必须要绘制一个bounding box,否则在排版的时候会自动把节点进行居中等重排,导致后面的页面和前面的节点绝对位置有所移动。这里每个path会生成一页,这一个frame会包含6页。

 

beamer中使用listings宏包

好几次想在beamer中使用listings宏包来进行格式化和语法高亮,总是编译不通过。终于找到方法了,要在\begin{frame}后面加上[fragile]属性,如果frame包含名字,这个属性要在名字之前,如:

 代码如下 复制代码

\begin{frame}[fragile]{title}
\begin{lstlisting}
code
\end{lstlisting}
\end{frame}
时间: 2024-07-31 18:30:51

Beamer 使用 tikz 宏包实现画图和动画实例的相关文章

beamer 中使用 tikz 画图和动画

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

与众不同windows phone (17) Graphic and Animation(画图和动画)

介绍 与众不同 windows phone 7.5 (sdk 7.1) 之画图和动画 图形 画笔 转换 动画 缓动 示例 1.图形(Shape) ShapeDemo.xaml <phone:PhoneApplicationPage x:Class="Demo.GraphicAndAnimation.ShapeDemo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns

Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现

Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还是要追究一下原理怎么做的,我们新建一个GifLibrary,然后右键Properties--Android,我们把架包勾上 然后我们新建一个类GifSurfaceView继承自SurfaceView并且实现它的Callback接口 GifSurfaceView package com.lgl.gif

与众不同 windows phone (17) - Graphic and Animation(画图和动画)

原文:与众不同 windows phone (17) - Graphic and Animation(画图和动画) [索引页][源码下载] 与众不同 windows phone (17) - Graphic and Animation(画图和动画) 作者:webabcd 介绍与众不同 windows phone 7.5 (sdk 7.1) 之画图和动画 图形 画笔 转换 动画 缓动 示例1.图形(Shape)ShapeDemo.xaml <phone:PhoneApplicationPage x

excel利用“宏”建立窗体命令按钮动画教程

<Excel2003入门动画教程57.利用"宏"建立窗体命令按钮>. 演示动画 操作步骤 通过运行"宏"对话框调用宏不太方便,通过快捷键调用宏,如果宏多了又记不住,那我们不如在Excel表格中添加一个按钮吧. 如果宏仅对当前工作簿文档有效,我建议大家在工作簿文档中添加一个"窗体"命令按钮,用来调用宏: 执行"视图工具栏窗体"命令,展开"窗体"工具栏. 点击工具栏上的"命令按钮"

java 读取jar包中的资源文件实例程序

1) ClassLoader是abstract的,不可能实例化对象,更加不可能通过ClassLoader调用上面两个方法.所以我们真正写代码的时候,是通过Class类中的getResource()和getResourceAsStream()方法,这两个方法会委托ClassLoader中的getResource()和getResourceAsStream()方法 .好了,现在我们重新写一段Resource代码,来看看上面那段费解的话是什么意思了: Java代码  代码如下 复制代码 package

Python进行TCP数据包注入(伪造)实例教程

数据包注入是对已经建立的网络连接通过构建任意协议(TCP-UDP-)然后用原始套接字发送的方式进行妨碍的过程,这种方法被广泛使用在网络渗透测试中,比如DDOS,端口扫描等. 一个数据包由IP头部信息.TCP/UDP头部信息和数据构成: <span class="setting">Packet = <span class="value">IP Header + TCP/UDP Header + Data</span></spa

纯PHP生成的一个树叶图片画图例子_php实例

效果:   提示:保存到PHP文件然后在浏览器中打后即可看到和效果图一样的一张图片. 复制代码 代码如下: <?php $im=imagecreate(670,500); $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); $g = imagecolorallocate($im, 0x00, 0x00, 0x00); define("PII",M_PI/180); function drawLeaf($g,$x,$y,$L,$a

在Linux中使用matplotlib进行科学画图

在Linux中使用matplotlib进行科学画图 如果你想要在Linxu中获得一个高效.自动化.高质量的科学画图的解决方案,应该考虑尝试下matplotlib库.Matplotlib是基于python的开源科学测绘包,基于python软件基金会许可证发布.大量的文档和例子.集成了Python和Numpy科学计算包.以及自动化能力,是作为Linux环境中进行科学画图的可靠选择的几个原因.这个教程将提供几个用matplotlib画图的例子. 特性 支持众多的图表类型,如:bar,box,conto