我正在尝试执行以下操作:
xN := 200;
topp:= 3;
bott := -3;
spac := 20;
% draw number line
draw (0,0)--(xN,0);
last := 3;
% draw 4 tick marks from left side
for i := 0 upto last:
draw (spac*i,topp)..(spac*i,bott);
endfor;
% label tick marks accordingly
for i := 0 upto last:
label.bot(btex $x_{i}$ etex, (i*spac,bott));
endfor;
目标是左边的刻度为x_0,下一个刻度为x_1,依此类推。但是因为我在tex环境中进行标记,所以它没有使用i
命令中的label
作为变量,而只是一个字母。结果是每个刻度标记都标记为“x_ {i}”。对不起,如果不清楚,这是我第一次尝试使用metapost,我认为必须有一种方法来使用循环而不是暴力强制它。
答案 0 :(得分:1)
与similar question中一样:添加input tex;
行以包含TEX宏,然后更改
label.bot(btex $x_{i}$ etex, (i*spac,bott));
进入以下内容:
label.bot(TEX ("$x_" & decimal (i) & "$"), (i*spac,bott));
这样,i
的值被转换为十进制表示,然后构造一个字符串$ x_0 $或$ x_1 $等,然后TEX
宏将它编译成一个漂亮的 - 看标签。