使用标签循环扩展字符串数组

使用标签循环扩展字符串数组

我想在一个简短的 metafun 循环中扩展一个字符串数组。每个框都应标有适当的字符串(“古典主义”、“卢米埃”、“浪漫主义”)。我如何才能让 btex etex 中的标签函数扩展这些字符串。我没有找到一些字符串数组的示例,希望它被正确声明。

\setuppapersize[S6][S6]
\starttext
  \startMPcode
           %numeric u, l, h ;
           u:=5pt ;
           l:=20 ;
           h:=8 ;
           path p ;
           p:= unitsquare xscaled (l*u) yscaled (h*u) ;
           string c[] ;
           c[0]:="classicisme"; 
           c[20]:="Lumières";
           c[40]:="romantisme";
           for i=0 step 20 until 40 :
              fill p xshifted i*u  withcolor  (.8-(i/200))*white; 
              label(btex c[i] etex, ((i+l/2)*u,(h/2)*u)) ; 
           endfor ;
   \stopMPcode

\stoptext

我的 MWE 甚至没有返回 c[0]、c[20] 和 c[40] 作为标签,所以我肯定会错过一些扩展。

阅读后编辑这个问题,我试过这个

 label.bot(TEX("c[i]"), ((i+l/2)*u,(h/2)*u)) ;

但它不能编译。

答案1

您可以将字符串原样传递给label:替换行

label(btex c[i] etex, ((i+l/2)*u,(h/2)*u)) ;

label(c[i], ((i+l/2)*u,(h/2)*u)) ;

您就完成了。

(顺便说一句,如今(参考)您可以直接这样做\setuppapersize[S6]\setuppapersize[S6][S6]如果没有给出第二个参数,则默认为第一个参数。)

相关内容