![带有 tex 标签的 metapost 无法在非 bin 文件夹中工作,但可以在 bin 文件夹中工作,原因是什么?](https://linux22.com/image/399657/%E5%B8%A6%E6%9C%89%20tex%20%E6%A0%87%E7%AD%BE%E7%9A%84%20metapost%20%E6%97%A0%E6%B3%95%E5%9C%A8%E9%9D%9E%20bin%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BD%86%E5%8F%AF%E4%BB%A5%E5%9C%A8%20bin%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E5%B7%A5%E4%BD%9C%EF%BC%8C%E5%8E%9F%E5%9B%A0%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
Win 10 1903 + TeXLive 2019
fig.mp 文件是
prologue := 3;
verbatimtex
%&latex
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
etex
beginfig(1);
draw (0,0)--(2cm,0);
label.top(btex $\sqrt{x}$ etex,(1cm,0));
endfig;
verbatimtex
\end{document}
\end{CJK}
etex
end
在Desktop
和texlive\bin\win32\
在CMD中,如果路径是Desktop
,mpost -tex=latex fig.mp
则不起作用,错误日志是
This is MetaPost, version 2.00 (TeX Live 2019/W32TeX) (kpathsea version 6.3.1)
(d:/texlive/texmf-dist/metapost/base/mpost.mp
(d:/texlive/texmf-dist/metapost/base/plain.mp
Preloading the plain mem file, version 1.005) ) (./fig.mpfatal:Command failed: latex mpa01092.tex; see mpxerr.log
>> fig.mp
>> fig.mpx
! ! Unable to read mpx file.
l.12 label.top(btex
$\sqrt{x}$ etex,(1cm,0));
Transcript written on fig.log.
但没有 mpxerr.log,所以我认为latex mpa01092.tex
由于某种原因它没有启动。
但是,我将路径改为texlive\bin\win32
,然后运行mpost -tex=latex fig.mp
它可以正确生成图1。
对于不同的工作路径,同一个文件得到不同的结果,我想知道原因。
更奇怪的是,在另一台装有 Win10 1903 + TexLive 2019 的笔记本电脑上,两条路径都可以正常工作。
答案1
我通过 OllyDbg 解决了该问题。
metapost 必须启动 latex 才能处理 latex 标签,它会尝试路径环境中的所有文件夹。但我的路径环境中有一个项目C:\Users\????\AppData\npm
(可能是我升级到 WIN 10 时生成的)。
当程序遇到路径中的“?”时,程序会出错并退出,没有任何信息。