
Ein Bild von dem, was ich will:
Für alle, die es interessiert: Diese spezielle Zahl stammt ausDieser Artikel(Ich konnte keine frei verfügbare Version finden) und zeigtK-Eimer(die Quadrate) decken ein zunehmend größeres Präfix eines binären ID-Raums ab.
Ich wäre sehr dankbar, wenn mir jemand einen Vorschlag machen könnte, wie ich diesen Baumtyp herstellen könnte:
- Jedes Blatt ist ein Eimer/Quadrat
- Nur die Blätter haben Eimer.
- Der Baum verzweigt sich nach rechts, wobei jeder Zweig nur halb so viel Platz lässt wie der vorherige
Bearbeiten
Ich habe einige der Zahlen in Gonzalo Medinas brillanter Antwort ein wenig optimiert, um genau dem zu kommen, was ich möchte, aber ich muss gestehen, dass ich keine Ahnung habe, was vor sich geht und wie der Code funktioniert.
Was ich jetzt möchte, ist, den Baum breiter zu machen, damit sich die Kästchen auf der vertikalen Achse nicht überlappen.
\begin{forest}
for tree={parent anchor=south, child anchor=north},
s sep=30pt,
[
[,draw,text width=4cm,edge label={node[midway,left=12pt]{$1$}}]
[,shape=coordinate,edge label={node[midway,right=10pt]{$0$}}
[,draw,text width=2cm,edge label={node[midway,left=4pt]{$1$}}]
[,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=4pt]{$0$}}
[,draw,text width=0.5cm,edge label={node[midway,left]{$1$}}]
[,draw,text width=0.5cm,edge label={node[midway,right]{$0$}}]
]
]
]
\end{forest}
Und wo würde ich es platzieren, wenn ich in einigen der Felder Text haben möchte?
Antwort1
Mit dem leistungsstarkenforest
Paket:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={parent anchor=south, child anchor=north},
s sep=30pt,
[
[,draw,text width=3cm,edge label={node[midway,left=4pt]{$0$}}]
[,shape=coordinate,edge label={node[midway,right]{$1$}}
[,draw,text width=2cm,edge label={node[midway,left]{$0$}}]
[,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right]{$1$}}
[,draw,text width=1cm,edge label={node[midway,left]{$0$}}]
[,draw,text width=1cm,edge label={node[midway,right]{$1$}}]
]
]
]
\end{forest}
\end{document}
Mit den Werten für l
, l sep
(für vertikale Distanz), s sep
(für horizontale Distanz) können Sie die Baumgeometrie ändern (eine Erklärung zu diesen Schlüsseln finden Sie in der Paketdokumentation). Ein kleines Beispiel::
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={parent anchor=south, child anchor=north},
for tree={l =-0ex}
[,s sep=3cm
[,draw,text width=3cm,edge label={node[midway,above left=0pt]{$0$}}]
[,s sep=1.5cm,shape=coordinate,edge label={node[midway,above right]{$1$}}
[,draw,text width=2cm,edge label={node[midway,left=8pt]{$0$}}]
[,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=8pt]{$1$}}
[,draw,text width=1cm,edge label={node[midway,left=6pt]{$0$}}]
[,draw,text width=1cm,edge label={node[midway,right=6pt]{$1$}}]
]
]
]
\end{forest}
\end{document}
Wenn die Felder Text enthalten sollen, ist es besser, einen Stil für sie zu definieren, um sicherzustellen, dass alle die gleiche Höhe haben:
\documentclass{article}
\usepackage{forest}
\begin{document}
\forestset{
myempty/.style={
draw,
text width=#1,
minimum height=16pt,
anchor=north
}
}
\begin{forest}
for tree={parent anchor=south, child anchor=north},
for tree={l =2ex}
[,s sep=1cm
[texta,myempty=3cm,edge label={node[midway,above left=0pt]{$0$}}]
[,s sep=1cm,shape=coordinate,edge label={node[midway,above right]{$1$}}
[textb,myempty=2cm,edge label={node[midway,left=8pt]{$0$}}]
[,shape=coordinate,s sep=-\pgflinewidth,edge label={node[midway,right=8pt]{$1$}}
[textc,myempty=1cm,edge label={node[midway,left=6pt]{$0$}}]
[textd,myempty=1cm,edge label={node[midway,right=6pt]{$1$}}]
]
]
]
\end{forest}
\end{document}