1

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

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 环境中进行标记,所以它没有使用命令中ilabel作为变量,而只是一个字母。结果是每个刻度线都标记为“x_{i}”。抱歉,如果不清楚,这是我第一次尝试使用 metapost,我认为必须有一种方法可以使用循环而不是蛮力强制它。

4

1 回答 1

1

如在类似问题中:添加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宏将其编译成一个漂亮的标签。

于 2014-03-28T10:22:56.463 回答