我想采用@Thruston 提供的解决方案经济周期的阶段。但是,当我复制并粘贴作为英文解决方案提供的第一段代码时,我无法在 latex 中获得输出。我收到错误Missing \begin{document}
可能是什么原因造成的?
答案1
问题在于,原始图表设计为直接使用 Metapost 进行编译 —— “老方法”。因此,要获得所需的输出,您应该使用mpost
而不是任何 LaTeX 引擎进行编译。如果您这样做,它将创建一个.eps
Encapsulated PostScript 文件,您可以使用 GhostScriptepstopdf
等将其渲染成各种形式。
或者,您可以使用 和 来调整它以适应现代用法lualatex
。luamplib
调整过程相当容易。
从此模板文件开始。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
% drawing-commands-go-here
endfig;
\end{mplibcode}
\end{document}
然后复制源文件中和之间的所有内容beginfig
并将endfig
其放在模板中注释行的位置。
然后您可以编译它以lualatex
直接获取 PDF 输出文件。
这是一个可行的例子:
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
string ff; ff = "phvr8r";
% fiddle with the parameters to get a nice rising wave
path wave;
wave = (origin for t=1 step 1 until 3*360 + 24:
-- (2/3t,70 sind(t)) shifted (0,1/3*t)
endfor) scaled 3/4 shifted (21,34);
% draw the straight arrow and the wave on top
drawarrow point 0 of wave -- point 3*360 of wave scaled 1.05
dashed evenly withcolor .5[blue, white];
draw wave withpen pencircle scaled 1 withcolor .67 green;
% labels
picture s[]; % center each label and push it up/down slightly
s1 = "peak" infont ff; s1 := s1 shifted (-1/2 xpart urcorner s1, 6);
s2 = "trough" infont ff; s2 := s2 shifted (-1/2 xpart urcorner s2, -12);
s3 = "expansion" infont ff; s3 := s3 shifted (-1/2 xpart urcorner s3, 6);
s4 = "recession" infont ff; s4 := s4 shifted (-1/2 xpart urcorner s4, 6);
% add the labels in the "right" places
t = 0; n = 0;
forever:
dt := directiontime right of subpath(t,infinity) of wave;
exitif dt < 0;
t := t + dt;
n := n + 1;
if odd(n): draw s1 shifted point t of wave withcolor .67 blue;
if n>1: draw s3 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave ; fi
else: draw s2 shifted point t of wave withcolor .67 red;
draw s4 rotated angle direction t-dt/2 of wave
shifted point t-dt/2 of wave;
fi
endfor
% do the axes and titles
path xx, yy;
xx = origin -- (xpart point infinity of wave, 0);
yy = origin -- (0, ypart point infinity of wave);
drawarrow xx;
drawarrow yy;
label.bot("Time" infont ff scaled 1.2, point 1/2 of xx);
label.lft("Level of real output" infont ff scaled 1.2 rotated 90, point 1/2 of yy);
label.top("The business cycle" infont ff scaled 1.44, point 0.8 of yy shifted 108 right) withcolor .8 red;
endfig;
\end{mplibcode}
\end{document}
编译它以lualatex
获得如下 PDF:
笔记
如果您的源 MP 文件中有多个beginfig
/endfig
对,则应将它们分别复制到单独的模板文件中。