
メタポストの図要素を(lualatex の luamplib を使用して)pdf ページがグラフ用紙であるかのように描画/配置するにはどうすればよいでしょうか。つまり、原点: (xorigin, yorigin) があり、すべての要素は原点を基準に、または互いに相対的に配置されるということです。たとえば、直径 2 の円を (3,4) に配置します。ここで、(3,4) は原点に対するページ上の絶対位置です (xorigin=0pt,yorigin=0pt はページの左上を意味します)。また、2、3、4 の数字は、pt/cm/インチ単位の scale/xscale/yscale によって拡大縮小されます。tikz でこれを行うことは可能ですが、メタポストでこれを行う方法を詳しく説明している投稿に出会ったことはありません (メタポスト/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 を指定します。
まず、簡単な図とコードを示します。
% 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}