| メタポスト | |
|---|---|
| パラダイム | 命令形、タイプセッティング |
| デザイン: | ジョン・D・ホビー |
| 開発者 | タコ・ホークウォーター、ルイジ・スカルソ |
| 初登場 | 1994 (1994年) |
| 安定版リリース | 1.8 / 2013年6月17日 (2013年6月17日) |
| プレビューリリース | 2.0rc2 / 2018年2月19日 ( 2018-02-19 ) |
| タイピングの規律 | アヒル、ダイナミック、強い |
| OS | クロスプラットフォーム |
| ライセンス | LGPL |
| ウェブサイト | tug.org/metapost |
| 影響を受けた | |
| メタフォント | |
MetaPostは、プログラミング言語とMetaPostプログラミング言語のインタープリタの両方を指します。どちらもドナルド・クヌースのMetafont言語とインタープリタから派生しています。MetaPostは、幾何学的/代数的記述からベクターグラフィックダイアグラムを生成します。この言語は、直線、曲線、点、および幾何学的変換を操作するためのMetafontの宣言型構文を共有しています。ただし、
- Metafontは、フォントメトリックファイル(.tfm形式)に関連付けられた画像ファイル(.gf形式)の形式でフォントを生成するように設定されていますが、MetaPostはEPS、SVG、または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は、標準的なグラフィックス取り込みコマンドを介してLaTeX、ConTeXt、および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