如何正确将 metapost 导入 .tex 以及如何在不导入的情况下进行导入

如何正确将 metapost 导入 .tex 以及如何在不导入的情况下进行导入

我已经在 TEX SE 上阅读了几个与 metapost 和 latex 相关的问题,但我仍然无法解决我自己的问题。

所以这是一个非常基本的问题。我试图在我的 .tex 文件中包含一个 metapost 图形。我所做的就是保存另一个包含此代码的 .mp 文件

beginfig (1);  
  % draw a line  
  draw (1cm,2cm) -- (3cm,5cm);  
endfig;  
end.

然后在我的.tex 代码中,我使用包 graphicx,然后写入 \includegraphics{trial.mp},其中 trial 是我的 .mp 文件的名称。

但它没有起作用。

接下来我尝试将代码更改为 \includegraphics{trial.mps},它打印了图表,但顶部带有文件名 (trial)。我不想要那样,我只想要图片。

  1. 我的问题是 .mp 和 .mps 有什么区别?

不满意,我尝试使用 mpgraphics 包立即在我的 .tex 文件上写入代码

\begin{mpdisplay}  
draw (1cm,2cm) -- (5cm,3cm) ;  
\end{mpdisplay}

但它没有起作用。

  1. 我的下一个问题是,有什么方法可以将 metapost 代码写入我的 .tex 代码中,这样我就不必从其他文件导入了?

非常感谢您的帮助!

答案1

我希望不会来得太晚......关于您的第二个问题,我经常使用两种解决方案将 MetaPost 代码直接集成到 LaTeX 文档中。

第一种方法是使用gmp包裹dgoodmaniii 已经提到过。

\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{mpost*}
beginfig(1);
$ := 1;
for i = -.3cm step .6cm until 3.6cm:
  % draw a line  
  draw (1cm,2cm) -- (3cm,5cm); 
endfor;
endfig;          
\end{mpost*}
\end{document}

shell-escape如果您想直接生成绘图,则必须在其上运行 LaTeX、pdfLaTeX、XeLaTeX 或 LuaLaTeX,并选择此项,如本例所示( pdflatex):

pdflatex --shell-escape mypic.tex

mypic+mp0001.mp在这种情况下,会创建一个 MetaPost 文件,然后对其进行编译以生成mypic+mp0001.mps最终包含在 LaTeX 程序中的文件。所有这些都是“即时”进行的。

否则(没有shellescape包选项gmp,或者没有--shell-escape命令选项pdflatex),第一次运行将只生成 MetaPost 文件 mypic+mp0001.mp。您必须处理它,然后包含生成的.mps图像,所有这些都需要您自己完成。或者您可以执行 shell 脚本来处理以下步骤:mypic+mp.sh,该脚本也是在第一次运行期间创建的。

您可以看到,这种shell-escape方式是迄今为止更好的选择:-)

我知道的另一种将 MetaPost 代码集成到 LaTeX 程序中的方法是使用 LuaLaTeX 及其luamplib包裹

\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
$ := 1;
for i = -.3cm step .6cm until 3.6cm:
  % draw a line  
  draw (1cm,2cm) -- (3cm,5cm); 
endfor;
endfig;          
\end{mplibcode}
\end{document}

这是最直接、最直接的解决方案:无需导入,无需shell-escape任何选项。但它是 LuaLaTeX 特有的,与之相反,gmp它可以在任何引擎上使用(LaTeX+DVI、pdfLaTeX、XeLaTeX、LuaLaTeX……)。

无论哪种方式,您的图片都会很好地绘制在您的文档中:

在此处输入图片描述

答案2

Metapost 是一种声明性图形语言;程序描述图像,但不是图像本身。你必须编译mp生成mps包含的文件。pdftex根据您的操作系统,类似下面的操作应该可以完成此操作:

mpost image.mp

这将生成一个文件image.1,您可以将其重命名image.mps为 以将其包含在内pdftex。(有多种方法可以让 Metapost 生成以 结尾的文件.mps,也有多种方法可以让pdftexMetapost 接受以 结尾的文件.1,但我将这些留作阅读文档的练习。)

要将 Metapost 源包含在您的 TeX 源中,请查看gmp包。

希望有所帮助。

相关内容