Eu quero desenharvários pedaços de textoisso deve estar alinhado, então eu preciso ser capaz decoloque esses textos de acordo com sua linha de base.
Olhando o manual MetaFun, páginas 143-144, é explicado que o alinhamento da linha de base pode ser alcançado através de vários métodos:
- definir texto
\setMPtext
e chamardraw
o objeto retornado por\MPbetex
, draw
o objeto retornado portextext.origin
,draw
o objeto retornado porthelabel.origin
.
No entanto, quando testo esses três métodos com o código a seguir, apenas o primeiro funciona corretamente.
\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
É uma maneira dealinhe o texto na linha de base sem precisar "pré-declarar" todas as peçascom \setMPtext
?
Responder1
A definição de\MPbetex
essencialmente diz:
\def\MPbetex #1{btex \begincsname\??mptext#1\endcsname\space etex}
Ou seja, ele apenas recebe a string armazenada em using \MPtext
e a coloca entre btex ... etex
. Claro que você também pode fazer isso manualmente.
\startMPpage
draw btex Foo etex shifted (0,0);
draw btex Bap etex shifted (0.5cm,0);
\stopMPpage