Как выровнять текст по базовой линии в MetaFun без использования setMPtext?

Как выровнять текст по базовой линии в MetaFun без использования setMPtext?

Я хочу рисоватьнесколько фрагментов текстакоторые должны быть выровнены, поэтому мне нужно иметь возможностьразместите эти тексты в соответствии с их исходной линией.

В руководстве 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

введите описание изображения здесь

Связанный контент