LaTeX/程序化图形简介
在 导入图形 章节中,您了解到可以将图形导入或链接到 LaTeX 中,例如您在其他程序中创建的或从其他地方获得的图形。在本节中,您将学习如何直接在 LaTeX 文档中创建或嵌入图形。图形使用类似于排版粗体文本或创建数学公式的命令进行标记,如下面的嵌入图形示例所示
\begin{displaymath}
\xymatrix{ \bullet \ar[r] \ar@{.>}[r] & \bullet }
\end{displaymath}
|
有几个包支持直接在 LaTeX 中创建图形,包括 picture、xy-Pic 和 PGF/TikZ,将在以下部分中介绍。
与 Xfig 或 Inkscape 等所见即所得工具相比,这种方法更耗时,但会导致更好的结果。此外,输出完美地集成到您的文档中(尺寸和字体没有对比)。
请参阅 导入图形,以详细了解图形导入以及一些解决集成问题的尝试。
该图片环境允许直接在 LaTeX 中编程图片。一方面,存在相当严格的约束,因为线段的斜率以及圆的半径被限制在有限的选择范围内。另一方面,LaTeX2e 的图片环境带来了\qbezier命令,“q” 代表 *二次*。许多常用的曲线,例如圆形、椭圆形和 悬链线,可以通过二次贝塞尔曲线很好地近似,尽管这可能需要一些数学上的努力。如果使用 Java 等编程语言生成\qbezierLaTeX 输入文件的块,图片环境就会变得非常强大。
虽然直接在 LaTeX 中编程图片受到严格限制,并且通常很乏味,但仍然有一些理由这样做。由此产生的文档在字节方面“小”,并且没有额外的图形文件需要拖放。
诸如史诗, eepic或者pstricks增强原始图片环境,并极大地增强了 LaTeX 的图形能力。
虽然前两个包只是增强了图片环境,但pstricks包有它自己的绘图环境,pspicture. 的力量pstricks源于这样一个事实,即此包广泛使用了 PostScript 的可能性。不幸的是,它有一个很大的缺点:它不能与 pdfLaTeX 配合使用。要从 TeX 源代码生成 PDF 文档,您必须从 TeX 到 DVI 再到 PDF,在此过程中会丢失 pdflatex 的超链接、元数据和微排版功能。
此外,已经编写了大量针对特定目的的包。其中之一是 *XY-pic*,将在本章末尾介绍。*LaTeX 图形伴侣*(不要与 *LaTeX 伴侣* 混淆)详细介绍了各种此类包。
也许与 LaTeX 相关的最强大的图形工具是 MetaPost,它是 Donald E. Knuth 的 METAFONT 的双胞胎。MetaPost 具有 METAFONT 的非常强大且数学上复杂的编程语言。与生成位图的 METAFONT 相反,MetaPost 生成封装的 PostScript 文件,可以导入 LaTeX 中。有关介绍,请参阅 *MetaPost 用户手册*[1]。*TEX Unbound*[2] 对 LaTeX 和 TEX 图形(和字体)策略进行了非常深入的讨论。
最后但同样重要的是 PGF/TikZ 和 Asymptote 系统。虽然之前的系统(图片, 史诗, pstricks或者metapost) 关注 *如何* 绘制,TikZ 和 Asymptote 更关注 *什么* 要绘制。可以说,TikZ 和 Asymptote 之于 LaTeX 中的绘图,如同 LaTeX 之于数字排版。建议使用其中之一,如果您的 LaTeX 发行版包含它。TikZ 是一个纯 (La)TeX 系统,不依赖于外部软件,而 Asymptote 是一个外部系统,可以与 (La)TeX 无缝集成。如果使用 Asymptote,使用 latexmk 来管理编译步骤非常有用。
在许多情况下,尤其是对于更高级的图表,使用外部矢量图形软件绘制图形可能更容易,然后将文件导入文档中(请参阅 LaTeX/导入图形)。但是,大多数软件不支持 LaTeX 字体或数学符号,这会导致图形不合适且不一致。这个问题有几个解决方案。