メタポスト

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

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 )が含まれていないため、これを含める必要があります

参照

参考文献