简介

快速开始

为了快速理解metapost的工作流程,下面通过一个例子来进行说明:

  1. 首先创建一个文本文件命名为fig.mp,并在其中输入内容:
beginfig(1); % draw a square
draw (0,0)--(10,0)--(10,10)
  --(0,10)--(0,0);
endfig;
end
  1. 将后缀为.mp的文件转化为PostScript代码,使用:
mpost fig.mp

​ 完整的texlive安装包会包含mpost程序。该指令会生成一个fig.1(存储PostScript代码)和一个fig.log文件(用来记录日志)。

  1. 如果希望预览PostScript文件,可以使用命令:
gs fig.1

​ 或者如果希望将PostScript代码转化为可以打印的PDF文件,可以使用:

epstopdf fig.1 && acroread fig.pdf
  1. 如果希望将生成的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文档。

第二个例子

  1. 创建新的文件名为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
  1. 将后缀为.mp的文件转化为PostScript代码,使用:
mpost LineSegments.mp
  1. 将PostScript代码转化为可以打印的PDF文件:
epstopdf LineSegments.1

参考资料