Cómo doblar un nodo TikZ

Cómo doblar un nodo TikZ

Considere el MWE a continuación que genera la siguiente flecha

ingrese la descripción de la imagen aquí

¿Es posible doblar un nodo así para que parezca?

ingrese la descripción de la imagen aquí

(perdón por la calidad, no soy un artista de Photoshop). Si es posible, me gustaría que la fuente fuera legible y simplemente creara una flecha que se doble hacia la derecha.

¿Sabes si hay alguna manera?

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

Respuesta1

Con TikZ v3.00, puedes usar transformaciones no lineales para hacer cosas fantásticas. El problema aquí es el texto, ya que TikZ también coloca el texto del nodo en un cuadro y espera lo mejor. Y, por lo tanto, todo lo que hay en el cuadro se ve afectado por la misma transformación que TikZ ve en el cuadro (por ejemplo, agregar \hspace{3cm}al contenido del nodo).

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

ingrese la descripción de la imagen aquí

Sin embargo, puedes cambiar a decoraciones de texto y realmente no he observado detenidamente cómo Mark Wibrow codificó las transformaciones, pero tal vez puedas hacer que el texto acepte la matriz de transformación actual (todavía no lo sé). Entonces, si reemplaza el nodo anterior con

\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);

conseguirás

ingrese la descripción de la imagen aquí

Tenga en cuenta que el punto en el que coloca el nodo es importante ya que la transformación no es lineal, por lo que en este ejemplo, si coloca el nodo más lejos, más pronunciado será el efecto. Y puedes ver el espacio en blanco superior proveniente del lienzo transformado. Juega con las coordenadas de la curva Bézier y obtendrás resultados ridículos :)

información relacionada