通过 XeLaTeX 制作带有 ttf 字体的 Metapost 图形

通过 XeLaTeX 制作带有 ttf 字体的 Metapost 图形

我使用 Metapost 创建 pdf 图表,以便将其包含在我正在撰写的书中。我通常使用命令创建 pdf 文件TEX=latex mpost figure.mp,然后将输出文件转换为 pdf。我figure.1figure.2直接将 Metapost 集成到我的主要文件中不感兴趣,我更愿意管理单独的 pdf 文件并包含它们\includegraphics{figure-1.pdf}等。

但是,我想在图形标签中使用与文本相同的 (.ttf) 字体。不幸的是,我不知道如何指示 Metapost 使用 xetex 引擎来创建标签,前提是这是可能的。

答案1

以下是您可能想要采用的建议工作流程。它涉及使用lualatexluamplib包直接从 Metapost 源创建 PDF 文件。

  1. 我假设您有一个名为的 MP 源文件figure.mp,其中包含两beginfig()/endfig对生成的内容figure-1.mpsfigure-2.mps您将其转换为 PDF。

  2. 使用此模板将此文件拆分为两个单独的文件。

     \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}
    
  3. 将文件命名为figure-1.mpfigure-2.mp。(严格来说,这些文件是 LaTeX 源文件,因此您可能需要使用.tex扩展名,但我更喜欢使用,.mp因为这会使我的编辑器加载正确的语法颜色)。

  4. lualatex figure-1.mp使用和编译它们lualatex figure-2.mp以创建figure-1.pdffigure-2.pdf

  5. 将它们包含在您的\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

相关内容