我正在尝试做以下几件事:
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;目标是左边的tick是x_0,下一个是x_1,依此类推。但由于我是在tex环境中进行标记,所以它不使用label命令中的i作为变量,而只使用一个字母。结果是每个刻度线都被标记为"x_{i}“。如果这一点不清楚,很抱歉,这是我第一次尝试使用metapost,我认为必须有一种方法来使用循环而不是蛮力地强迫它。
发布于 2014-03-28 18:22:56
与在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宏将其编译为漂亮的标签。
https://stackoverflow.com/questions/16451202
复制相似问题