Ich versuche, einen Baum mit unendlich vielen Zweigen auf jeder Ebene zu erstellen. Das bedeutet, dass es auf jeder „Stufe“ drei Zweige ohne Text und drei Punkte am Ende jedes Zweigs gibt. Leider passiert dies, wenn ich versuche, den folgenden Code auszuführen:
`\Tree
[.\quad
[.{ \quad}(\dots)
{\dots} ]
{\ldots} ]`
Ich erhalte die folgende Ausgabe:
Ich möchte in jeder Phase mindestens 3 Zweige erstellen. Wie kann ich meinen gewünschten Baum erstellen?
Antwort1
Bitte fügen Sie immer ein minimales funktionierendes Beispiel bei, wie von David Carlisle erwähnt.
Da es sich um einen Baum handelt, warum keinen bauen forest
?
Dieser Baum kann mit extrem kompaktem Code gesetzt werden, da forest
er „dynamische Bäume“ unterstützt. Dieses Beispiel basiert auf den Informationen und Beispielen auf den Seiten 40-41 des Handbuchs.
\documentclass[tikz]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
[\dots,
repeat=3{
append={
[\dots, repeat=3{
append={[\dots]}
}]
},
},
before typesetting nodes={
for children={
for children={
repeat=3{
append={
[\dots, repeat=3{
append={[\dots]}
}]
},
},
}
}
}
]
\end{forest}
\end{document}
Anstatt zu verwenden before typesetting nodes
, können Sie auch einfach append
direkt weitere Befehle hinzufügen:
\begin{forest}
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots]
}
}
]
}
},
]
}
}
]
},
},
]
\end{forest}
aber ich finde es schwieriger, den Code zu analysieren, wenn es auf diese Weise gemacht wird.
Antwort2
Es könnte einfacher sein, einfach etwas im flexibleren TikzPicture zu zeichnen, um beispielsweise die weiter hinten liegenden Knoten kleiner zu machen, um einen besseren Eindruck einer unendlichen Verzweigung zu vermitteln.
Hier ist ein Beispiel.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{mathtools}
\DeclarePairedDelimiter{\seq}{\langle}{\rangle}
\begin{document}
\begin{tikzpicture}
\node (empty) {$\seq{}$};
%above empty - layer 1
\node (0) [above left = 1cm and 2cm of empty] {$\seq{0}$};
\node (1) [right=3cm of 0,scale=.9] {$\seq{1}$};
\node (2) [right=2 cm of 1,scale=.8] {$\seq{2}$};
\node (3) [right=1cm of 2,scale=.7] {$\seq{3}$};
\node (4) [right=.8 cm of 3,scale=.6] {$\seq{4}$};
\node (ldots) [right=.5cm of 4] {$\ldots$};
\draw (empty)--(0);
\draw (empty)--(1);
\draw (empty)--(2);
\draw (empty)--(3);
\draw (empty)--(4);
\node (ldotsline) [below=.5cm of 3] {$\ldots$};
%above 0 - layer 2
\node (00) [above left = 1cm and 2cm of 0,scale=.9] {$\seq{0,0}$};
\node (01) [right=.8cm of 00,scale=.8] {$\seq{0,1}$};
\node (02) [right=.6 cm of 01,scale=.6] {$\seq{0,2}$};
\node (03) [right=.4cm of 02,scale=.4] {$\seq{0,3}$};
\node (0ldots) [right=0cm of 03] {$\ldots$};
\draw (0)--(00);
\draw (0)--(01);
\draw (0)--(02);
\draw (0)--(03);
\node (0ldotsline) [below=.5cm of 03] {$\ldots$};
%above 1 - layer 2
\node (10) [right = .5cm of 0ldots,scale=.8] {$\seq{1,0}$};
\node (11) [right=.8cm of 10,scale=.6] {$\seq{1,1}$};
\node (12) [right=.6 cm of 11,scale=.4] {$\seq{1,2}$};
\node (1ldots) [right=.2cm of 12] {$\ldots$};
\draw (1)--(10);
\draw (1)--(11);
\draw (1)--(12);
%above 00 - layer 3
\node (000) [above left = .3cm and .5cm of 00,scale=.6] {$\seq{0,0,0}$};
\node (001) [right=.8cm of 000,scale=.6] {$\seq{0,0,1}$};
\node (00ldots) [right=.2cm of 001,scale=.8] {$\ldots$};
\draw (00)--(000);
\draw (00)--(001);
% continuing dots
\node (vdots11) [above=.5cm of 11] {$\vdots$};
\node (vdots02) [above=.5cm of 02] {$\vdots$};
\node (vdots4) [above=1cm of 4] {$\vdots$};
\node (vdots000) [above=.3cm of 000] {$\vdots$};
\node (vdots001) [above=.3cm of 001] {$\vdots$};
\node (ldots2) [above right=.3cm and .3cm of 2] {$\ldots$};
\end{tikzpicture}
\end{document}
Möglicherweise gibt es hierfür einen schnelleren Weg, z. B. mit \foreach.