Como dobrar um nó TikZ

Como dobrar um nó TikZ

Considere o MWE abaixo que gera a seguinte seta

insira a descrição da imagem aqui

É possível dobrar tal nó para que pareça

insira a descrição da imagem aqui

(desculpe pela qualidade, não sou um artista de photoshop). Se possível, gostaria que a fonte fosse legível e apenas criasse uma seta que dobrasse para a direita.

Você sabe se existe alguma maneira?

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

Responder1

Com o TikZ v3.00, você pode usar transformações não lineares para fazer coisas fantásticas. O problema aqui é o texto, já que o TikZ também coloca o texto do nó em uma caixa e espera pelo melhor. E assim tudo na caixa é afetado pela mesma transformação que TikZ vê no identificador da caixa (por exemplo, adicionar \hspace{3cm}ao conteúdo do nó).

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

insira a descrição da imagem aqui

No entanto, você pode mudar para decorações de texto e eu realmente não observei cuidadosamente como Mark Wibrow codificou as transformações, mas talvez você possa fazer o texto aceitar a matriz de transformação atual (ainda não sei). Então, se você substituir o nó acima por

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

você vai ter

insira a descrição da imagem aqui

Observe que o ponto em que você coloca o nó é importante, pois a transformação não é linear; portanto, neste exemplo, se você colocar o nó mais longe, mais pronunciado será o efeito. E você pode ver o espaço em branco superior vindo da tela transformada. Brinque com as coordenadas da curva Bézier e você obterá resultados ridículos :)

informação relacionada