Я пытаюсь создать дерево с бесконечными ветвями на каждом уровне, то есть из каждого «этапа» есть три ветви без текста и три точки в конце каждой ветви. Увы, когда я пытаюсь запустить следующий код:
`\Tree
[.\quad
[.{ \quad}(\dots)
{\dots} ]
{\ldots} ]`
Я получаю следующий вывод:
Я хочу создать не менее 3 ветвей на каждом этапе. Как мне создать желаемое дерево?
решение1
Пожалуйста, всегда включайте минимальный рабочий пример, как упомянул Дэвид Карлайл.
Раз уж это дерево, почему бы не построить forest
?
Это дерево может быть набрано с использованием чрезвычайно компактного кода, поскольку forest
поддерживает 'динамические деревья'. Этот пример основан на информации и примерах на страницах 40-41 руководства.
\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}
Вместо использования before typesetting nodes
вы также можете просто добавить дополнительные append
команды напрямую:
\begin{forest}
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots,
repeat=3{
append={
[\dots]
}
}
]
}
},
]
}
}
]
},
},
]
\end{forest}
но мне сложнее анализировать код, когда он реализован таким образом.
решение2
Возможно, будет проще нарисовать что-то в tikzpicture, который более гибок, например, сделать узлы, расположенные дальше, меньше, чтобы создать лучшее впечатление бесконечного ветвления.
Вот пример.
\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}
Возможно, есть более быстрый способ сделать это, например, с помощью \foreach.