METAPOST:在标签中使用循环变量

时间:2013-04-10 15:59:32

标签: variables loops text label metapost

亲爱的stackoverflowers,

最近,在玩METAPOST环境时,我遇到了一个问题。在使用循环“for”宏绘制内容时,我需要将循环变量的正确显示在标签内,但是我无法弄清楚如何做到这一点并且Mr.Google无法帮我。以下是我使用的代码示例:

for i=1 upto N: label(btex $here should be the value of i$, some_position); endfor;

任何形式的帮助都会被证实:]

1 个答案:

答案 0 :(得分:3)

起初etex之前缺少, some_positionbtexetex之间的所有内容都被视为字符串。它没有被解释。为此,必须首先通过TEX()计算字符串的内容。例如:

prologues := 2;

input tex;

verbatimtex
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
etex;

beginfig(0);
n := 10;
    for i := 1 upto n:
    label.lrt(TEX("$i = "&decimal(i)&"$"),(0,i*1cm));
endfor; 
endfig;

如果您想使用LaTeX-Struktures,您必须以这种方式修改原始TEX():

vardef TEX primary s =
write "verbatimtex"                    to "mptextmp.mp";
write "\documentclass[12pt]{article}"  to "mptextmp.mp"; 
write "\usepackage[T1]{fontenc}"       to "mptextmp.mp";
write "\usepackage[ansinew]{inputenc}" to "mptextmp.mp";
write "\usepackage{amsmath,amssymb}"   to "mptextmp.mp";
write "\begin{document}"               to "mptextmp.mp";
write "etex"                           to "mptextmp.mp";
write "btex "&s&" etex"                to "mptextmp.mp";
write EOF                              to "mptextmp.mp";
scantokens "input mptextmp"
enddef;

希望有所帮助

诉W上。