如何在不使用 setMPtext 的情況下在 MetaFun 中將文字對齊基線?

如何在不使用 setMPtext 的情況下在 MetaFun 中將文字對齊基線?

我想畫畫幾段文字應該對齊,所以我需要能夠根據基線放置這些文本

請參閱 MetaFun 手冊,第 143-144 頁,其中解釋了可以透過多種方法實現基線對齊:

  • 使用 定義文字\setMPtext並呼叫,draw返回的對象\MPbetex
  • draw傳回的對象textext.origin
  • draw傳回的對象thelabel.origin

但是,當我使用以下程式碼測試這三種方法時,只有第一個方法可以正常工作。

\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

在此輸入影像描述

相關內容