Ich habe folgenden Code:
\starttext
\startMPpage
def drawtest(expr i) = %i is not used here
draw btex dummy etex shifted (0,0);
draw btex foo etex shifted (1.5cm,0);
draw btex bar etex shifted (3cm,0);
enddef;
drawtest(5);
\stopMPpage
\stoptext
Und es zeichnet Folgendes:
Was passiert hier?
Ich führe den Code mit aus context thefile.tex
. Die Version ist:
mtx-context | ConTeXt Process Management 1.03
mtx-context |
mtx-context | main context file: /home/xxx/context/tex/texmf-context/tex/context/base/mkiv/context.mkiv
mtx-context | current version: 2019.07.16 18:23
Ich reproduziere das Problem, indem ich dies mit ConTeXt live ausführe (https://live.contextgarden.net/).
Antwort1
Das Problem mit btex ... etex
ist, dass diese Elemente in ConTeXt asynchron verarbeitet werden. Das Urteil der Mailingliste lautet, textext
anstelle von zu verwenden btex ... etex
. Das Problem mit der Baseline kann durch die Verwendung des d
Suffixes gelöst werden d
, wobei vermutlich für Tiefe steht.
(Danke, Alan!)
\starttext
\startMPpage
def drawtest(expr i) = %i is not used here
draw textext.d("dummy") shifted (0,0);
draw textext.d("foo") shifted (1.5cm,0);
draw textext.d("bar") shifted (3cm,0);
enddef;
drawtest(5);
\stopMPpage
\stoptext