Ich habe eine Frage bezüglich der Nodes bei TikZ. Ich wollte die Distanz zwischen den einzelnen Nodes festlegen. Das habe ich zwar mehr oder weniger herausgefunden. Um genau beschreiben zu können, was ich meine habe ich folgenden Code geschrieben.

\documentclass[a4paper,11pt]{scrbook}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}[
        edge from parent/.style={draw,-latex},
        level 1/.style={sibling distance=40mm},
        ]
        \node {Lingualer Typus}
            child { node {Multilingualer Typus} }
            child { node {Monolingualer Typus}};
    \end{tikzpicture}
\end{document}

Es gibt ja die beiden Child-Nodes „Multilingualer Typus” und „Monolingualer Typus“. Mir geht es aber darum, z. B. die Distanz zwischen der rechten Seite des Node „Multilingualer Typus” und der Linken Seite des Node „Monolingualer Typus” fest zu legen. Durch die Option level 1/.style={sibling distance=40mm} kann man zwar für alle Nodes die Distanz festlegen. Mir geht es aber darum, die Distanz zwischen bestimmten Nodes festzulegen. Im obigen Beispiel scheint es evtl. leicht zu sein, aber wie sieht es beim folgenden Beispiel aus:

\documentclass[a4paper,11pt]{scrbook}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}[
        edge from parent/.style={draw,-latex},
        node distance=60mm
        %level 1/.style={sibling distance=70mm},
        %level 2/.style={sibling distance=30mm},
        ]
        \node {Sprachvermischung}
            child { node {Code-Switching}
                child { node {intrasentential} }
                child { node {intersentential} }
            }
            child { node {Code-Mixing}
                child { node {Insertion} }
                child { node {Alternation} }
                child { node {kongruenter Lexikalisierung} }
            };

    \end{tikzpicture}
\end{document}

Ich hoffe ihr könnt mir weiterhelfe.

gefragt 18 Dez '19, 19:59

Padawan's gravatar image

Padawan
3947
Akzeptiert-Rate: 0%

bearbeitet 13 Jan '20, 02:51

stefan's gravatar image

stefan ♦♦
18.3k163148

1

Erhöhe die Länge für beide Level im zweiten Beispiel um 5 mm. Das in einem anderen Thema bereits erwähnte Paket forest stellt die waagerechten Abstände schon so ein, damit Überschneidungen der Inhalte vermieden werden.

