MetaPost

MetaPost
Paradigmaimperativa, typesetting
Última versão1.8 (17 de junho de 2013; há 13 anos (2013-06-17))
Versão em teste2.0rc2 (19 de fevereiro de 2018; há 8 anos (2018-02-19))
Criado porJohn D. Hobby, Taco Hoekwater, Luigi Scarso
Estilo de tipagemduck, dynamic, strong
Influenciada porMetafont
Sistema operacionalMultiplataforma
LicençaLGPL
Página oficialtug.org/metapost

MetaPost se refere a tanto a linguagem de programação quanto ao interpretador da linguagem de programação MetaPost. Ambas derivam da linguagem e interpretador Metafont de Donald Knuth. MetaPost produz diagramas gráficos vetoriais a partir de uma descrição geométrica/algebraica.A linguagem compartilha a sintaxe declarativa de Metafont para manipulação de linhas, curvas, pontos e transformações geométricas. Porém,

Muitas das limitações do MetaPost derivam de características de Metafont. Por exemplo, MetaPost não suporta todas as características do PostScript. Mais notável, caminhos só podem tem um único segmento (para que regiões possam ser simplesmente conectado), e regiões possam ser preenchidas somente com uma cor uniforme. PostScript nível 1 suporta padrões mosaico e PostScript 3 suporta Gouraud shading.

Disponibilidade e uso

MetaPost é distribuído em muitas distribuições de TeX e do framework Metafont, por exemplo, ele é incluído nas distribuições MiKTeX e na TeX Live.

O PostScript encapsulado produzido pelo MetaPost pode ser incluído em documentos LaTeX, ConTeXt, and TeX através dos comandos padrão de inclusão de gráficos. A saída do PostScript encapsulado pode ser também usada com a engine PDFTeX, por tanto gerando um PDF diretamente. Essa habilidade é implementada no ConTeXt e no pacote gráfico de LaTeX, e pode ser usando em TeX plano via o arquivo de macro supp-pdf.tex

ConTeXt e LuaTex suportam a inclusão de código MetaPost dentro do arquivo de entrada. A inclusão de código MetaPost em LaTex também é possível usado o pacotes LaTeX, como por exemplo gmp ou mpgraphics.

Exemplos

Esse é um único arquivo exemplo.mp que quando processao polo interpreatodor MetaPost (através do comando mpost no Linux produz tres arquivos eps exemplo.1, exemplo.2, exemplo.3. Esses são ilustrados a direita.

saídas do exemplo
transform pagecoords;
pagecoords:=identity scaled 10mm shifted (100mm,150mm);
beginfig (1)
    fill ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)
        transformed pagecoords withcolor green;
    draw ((2,0)..(2,1)..(1,1)..(1,2)..(0,2))
        transformed pagecoords;
    drawarrow ((0,0)--(2,2)) transformed pagecoords;
endfig;
beginfig (2)
    draw (for i=0 upto 7: dir (135i)-- endfor cycle)
        transformed pagecoords;
endfig;
pagecoords:=identity scaled 15mm shifted (100mm,150mm);
beginfig (3);
    % declare paths to be used
    path p[],p[]t;
    % set up points by defining relationships
    z1=(0,0);   z2=z1+2up;
    z3=z1+whatever*dir (60)=z2+whatever*dir (-50);
    z4=z3+(-1.5,-.5);
    z5=z1+dir (135);
    z0=whatever[z1,z2]=whatever[z3,z4];
    % set up paths
    p0=fullcircle yscaled .5 rotated 45 shifted z0 ;
    p1=z2---z4..z0..z3---z1;
    p2=p1 cutbefore p0 cutafter p0;
    p3=p0 cutbefore p1 cutafter p1;
    p4=p2---p3---cycle;
    % define transformed versions of paths and points
    for i=0 upto 4: p[i]t=p[i] transformed pagecoords; endfor
    for i=0 upto 5: z[i]t=z[i] transformed pagecoords; endfor
    % do some drawing
    fill p4t withcolor (1,1,0.2);
    draw z1t---z2t withcolor .5white;
    draw z3t---z4t withcolor .5white;
    pickup pencircle;
    draw p0t dashed withdots scaled .3;
    draw p1t dashed evenly;
    draw p2t withcolor blue;
    draw p3t withcolor red;
    label.lrt (btex $z_0$ etex, z0t);
    label.llft (btex $z_1$ etex, z1t);
    label.top (btex $z_2$ etex, z2t);
    label.rt (btex $z_3$ etex, z3t);
    label.llft (btex $z_4$ etex, z4t);
    for i=0 upto 4:
        drawdot z[i]t withpen pencircle scaled 2;
    endfor
endfig;
bye

Os três arquivos eps resultantes podem ser usados em TeX através do comando LaTeX\includegraphics, do comando ConTeXt \externalfigure, comando Tex puro \epsfbox ou (em simples pdftext) o comando \convertMPtoPDF de supp-pdf.tex. Para ver ou imprimir o terceiro diagrama, essa inclusão é necessária, como as fontes Tex (Computer Modern) não são incluidas nos arquivos eps produzidos pelo MetaPost por padrão.

Ver também

Referências

Ligações externas