So biegen Sie einen TikZ-Knoten

So biegen Sie einen TikZ-Knoten

Betrachten Sie das MWE unten, das den folgenden Pfeil ausgibt

Bildbeschreibung hier eingeben

Ist es möglich, einen solchen Knoten so zu biegen, dass er aussieht wie

Bildbeschreibung hier eingeben

(Entschuldigen Sie die Qualität, ich bin kein Photoshop-Künstler). Wenn möglich, hätte ich gerne eine lesbare Schriftart und würde einfach einen Pfeil erstellen, der nach rechts abknickt.

Wissen Sie, ob es eine Möglichkeit gibt?

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\tikzstyle{arrownode}
  = [ shape=single arrow
    , single arrow head extend=.75em
    , single arrow head indent=.25em
    , minimum width=3em
    , draw
    , font=\sc
    ]
\begin{document}
    \begin{tikzpicture}
        \node[arrownode] at (0,0) {foobar};
    \end{tikzpicture}
\end{document}

Antwort1

Mit TikZ v3.00 können Sie mit nichtlinearen Transformationen fantastische Dinge tun. Das Problem hier ist der Text, da TikZ den Knotentext ebenfalls in eine Box einfügt und auf das Beste hofft. Und somit wird alles in der Box von derselben Transformation beeinflusst, die TikZ als Box-Handle erkennt (z. B. Hinzufügen \hspace{3cm}zum Knoteninhalt).

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usepgflibrary{curvilinear}
\usepgfmodule{nonlineartransformations}
\tikzset{arrownode/.style={
    shape=single arrow,
    single arrow head extend=.75em,
    single arrow head indent=.25em,
    minimum width=3em,
    draw,
    }
}
\begin{document}
    \begin{tikzpicture}
        {
        \pgfsetcurvilinearbeziercurve
        {\pgfpoint{0mm}{30mm}}
        {\pgfpoint{15mm}{30mm}}
        {\pgfpoint{30mm}{15mm}}
        {\pgfpoint{30mm}{0mm}}
        \pgftransformnonlinear{%
            \pgfpointcurvilinearbezierorthogonal%
            {\csname pgf@x\endcsname}%
            {\csname pgf@y\endcsname}%
        }%
        \node[arrownode,transform shape nonlinear=true] at (3,0) {why no rotation?};
        }
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Sie können jedoch auf Textdekorationen umschalten und ich habe mir nicht wirklich genau angesehen, wie Mark Wibrow die Transformationen codiert hat, aber vielleicht können Sie den Text dazu bringen, die aktuelle Transformationsmatrix zu akzeptieren (ich weiß es noch nicht). Wenn Sie also den obigen Knoten ersetzen durch

\node[arrownode,transform shape nonlinear=true] (a) at (3,0) {\phantom{Why not rotating?}};
\path[decoration={text along path,
                text={Why not rotating?},
                text align=center,
                raise=-0.5ex
                },postaction={decorate}](a.west) -- (a.east);

Sie erhalten

Bildbeschreibung hier eingeben

Beachten Sie, dass der Punkt, an dem Sie den Knoten platzieren, wichtig ist, da die Transformation nicht linear ist. In diesem Beispiel ist der Effekt umso ausgeprägter, je weiter Sie Ihren Knoten platzieren. Und Sie können den oberen weißen Bereich sehen, der von der transformierten Leinwand hereinkommt. Spielen Sie mit den Koordinaten der Bézierkurve herum und Sie werden unglaubliche Ergebnisse erzielen :)

verwandte Informationen