靈感來自為什麼 Metapost 受到歧視?, 我想了解 Metapost遠的比我現在更好。我只知道Metapost是一種描述圖形的語言,而Metafont是專門用來描述字體的。
那什麼是 Metapost/Metafont?
- Metafont/Metapost 是否有類似的語法,如名稱所示?
- 流行的 TeX 發行版中是否包含使用和編譯它們的工具?
- 這些系統有類似「Hello World」的東西嗎? (整個網站上都可以找到 Metapost 的各種範例,但似乎沒有那麼多 Metafont。)
- pdfTeX 可以輕鬆使用 Metafont 建立的字體嗎?
- (Metapost 也是如此,但該網站上的多個範例似乎不言自明)
答案1
METAFONT 是由 Knuth 設計的,旨在成為 TeX 的伴侶。它的工作是根據“數學描述的”形狀生成字體。 METAFONT 的輸出是點陣圖字形的集合;透過設定合適的參數,如果字元的描述很仔細,則可以調整輸出以適應任何特定的列印設備(例如解析度非常重要,但這不是需要注意的獨特方面)。
Metapost是直接源自METAFONT的程式;它最初由 John Hobby 編寫,他為 METAFONT 做出了寶貴的貢獻。所以,是的,它們的語法是相似的:語言實際上是相同的,但Metapost 添加了幾個基元和資料類型(RGB 和CMYK 顏色分別是METAFONT 中未使用的三元組和四元組) 。相反,METAFONT的一些功能在Metapost中是沒有意義的
Metapost 的輸出是 Postscript 的簡單形式,這是兩個程式之間的主要區別:Metapost 的輸出是向量圖形,而 METAFONT 只輸出光柵。
Metapost 可以與 TeX 互動以取得字元度量並在其輸出中包含類型。這在 METAFONT 中是不可能的(嗯,有一些 TUGboat 論文描述了 METAFONT 的巧妙用法)。
METAFONT 所建立的字體可以與 一起使用
pdftex
:Knuth TeX 中所有可能的功能也可以與 一起使用pdftex
。然而,字體是點陣圖,因此如果想要良好的輸出,就必須產生它們的高解析度版本;pdftex
為此有幾個原語:\pdfpkresolution
用於\pdfpkmode
從來源產生按需位圖。Metapost 的輸出是(封裝的)Postscript,可以直接包含在
latex
;但是,由於它使用一組受限的 Postscript 函數,因此它也可以pdflatex
透過一組最初為 ConTeXt 編寫的 TeX 巨集包含在其中。METAFONT 的「Hello world」可以在 METAFONTbook 中找到,但它並不像 (La)TeX 的類似測試文件那麼簡單。
Metapost 的「Hello world」可以「輕鬆」編寫。寫出以下
hello.mp
文件:prologues:=3; % include all fonts outputtemplate:="%j-%c.mps"; % output file will be hello-1.mps beginfig(1); draw(0,0)--(3cm,0)--(3cm,3cm)--(0,3cm)--cycle; label(btex Hello world! etex, (1.5cm,1.5cm)); endfig; end.
運行
mpost hello
然後epstopdf hello-1.mps
進行hello-1.pdf
預覽
Metapost 的完整文件可在 TeX 發行版中找到(對於 TeX Live do texdoc metapost
)。
答案2
直覺的視覺概覽 -http://www.metaflop.com/modulator- 確保打開解剖學。
答案3
為了擴展 Herbert 的評論並作為 egreg 的補充,這裡有一個代碼片段,它將允許人們直接MetaPost
在 LuaLaTeX 中處理程式碼,而不需要外部工具,部分感謝luamplib
,Lua 庫的包/支援接口mplib
,MetaPost 的嵌入式版本:
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
label ("Insert MP code here", (10,10));
endfig;
\end{mplibcode}
\end{document}