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}」というラベルが付けられます。これが不明な場合は申し訳ありませんが、メタポストを使用するのはこれが初めての試みであり、総当たりではなくループを使用してこれを行う方法が必要であると考えました。

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));

このようにして、 の値がi10 進数表現に変換され、次に文字列 $x_0$ または $x_1$ などが構築され、TEXマクロがそれを見栄えの良いラベルにコンパイルします。

于 2014-03-28T10:22:56.463 に答える