如何使用 TikZ 将标签放置在线的中间(上方和下方)

如何使用 TikZ 将标签放置在线的中间(上方和下方)
\fbox{
\begin{tikzpicture}[scale=1,auto=center]
  \node[circle,fill=gray!20] (n1) at (2,8) {Node A};
  \node[circle,fill=gray!20] (n2) at (8,8) {Node B};
  \foreach \from/\to in {n1/n2}
  \draw (\from) -- (\to) node[draw=none,fill=none,font=\scriptsize,midway,below] {text below};
\end{tikzpicture}
}

该示例显示了如何将文本放在中间线的下方,但是如何在两个节点之间(同时)将文本写在中间线的下方和上方?...

答案1

好的,所以这基本上是一个关于如何以及何时可以放置的问题node

一般来说,您可以在路径上的任意位置多次应用任意节点。
\draw (-2,0) -- node {a} ++(2,0) -- node {b} ++(2,0);

midway也可以通过将节点放置在右侧来规避使用可选--使得能够同时构建非常复杂的路径和节点(如上例所示)。

评论中给出的简单解决方案是:

\begin{tikzpicture}
  \draw (-2,0) -- node[below] {a} node[above] {b} ++(4,0);
\end{tikzpicture}

得出的结果是:
非常大的一部分……???

这也可以用于更复杂的路径和该路径上的节点放置:

\begin{tikzpicture}
  \draw (-2,0) -- node[below] {a} ++(2,0) -- node[above] {b} ++(2,0);
\end{tikzpicture}

得出的结果是:
歪曲???,现在我怀疑你的诚意!

注意,节点位于 连接的两个点的中间--。注意,节点必须放置在以便--放置在当前段的中间(否则它将被放置在节点之前的点)。

midway但是,将节点放置在路径末尾也是完全没问题的。需要注意的是,midway也可以放置在路径中间:

\begin{tikzpicture}
  \draw (-2,0) -- ++(1,0) -- ++(1,0) node[midway,below] {a}
  node[midway,above] {b} -- ++(2,0);
  \foreach \x in {-2,-1,0,2} 
  \draw (\x,0) circle (3pt);
\end{tikzpicture}

产生的结果(添加圆圈以显示路径的控制点):

快停止这些丑陋的分数...:)

这在创建非直线时当然很有用。

作为一条评论,我想指出对every node选项的兴趣,该选项可用于概括节点上的选项,即将every node/.style={red}所有节点等同于node[red]

对于你来说,一个例子可能是:

\tikzset{every node/.style={font=\scriptsize}}
\begin{tikzpicture}[every node/.append style={midway}]
  \draw (-2,0) -- ++(4,0) node[below] {a} node[above] {b};
\end{tikzpicture}

注意这里我如何在通用调用中实现该every node样式tikzset。这使得every node全局全部 tikzpicture环境节点。并且在tikzpicture我使用.append style时不会破坏任何先前的全局选项。以上产生:

它对较小的字体大小没有帮助...不要做那些分数,或者多画一些这样才有意义。ThaaaaAAA!

注意\scriptsize节点文本。

相关内容