我希望能够标记一条边,其中标签的一部分位于其上方,另一部分位于其下方,如下例所示:
目前我有这个解决方案:
\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}