没有合适的资源?快使用搜索试试~ 我知道了~
首页Art_of_MetaPost.pdf《metapost的艺术》(中文metapost简明教程)
资源详情
资源评论
资源推荐
METAPOST的艺术
何 力
demonstrate@163.com
2006 年 2 月 7 日
摘要
METAPOST是 一种解释性作图语言,它的输出就是另外一种作图语言。了解它,不仅仅方便你在
T
E
X/L
A
T
E
X 中用图形表达你的思想,还能够制作出各种各样精美的图片,动画。
目录
目录 1
插图 3
表格 3
第一部分 理论篇 4
1 METAPOST 的历史 5
1.1 我的 METAPOST 在哪里? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 使用 METAPOST 的基本流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 一个简单的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 METAPOST 的预览问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 变量类型 8
2.1 numeric 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 pair 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 color 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 path 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 pen 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 string 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.7 picture 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8 transform 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.9 数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1
目录 2
3 控制结构 19
3.1 条件控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 循环控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 自定义宏 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.1 def . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.2 grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.3 expr、text 和 suffix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.4 vardef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.5 算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 作图基本知识 27
4.1 选择什么样的笔? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2 线型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 端点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 接头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.5 箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
第二部分 实践篇 35
5 FAQ 36
5.1 字体显示不对或者不能显示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 合适的 editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3 如何在 PDFL
A
T
E
X 中使用 METAPOST? . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 调试 37
7 常用宏 38
8 常见宏包简介 39
第三部分 综合篇 40
9 使用 METAPOST 制作精美动画 41
10 Gallery 42
11 C++ flavor: Asymptote 43
第四部分 附录 44
A 贡献者 45
B 已知问题 46
参考文献 47
插图 3
索引 48
插图
1 一个简单的 METAPOST 示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 单位其实就是一种全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 变量做单位用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 一个二元正态分布的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 三角形的重心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6 使用颜色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 直线和曲线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8 控制点的作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9 通过的角度计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
10 使用 dir 控制曲线形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
11 ... 与 .. 的不同 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
12 不同 tension 的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
13 不同 curl 的曲线形状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
14 自定义 pen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
15 一把直尺的刻度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
16 infont 创建的字体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
17 不共线三点确定 transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
18 Cantor 集合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
19 if 示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
20 三叶玫瑰线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
21 一个 grouping 示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
22 save 与 interim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
23 primary vs expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
24 METAPOST 中的词法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
25 算符优先顺序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
26 不同线型作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
27 线型研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
28 dashed 怎么利用线型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
29 端点样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
30 接头样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
31 miterlimit 的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
32 箭头示意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
33 自定义箭头 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
表格
1 addto 的等价用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4
第一部分 理论篇
本部分讲述一些使用 METAPOST 作图的理论知识,从 METAPOST 的历史开始,然后讲述
METAPOST 使用的变量类型,以及其中使用的控制结构,最后讲述作图的一些基本概念和方法。
要点:
• 熟悉使用 METAPOST 作图以及插入到所需位置的基本流程。
• 理解 METAPOST 是一个宏语言的特征。
• 熟练的使用 METAPOST 的几种基本数据类型。
• 能够使用 METAPOST 的控制结构写出简单的程序。
• 能够运用所学会的编程知识看懂系统写的宏。
• 逐步积累一点点常用的宏。
• 能够理解并运用各种作图的基本手段实现自己的作图目的。
难点:
• 怎么正确的理解 METAPOST 是一个宏语言。
• 如何利用已有的方式构造合适的 path。
• 如何利用线性方程组简单的计算出所需要的未知数。
• 如何正确理解 def 和 vardef 的不同。
• 如何实现宏的后缀。
• 如何定义算符,以及不同级别算符的区别。
• 怎么理解线型以及定义自己的线型。
1 METAPOST 的历史 5
1 METAPOST 的历史
METAPOST 作为一门语言,其发生,发展,到今天有着自己的历 史。大牛 Donald E. Knuth 为
其巨著 [Knu] 的排版头痛从而创 作了 T
E
X 这个排版语言,同时为了为该排版系统定制字体,开发了
METAFONT
1
。METAPOST 就是由 John D. Hobby 基于 METAFONT 创造,学习 METAPOST 应该
参考他所作的 METAPOST 手册 [Hobc],本文不希望写成如此的手册,而是希望通过一些基本概念
方法的介绍,激发读者使用 METAPOST 的欲望。
METAFONT 输出的是点阵字型,而 METAPOST 所输出却是 PostScript
2
。METAPOST 从
METAFONT 中借用了一些基本操纵图形的工具,也从 PostScript 中获得了更多的新特性,如
clipping(剪辑),shading(渐变色),dashed lines(虚线)等等。
在网上可以找到很多与 METAPOST 相关的资料,下面列出少许供参考:
• http://cm.bell-labs.com/who/hobby/MetaPost.html 这是 John D. Hobby 的 METAPOST
官方主页了,上面有关 于 METAPOST 的历史资料,如何安装 METAPOST,怎么利用 META-
POST 的例子,手册,mail list。
• http://www.tug.org/metapost.html,这是 TUG 的 METAPOST 介绍网页,有很多教程(在
本文的参考手册中可以找到部分相同的),相关的应用,相关的作图语言(如 Asymptote)、程
序。
• http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html,全是例子,如果
你有耐心把这些程序全部写完,你马上就能成 为一个 METAPOST 高手,这里面的例子从简单
到困难,本文有些例子可能也会从中选择出来。
• http://bbs.ctex.org/forums/index.php?showforum=35,这是国内人气最旺的
C
T
E
X 论坛
的 METAPOST 分坛,由 elove 老兄主持,有问题可以去问问,有好东西可以去分享,有经验可
以去交流。
• http://melusine.eu.org/syracuse/metapost/,这是一个法文站点,上面除了一些文档以
外(如 [Hobc] 的 prosper 版本)还含有大量的动画,漂亮的 galleries,使用 METAPOST 做成
的课件,感谢 changroc 提供。另外该网站还有 PostScript,PSTricks,SWF 的相关示例。
这里顺带着讲述一些作 图的方法。在 Windows 大行其道 的今天,很多人都被漂亮的 GUI 所迷
惑,熟悉了怎么使用鼠标拖拖拉拉,反倒生疏了键盘。为了获得一些文档中的图片,想来一般人都
尝试过 Windows 的画笔,甚至是 MS Office 中的作图工具,另外微软还提供了 MS Visio。这些作
图工具的特 点在于用户不必关心准确的位置,只需 要到一些面板上寻找按钮到画布上拖拉,就能获
得一些图形,Visio 稍微好点带有标尺,可以较为精 确的 定位,同时 Visio 的输出可以选择矢量图形
格式,加上大量的图形元件,可以很方便的实现多种图形的绘制。另外,微软在 MS Office 2003 中
捣鼓出来了自己的 mdi 格 式,大家可以猜测 微软 的目 的。在 Windows 平台下,有不少类似的作图
工具,如 Adobe 的平面设计“专家”Photoshop,矢量图形绘制 illustrator,还有 Corel 的点阵矢量
包打的 Corel Draw,另外和 Visio 有的一拼的还有 SmartDraw 等等。如果算上开源作品中精良的
GIMP 和 Inkscape,那真是百家齐放。Linux 下面还有很多类似的软件,也有移植到 Windows 下的,
如 xfig、dia 等等,Ope n Office 里面的 oodraw 和 KDE Office 套装中 的 kivio,也算是不错的 Visio
替代品。
可是有人能做到像 AutoDesk 的 AutoCAD 那样精准的图形么?“哦,”你也许 会抱怨道,“我不
需要这种图形。”那么这里不妨劝你 放弃 METAP OST,因为 METAPOST 要处理获得的往往是精确
的图形,而随意画出来的图形却很难用 METAPOST 画出来。另外,你不能指望可以仅仅用鼠标就让
1
METAFONT
TM
是 Addison Wesley Publishing 公司的注册商标。
2
PostScript
TM
是 Adobe System Inc. 的注册商标。
剩余49页未读,继续阅读
songjinghe
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论8