在 tikz 中旋转/对齐箭头上的文本

在 tikz 中旋转/对齐箭头上的文本

我正在尝试使用 tikz 绘制状态转换,并将这些转换的原因放在状态之间的箭头上。问题是文本没有与箭头对齐,虽然这本身并不可怕,但会发生以下情况(确实如此)。

\documentclass[12pt]{article}
    \usepackage{tikz}
    \usetikzlibrary{automata,positioning,arrows}
    \begin{document}
        \begin{tikzpicture}[shorten >=2pt,node distance=4cm,on grid,auto]
            \node[state] (Rd) {Ready};
            \node[state] (Rn) [above right =of Rd] {Run};
            \node[state] (Bl) [below right =of Rd] {Blocked};
            \node[state] (Nr) [below right =of Rn] {Dead};
            \path[->]
            (Rd)    edge  node {Given a timeslice}     (Rn)
            (Rd)    edge  node  {Asks for I/O}         (Bl)
            (Rd)    edge  node {Gets killed by kernel} (Nr)
            (Bl)    edge  node {Out of memory}         (Nr);
        \end{tikzpicture}
    \end{document}

在此处输入图片描述

将选项添加[midway,sloped]到路径选项中会出现以下内容,因此更接近,但仍然是错误的:

在此处输入图片描述

我怎样才能让文本自动旋转到箭头“上”(就在箭头的上方或下方和平行,如果重要的话,就不会出现循环)。

我在看使用 tikz 在弯曲箭头内绘制弯曲文本(多行),但在某些情况下无法让它发挥作用。

答案1

您可以使用选项sloped, anchor=center

在此处输入图片描述

代码:

\documentclass[12pt]{article}
    \usepackage{tikz}
    \usetikzlibrary{automata,positioning,arrows}
    \begin{document}
        \begin{tikzpicture}[shorten >=2pt,node distance=4cm,on grid,auto]
            \node[state] (Rd) {Ready};
            \node[state] (Rn) [above right =of Rd] {Run};
            \node[state] (Bl) [below right =of Rd] {Blocked};
            \node[state] (Nr) [below right =of Rn] {Dead};
            \path[->]
            (Rd)    edge  node[sloped, anchor=center, above, text width=2.0cm] { Given a timeslice}     (Rn)
            (Rd)    edge  node[sloped, anchor=center, below] {Asks for I/O}          (Bl)
            (Rd)    edge  node {Gets killed by kernel} (Nr)
            (Bl)    edge  node {Out of memory}         (Nr);
        \end{tikzpicture}
    \end{document}

相关内容