Estoy tratando de producir un árbol con infinitas ramas en cada nivel, lo que significa que en cada "etapa" hay tres ramas sin texto y tres puntos al final de cada rama. Por desgracia, cuando intento ejecutar el siguiente código:
`\Tree
[.\quad
[.{ \quad}(\dots)
{\dots} ]
{\ldots} ]`
Obtengo el siguiente resultado:
Quiero crear al menos 3 ramas en cada etapa. ¿Cómo puedo crear el árbol que deseo?
Respuesta1
Incluya siempre un ejemplo de trabajo mínimo como mencionó David Carlisle.
Dado que es un árbol, ¿por qué no construir uno forest
?
Este árbol se puede componer utilizando un código extremadamente compacto porque forest
admite "árboles dinámicos". Este ejemplo se basa en la información y los ejemplos de las páginas 40-41 del manual.
\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}
En lugar de usar before typesetting nodes
, también puedes agregar más append
comandos directamente:
\begin{forest}
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots]
}
}
]
}
},
]
}
}
]
},
},
]
\end{forest}
pero me resulta más difícil analizar el código cuando se hace así.
Respuesta2
Podría ser más fácil simplemente dibujar algo en tikzpicture que sea más flexible para, por ejemplo, hacer que los nodos más adelante sean más pequeños, para dar una mejor impresión de ramificación infinita.
He aquí un ejemplo.
\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}
Puede haber una manera más rápida de hacer esto, por ejemplo con \foreach.