MetaPost简明教程
简介
快速开始
为了快速理解metapost的工作流程,下面通过一个例子来进行说明:
- 首先创建一个文本文件命名为
fig.mp
,并在其中输入内容:
beginfig(1); % draw a square
draw (0,0)--(10,0)--(10,10)
--(0,10)--(0,0);
endfig;
end
- 将后缀为
.mp
的文件转化为PostScript代码,使用:
mpost fig.mp
完整的texlive
安装包会包含mpost
程序。该指令会生成一个fig.1
(存储PostScript代码)和一个fig.log
文件(用来记录日志)。
- 如果希望预览PostScript文件,可以使用命令:
gs fig.1
或者如果希望将PostScript代码转化为可以打印的PDF文件,可以使用:
epstopdf fig.1 && acroread fig.pdf
- 如果希望将生成的PostScript代码插入到LaTeX文档中,一个快速的例子
main.tex
是:
\documentclass{article}
\usepackage{graphicx}
\DeclareGraphicsRule{*}{mps}{*}{}
\begin{document}
\includegraphics{fig.1}
\end{document}}
这里DeclareGraphicsRule
声明将所有后缀不是图像格式的文件都当作Encapsulated PostScript来处理。然后通过下面的命令来排版LaTeX文档:
pdflatex main
命令运行成功后会生成main.pdf
文档。
第二个例子
- 创建新的文件名为
LineSegments.mp
,
u:=25; % 25 = 25bp = 25 PostScript points = 30/72 in
wi:=10; % width in units u
he:=7; % height in units u
hoehe:=he*u; % height
breite:=wi*u; % width
beginfig(1)
% --- Grid ---
for i=0 upto he:
draw (0, i*u)--(breite, i*u) withcolor .7white;
endfor
for j=0 upto wi:
draw (j*u, 0)--(j*u, hoehe) withcolor .7white;
endfor
% --- End Grid ---
draw (0, 0)--(breite, 0)--(breite, hoehe)--(0, hoehe)--cycle;
% Line Segment
draw (.7u, 4u)--(5u, 6.5u);
% Arrow
drawarrow (6.4u, 6u)--(9.5u, 4.8u);
pickup pencircle scaled 2; % default:
% 0.5 (= 0.5bp = 0.5 PostScript Points)
% Polyline
draw (u, 5u)--(0, 4u)--(u, 3u)--(2u, 4u)--(3u, 3u)--(u,u)--(2u, 0)--(3u, u);
% Polyarrow
drawarrow (5u, 5u)--(4u, 3u)--(5u, 4u)--(4u, 2u)--(6u, 3u)--(5u, u);
% Polygon
fill (7.7u, .3u)--(9.6u, 1.5u)--(9.3u, 3.6u)--(7.2u, 3.8u)
--(6.4u, 2.5u)--(7.3u, 1.9u)--cycle withcolor .9white;
pickup pencircle scaled .5;
draw (7.7u, .3u)--(9.6u, 1.5u)--(9.3u, 3.6u)--(7.2u, 3.8u)
--(6.4u, 2.5u)--(7.3u, 1.9u)--cycle;
endfig;
end
- 将后缀为
.mp
的文件转化为PostScript代码,使用:
mpost LineSegments.mp
- 将PostScript代码转化为可以打印的PDF文件:
epstopdf LineSegments.1