标记上方和下方的边缘

标记上方和下方的边缘

我希望能够标记一条边,其中标签的一部分位于其上方,另一部分位于其下方,如下例所示:

在此处输入图片描述

目前我有这个解决方案:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[text=black]
  \node [draw, ] (a) at (0,0) {a};
  \node [draw, below left=4 of a] (b) {b};
  \draw[->] (a) to[bend left] node[midway, sloped, above]{to} node[midway, sloped, below]{b} (b.east) ;
\end{tikzpicture}

\end{document}

我创建了两个中间节点,一个在边缘上方,另一个在边缘下方,但我想知道是否有更简单的解决方案。


[编辑] @AndréC 解决方案给出以下结果背页

在此处输入图片描述

答案1

您不需要两个节点,一个就align=center足够了。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[text=black]
  \path (0,0) node [draw] (a) {a}
  node[draw, below left=4 of a] (b) {b};
  \draw[->] (a) to[bend left] node[sloped, align=center]{to\\
  b} (b.east) ;
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

由于您已将节点放置在坐标之间,因此它们会自动放置在路径的中间,因此用 明确要求它是没有用的midway

对于放置,有一个auto=left选项可以自动放置在左边路径,并通过添加swap,将其放置在正确的

截屏

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[text=black,auto=left]
  \node [draw, ] (a) at (0,0) {a};
  \node [draw, below left=4 of a] (b) {b};
  \draw[->] (a) to[bend left] node[sloped]{to} node[sloped,swap]{b} (b.east) ;
\end{tikzpicture}

\end{document}

相关内容