我使用 Metapost 创建 pdf 图表,以便将其包含在我正在撰写的书中。我通常使用命令创建 pdf 文件TEX=latex mpost figure.mp
,然后将输出文件转换为 pdf。我figure.1
对figure.2
直接将 Metapost 集成到我的主要文件中不感兴趣,我更愿意管理单独的 pdf 文件并包含它们\includegraphics{figure-1.pdf}
等。
但是,我想在图形标签中使用与文本相同的 (.ttf) 字体。不幸的是,我不知道如何指示 Metapost 使用 xetex 引擎来创建标签,前提是这是可能的。
答案1
以下是您可能想要采用的建议工作流程。它涉及使用lualatex
该luamplib
包直接从 Metapost 源创建 PDF 文件。
我假设您有一个名为的 MP 源文件
figure.mp
,其中包含两beginfig()/endfig
对生成的内容figure-1.mps
,figure-2.mps
您将其转换为 PDF。使用此模板将此文件拆分为两个单独的文件。
\documentclass[border=5mm]{standalone} \usepackage{luamplib} \usepackage{fontspec} \setmainfont{<whatever TTF font you are using with XeLateX>} \begin{document} \mplibtextextlabel{enable} \begin{mplibcode} beginfig(1); <your MP code here> endfig; \end{mplibcode} \end{document}
将文件命名为
figure-1.mp
和figure-2.mp
。(严格来说,这些文件是 LaTeX 源文件,因此您可能需要使用.tex
扩展名,但我更喜欢使用,.mp
因为这会使我的编辑器加载正确的语法颜色)。lualatex figure-1.mp
使用和编译它们lualatex figure-2.mp
以创建figure-1.pdf
和figure-2.pdf
将它们包含在您的
\includegraphics{figure-1}
书中\includegraphics{figure-2}
lualatex
支持的fontspec
方式与 完全相同xelatex
。
我在luamplib
我的使用 Metapost 绘图的说明您可能想阅读。特别是,您可能会发现第 3.2 节和第 12 节很有用。
笔记
语法高亮-- 使用这个想法意味着源文件是 Metapost,用 LaTeX 包装。这会让大多数编辑器中的大多数语法高亮引擎感到困惑。可能的在 Vim 中,高亮显示为文件的不同区域定义不同的规则,因此您可以将环境定义
mplibcode
为 LaTeX 文件中的 Metapost 区域,但我发现要可靠地做到这一点很棘手。我的解决方案是使用后缀并设置适当的文件类型触发器来强制 MP 语法高亮显示整个文件.mp
。在 Vim 中,您也可以通过明确执行来强制执行此操作set ft mp
。常见的 LaTeX 代码-- 如果您有一组通用的 LaTeX 代码可以在所有 MP 源文件中共享,那么您可能应该将所有通用元素放入一个共享文件中,然后将其包含在每个 MP 源文件中。对于我的“使用 Metapost 绘图”项目,我将一些常见的颜色和列表定义放入名为的样式文件中
dwmpcode.sty
,然后将其放在\usepackage{dwmpcode}
我的主文档顶部和需要使用通用定义的任何 MP 绘图的顶部常用 Metapost 代码-- 如果你有一组共同的元帖子代码在所有 MP 源文件之间共享,那么就简单多了。将所有通用代码放入 Metapost 源文件中,可能是“my-common-code.mp”,然后将其添加为每个源文件中环境
input my-common-code
的第一行。mplibcode