MetaPost:btex ... etex 是否支持任何 LaTeX 命令?

MetaPost:btex ... etex 是否支持任何 LaTeX 命令?

我正在运行 MetaPost 示例如下:

beginfig(1);
label.(btex the \emph{sum} is $\sum\limits_{n=1}^{+\infty}a_n$ etex, (3cm, 3cm));
endfig;
end;

日志mpost main.mp中有一条消息

! ! Unable to read mpx file.
l.2 label.(btex
                the \emph{sum} is $\sum\limits_{n=1}^{+\infty}a_n$ etex, (3c...

没有\emph命令时它可以工作,但有命令时会出现消息。我以为任何 LaTeX 命令都会在btex ... etex环境中被接受...

答案1

问题似乎在于创建一个(不必要的).aux文件。

这可能需要对 LaTeX 端进行一些干预。同时,添加\nofiles似乎可以解决问题。\normalfont对于此特定示例,也需要(如果您未在 中指定某些文档类)verbatimtex...etex

verbatimtex \nofiles etex;
prologues:=3;
beginfig(1);
label.(btex \normalfont the \emph{sum} is $\sum\limits_{n=1}^{+\infty}a_n$ etex, (3cm, 3cm));
endfig;
end;

(我还添加了prologues:=3以便能够预览 PDF 文件)。

呼唤

> mpost -tex=latex vladimir.mp
> epstopdf vladimir.1

生产

在此处输入图片描述

例如,

erbatimtex \nofiles\documentclass{article}\usepackage{fourier} etex;
prologues:=3;
beginfig(1);
label.(btex the \emph{sum} is $\sum\limits_{n=1}^{+\infty}a_n$ etex, (3cm, 3cm));
endfig;
end;

将产生

在此处输入图片描述

答案2

如果您可以选择切换到lualatex您的文档,那么 OP 示例将“按预期”工作。

\documentclass[border=5mm]{standalone}
\usepackage{fourier}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
label(btex the \emph{sum} is $\sum\limits_{n=1}^{+\infty}a_n$ etex, (3cm, 3cm));
endfig;
\end{mplibcode}
\end{document}

编译它以lualatex直接获取此输出,无需特殊标志或选项:

在此处输入图片描述

luamplib包会自动将所有btex .... etex标记传递到封闭的 LaTeX 环境,因此您可以选择所有相同的字体设置,并且可以使用所有相同的控制序列定义。有(一些)文档这里

相关内容