![TikZ:沿路径定位文本](https://linux22.com/image/273812/TikZ%EF%BC%9A%E6%B2%BF%E8%B7%AF%E5%BE%84%E5%AE%9A%E4%BD%8D%E6%96%87%E6%9C%AC.png)
我正在尝试将一段文本定位到多部分路径上的某个位置。以下是我迄今为止尝试过的方法。
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[inner sep=0pt, outer sep=0pt]
\path[fill=red,even odd rule, postaction={decorate},decoration={markings,mark=at position .2 with {\node (0,20) {my text};}}] (0,0) -- (5,5) -- (5,0);
\end{tikzpicture}
\end{document}
我希望节点能够旋转,以便文本与节点位置的路径对齐。我当然可以手动旋转节点,但我希望这能够自动发生。
请注意:我知道decorations.text
,它可以实现我想要做的事情。这里的问题是,我需要准确指定文本应该出现在哪个相对位置(例如,在路径长度的 20%)。如果你知道如何使用 来实现这一点decorations.text
- 请继续编写答案。否则,我会坚持使用这个节点标记 hack。
答案1
对于额外的位;
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}[inner sep=0pt, outer sep=0pt]
\draw (-2,-2) rectangle (6,6);
\path[draw=red,
postaction={decorate},
decoration={text along path,
text=my text,
text align={left indent={0.2\dimexpr\pgfdecoratedpathlength\relax}}
}
]
(0,0) -- (5,5) -- (5,0);
\end{tikzpicture}
\end{document}
请注意,使用文本标记装饰时,文本的位置是首字母的位置,而不是文本的中心。我添加了一个快速勾选装饰来演示每个 0.2 长的片段,但它不在上面的代码中。也可以通过负幻影空间等进行居中,但如果需要居中,我想一个小的调整不会有太大影响。
答案2
transform shape
您可以通过添加到节点选项来自动对齐节点:
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[inner sep=0pt, outer sep=0pt]
\path[
fill=red,
postaction={decorate},
decoration={
markings,
mark=at position .2 with {
\node [transform shape, anchor=base] (0,20) {my text};
}
}
] (0,0) -- (5,5) -- (5,0);
\end{tikzpicture}
\end{document}