[tikz] node rotieren auf zwei Arten funktioniert nicht

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: [tikz] node rotieren auf zwei Arten funktioniert nicht

von MoonKid » Fr 5. Feb 2016, 02:06

esdd hat geschrieben:Besser geeignet ist deshalb vermutlich die zweite Variante. Allerdings musst Du da für jeden Node den Nodentext als Argument an den Stil foo übergeben.
    \node [foo=Eins];
Ah, verstehe. Danke sehr!
Allerdings wirkt diese Notation etwas merkwürdig. Eine Möglichkeit das eleganter/eingängier zu schreiben, gibt es nicht?

von esdd » Do 4. Feb 2016, 21:50

Ergänze in Deinem ersten Bespiel anchor=south bei dem foo Stil.
\documentclass[tikz]{standalone} 
\usepackage{tikz} 
\usetikzlibrary{chains} 
\begin{document} 
\begin{tikzpicture} 
     [ 
         start chain=going below, 
         foo/.style = { 
             draw, 
             align=center, 
             on chain, 
             rotate=90,
             anchor=south
            }, 
         every node/.append style = foo 
     ] 
     \node {Eins}; 
     \node {Zwei}; 
     \node {Drei}; 
     \node {Vier}; 
\end{tikzpicture} 
\end{document}
Bild

Beim Rotieren eines Nodes rotieren die Anker mit. Die south Anker sind also bei den gedrehten Nodes rechts. Mit going below wird aber offensichtlich immer der north Anker eines neuen Nodes relativ zum south Anker des vorhergehenden eingefügt. Das führt dann zu der „Treppe“. Das explizite anchor=south bestimmt, das von dem neuen Node auch dieser Anker verwendet wird. Allerdings sind die Nodes damit rechtsbündig untereinander und der Abstand zwischen den Nodes hängt von deren Breite (unrotiert betrachtet), ja er der Abstand zwischen den beiden south Ankern ist.

Besser geeignet ist deshalb vermutlich die zweite Variante. Allerdings musst Du da für jeden Node den Nodentext als Argument an den Stil foo übergeben.
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}
    [
        start chain=going below,
        foo/.style = {
            draw,
            align=center,
            on chain,
            node contents={\rotatebox{90}{#1}}},
    ]
    \node [foo=Eins];
    \node [foo=Zwei];
    \node [foo=Drei];
    \node [foo=Vier];
\end{tikzpicture}
\end{document}
Bild
Dateianhänge
gl_chainrotatecontents.png
gl_chainrotatecontents.png (8.13 KiB) 968 mal betrachtet
gl_chainrotatenodes.png
gl_chainrotatenodes.png (6.16 KiB) 969 mal betrachtet

[tikz] node rotieren auf zwei Arten funktioniert nicht

von MoonKid » Do 4. Feb 2016, 15:54

Habe zwei Varianten gefunden, um nodes zu rotieren. Keine funktioniert in meinem Code so wie ich es erwarte.

Zuerst mit rotate=. Die nodes werden rotiert, aber in der Chain treppchenweise versetzt.
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}
    [
        start chain=going below,
        foo/.style = {
            draw,
            align=center,
            on chain,
            rotate=90},
        every node/.append style = foo
    ]
    \node {Eins};
    \node {Zwei};
    \node {Drei};
    \node {Vier};
\end{tikzpicture}
\end{document}
Variante zwei verwendet node contents. Das zeigt gar keine Wirkung bei den nodes.
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}
    [
        start chain=going below,
        foo/.style = {
            draw,
            align=center,
            on chain,
            node contents={\rotatebox{90}{#1}}},
        every node/.append style=foo
    ]
    \node {Eins};
    \node {Zwei};
    \node {Drei};
    \node {Vier};
\end{tikzpicture}
\end{document}

Nach oben