setMPtext を使用せずに MetaFun でテキストをベースラインに揃えるにはどうすればよいでしょうか?

setMPtext を使用せずに MetaFun でテキストをベースラインに揃えるにはどうすればよいでしょうか?

描きたいいくつかのテキストそれを揃える必要があるので、これらのテキストをベースラインに沿って配置する

MetaFun マニュアルの 143 ~ 144 ページを見ると、ベースラインの位置合わせはいくつかの方法で実現できることが説明されています。

  • でテキストを定義し\setMPtextdrawによって返されるオブジェクトを呼び出します\MPbetex
  • drawによって返されるオブジェクトtextext.origin
  • drawによって返されるオブジェクトthelabel.origin

ただし、次のコードを使用してこれら 3 つの方法をテストすると、最初の方法のみが正しく機能します。

\starttext
\setMPtext {1} {Foo}
\setMPtext {2} {Bap}

\startMPpage
draw \MPbetex{1} shifted (0,0);
draw \MPbetex{2} shifted (0.5cm,0);

draw textext.origin("Foo") shifted (0,-1cm);
draw textext.origin("Bap") shifted (0.5cm,-1cm);

draw thelabel.origin("Foo",(0,-2cm));
draw thelabel.origin("Bap",(0.5cm,-2cm));
\stopMPpage

\stoptext

例の結果

方法はありますか?すべての部分を「事前宣言」する必要なく、テキストをベースライン上に揃える\setMPtext

答え1

の定義は\MPbetex基本的に次のようになります。

\def\MPbetex #1{btex \begincsname\??mptext#1\endcsname\space etex}

つまり、 を使用して保存された文字列を受け取り\MPtext、 の間に配置しますbtex ... etex。 もちろん、これを手動で行うこともできます。

\startMPpage
draw btex Foo etex shifted (0,0);
draw btex Bap etex shifted (0.5cm,0);
\stopMPpage

ここに画像の説明を入力してください

関連情報