Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到!
TikZ和PGF是一种用在TeX上的CLI绘图工具。CLI和GUI是两种常见的绘图方式,前者是所想即所得(WYTIWYG)的,通过类编程的思想实现绘图,这种方式往往能够生成精确控制的函数图,常见的有PostScript、PGF、Asymptote、PSTricks等。后者则是所见即所得(WYSIWYG)的,常见的有CorelDraw、Illustrator、Photoshop、GIMP、Office、Visio等。 TikZ和PGF的关系则是高层和底层的关系,简单说来,TikZ基于PGF,它可以帮助我们用更易于理解的方式创建复杂的图形。PGF的全名是“portable graphics format”,或者“pretty, good, functional”,TikZ的命名更有趣,采用的是递归式的取名:“TikZ ist kein Zeichenprogramm”(TikZ is not a drawing program),类似的取名最出名的恐怕就是GNU(GNU is Not Unix)了。
教程
- TikZ and pgf Manual:官方指导教程。
- Graphics with Tikz:一份简单的TikZ教程slide。
- 例学Tikz & PGF:从具体例子入手学习TikZ和PGF。
- A TikZ mini course:一份介绍TikZ的简短的slide。
- A TikZ tutorial: Generating graphics in the spirit of TeX:TUG 2009视频教程。
- Commutative Diagrams using TikZ:一份介绍如何在( )中应用TikZ绘制交换图的教程。
- Graphics in LaTeX:一份对( )常见画图工具的综述,包含了对TikZ的有用的介绍。
- Graphics with PGF and TikZ:一篇发表在PracTeX杂志上的文章,包含了许多有用的图例。还有它的演示视频。
- Including TikZ pictures:介绍如何导入外部TikZ图案的文章。
- LaTeX Figures with PGF and TikZ:一份关于使用PGF和TikZ的利弊的讨论,发表于High Energy PhDs weblog。
- Statistiker-wg.de tutorials:收集了很多PP的TikZ实例,不过是德文的。
- Trace Diagram Codes & Examples:展示如何绘制trance图。
相关论坛、博客以及邮件列表
- comp.text.tex:最大并且是最活跃的( )相关的论坛。
- LaTeX-Community.org:一个相对比较新的不过发展很迅速的( )论坛/社区。拥有很多友善并且活跃的用户,可以帮忙解决大部分( )相关的问题。
- Beamer forums on SF:Beamer和PGF都是由同个作者写的,所以Sourceforge上的Beamer论坛上也有专门讨论PGF/Tikz的版块。
- PGF and TikZ forums on Sourceforge:Sourceforge上的PGF/TikZ论坛。活跃度比较低。但如果你向PGF用户邮件列表提交问题,获取帮助的机会比较大。
- LaTeX_Fun:介绍( )技术的博客。
- The latex-beamer-users mailing list on SF:Sourceforge上的( )-Beamer用户邮件列表。在这个邮件列表中也能够找到关于PGF/TikZ的讨论。
- CTeX论坛:里面有专门的( )绘图专区版块,不过介绍的内容比较杂,还可以找到Asymptote、PostScript等的资源。
实例
- TeXample.net:PGF/TikZ的官方gallery,要检索全部实例可以访问这里。
- Graph Theory in LaTeX:收集( )下的绘图工具绘制的图案;
- Altermundus.com:介绍TikZ相关的包和绘制出来的实例。
- 简单流图(Simple flow chart)
- 工作流图(The TeX work flow)
- UML时序图(UML sequence diagrams)
- 类图(Class diagram)
- ER图(Entity-Relationship diagram)
- 系统架构图(System Combination)
- 基于数据流的系统架构图(Inertial navigation system)
- 归并树(Merge sort recursion tree)
- Prim算法(Prim’s algorithm,用于生成最小生成树)
- 神经网络(Neural network)
- 有限状态机(state machine)
- 正则表达式图(Putting a diagrams in chains)
- 便签条图(Boxes with text and math)
- 公式说明(Beamer Arrows)
- 负反馈系统控制图(Control system principles)
- 直线相交(Intersecting lines)
- 函数图(Parabola plot)
- 波形图(Parameterized plots)
- 节点形状(Node shapes)
- 连接文字和图形(Connecting text and graphics)
- 韦恩图(Set operations illustrated with Venn diagrams)
- 心智图(Computer science mindmap)
- 太极图(Yin and yang)
- 蛛网图(Spiderweb diagram)
- 分散的点(Scatterplot)
扩展宏包
- bclogo:一个用于创建带标题和logo的彩色盒子的宏包。支持TikZ和PSTricks。
- Beamer:用来创建精美的幻灯片的宏包,可能是( )下最简单易用的幻灯片制作工具了。它和PGF/TikZ出自同一个作者。
- Bodegraph:一个用来绘制Bode图、Nichols-Black图和Nyquist图的宏包。
- CircuiTikz for drawing electrical networks:一套用来在科学刊物中绘制电路图的( )宏包。PGF的电路图库就是根据这个包开发出来的。
- Pgfplots:提供一个非常友好的接口,用来完成普通或者对数尺度函数图的绘制。
- prerex:一个基于PGF的用来创建有节点相连的图表的工具。
- Schéma-blocs avec PGF/TIKZ:用于绘制block。
- sparklines:用于绘制波形图。
- tikz-qtree: Simple syntax and smarter layout for trees:用于在TikZ中绘制树,使用的是Alexis Dimitriadis’Qtree的创建语法。使用它绘制出来的树不会有树节点的碰撞问题,相比TikZ的标准绘制树的功能而言有了较大的改进。
- tikz-timing:用于绘制时序图。
- tkz-berge:一组用于绘制多种图形的宏包。
- tkz-graph:用于绘制基本图形。
- tkz-linknodes:用于连接两个节点元素。
- tkz-tab:用于绘制复杂的表格图案。
实用工具
- extractpgf:一个perl脚本,可以直接由tikzpicture环境里的内容生成pdf文件。
- ktikz:一个小巧的KDE工具,可以可视化生成TikZ图表。
- TikZ2PDF:一个Python脚本工具,可以自动检测文件的改动并预览生成的图案效果。
- TikZIT:一个基于TikZ的跨平台GUI绘图工具。最初是针对TikZ快速绘制点状图而开发,现在也可以用来进行常规的图形绘制。
- Webgen::Tag::TikZ:一个用于生成静态的网站的工具。它支持使用TikZ标签直接在网页中自动生成基于TikZ的图形。
- Blend2TikZ:一个支持将blender曲线转换为TikZ路径的脚本。
- Convert Your VYM Mindmap to PGF/TikZ:一个小巧的C语言程序,可以将 VYM (View Your Mind)的Mindmap图导出的XML文件转换为TikZ的Mindmap图(查看示例文件)。
- Dia:基于GTK+的图形绘制程序。能够将图形保存成PGF代码。
- Dot2TeX:Graphviz转( )。
- dpic:一个类PIC语言的解释器,可以导出成PGF/TikZ等多种格式。它与circuit-macros一起使用,可以生成电路图。
- ePIX:一组命令行工具,能够生成精确控制的函数图,并支持TikZ、PSTricks、EEPIC等多种导出格式。
- Eps2pgf:将Eps图形转换为PGF/TikZ命令 。
- fig2tikz:一个优雅的工具,可以将XFig文件转换为TikZ命令。
- GeoGebra:一个支持几何、线性代数、微积分的数学图像软件,最新的预览版本pre-release version已经支持TikZ格式命令的导出。
- Gnuplot TikZ terminal:一个用Lua编写的Gnuplot终端。能够生成PGF和TikZ代码。
- Inkscape TikZ exporter:Inkscape的一个扩展工具,可以导出TikZ格式的SVG路径。目前还处在开发阶段。
- JFlap2TikZ:JFlap是一个用于有限状态机、图灵机和计算机理论探索实验的工具。JFlap2TikZ则是一个非常有用的脚本,用它可以将JFlap生成的包含图形信息的jff文件转换为包含了TikZ代码的( )文件。
- JpgfDraw:一个使用Java编写的线性图形工具。可以将插画导出为PGF格式命令、PNG以及SVG文件。一个有趣的特性是它可以生成flowfram和shapepar包需要的帧序列和图形信息
- JTikZ:一个基于Java AWT/Swing的PGF/TikZ可视化绘制工具。
- LaTeXPiX:一个GUI绘制工具,支持导出EEPIC和PGF代码,不过只支持Windows。
- Matfig2PGF:一个能够将Matlab图形脚本转换为PGF代码的工具。
- matlab2tikz:基于上面的Matfig2PGF,也是一个能将Matlab的图形转换为TikZ格式命令的工具。
- QtiPlot:一个用于二维/三维数据可视化及数据分析的程序。
- Sketch - A 3D Scene Description Translator:一个小巧而简单的系统,可以生成二维/三维的物体和场景草图。Sketch可生成PSTricks或者PGF/TikZ代码,并允许对绘制出来的三维物体进行标注。
- tikzDevice - TikZ output from R:提供一个针对R项目的全新的图形引擎,支持直接输出为TikZ命令。
- TpX drawing tool:一个轻量级的GUI图形绘制工具,可以绘制矢量图形。只支持Windows。