如何在 Overleaf 上使用 mfpic?

如何在 Overleaf 上使用 mfpic?

我想用mfpicOverleaf 生成图像,但我甚至不确定这是否可行。我对这些都不是很熟悉,但有人为我的报告发送了 mfpic 代码的一部分,我想打印它。来自教程这里,在我写完下面的代码后,显然我应该运行命令“pdflatex first”,但我不知道具体如何运行或在哪里运行它,所以我卡住了。我得到的唯一输出是#1左下角有一个空白方块,没有生成其他文件。

\documentclass[12pt]{report}
\usepackage[metapost]{mfpic}
\opengraphsfile{myfigs}
\begin{document}
\begin{figure}[htb!]
\begin{center}
\mfpicunit 1mm
\begin{mfpic}[1]{-10}{50}{-5}{45}
\draw\shade\polygon{(10,40),(30,30),(40,10)} \rect{(0,0),(30,30)}
\lines{(0,30),(10,40),(40,40),(40,10),(30,0)}
\lines{(30,30),(40,40)} \dashed\lines{(0,0),(10,10),(40,10)}
\dashed\lines{(10,10),(10,40)} \arrow\lines{(0,0),(27,27)}
\tlabel[tr](0,0){\tiny{(000)}} \tlabel[tl](30,0){\tiny{(100)}}
\tlabel[tl](40,10){\tiny{(101)}} \tlabel[bl](11,11){\tiny{(001)}}
\tlabel[cr](0,30){\tiny{(010)}} \tlabel[tl](31,31){\tiny{(110)}}
\tlabel[cl](41,40){\tiny{(111)}} \tlabel[br](10,40){\tiny{(011)}}
\end{mfpic}
\caption{Caption}
\end{center}
\end{figure}
\closegraphsfile
\end{document}

在此处输入图片描述

答案1

背页有一个latexmkrc规则可以运行metapost;但mfpic不会输出任何日志消息,告知latexmk需要应用该规则。添加到\typeout{No file myfigs.1.}您的.tex文件中将有助于触发latexmkrc规则运行metapost

在 Overleaf 上使用 mfpic 的示例

答案2

我相信 Overleaf 的细心团队会发表评论,但我不认为您可以进行使用所需的两遍(latex + mpost)编译mfpic。我强烈建议您通过mplib选项直接使用 Metapost,它在 Overleaf 上运行良好,只要您选择LuaLatex编译器(菜单,左上角)。

至于你想画什么,MP 不是绘制 3D 图表的最佳工具,但如果你能用简单的等角投影除了正确的视角之外,您还可以执行以下操作:

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}

numeric elevation, rotation, se, ce, sr, cr, unit_size;
elevation = 18; 
rotation = -12;
se = sind(elevation);
ce = cosd(elevation);
sr = sind(rotation);
cr = cosd(rotation);
unit_size = 89;

def p(expr x, y, z) = (x * cr - z * sr, y * ce + x * se * sr + z * se * cr) scaled unit_size enddef;

beginfig(1);

    drawoptions(dashed evenly scaled 1/2 withcolor 1/2);
    draw p(0,0,0) -- p(0,0,1) -- p(0,1,1);
    draw p(0,0,1) -- p(1,0,1);

    drawoptions();
    path t; t = p(0,1,1) -- p(1,0,1) -- p(1,1,0) -- cycle;
    fill t withcolor 7/8; draw t;
    
    draw p(0,0,0) -- p(1,0,0) -- p(1,1,0) -- p(0,1,0) -- cycle;
    draw p(0,1,0) -- p(0,1,1) -- p(1,1,1) -- p(1,0,1) -- p(1,0,0);
    draw p(1,1,0) -- p(1,1,1);

    interim ahangle := 30;
    drawarrow p(0,0,0) -- 2/3[point 2 of t, point 1/2 of t];

    label.llft("$\scriptstyle (000)$", p(0,0,0));
    label.lrt ("$\scriptstyle (100)$", p(1,0,0));
    label.lrt ("$\scriptstyle (101)$", p(1,0,1));
    % etc

endfig;
\end{mplibcode}
\end{document}

它将与lualatexOverleaf 一起编译并生成:

在此处输入图片描述

相关内容