METAPOST(和/或 METAFUN)中是否有任何选项可以标记 TikZ 允许的内容节点?
我当然知道,label.{top|bot|lft|rt|...}
但还有更精确的吗?
答案1
这是freelabel(label, point, point_origin)
Metafun 的宏。与 tikz 中的标签类型不同,但它可以提供帮助。
它将设置label
在直线上point_origin--point
,靠近point
但在的对侧point_origin
。
一个非常简单的例子:
\documentclass{standalone}
\usepackage{luamplib}
\mplibsetformat{metafun}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
beginfig(1);
u := 3cm;
draw fullcircle scaled (2u);
for i = 0 upto 14:
draw origin -- u*dir 24i;
freelabel("$" & decimal 24i & "$", u*dir 24i, origin);
endfor;
endfig;
\end{mplibcode}
\end{document}
查看Metafun 文档(第 453 页及后续页面)了解更多详细信息。
答案2
可以thefreelabel
扩展元乐趣将标签放在想要的方向上。它freelabeloffset
决定了标签距离点有多远。
\startMPpage[offset=1dk]
vardef dirlabel(expr s, l, d) =
thefreelabel(s,l, unitvector dir(d+180) shifted l)
enddef ;
path p ; p = (origin -- (1,0) .. (2,2) .. (0,1) .. cycle) scaled 100 ;
numeric N ; N := 20 ;
draw p ;
for i = 0 upto (N - 1) :
draw point i/N along p withpen pencircle scaled 2 withcolor darkred ;
draw dirlabel(decimal i, point i/N along p, angle(direction (arctime ((i/N)*arclength p) of p) of p) - 90) ;
endfor ;
\stopMPpage