相对于默认的“下方”位置移动 TikZ 标签

相对于默认的“下方”位置移动 TikZ 标签

在 TikZ 图中,我根据语法将标签放置在节点下方node [label=below:x]。但是,某些标签需要稍微进行水平调整。看起来很有希望的解决方案是xshift根据语法使用node [label={[below, xshift=1pt]{x}}]。但是,这会使标签垂直偏移,我不明白为什么。

在下面的例子中,是否有某种方法可以使第二个标签(项目符号)的位置与第一个标签完全相同(相对于行尾),仅向右移动 1pt?

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \draw
        (0,0) node [label=below:$\bullet$] {} -- 
        (2,0) node [label={[below, xshift=1pt]{$\bullet$}}] {};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

在我进行任何解释之前,让我们先看一下绘制节点的示例:

\tikz[nodes=draw, every label/.append style={help lines, draw}]
  \draw
    (0,0) node [label=below:$\bullet$] {} -- 
    (2,0) node [label={[below, xshift=1pt]{$\bullet$}}] {};

在此处输入图片描述

标签below:的放置位置是将其顶部 ( ) 置于其父节点的anchor=north底部 ( )。.south

另一个标签的顶部 ( below→ ) 位于其父节点(或它)的anchor=north顶部 ( ) 。为什么是顶部?因为默认.northabovelabel positionabove


标签位置below和键之间是有区别的below

请记住,密钥的完整语法label

label={[<options>]<position>:<text>}

其中 和[<options>]都是<position>:可选的。如果缺失,则使用<position>:最后给定的值。但是,您也可以设置标签位置:label position<options>

label={[label position=below]<text>}

但它不会覆盖<position>:规范。

below除了标签位置 之外,键还执行其他操作below。其最简单的形式就是设置anchor=north。(然后是 ,below=<distance>它是 的缩写anchor=north, yshift=-(<distance>),然后是positioning- 事物的动力方面。)


所以你需要的是

\draw
  (0,0) node [label=below:$\bullet$] {} -- 
  (2,0) node [label={[label position=below, xshift=1pt]$\bullet$}] {};

或者

\draw
  (0,0) node [label=below:$\bullet$] {} -- 
  (2,0) node [label={[xshift=1pt]below:$\bullet$}] {};

或者,如果所有标签都应below默认放置,

\draw[label position=below]
  (0,0) node [label=$\bullet$] {} --
  (2,0) node [label={[xshift=1pt]$\bullet$}] {};

代码

\documentclass[tikz]{standalone}
\tikzset{nodes=draw, every label/.append style={help lines, draw}}
\begin{document}
\tikz
  \draw
    (0,0) node [label=below:$\bullet$] {} --
    (2,0) node [label={[label position=below, xshift=1pt]$\bullet$}] {};

\tikz
  \draw
    (0,0) node [label=below:$\bullet$] {} --
    (2,0) node [label={[xshift=1pt]below:$\bullet$}] {};

\tikz
  \draw[label position=below]
    (0,0) node [label=$\bullet$] {} --
    (2,0) node [label={[xshift=1pt]$\bullet$}] {};
\end{document}

相关内容