メタポスト

プログラミング言語
メタポスト
パラダイム命令形タイプセッティング
デザイン:ジョン・D・ホビー
開発者タコ・ホークウォーター、ルイジ・スカルソ
初登場1994 (1994年
安定版リリース
1.8 / 2013年6月17日; 12年前 (2013年6月17日
プレビューリリース
2.0rc2 / 2018年2月19日; 7年前 ( 2018-02-19 )
タイピングの規律アヒルダイナミック強い
OSクロスプラットフォーム
ライセンスLGPL
ウェブサイトtug.org/metapost
影響を受けた
メタフォント

MetaPostは、プログラミング言語MetaPostプログラミング言語のインタープリタの両方を指します。どちらもドナルド・クヌースMetafont言語とインタープリタから派生しています。MetaPostは、幾何学的/代数的記述からベクターグラフィックダイアグラムを生成します。この言語は、直線、曲線、点、および幾何学的変換を操作するためのMetafontの宣言型構文を共有しています。ただし、

  • Metafontは、フォントメトリックファイル(.tfm形式)に関連付けられた画像ファイル(.gf形式)の形式でフォントを生成するように設定されていますが、MetaPostはEPSSVG、またはPNGファイルを生成します。
  • Metafontの出力はラスターベースの形式で固定解像度のフォントで構成されますが、MetaPostの出力はベクターベースのグラフィック(線、ベジェ曲線)です。
  • Metafont 出力はモノクロですが、MetaPost はRGBまたはCMYKカラーを使用します。
  • MetaPost 言語では、指定されたフォントからの文字列、またはTeXでタイプセットできるその他の任意の文字列など、図にテキスト ラベルを含めることができます
  • バージョン1.8以降、Metapostは64ビットの浮動小数点演算を可能にします(デフォルト: 32ビット固定小数点演算)

MetaPost の多くの制限は、Metafont の機能に由来します。例えば、MetaPost はPostScriptのすべての機能をサポートしていません。特に注目すべきは、パスは 1 つのセグメントしか持てないこと(つまり、領域は単純に接続される)と、領域を均一な色でしか塗りつぶせないことです。PostScript レベル 1 はタイルパターンをサポートし、PostScript レベル 3 はグーローシェーディングをサポートしています。

入手方法と使用方法

MetaPostは、 TeXおよびMetafontフレームワークの多くのディストリビューションに同梱されています。たとえば、MiKTeXおよびTeX Liveディストリビューション に含まれています

Metapostによって生成されたカプセル化されたPostscriptは、標準的なグラフィックス取り込みコマンドを介してLaTeXConTeXt、およびTeX文書に取り込むことができます。カプセル化されたPostscript出力はPDFTeXエンジンでも使用でき、直接PDFに変換されます。この機能はConTeXtおよびLaTeXグラフィックスパッケージに実装されており、supp-pdf.texマクロファイルを介してプレーンTeXから使用できます。

ConTeXtとLuaTeXは、入力ファイルへのMetaPostコードの組み込みをサポートしています。LaTeXへのMetaPostコードの組み込みは、LaTeXパッケージ(例えば、gmpまたは)を使用することでも可能ですmpgraphics

これは単一のファイルですexample.mpこれをMetaPostインタープリタ( Linuxmpostコマンド経由)で処理すると、3つのepsファイルが生成されます例1例2例3これらは右側に示されています

出力例
transform  pagecoords ; 
pagecoords := identity  scaled  10 mm  shifted  ( 100 mm , 150 mm ); 
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  ( 135 i ) --  endfor  cycle ) 
        transformed  pagecoords ; 
endfig ; 
pagecoords := identity  scaled  15 mm  shifted  ( 100 mm , 150 mm ); 
beginfig  ( 3 ); 
    % 使用するパスを宣言します
    path  p [], p [] t ; 
    % 関係を定義してポイントを設定します
    z1 =( 0 , 0 );    z2 = z1 + 2 up ; 
    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 ]; 
    % パスを設定
    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 ; 
    % パスとポイントの変換されたバージョンを定義
    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 
    % 描画を行う
    fill  p4t  withcolor  ( 1 , 1 , 0.2 ); 
    draw  z1t --- z2t  withcolor  . 5 white ; 
    draw  z3t --- z4t  withcolor  . 5 white ; 
    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

結果として得られる3つのepsファイルは、 LaTeXコマンド、ConTeXtのコマンド、Plain TeXのコマンド、または(Plain pdftexでは)のコマンドを介してTeXで使用できます。\includegraphics\externalfigure\epsfbox\convertMPtoPDFsupp-pdf.tex3番目の図を表示または印刷するには、 MetaPostによって生成されるepsファイルにはデフォルトで TeXフォント(Computer Modern )が含まれていないため、これを含める必要があります

参照

参考文献

  • ハンス・ハーゲン著「MetaFun」(Metapost用モジュール)。
  • クヌース、ドナルド(1986). METAFONTbook』 . 『コンピュータとタイプセッティング』 . 第C巻.アディソン・ウェスレー. ISBN 0-201-13444-6
  • 「包括的TEXアーカイブネットワーク」(CTAN )。TEXソースと数百のアドオンおよびスタイルファイルのリポジトリ
  • 「(La)TeX Navigatorは305個のシンプルなMetaPostの例を提供します」。2013年7月27日時点のオリジナルよりアーカイブ2006年11月17日閲覧。
  • Hoekwater, Taco (2006). 「MetaPostの開発—2006年秋」(PDF) . TUGboat . 27 (1).
  • TeXユーザーグループ(TUG)http://www.tug.org/には、MetaPost専用のページがあります:http://www.tug.org/metapost.html
「https://en.wikipedia.org/w/index.php?title=MetaPost&oldid=1267041912」から取得