使用 luamplib/lualatex 的 metapost 图形的绝对页面坐标

使用 luamplib/lualatex 的 metapost 图形的绝对页面坐标

如何绘制/放置 metapost 图形元素(使用 lualatex 中的 luamplib),就好像 pdf 页面是方格纸一样?所以有原点:(xorigin,yorigin),并且所有元素都是相对于原点或相对于彼此放置的?例如,在 (3,4) 处放置一个直径为 2 的圆。其中 (3,4) 是页面上相对于原点的绝对位置(xorigin=0pt,yorigin=0pt 表示页面左上角)。此外,数字 2,3,4 按 scale/xscale/yscale 缩放,单位可以是 pt/cm/inch。我知道可以使用 tikz 做到这一点,但我还没有看到一篇文章深入探讨如何在 metapost 中做到这一点(metapost/luamplib 手册没有深入探讨原点和绝对页面位置)。我尝试使用文本位置,但这不是真正的解决方案,因为如果我在圆的顶部/左侧添加标签,那么圆的中心就会从 pdf 页面上的 (xorigin+3*xscale,yorigin+4*yscale) 移开;因为它试图将图形的左/上边界与 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。

这是一个简单的图形+代码:

示例 metapost 图

% 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}

相关内容