2019static.latexstudio.net/article/2019/0621/ManualNotes...TikZ&PGF手册(3.1.3)笔记...

837
Tik Z & PGF 手册 (3.1.3) 笔记 2019 6 21 TikZ & PGF 是什么? 请自行阅读手册的 Introduction 部分。 TikZ & PGF 能做什么? 这个问题不好回答,简单地说,TikZ 主要用于图形方面的工作;而 PGF 除了用 在图形方面外,还有其它的用处,例如它的数学引擎和 key 机制可以单独使用。很多其它宏包都用 TikZ & PGF. TikZ & PGF 也在不断更新,新近的版本中增加了一些有趣的内容,例如制作 SVG 画。 TikZ 能画什么图形? 这个我也说不好,你可以翻看手册,查看各种例子,就能初步、大概地有个答案。 反正科技资料中那些主要使用点、线构图的图形一般都可以用 TikZ 画出来,利用线条和色彩作装 饰的图形也可以画,表格、阵列形式的内容也可以画,能画什么图形还得看使用者自己的创意。 这个笔记适合谁? 适合那些懒得读英文的初学者。 这个笔记有错误吗? 当然有,我自己只是 TikZ & PGF 的初级使用者,我学到的也很有限。如果你有 TikZ & PGF 方面的问题,可以去 QQ (91940767) 问一下,我从群友们那里学到不少知识。也可以去网 http://www.latexstudio.net/question/index 的问答栏提问。 绘图的程序有很多,该怎样选择? 这个问题在网络上有很多解释,我的建议是: 如果你主要使用 L A T E X 编辑文档,而你又比较在意细节的处理,那建议你使用与 L A T E X 相容性 较好的绘图工具。初学 L A T E X 时主要精力放在基本文类,基本命令、环境的学习上,此时采用 插入外部图形的办法比较方便一些。当熟悉 L A T E X 的基本操作后,对图形的要求也会越来越高, 此时使用与 L A T E X 相容性较好的绘图工具才更加方便。但是如果你对图形没有那么高的要求, 那就无所谓了,你喜欢用什么就用什么。有的几何教材中的图形全部使用尺规手绘,这是一 种很特别的特色,更是一种情怀,已经不仅仅是“绘图”了。 如果你大量使用与 TikZ & PGF 相关的工具,如 pgfplots 宏包,circuitikz 宏包,tcolorbox 宏包, tkz-euclide 宏包,那么建议你了解一下 TikZ & PGF. 如果你想自定义一个或一套用于绘图的命令,那非常建议你“仔细”了解一下 TikZ & PGF. 如果你需要的图形很难用 TikZ 画出来,那就使用别的工具画。 画图的工具很多,但一个人的精力有限,以有涯随无涯,殆已。无论你使用什么画图工具,除了应 付日常需要之外,能从“画图”中找到乐趣也是很重要的! TikZ 难学吗? 不难学。像其他技能一样,熟能生巧。

