这是 LaTeX 文件:
verbatimtex
\documentclass[a4paper, 12pt]{article}
\usepackage{amsfonts, amssymb, longtable, verbatim}
\usepackage[utf8]{inputenc}
\usepackage{cmap}
\usepackage[T2A]{fontenc}
\usepackage[english]{babel}
\begin{document}
\rm
etex
prologues := 3;
u=.5cm;
beginfig(1);
z0=(0,0);
label.bot(btex $A$ etex, z0);
endfig;
end
这是我在 cmd(Windows 10)中用于编译 mp 文件的命令:mpost DifGemFig.mp -tex=latex
我将文件保存在记事本++使用 UTF-8。然后我收到错误:
This is MetaPost, version 2.02 (MiKTeX 22.8.28)
(C:/Users/mrPlag/AppData/Local/Programs/MiKTeX/metapost/base/mpost.mp
(C:/Users/mrPlag/AppData/Local/Programs/MiKTeX/metapost/base/plain.mp
Preloading the plain mem file, version 1.005) ) (./DifGemFig.mpfatal: Command failed: tex --parse-first-line --interaction=nonstopmode mpM7rFx1.tex; see mpxerr.log
>> DifGemFig.mp
>> DifGemFig.mpx
! ! Unable to read mpx file.
l.18 label.bot(btex
$A$ etex, z0);
Transcript written on DifGemFig.log.
为什么我会看到此错误?目录中没有 mpx 文件。在其他电脑上,btex 可以运行。
答案1
Metapost 程序mpost
从左到右处理其参数。因此,当您像这样调用它时:
mpost DifGemFig.mp -tex=latex
它DifGemFig.mp
使用默认的 TeX 引擎(即普通的)进行处理tex
。但对于你的情况,这失败了,因为你有一个块需要 LaTeX 引擎。如果你按照错误消息提示verbatimtex
进行查看:mpxerr.log
Command failed: tex [...] mpM7rFx1.tex; see mpxerr.log
那么你会发现很多错误说那\documentclass
是一个未定义的控制序列等等,可能会给你一个线索!
因此您需要做的就是运行:
mpost -tex=latex DifGemFig.mp
现在第一个参数告诉mpost
更改为使用 LaTeX 引擎,第二个参数是您的文件,它将被正确处理。
如果这感觉有点太难,那么另一种方法是使用lualatex
和luamplib
包来制作独立的 Metapost 图形,如下所示:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
dotlabel.urt("$A$", origin);
endfig;
\end{mplibcode}
\end{document}
编译此文件以lualatex
获得如下所示的 PDF 文件:
笔记
- MWE 中的任何包都不需要
lualatex
- ... 你可能还想
amsmath
添加unicode-math
- 该
mplibtextextlabel
选项会自动通过 Latex 传递标签中的字符串(就像您输入的那样textext("string")
),因此您不需要btex ... etex
再使用任何字符串。