Абсолютные координаты страницы фигур метапоста с использованием luamplib/lualatex

Абсолютные координаты страницы фигур метапоста с использованием luamplib/lualatex

Как можно нарисовать/разместить элементы metapost figure (используя luamplib в lualatex), как если бы страница pdf была миллиметровой бумагой? Итак, есть начало координат: (xorigin, yorigin), и все элементы размещены относительно начала координат или относительно друг друга? Например, поместите круг диаметром 2 в (3,4). Где (3,4) — это абсолютное положение на странице относительно начала координат (xorigin=0pt, yorigin=0pt будет означать верхний левый угол страницы). Кроме того, числа 2,3,4 масштабируются с помощью scale/xscale/yscale, которые могут быть в pt/cm/inch. Я знаю, что это можно сделать с помощью tikz, хотя я не сталкивался с постом, в котором подробно описывалось бы, как это можно сделать в metapost (руководство metapost/luamplib не особо углубляется в начало координат и абсолютное размещение страницы). Я пробовал использоватьтекстпос, хотя это не настоящее решение, так как, скажем, если я добавлю метки сверху/слева от круга, то центр круга сместится от (xorigin+3*xscale,yorigin+4*yscale) на странице PDF; потому что он пытается выровнять левую/верхнюю границу фигуры по точке привязки textpos (вместо привязки центра круга к точке привязки textpos). И внесение ручных корректировок было бы кошмаром, если фигура изменится в будущем. Решение предоставило бы/продемонстрировало бы систематический способ размещения любых/всех элементов фигуры в абсолютных/относительных местах на странице.

Более формальная спецификация с примером: Так, например, после размещения круга в некотором абсолютном месте на странице pdf: (xorigin+X*xscale,yorigin+Y*yscale) с диаметром D*xscale или D*yscale; я бы также хотел расположить другие элементы, такие как метки, относительно этого круга со смещением (Xoff*xscale,Yoff*yscale). При этом указывая только X/Y/D/Xoff/Yoff или, что менее предпочтительно (но все еще приемлемо), с множителем *(x|y)scales.

Вот простая цифра + код, чтобы быть с:

пример метапостовой фигуры

% Command: >> lualatex abspicture.tex
\documentclass{article}
\usepackage[paper=letterpaper,left=0in,right=0in,top=0in,bottom=0in]{geometry}
\usepackage{luamplib}


\begin{document}
\thispagestyle{empty}

\begin{mplibcode}
beginfig(1)
u=50;
draw fullcircle scaled u;
pickup pencircle scaled 2;
draw (u/2,0); draw(0,u/2); draw(-u/2,0); draw(0,-u/2);
label.rt(btex $\theta = 0$ etex scaled .5, (u/2,0));
label.top(btex $\theta = \displaystyle{\frac{\pi}{2}}$ etex scaled .5, (0,u/2));
label.lft(btex $\theta = \pi$ etex scaled .5, (-u/2,0));
label.bot(btex $\theta =\displaystyle{\frac{3\pi}{2}}$ etex scaled .5, (0,-u/2));
endfig;
end;

\end{mplibcode}

\end{document}

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