比如这个网上经典的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
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
编译可以得到图片。
创建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上貌似不能任意更换字体。
CCT 和 CJK 是两套中文处理技术
@u40 谢谢啸行老师指正。srds,那上面的描述应该也不算有错误(?有的话我立刻改正....戳手)
CTeX
套装,使用cct
或者CJK
的中文处理技术ctex
宏包,针对不同的编译引擎自动选用不同的方式:还想顺便请教下,
CJK
宏包在当前的正确使用姿势是:latex
/pdflatex
编译调用了ctex
宏包的文档?ctex
宏包的前提下,用latex+ DVIPDFM𝑥
(未经测试)编译显式调用CJK
宏包和用CJK
环境的文档?@u70550 我在这个问题上不谈正确不正确,只谈建议。目前建议中文用户不再显式调用 CJK 包,而是直接显式调用 ctex 包,ctex 自动根据编译方式选择技术手段。CCT 未被 ctex 包涵盖,不适用于这个话题。CTeX 套装同时支持 CCT 和 CJK 两种技术手段。
@u40 这下清楚不少了,感谢您的建议(笔芯❤)
@u101077
试验了一下您的方法,没有生成pdf,得到4个log文件(在附件中)。
testerr.zip
昨天和今早经过QQ群中多位排版达人指导,已经有了解决方法。
我主要是用Latex排版,没有能力深入理解原理。
感谢您的关注和指导。
@u44795 我提供的回复是在win10+TL2025中测试的。
@u44795 这个评论应该在另一个回答下进行,因为你基于的代码是
mwe.mp
而不是基于luamplib
...而实际上这也不是涉及原理有关的内容。大多数问题(包括上面这个)其实都是用户层面的。
作为用户,需要知道的是:
.mp
文件mptopdf
在命令行编译这些都和所谓的“原理”相去甚远,仅仅是方法论而已。
我也测试了一下,注意右下角文件的编码,我解压您的压缩包出现了乱码,有可能您的
.mp
文件编码不为UTF-8
. 我在TL25下同样可以顺利编译:这个页面告诉您两个信息(现在是三个了):
CJK
环境的编码/字体等,并用mptopdf
实现lualatex
用luamplib
实现,而且后者是比较现代的方法这对后来者是有帮助的。当然,您能在一种情况下成功编译出pdf已经可以满足您的需求了。 Happy LuaLaTeXing!
P.S. 如果您对某个回答满意,请不要忘记点击“采纳此回答”
@u44795
label.bot(btex ԭ�� etex, origin);
你把这行代码修改一下再试试?