如何在不使用 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

在此处输入图片描述

相关内容