1、怎样从外部文件读入数据?
得到一行数据。再次使用 readfrom 就会得到后面的行。如果到达文件末尾,readfrom 会返回一个空字符串 EOF,
readfrom "文件"
读入的数据都是作为一个字符串,如果你想要得到数字,你必须用 scantokens 把字符串 evaluate 一下。
u=1mm;
numeric nr, l, Len;
string x, gd, dn;
nr := scantokens(readfrom "DrawSettings.txt")*u; % 点半径(毫米)
Len := scantokens(readfrom "DrawSettings.txt")*u; % 图像大小(毫米)
x := (readfrom "DrawSettings.txt"); % 图像格式(png或eps)
gd := (readfrom "DrawSettings.txt"); % 是否绘制轨道(ON / OFF)
dn := (readfrom "DrawSettings.txt"); % 是否画点(ON / OFF)
2、画圆圈
在 MetaPost 程序中,数字与单位之间不能出现空格。事实上,在 MetaPost 中,诸如 1mm、2cm 此类的长度描述本质上是 mm 或 cm 等变量的倍数,即 1 * mm、2 * cm
u=1mm;
3、出现问题
first.mp内容如下
beginifig(0)
u := 5mm
drawarrow ( -3.5u, 0) -- (3.5u, 0);
drawarrow ( 0, -3.5u) -- (0, 3.5u);
pickup pencircle scaled 2pt;
for i := 1 upto 1000:
draw ( u * normaldeviate, u * normaldeviate);
endfor;
endfor;
end
命令行运行,报错
PS D:\Files\Latex> mpost first.mp
This is MetaPost, version 2.00 (TeX Live 2019/W32TeX) (kpathsea version 6.3.1)
(d:/Offices/Textlive/texlive/2019/texmf-dist/metapost/base/mpost.mp
(d:/Offices/Textlive/texlive/2019/texmf-dist/metapost/base/plain.mp
Preloading the plain mem file, version 1.005) ) (./first.mp
>> beginifig
! Isolated expression.
<to be read again>
(
l.1 beginifig(
0)
?
4、GSview
把metapost生成的fig.1文件重命名为fig.ps,然后用GSview5.0打开
之前总是失败,也不知道是为什么,难道是我GSview安装有问题?
5、错误处理
(1)
Runaway loop?
for.sp=1upto.N:e[(EXPR0)][sp][1]:=scantokens(readfrom"bundled_edges.txt" ETC.
! Forbidden token found while scanning the text of a for loop.
<inserted text>
endfor
<to be read again>
end
l.52 end
;
?
(2) 基本数据类型pair
pair z;
pair z[]; % z特指坐标,z0 :=(x0,y0)
! Declared variable conflicts with previous vardef.
<to be read again>
;
l.6 pair z[];
pair zp[];