用于循环的字符串

时间:2013-05-08 22:21:01

标签: string for-loop metapost

我正在尝试执行以下操作:

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,我认为必须有一种方法来使用循环而不是暴力强制它。

1 个答案:

答案 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宏将它编译成一个漂亮的 - 看标签。