使用 luamplib/lualatex 的 Metapost 圖形的絕對頁面座標

使用 luamplib/lualatex 的 Metapost 圖形的絕對頁面座標

如何繪製/放置metapost圖形元素(使用lualatex中的luamplib),就像pdf頁面是一張方格紙一樣?那麼就有原點:(xorigin,yorigin),所有的元素都是相對於原點放置的還是相對於彼此放置的?例如,在 (3,4) 處放置一個直徑為 2 的圓。其中 (3,4) 是頁面上關於原點的絕對位置(xorigin=0pt,yorigin=0pt 表示頁面左上角)。此外,數字 2、3、4 按比例/x比例/y比例進行縮放,單位可以為 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) 比例。

這是一個簡單的圖+程式碼:

元帖子範例圖

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

相關內容