(18 Dez '19, 20:31) Bartman

Danke für deine Antwort. Weisst du evtl. noch welcher Thread es war?

(18 Dez '19, 20:40) Padawan

Ich habe die Existenz des Pakets dort, so wie hier, lediglich angesprochen.

(18 Dez '19, 20:43) Bartman
3

Off-Topic: Verwende bitte etwas mehr Sorgfalt vor allem auf die gezeigten Code-Beispiele. Schon die erste Zeile des ersten Beispiels produziert Fehlermeldungen aufgrund von gleich mehreren Fehlern. Während Tippfehler und verkorkste Grammatik im Text meist eher unwichtig sind und allenfalls den subjektiven Eindruck verschlechtern, sind nicht lauffähige Minimalbeispiele nicht nur peinlich, sondern erschweren Hilfe und führen auch rasch zum Erlahmen des Interesses potentieller Helfer.

(19 Dez '19, 07:56) gast3
-1

danke für eure Antworten. Hätte nicht gedacht, dass so viele Antworten kommen. :) Ich hatte irgenwo etwas in der Richtung gelesen dass man bezüglich eines nodes(?) z.B. .east (?) angibt. Hab es aber irgendwie nicht wieder gefunden.

(22 Dez '19, 19:20) Padawan

@Padawan lese 'mal das Kapitel 2.4 Node positioning im forest manual. Dort steht etwas darüber. Wenn Du Fragen dazu hast, dann mache einen neuen thread mit einem Minimalbeispiel auf. Da wirst Du geholfen!

(22 Dez '19, 19:46) Delorian
Ergebnis 5 von 6 show 1 more comments

Mit dem von @Bartman empfohlenen Paket forest ließe sich das nachfolgende Beispiel mit schönen Pfeilen formulieren. Allerdings bleibt, wie anderweitig bereits bemerkt, nicht allzu viel Platz für das Baumdiagramm, wenn die Seite im Hochformat angelegt wird.

\documentclass[11pt,a4paper,twoside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[%
         top=21mm,bottom=18mm,outer=30mm,inner=18mm,foot=12mm,head=9mm,
           ]{geometry}
\usepackage{forest}
\forestset{
sn edges/.style={for tree={edge={->,-latex}}}
}
\usepackage{blindtext}

\begin{document}
\blindtext\par\vspace{14pt}
\begin{forest} 
sn edges 
    [Sprachvermischung
        [Code-Switching[intrasentential][intersentential]]
        [Code-Mixing
            [Insertion]
            [Alternation]
            [kongruenter Lexikalisierung]
        ]
    ]
\end{forest}
\par\vspace{14pt}\blindtext
\end{document}
Permanenter link

beantwortet 22 Dez '19, 12:53

Delorian's gravatar image

Delorian
66912333
Akzeptiert-Rate: 17%

bearbeitet 13 Jan '20, 02:52

stefan's gravatar image

stefan ♦♦
18.3k163148

Obiges Beispiel lässt sich durchaus innerhalb einer tikzpicture-Umgebung mit Pfeilen (Option -stealth' setzen!) und ohne Pfeile (Option -stealth' nicht setzen!) realisieren. Allerdings müssen dann die Abstände der vertikalen Ebenen und waagerechten Abstände der Enträge mit den Optionen level distance und sibling distance von Hand gesetzt werden. Dann ginge Folgendes:

\documentclass[11pt,a4paper,twoside]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows}       % obligatorisch wenn Option -stealth' gesetzt wird

\begin{document}
\begin{tikzpicture}[-stealth']
\node {Sprachvermischung}
    child[level distance=12mm,sibling distance=70mm]{node{Code-Switching}
        child[level distance=12mm,sibling distance=28mm]{node{intrasentential}}
        child[level distance=12mm,sibling distance=28mm]{node{intersentential}}
    }
    child[level distance=12mm,sibling distance=70mm]{node{Code-Mixing}
        child[level distance=12mm,sibling distance=28mm]{node{Insertion}}
        child[level distance=12mm,sibling distance=28mm]{node{Alternation}}
        child[level distance=12mm,sibling distance=38mm]{node{kongruenter Lexikalisierung}}
    };  
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 22 Dez '19, 14:42

Delorian's gravatar image

Delorian
66912333
Akzeptiert-Rate: 17%

bearbeitet 13 Jan '20, 02:52

stefan's gravatar image

stefan ♦♦
18.3k163148

Hier sind mal noch zwei weitere Alternativen. Zum einen könntest Du einfach xshift als Option des betreffenden child oder node angeben:

\documentclass{scrbook}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}% aktuelle Bibliothek für Pfeile

\begin{document}
\begin{center}
  \begin{tikzpicture}[
    -{Stealth[length=5pt 4.5]},
    text depth=\dp\strutbox,
    text height=\ht\strutbox,
    level 1/.style={sibling distance=59mm},
    level 2/.style={sibling distance=28mm},
  ]
  \node {Sprachvermischung}
    child{node{Code-Switching}
      child{node{intrasentential}}
      child{node{intersentential}}
    }
    child{node{Code-Mixing}
      child[xshift=8mm]{node{Insertion}}
      child{node{Alternation}}
      child[xshift=8mm]{node{kongruenter Lexikalisierung}}
    };
  \end{tikzpicture}
\end{center}
\end{document}

alt text

Oder Du kannst die graphdrawing Bibliothek benutzen. Dann muss aber mit lualatex kompiliert werden:

% mit lualatex kompilieren
\documentclass{scrbook}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{trees}
\begin{document}
\begin{center}
  \tikz[
    tree layout,
    >={Latex[length=5pt 4.5]},
    level distance=1.5cm,
    sibling sep=.25em,
    text height=\ht\strutbox,text depth=\dp\strutbox
  ]
  \graph{
    Sprachvermischung -> {
      {Code{-}Switching} -> {
        intrasentential,
        intersentential
      },
      {Code{-}Mixing} -> {
        Insertion,
        Alternation,
        kongruenter Lexikalisierung
      }
    }
  };
\end{center}
\end{document}

alt text

Permanenter link

beantwortet 22 Dez '19, 22:32

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 16 Jan '20, 12:07

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×76
×55
×11

gestellte Frage: 18 Dez '19, 19:59

Frage wurde gesehen: 9,529 Mal

zuletzt geändert: 29 Dez '19, 16:20