Transcript of 2019static.latexstudio.net/article/2019/0621/ManualNotes...TikZ&PGF手册(3.1.3)笔记...

  • TikZ & PGF手册 (3.1.3)笔记

    2019年 6月 21日

    TikZ & PGF是什么? 请自行阅读手册的 Introduction部分。

    TikZ & PGF能做什么? 这个问题不好回答,简单地说,TikZ主要用于图形方面的工作;而 PGF除了用在图形方面外,还有其它的用处,例如它的数学引擎和 key机制可以单独使用。很多其它宏包都用到 TikZ & PGF. TikZ & PGF也在不断更新,新近的版本中增加了一些有趣的内容,例如制作 SVG动画。

    TikZ能画什么图形? 这个我也说不好,你可以翻看手册,查看各种例子,就能初步、大概地有个答案。反正科技资料中那些主要使用点、线构图的图形一般都可以用 TikZ画出来,利用线条和色彩作装饰的图形也可以画,表格、阵列形式的内容也可以画,能画什么图形还得看使用者自己的创意。

    这个笔记适合谁? 适合那些懒得读英文的初学者。

    这个笔记有错误吗? 当然有,我自己只是 TikZ & PGF的初级使用者,我学到的也很有限。如果你有 TikZ& PGF方面的问题,可以去 QQ群 (91940767)问一下,我从群友们那里学到不少知识。也可以去网站 http://www.latexstudio.net/question/index的问答栏提问。

    绘图的程序有很多,该怎样选择? 这个问题在网络上有很多解释,我的建议是:

    • 如果你主要使用 LATEX编辑文档,而你又比较在意细节的处理,那建议你使用与 LATEX相容性较好的绘图工具。初学 LATEX时主要精力放在基本文类,基本命令、环境的学习上,此时采用插入外部图形的办法比较方便一些。当熟悉 LATEX的基本操作后,对图形的要求也会越来越高,此时使用与 LATEX相容性较好的绘图工具才更加方便。但是如果你对图形没有那么高的要求,那就无所谓了,你喜欢用什么就用什么。有的几何教材中的图形全部使用尺规手绘,这是一种很特别的特色,更是一种情怀,已经不仅仅是“绘图”了。

    • 如果你大量使用与 TikZ & PGF相关的工具,如 pgfplots宏包,circuitikz宏包,tcolorbox宏包,tkz-euclide宏包,那么建议你了解一下 TikZ & PGF.

    • 如果你想自定义一个或一套用于绘图的命令,那非常建议你“仔细”了解一下 TikZ & PGF.• 如果你需要的图形很难用 TikZ画出来,那就使用别的工具画。

    画图的工具很多,但一个人的精力有限,以有涯随无涯,殆已。无论你使用什么画图工具,除了应付日常需要之外,能从“画图”中找到乐趣也是很重要的!

    TikZ难学吗? 不难学。像其他技能一样,熟能生巧。

    http://www.latexstudio.net/question/index

  • 学习 TikZ & PGF有哪些好资料? 好资料应该有很多,你可以去 QQ 群 91940767 问一下,或者去网站http://www.latexstudio.net搜一下。我觉得最好的学习资料应该是《TikZ & PGF Manual》以及宏包的源代码,当然这个资料有点“大”,而且源代码也不容易读——这恰好表明,正因为诸位宏包作者和维护者的长期、出色工作,才有这么一款优秀的工具。

    向 TikZ & PGF的作者和维护者表示敬意!这个笔记中的示例环境是用 tcolorbox宏包做的。用 tcolorbox宏包能制作风格多样、非常漂亮的盒

    子,推荐读者使用。tcolorbox宏包与 TikZ & PGF有很好的相容性,如果想发挥 tcolorbox宏包的优点,那么了解一下 TikZ & PGF是非常必要的。也向 tcolorbox宏包的作者表示敬意!如果使用 tcolorbox宏包的选项 /tcb/listing engine=minted,并且在 xelatex下编译,那么可能要

    使用编译选项 --shell-escape-8bit(参考minted宏包的手册)。如果你不想总是去命令行编译,可以把这两个选项添加到编辑器的当前排版工具中,例如,对于 TeXworks,在“编辑–首选项–排版”中设置这两个选项。然后只要点击一下排版按钮就可以编译了。这个办法来自群友的提示。在群里总能学到东西,所以还是推荐读者加 QQ群 (91940767),可以扫码加群:

    关注微信公众号

    上面的微信二维码连接到 LATEX工作室的公众号,公众号会推送各种学习资料,精美的 LATEX作品,非常精美,爱不释手!推荐读者关注公众号,如果你有作品想跟大家分享,也可以向公众号投稿。要是读者觉得这份中文材料值得打赏,请扫描下面的支付宝二维码,非常感谢读者的打赏!

    http://www.latexstudio.net

  • 目录 3

    目录11 Design Principles 23

    12 Hierarchical Structures:Package, Environments, Scopes, and Styles 2312.1 载入宏包和程序库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312.2 创建一个 picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    12.2.1 用环境创建一个 picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2412.2.2 用命令创建一个 picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512.2.3 Handling Catcodes and the Babel Package . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    12.2.4 Adding a Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    12.3 使用 scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612.3.1 scope环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612.3.2 scope环境的简写形式—scopes库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2712.3.3 scope命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.3.4 在路径之内插入 scopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    12.4 使用图形选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.4.1 如何处理图形选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2812.4.2 使用 style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    13 设置坐标 3013.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    13.2 坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3113.2.1 Canvas, XYZ, and Polar Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . . . . 31

    13.2.2 质心坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3413.2.3 node坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3513.2.4 tangent坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.2.5 自定义坐标系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    13.3 交点坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3813.3.1 水平线与竖直线的交点:perpendicular坐标系统 . . . . . . . . . . . . . . . . . . . . . 3813.3.2 任意路径的交点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    13.4 相对坐标,增量坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4313.4.1 指定相对坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4313.4.2 旋转的相对坐标——曲线上一点处的坐标系 . . . . . . . . . . . . . . . . . . . . . . . . 4413.4.3 相对坐标与当前点的局部化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    13.5 坐标计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.5.1 一般句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.5.2 数乘坐标(向量) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.5.3 比例—角度定点句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4713.5.4 距离—角度定点句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

  • 目录 4

    13.5.5 正射影—角度定点句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    14 设置路径的语句 4914.1 Move-To操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5114.2 Line-To操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    14.2.1 线段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5214.2.2 横线和竖线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    14.3 Curve-To操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5314.4 矩形操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5414.5 Rounding Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    14.6 创建圆、椭圆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5514.7 Arc操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5614.8 Grid操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5614.9 Parabola操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5814.10 Sine和 Cosine操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5914.11 SVG操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6014.12 Plot操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6014.13 To Path操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6014.14 Foreach操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6214.15 Let操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6214.16 Scoping操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.17 Node and Edge操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.18 Graph操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.19 Pic操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.20 Attribute Animation操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.21 PGF-Extra操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6514.22 在 TikZ中使用软路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    15 Actions on Paths 6615.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    15.2 指定颜色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6715.3 画路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    15.3.1 Line Width, Line Cap, and Line Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    15.3.2 Dash Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    15.3.3 线条透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7115.3.4 Double Lines and Bordered Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    15.4 在路径上添加箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7215.5 填充路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    15.5.1 图形参数:填充 Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7215.5.2 图形参数:非零规则和奇偶规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

  • 目录 5

    15.5.3 图形参数:填充透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7315.6 用任意图像填充路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7415.7 用颜色渐变填充路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7515.8 调整边界盒子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7515.9 剪切 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7915.10 对一个路径执行多重操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8015.11 装饰路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8115.12 在起点或终点处截去一段路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    16 Arrows 8216.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    16.2 如何添加箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8216.3 设置箭头的外观 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    16.3.1 箭头的“特征尺寸” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8416.3.2 箭头的缩放 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8616.3.3 圆弧箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8616.3.4 倾斜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8616.3.5 Reversing, Halving, Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    16.3.6 箭头颜色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8716.3.7 线型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8816.3.8 Bending and Flexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    16.4 Arrow Tip Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    16.4.1 句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9316.4.2 Specifying Paddings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    16.4.3 Specifying the Line End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    16.4.4 定义箭头的简写形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9516.4.5 Scoping of Arrow Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    16.5 Reference: Arrow Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    17 Nodes and Edges 9917.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    17.2 Nodes and Their Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    17.2.1 Node命令的句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9917.2.2 预定义的形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10317.2.3 一般选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    17.3 Multi-Part Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    17.4 node中的文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10817.4.1 文字参数:颜色、不透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10817.4.2 文字参数:字体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10817.4.3 文字参数:文字换行、对齐方式、文字行宽 . . . . . . . . . . . . . . . . . . . . . . . 108

  • 目录 6

    17.4.4 文字参数:文字的高度和深度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11017.5 Positioning Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    17.5.1 利用 anchor来确定 node的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11117.5.2 基本的平移选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11217.5.3 高级平移选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11317.5.4 排布 node的高级方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

    17.6 Fitting Nodes to a Set of Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

    17.7 变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.8 在直线段或曲线上显式地摆放 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11717.9 在直线段会曲线上隐式地摆放 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12017.10 label和 pin选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    17.10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    17.10.2 label选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12117.10.3 The Pin Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

    17.10.4 引用句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12417.11 Connecting Nodes: Using Nodes as Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    17.12 Connecting Nodes: 用 edge操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12717.12.1 edge操作的基本句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12717.12.2 Edges路径上的标签: Quotes Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    17.13 Referencing Nodes Outside the Current Picture . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    17.13.1 Referencing a Node in a Different Picture . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    17.13.2 引用 Current Page Node——绝对位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13217.14 Late Code and Late Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

    17.15 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13317.15.1 关于 auto选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13317.15.2 关于 edge, to的引用句法标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13317.15.3 把 {tikzpicture}环境作为 node的内容 . . . . . . . . . . . . . . . . . . . . . . . . . 133

    18 Pics: Small Pictures on Paths 13418.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    18.2 The Pic Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    18.2.1 指定所用的 pic type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13418.2.2 指定 pic图形的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13518.2.3 选项的有效与无效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13518.2.4 定义 pic code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13518.2.5 pic的选项的传递 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13618.2.6 指定 pic图形的遮挡次序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13618.2.7 设置每个 pic图形的样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13718.2.8 设置 pic图形中 node名称的前缀并引用它 . . . . . . . . . . . . . . . . . . . . . . . . 13718.2.9 用 pic制作动画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

  • 目录 7

    18.2.10 引用句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13818.3 定义 pic type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13818.4 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    41 angles库 142

    54 fit程序库 143

    73 topaths程序库 14773.1 直线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14773.2 Move-To . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    73.3 曲线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14773.4 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    73.5 关于 curve to选项的系数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

    74 through程序库 153

    20 矩阵及其对齐方式 15320.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    20.2 Matrices are Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    20.3 元素图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15420.3.1 元素图形的对齐方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15420.3.2 调整行距和列距 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15520.3.3 设置元素图形样式的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

    20.4 矩阵的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15920.5 自定义分列符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

    59 matrix库 16059.1 矩阵中的 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16059.2 换行符号与矩阵行的结束符号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16259.3 定界符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    22 函数绘图 16422.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    22.2 plot路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16422.3 连点成线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16422.4 从外部文件中读取数据绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16522.5 用函数表达式绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16622.6 调用 gnuplot绘制函数图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16722.7 给 plot路径上的样本点加标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17122.8 直线、曲线、柱状图、条形图等 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17322.9 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

  • 目录 8

    64 图柄库 17964.1 曲线图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17964.2 Constant图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18064.3 Comb图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18164.4 Bar图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18264.5 Gapped图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18364.6 Mark图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    65 Plot Mark库 186

    23 透明度 18723.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    23.2 为图形、路径、文字设定透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18723.3 混色模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18823.4 颜色淡入、淡出——fading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    23.4.1 创建 fading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18923.4.2 创建 fading路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19123.4.3 Fading a Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    23.5 Transparency Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    23.6 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    53 fadings库 199

    24 装饰路径 19924.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    24.2 用 decorate操作装饰子路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20224.3 装饰整个路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20324.4 调整装饰路径的外观 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    24.4.1 调整装饰路径与原被装饰路径的相对位置 . . . . . . . . . . . . . . . . . . . . . . . . . 20424.4.2 调整装饰路径的始端与终端的形态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    50 Decoration库 20650.1 公共选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20650.2 修饰路径的装饰类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    50.2.1 由直线段构成的装饰路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20950.2.2 由曲线构成的装饰路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    50.3 替换路径的装饰类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21350.4 标记装饰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21650.5 自选标记装饰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    50.5.1 程序库 decorations.markings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21750.5.2 脚印标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

  • 目录 9

    50.5.3 形状装饰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22350.6 文字装饰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

    50.6.1 装饰类型 text along path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22850.6.2 装饰类型 text effects along path . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    50.7 分形装饰 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    25 变换 24125.1 各种坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

    25.1.1 变换选项的作用次序以及作用方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24225.1.2 各种标架及其作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

    25.2 标架变换:指定标架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24925.3 坐标变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

    25.3.1 坐标变换选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25425.3.2 注意的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25825.3.3 平面上的轴对称 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

    25.4 画布变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    40 三维绘图库 26940.1 坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26940.2 坐标平面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

    40.2.1 转换到任意平面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27140.2.2 预定义的平面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

    40.3 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

    63 三点透视图程序库 27463.1 坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27563.2 设置视角 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27563.3 自定义透视 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27663.4 缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27763.5 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27763.6 代码实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

    26 动画 28126.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

    26.2 创建动画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28326.2.1 Animate选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28326.2.2 时间线条目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28426.2.3 指定对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28426.2.4 指定属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28526.2.5 指定 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28526.2.6 指定时刻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

  • 目录 10

    26.2.7 属性的值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28826.2.8 Scopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

    26.3 各种句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28926.3.1 指定对象和属性的句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28926.3.2 关于 myself的动画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29026.3.3 关于时刻的句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29126.3.4 引号与属性值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29226.3.5 时间表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

    26.4 可用于动画的属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29326.4.1 Animating Color, Opacity, and Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

    26.4.2 Animating Paths and their Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

    26.4.3 动态变换: Relative Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29926.4.4 Animating Transformations: Positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

    26.4.5 Animating Transformations: Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

    26.5 调控时间线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30426.5.1 Before and After the Timeline: Value Filling . . . . . . . . . . . . . . . . . . . . . . . . . 304

    26.5.2 Beginning and Ending Timelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

    26.5.3 Repeating Timelines and Accumulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

    26.5.4 Smoothing and Jumping Timelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

    26.6 Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

    26.7 一个例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

    78 Views Library 312

    49 Circuits程序库 31449.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

    49.1.1 一个例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31549.1.2 符号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31649.1.3 Symbol Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

    49.1.4 Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    49.2 circuits程序库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31849.2.1 Symbol的尺寸 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31849.2.2 声明新的 symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31949.2.3 让 symbol指向某个方向 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32149.2.4 Info标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32249.2.5 创建、使用 annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32449.2.6 调整 Symbols的外观 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32549.2.7 符号图形的变体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

    49.3 逻辑电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32949.3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

  • 目录 11

    49.3.2 逻辑门符号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33549.3.3 逻辑门符号的形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33549.3.4 US风格的逻辑门符号形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33749.3.5 IEC风格的逻辑门符号形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    49.4 电子工程电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34149.4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

    49.4.2 指示电流方向的符号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34849.4.3 Symbols: Basic Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.4 Symbols: Diodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.5 Symbols: Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.6 Symbols: Measurement devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.7 Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.8 Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    49.4.9 EE-Symbols的形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34849.4.10 IEC风格的 EE-Symbols形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

    49.5 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

    55 定点算术程序库 35355.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

    55.2 在 PGF和 TikZ中使用定点算术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

    56 浮点单元程序库 35556.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

    56.2 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35656.3 与定点算术程序库的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35856.4 命令与编程参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

    56.4.1 浮点数的创建与转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35956.4.2 符号舍入操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36256.4.3 数学运算命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36356.4.4 用于编程的原始数学程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36556.4.5 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

    56.5 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

    57 Lindenmayer System分形图 36757.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

    57.1.1 声明一个 L-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37057.2 使用 L-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

    57.2.1 在 PGF中使用 L-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37357.2.2 在 TikZ中使用 L-S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

  • 目录 12

    58 数学程序库 37558.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    58.2 赋值语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37658.3 声明变量类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37758.4 循环语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38058.5 条件语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38158.6 声明函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38158.7 在命令 \tikzmath的辖域内执行代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

    69 shadings程序库 384

    70 shadows程序库 38870.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

    70.2 一般的阴影选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38970.3 预定义的阴影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    70.3.1 Drop Shadows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    70.3.2 Copy Shadows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

    70.4 针对圆形的阴影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

    72 Spy程序库:将图形的局部放大 39272.1 将图形的某个局部放大 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39372.2 spy scopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

    72.3 spy scopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

    72.4 预定义的 spy样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39772.5 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    79 数据可视化简介 39879.1 数据点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39879.2 可视化管线(visualization Pipeline) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

    80 数据可视化的基本概念 39980.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

    80.2 数据点与数据格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39980.3 轴,刻度线,网格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40080.4 显像器(visualizer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40180.5 样式表和图例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40180.6 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40280.7 在数据可视化过程中执行用户自定义的代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40680.8 创建新对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

  • 目录 13

    81 用于数据可视化的数据格式 40781.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

    81.2 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40781.3 内置格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40781.4 函数格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41081.5 数据处理过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41281.6 定义新数据格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

    82 坐标轴 41582.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

    82.2 轴的基本设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41582.2.1 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41682.2.2 与轴对应的变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41782.2.3 变量值的范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41782.2.4 轴对数据的变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41882.2.5 对数轴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42182.2.6 设置坐标轴的长度和单位长度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42182.2.7 坐标轴的标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42382.2.8 将变量值与页面上的坐标系相关联 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

    82.3 轴系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42482.3.1 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42582.3.2 Scientific Axis Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

    82.3.3 School Book Axis Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    82.3.4 底层的笛卡尔坐标系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42882.4 坐标轴的刻度和网格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    82.4.1 概略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43082.4.2 刻度和网格的主要选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43082.4.3 计算刻度线和网格线位置的半自动机制 . . . . . . . . . . . . . . . . . . . . . . . . . . 43182.4.4 计算刻度线和网格线位置的自动机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43282.4.5 手工确定刻度线和网格线的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43482.4.6 刻度与网格线的样式:概略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43682.4.7 刻度与网格线的样式:style与 node Style . . . . . . . . . . . . . . . . . . . . . . . . . 43682.4.8 网格线的样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43782.4.9 刻度线与刻度值标签的样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43982.4.10 设置个别刻度的样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44182.4.11 其它刻度值标签选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44182.4.12 交错叠放刻度值标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44382.4.13 自动添加刻度的策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44682.4.14 定义新的添加刻度的策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

    82.5 创建新的轴系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

  • 目录 14

    82.5.1 创建一个轴系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44782.5.2 坐标轴的可视化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45082.5.3 可视化网格线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45582.5.4 刻度线、刻度值标签的可视化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45782.5.5 坐标轴标签的可视化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46082.5.6 完整的定义代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46282.5.7 专用于创建新坐标系统的 key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    82.6 遇到的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

    83 Visualizers 46883.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

    83.2 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46883.2.1 使用一个显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46883.2.2 使用多个显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46983.2.3 设置显像器的外观效果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

    83.3 基本的显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47483.3.1 直线段或曲线显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47483.3.2 散点显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

    83.4 创建新的显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

    84 样式表与图例 47784.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

    84.2 Style Sheets的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47784.3 Legends的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47884.4 Style Sheet的用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

    84.4.1 引入一个 Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47984.4.2 创建新的样式表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48084.4.3 创建新的颜色样式表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

    84.5 预定义的线型样式表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48584.6 预定义的散点样式表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48784.7 预定义的颜色样式表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48884.8 显像器的标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    84.8.1 给一组数据点设置标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49084.8.2 给一组数据点设置大头针标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

    84.9 为数据点组创建图例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49584.9.1 创建图例,图例中的条目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49684.9.2 图例中条目的行列排布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50084.9.3 确定图例位置的一般方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50384.9.4 在绘图区域之外放置图例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50484.9.5 在绘图区域之内放置图例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

  • 目录 15

    84.9.6 图例条目的一般样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50784.9.7 图例条目中的文字标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50884.9.8 条目中文字标签与图示标签的相对位置 . . . . . . . . . . . . . . . . . . . . . . . . . . 50984.9.9 手工添加条目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51084.9.10 条目显像器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

    85 极坐标系 51685.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

    85.2 Scientific Polar Axis System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

    85.2.1 角度轴的刻度线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51885.2.2 角度轴的角度范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    85.3 创建新的极坐标系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

    86 The Data Visualization Backend 521

    87 Key Management 52187.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

    87.1.1 与其它类似宏包的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52187.1.2 快速引导 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

    87.2 The Key Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

    87.3 执行 Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52687.3.1 首字符句法检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53687.3.2 默认参数值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53887.3.3 方法:定义“执行某个命令的键”并使用之 . . . . . . . . . . . . . . . . . . . . . . . 53987.3.4 Keys That Store Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    87.3.5 定义手柄键 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54687.3.6 设置未知键的提示信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55187.3.7 搜索键的前缀路径,搜索手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

    87.4 手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55387.4.1 设置键路径的手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55387.4.2 设置键的默认值的手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55487.4.3 定义键所储存的代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55587.4.4 定义样式的手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55787.4.5 Defining Value-, Macro-, If- and Choice-Keys . . . . . . . . . . . . . . . . . . . . . . . . 560

    87.4.6 键值的展开,多重键值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56387.4.7 键路径的转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56587.4.8 测试键的手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57087.4.9 解释键的手柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

    87.5 提示错误的键 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57287.6 键筛选 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

  • 目录 16

    88 重复操作:foreach句法 57488.1 ⟨commands⟩的句法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57588.2 ⟨list⟩中的省略号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57588.3 在 ⟨list⟩中使用花括号包裹列举条目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57688.4 在路径中使用 foreach语句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57688.5 多个相互关联的变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57688.6 针对变量的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57888.7 命令 \pgfplotsforeachungrouped . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

    91 扩展颜色支持 582

    92 解析器模块 58492.1 Parser模块的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58992.2 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

    93 数学引擎概略 589

    94 数学表达式 59094.1 解析一个表达式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591

    94.1.1 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59194.1.2 长度单位的“显”、“隐” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594

    94.2 数学表达式中的算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59594.3 数学表达式中的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

    94.3.1 基本算术函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59894.3.2 舍入函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60194.3.3 几个整数运算函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60294.3.4 三角函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60294.3.5 比较函数与逻辑函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60494.3.6 伪随机函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60694.3.7 基本的转换函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60694.3.8 其它函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

    95 其它数学命令 60895.1 基本算术函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60895.2 比较与逻辑函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60895.3 整数的进位制转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60995.4 角度计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611

    96 用数学引擎自定义函数 611

  • 目录 17

    97 输出数值的格式 61597.1 基本的命令与选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61597.2 输出数值的样式以及标点符号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620

    99 基本层(basic layer)概略 62599.1 内核和模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62599.2 基本层的宏 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62599.3 以路径为核心的构图方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62699.4 坐标变换与画布变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

    100 层级结构:宏包,环境,子环境,文字 626100.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

    100.1.1 宏包的层级结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626100.1.2 图形的层级结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

    100.2 宏包的层次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627100.2.1 内核宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627100.2.2 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628100.2.3 程序库宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628

    100.3 图形的层级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628100.3.1 主要的环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628100.3.2 绘图子环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631100.3.3 插入文字和图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

    100.4 Object Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

    100.4.1 创建图形对象的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635100.4.2 设置、引用 identifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

    100.5 Resource Description Framework Annotations (RDFa) . . . . . . . . . . . . . . . . . . . . . . . 638

    100.6 错误信息与警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638

    101 指定坐标 638101.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638

    101.2 基本的坐标命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638101.3 XY-坐标系统中的坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639101.4 三维坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640101.5 用已有坐标构建新的坐标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641

    101.5.1 基本的坐标计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641101.5.2 直线或曲线上的点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641101.5.3 矩形或椭圆边界上的点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643101.5.4 两直线的交点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644101.5.5 两个圆的交点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644101.5.6 两个路径的交点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

    101.6 坐标分量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

  • 目录 18

    101.7 坐标点命令的工作方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646

    102 构建路径 647102.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

    102.2 Move-To路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647102.3 Line-To路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648102.4 Curve-To路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649102.5 Close路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650102.6 Arc, Ellipse, Circle路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650102.7 Rectangle路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654102.8 Grid路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654102.9 Parabola路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655102.10 Sine和 Cosine路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655102.11 Plot路径操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656102.12 圆角(Rounded Corners) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656102.13 跟踪路径或图形的边界盒子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

    103 路径装饰 660103.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660

    103.2 装饰自动化(Decoration Automata) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660103.2.1 约定路径名称 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661103.2.2 片段(segment)与状态(state) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

    103.3 自定义装饰路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663103.4 {pgfdecoration}环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674103.5 Meta-Decorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

    103.5.1 定义一个Meta-Decorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678103.5.2 预定义的Meta-decorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681103.5.3 {pgfmetadecoration}环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

    104 使用路径 681104.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

    104.2 画出路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682104.2.1 图形参数:线宽 Line Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682104.2.2 图形参数:线冠 Caps与交接 Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683104.2.3 图形参数:线型 Dashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684104.2.4 图形参数:线条颜色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684104.2.5 线条透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684104.2.6 双线的内线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684

    104.3 给路径加箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685104.4 填充路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686

    104.4.1 图形参数:判断内部点的规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686

  • 目录 19

    104.4.2 图形参数:填充色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687104.4.3 图形参数:填充色的不透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687

    104.5 剪切路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687104.6 将路径用作边界盒子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687

    105 定义新的箭头 687105.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687

    105.2 有关术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688105.3 PGF处理箭头的一般过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688105.4 自定义箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689105.5 关于箭头的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

    105.5.1 尺寸选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695105.5.2 True–False选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695105.5.3 setup code中不能引用的选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696105.5.4 自定义箭头选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696

    106 Nodes and Shapes 704106.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704

    106.1.1 创建与索引 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704106.1.2 锚 Anchors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705106.1.3 shape的“层”Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705106.1.4 Node Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705

    106.2 创建 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705106.2.1 创建简单 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705106.2.2 创建Multi-Part Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706106.2.3 另一种添加 node的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710

    106.3 使用锚位置 Anchors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712106.3.1 在一个图形中引用锚位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713106.3.2 跨图引用 node的锚位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

    106.4 特殊 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715106.5 定义新的 shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717

    106.5.1 一个 shape具备的要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717106.5.2 Normal Anchors与 Saved Anchors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717106.5.3 定义新 shape的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717106.5.4 一个例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725

    107 矩阵 744107.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

    107.2 矩阵元素的对齐方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744107.3 矩阵命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745107.4 行间距与列间距 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

  • 目录 20

    107.5 调用命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748

    108 坐标变换,画布变换,非线性变换 749108.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749

    108.2 坐标变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750108.2.1 坐标变换矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750108.2.2 坐标变换命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750108.2.3 其它变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754108.2.4 保存或使用某个变换矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754108.2.5 坐标变换中的调整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755

    108.3 画布变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756108.3.1 创建 View Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757

    108.4 非线性变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758108.4.1 导引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758108.4.2 定义并载入一个非线性变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759108.4.3 将非线性变换用于一个点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760108.4.4 将非线性变换用于一个路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761108.4.5 将非线性变换用于文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762108.4.6 用线性变换近似非线性变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762108.4.7 非线性变换程序库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763

    109 图样 Patterns 765109.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765

    109.2 声明一个图样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766109.3 使用图样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770

    110 声明、使用外部图形 770110.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770

    110.2 声明外部图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770110.3 使用外部图形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771110.4 给图形“带面具” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

    112 创建 Plots 773112.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773

    112.2 创建图流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773112.2.1 图流的基本结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774112.2.2 生成图流的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

    112.3 图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779112.4 定义新图柄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780

  • 目录 21

    113 图层 785113.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785

    113.2 声明图层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785113.3 在图层上绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786

    114 颜色渐变 787114.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787

    114.1.1 颜色渐变中使用的颜色模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787114.2 声明渐变样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788

    114.2.1 横向渐变与纵向渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788114.2.2 辐射渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788114.2.3 函数渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789

    114.3 使用颜色渐变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794114.4 关于 type 4函数的补充 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796

    115 透明度 800115.1 指定不透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801115.2 指定混色模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801115.3 Fading效果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802115.4 透明度组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804

    116 Animations 805116.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805

    116.2 Animating an Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805

    116.2.1 主要命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805116.2.2 时间线选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807116.2.3 快照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808

    116.3 Animating Color, Opacity, Visibility, and Staging . . . . . . . . . . . . . . . . . . . . . . . . . . 809

    116.4 Animating Paths and their Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810

    116.5 Animating Transformations and Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811

    116.6 Commands for Specifying Timing: Beginnings and Endings . . . . . . . . . . . . . . . . . . . . 812

    116.7 Commands for Specifying Timing: Repeats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

    117 临时寄存器 813

    118 快速命令 815118.1 快速坐标命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815118.2 快速创建路径的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816118.3 快速使用路径的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816118.4 快速文字盒子命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817

  • 目录 22

    119 系统层的设计 817119.1 驱动文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817119.2 公共的定义文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818

    120 系统命令 818120.1 系统命令流的开启与结束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818120.2 构建子环境的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820120.3 构建路径的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820120.4 做画布变换的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821120.5 画、填充、剪切路径的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822120.6 设置图形状态选项的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823120.7 设置颜色的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824120.8 关于图样的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.9 插入外部图形的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.10 关于颜色渐变的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.11 关于透明度的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.12 关于动画的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.13 关于 Object Identification的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826120.14 可重复利用对象的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833120.15 使得路径“不可见”的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833120.16 关于页面尺寸的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834120.17 跟踪页面上某个位置的系统命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834120.18 尺寸转换命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

    121 软路径子系统 835121.1 创建路径的过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835121.2 保存、调用一个软路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835121.3 创建软路径的命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836121.4 软路径数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836

    122 Protocol子系统 837

    123 动画的系统层 837

  • 11 DESIGN PRINCIPLES 23

    11 Design Principles

    TikZ的设计主要有以下几个方面1. 指定坐标的句法。2. 指定路径的句法。3. 对路径的操作。4. 图形参数 (graphic parameters)的 Key-value句法。5. 指定 node的句法。6. 指定 tree的句法。7. 指定 graph的句法。8. 图形参数的分组。9. 坐标变换系统。

    12 Hierarchical Structures:Package, Environments, Scopes, and Styles

    12.1 载入宏包和程序库\usepackage{tikz} % LATEX\input tikz.tex % plain TEX\usemodule[tikz] % ConTEXt这个宏包没有选项. 调用 tikz宏包时会自动调用 pgf, pgffor宏包. 当使用 LATEX格式时, pgf几乎总能够自动判断用户使用的 TEX驱动. 但在 plain TeX或 ConTeXt格式下使用 dvipdfm驱动时, pgf不能自己识别你所用的驱动. 在此情况下,你需要在载入 tikz.tex前使用命令\def\pgfsysdriver{pgfsys-dvipdfm.def}

    \usetikzlibrary{⟨list of libraries⟩}

    当载入 tikz后,就可以用这个命令载入 libraries. 列出的 libraries名称之间用逗号分隔。本命令中的花括号可以换成方括号\usetikzlibrary[⟨list of libraries⟩]

    例如\usetikzlibrary{arrows.meta,animations}

    对于 ⟨list of libraries⟩中的每个 library名称,本命令会载入文件 tikzlibrary⟨library⟩.code.tex;如果这个文件不存在,就载入文件 pgflibrary⟨library⟩.code.tex,如果这个文件也不存在,就给出错误信息。如果你自己编写 library的话,文件名称要恰当(让 pgf能识别它),文件位置也要恰当(让 TEX能找到它)。

  • 12 HIERARCHICAL STRUCTURES: PACKAGE, ENVIRONMENTS, SCOPES, AND STYLES 24

    12.2 创建一个 picture12.2.1 用环境创建一个 picture

    tikz的最外层绘图区域是 {tikzpicture}环境,所有绘图命令(除了命令 \tikzset)都要放在环境内。环境内的选项仅在环境内有效。该环境可以用于大多数 LATEX模式、环境、命令内,例如用于页眉、页脚命令内,数学模式内。

    \begin{tikzpicture}⟨animations spec⟩[⟨options⟩]⟨environment content⟩\end{tikzpicture}

    多数 tikz命令,例如 \path,只能用在这个环境里。遇到这个环境时,⟨options⟩会被解析,其中的选项会被用于整个环境(picture)。载入 animations库后,可以在选项前面指定动画命令(animationcommand)。然后环境的内容被处理,图形命令会被放入盒子中。环境中不属于图形命令的文字会被临时转为 \nullfont字体,从而被抑制。各种非 pgf的命令也不会输出到图形中,因为这会扰乱驱动的位置计算系统。在环境结束时,pgf会估计整个图形的边界盒子(bounding box)的尺寸,然后调整图形盒子(picturebox)到达这个尺寸。每遇到一个坐标 pgf都会刷新 bounding box的尺寸,直到 bounding box包含所有坐标。有时这样估计出来的 bounding box尺寸不够准确,例如,倾斜线条的线宽(线条的粗细)不被精确计算,曲线的控制点有时会距离曲线较远,以至于 bounding box过大。此时你可以用选项/tikz/use as bounding boxÕ P. 76来调整边界盒子。

    /tikz/baseline=⟨dimension or coordinate of default⟩ (default 0pt)

    通常,图形的最下端会被放在图形周围文字的基线上。使用本选项可以把图形中的水平直线 y =⟨value⟩作为图形的基线,放在图形周围文字的基线上(⟨value⟩是本选项的值)。选项值可以是:

    • ⟨dimension⟩,带有长度单位的尺寸。• ⟨coordinate⟩,坐标,如果 ⟨coordinate⟩中有逗号则需要用花括号把 ⟨coordinate⟩括起来,把图形中通过这个点的水平直线作为图形的基线。直到绘图过程的末尾处才会计算这个 ⟨coordinate⟩,所以 ⟨coordinate⟩可以是图形中 node的坐标。

    Hello world Hello\tikz[baseline=(X.base)]\node [cross out,draw] (X) {world};

    Top align: Top align:\tikz[baseline=(current bounding box.north)]\draw (0,0) rectangle (1cm,1ex);

    /tikz/execute at begin picture=⟨code⟩ (no default)

    这个选项使得 ⟨code⟩在图形开始的时候被执行,本选项必须针对环境 {tikzpicture}才有效。如果多次使用本选项,则其作用会被累计,即提供的各 ⟨code⟩会被依次执行。

  • 12 HIERARCHICAL STRUCTURES: PACKAGE, ENVIRONMENTS, SCOPES, AND STYLES 25

    X

    \begin{tikzpicture}[execute at begin picture=%{ \draw (0,0) rectangle (2,2); }]\node at (1,1) {\large X};

    \end{tikzpicture}

    /tikz/execute at end picture=⟨code⟩ (no default)

    这个选项使得 ⟨code⟩在图形结束的时候被执行,本选项必须针对环境 {tikzpicture}才有效。如果多次使用本选项,则其作用会被累计,即提供的各 ⟨code⟩会被依次执行。

    X

    Y \begin{tikzpicture}[execute at end picture=%{

    \begin{pgfonlayer}{background}\path[fill=red!30,rounded corners](current bounding box.south west) rectangle(current bounding box.north east);

    \end{pgfonlayer}}]\node at (0,0) {X};\node at (2,1) {Y};

    \end{tikzpicture}

    /tikz/every picture (style, initially empty)

    这个样式(style)会被添加到每个图形的开始处。\tikzset{every picture/.style={draw=red,semithick}}

    \tikzpicture[⟨options⟩]⟨environment contents⟩\endtikzpicture这是图形环境在 plain TeX中的版本。

    \starttikzpicture[⟨options⟩]⟨environment contents⟩\stoptikzpicture这是图形环境在 ConTeXt中的版本。

    12.2.2 用命令创建一个 picture

    \tikz⟨animations spec⟩[⟨options⟩]{⟨path command⟩}

    这个命令创建一个 {tikzpicture}环境,并把 {⟨path command⟩}放到该环境中。{⟨path command⟩}中可以包含段落,脆弱命令(如抄录命令)。如果只有一个路径命令,那么也可以不用花括号;如果有数个路径命令,那么就必须用花括号把它们括起来。

    12.2.3 Handling Catcodes and the Babel Package

    在 tikz图形中,多数代码符号的类别是 12,即普通的文字符号,这有利于解析器正常工作。但是如果某些宏包,例如 babel,符号类别会被强行修改。为了解决这个问题,tikz提供了一个小型的库 babel,

  • 12 HIERA