使用命令时,点和其标签之间的默认间隔是多少coordinate
?在下面的代码中,我使用选项和“。”在网格上绘制一些点label
来排版点。点在此代码中用作标签。
标签与原点之间有一些位移。我想知道这个位移是多少,这样我才能在标签定位时保持一致。选项
[label distance=<- (a measure with units)>]
标签选项中的将减少该距离<a measure with units>
。
似乎如果将节点放置在可以通过声明角度90
或不声明任何角度来指定的点上方,[label distance=-4pt]
似乎可以消除人为的位移。如果将标签放置在点的右侧,似乎可以消除人为的位移[label distance=-5pt]
。
为什么需要对位于节点右侧或上方的节点进行不同程度的补偿?!如果要放置标签above right
,则该label distance
选项无法消除人为位移。可以抑制这种位移吗?
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,positioning,intersections}
\begin{document}
\begin{tikzpicture}
\draw [help lines] (-2,-2) grid (2,2);
\coordinate[label={[label distance=-4pt]90:$.$}] (A) at (1,1);
\coordinate[label={[label distance=-5pt]0:$.$}] (A) at (0,0);
\coordinate[label={[label distance=-5pt]45:$.$}] (A) at (-1,-1);
\coordinate[label={[label distance=-5.5pt]45:$.$}] (A) at (0,-1);
\coordinate[label={[label distance=-6pt]45:$.$}] (A) at (1,-1);
\end{tikzpicture}
\end{document}
答案1
TikZ 在其功能方面表现非常出色。而且,通常情况下,它完全按照您的要求执行操作。但有时,您可能想执行某些操作(例如标记节点和坐标),但 TikZ 的方法可能不是您想要的。
如果我理解您在这里的想法,您会希望自己为坐标创建标签,而不是依赖 TikZ 认为您想要做的事情。
在以下示例中,我创建了自己的自定义标签。我创建了节点并将其绘制为橙色。然后,我为节点创建标签,该标签与要标记的节点中心之间的距离精确匹配。标签本身为红色。我用浅蓝色绘制一个圆圈,其半径等于与节点中心之间的所需距离。我还将您的节点及其标签保留在那里。
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,positioning,intersections}
\begin{document}
\begin{tikzpicture}
\draw [help lines] (-2,-2) grid (2,2);
\coordinate[label={[label distance=-4pt]90:$.$}] (A1) at (1,1);
\coordinate[label={[label distance=-5pt]0:$.$}] (A2) at (0,0);
\coordinate[label={[label distance=-5pt]45:$.$}] (A3) at (-1,-1);
\coordinate[label={[label distance=-5.5pt]45:$.$}] (A4) at (0,-1);
\coordinate[label={[label distance=-6pt]45:$.$}] (A5) at (1,-1);
\coordinate (A) at (1,1);
\coordinate (B) at (0,0);
\coordinate (C) at (-1,-1);
\coordinate (D) at (0,-1);
\coordinate (E) at (1,-1);
\foreach \myn/\mya/\myd in {A/90/4pt,
B/0/5pt,
C/45/5pt,
D/45/5.5pt,
E/45/6pt}
{
\node[circle,inner sep=1pt,draw,orange] at (\myn) {};
\draw[blue!20] (\myn) circle (\myd);
\node[text=red] (\myn/label) at ($(\myn)+(\mya:-\myd)$) {$.$};
}
\end{tikzpicture}
\end{document}
基本上我在\foreach
循环中所做的是:获取一些A
已经定义的节点(或坐标)。然后,为了创建我自己的精确放置的标签,我将使用以下语法(前提是您使用该calc
库)
\node[<options>] (A/label) at ($(A)+(<angle>:<distance>)$) {<label content>};
如果你不使用该calc
库,那么你可以通过以下方式定义标签
\path (A) ++ (<angle>:<distance>) node[<node options>] (A/label) {<label content>};
标签名称没有什么特别之处。您可以随意命名,但就代码的可读性而言,最好按其本身命名。