TikZ:沿路径定位文本

TikZ:沿路径定位文本

我正在尝试将一段文本定位到多部分路径上的某个位置。以下是我迄今为止尝试过的方法。

\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}

相关内容