比如这个网上经典的mp图片,在CTeX环境下正常,但在TeXLive环境中就无法通过:
verbatimtex
%&latex
\documentclass{article}
\usepackage{CJK}
\begin{CJK}{GBK}{song}
\begin{document}
etex
beginfig(1);
drawarrow origin--(0,100);
drawarrow origin--(100,0);
drawdot origin withpen pencircle scaled 2pt;
label.bot(btex 原点 etex, origin);
label.lft(btex $y$ etex, (0,100));
label.lrt(btex $x$ etex, (100,0));
endfig;
verbatimtex
\end{CJK}
\end{document}
etex
end
创建mwe.mp
文件,输入下方代码后保存:
verbatimtex
%&latex
\documentclass{article}
\usepackage{CJK}
\begin{CJK}{UTF8}{gbsn}
\begin{document}
etex
beginfig(1);
drawarrow origin--(0,100);
drawarrow origin--(100,0);
drawdot origin withpen pencircle scaled 2pt;
label.bot(btex 原点 etex, origin);
label.lft(btex $y$ etex, (0,100));
label.lrt(btex $x$ etex, (100,0));
endfig;
verbatimtex
\end{CJK}
\end{document}
etex
end
然后在win10+TL2025的电脑上,命令行输入mptopdf mwe.mp
进行编译,得到mwe-1.pdf
:
其中使用的汉字是gbsn,但TL上貌似不能任意更换字体。
CTeX
套装的编译原理,基于cct或者直接显式调用CJK
宏包的中文处理方式从目前来看已经过时了。如果没有中文数学期刊/某些古早模板的投稿/编译需求,请使用新的发行版TeXLive
或者MikTeX
,并且使用ctex
宏包而不是CJK
宏包自带的CJK
环境,OP提供的这一网上经典的mp图片似乎有些过时:
这里暂时没有直接回答你的问题,但我探索了一个可行的方案(也应该是比较现代的方案),可以使用luamplib
包直接导出为.pdf
注意此时文件应该保存为test.tex
而不是test.mp
\documentclass[border=5mm]{standalone}
\usepackage{ctex}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
% 坐标轴绘制
drawarrow origin -- (0,100); % Y轴(向上)
drawarrow origin -- (100,0); % X轴(向右)
% 原点强化显示
drawdot origin withpen pencircle scaled 2pt;
% 中文标签系统
label.bot(btex 原点 etex, origin); % 原点标注
label.lft(btex $y$ etex, (0,100)); % Y轴标签
label.rt (btex $x$ etex, (100,0)); % X轴标签
endfig;
\end{mplibcode}
\end{document}
在TeXLive
下直接使用lualatex test.tex
编译可以得到图片。
@u101077 顺便想向您请教一下:
在常规的
.tex
文件中使用时支持什么引擎呢?在ctex-kit
只有pdflatex
使用CJK
宏包方案,对于文件保存的编码是否也有要求?@u70550 据说可以使用
LATEX + DVIPDFM𝑥
,您有兴趣可以试试。