Я пытаюсь нарисовать деревья суффиксов в латексе для отчета. Поскольку я программирую деревья, я просто печатаю их в формате qtree из своего кода, чтобы не заморачиваться с созданием их вручную.
Для небольших деревьев это работает отлично. (Обычный пример «банана» на подходе)
\documentclass{article}
\usepackage{graphics}
\usepackage{qtree}
\begin{document}
\begin{center}
\Tree[. [.\$ ]
[.banana\$ ]
[.a [.n [.a [.na\$ ]
[.\$ ]
] ] [.\$ ]
] [.n [.a [.na\$ ]
[.\$ ]
] ] ]
\end{center}
\end{document}
Но если я хочу нарисовать дерево побольше, например, «idontknowsomethingbig», я использую тот же процесс:
\documentclass{article}
\usepackage{graphics}
\usepackage{qtree}
\begin{document}
\begin{center}
\Tree[. [.\$idontknowsomethingbig\$ ]
[.i [.dontknowsomethingbig\$ ]
[.ngbig\$ ]
[.g\$ ]
] [.dontknowsomethingbig\$ ]
[.o [.ntknowsomethingbig\$ ]
[.wsomethingbig\$ ]
[.methingbig\$ ]
] [.n [.tknowsomethingbig\$ ]
[.owsomethingbig\$ ]
[.gbig\$ ]
] [.t [.knowsomethingbig\$ ]
[.hingbig\$ ]
] [.knowsomethingbig\$ ]
[.wsomethingbig\$ ]
[.somethingbig\$ ]
[.methingbig\$ ]
[.ethingbig\$ ]
[.hingbig\$ ]
[.g [.big\$ ]
[.\$ ]
] [.big\$ ]
]
\end{center}
\end{document}
Все, что я получаю, это
В зависимости от входных данных я могу получить последнюю ветвь или просто слово, как в этом случае.
Я предполагаю, что код синтаксически правильный, и проблема в том, что он слишком большой и латекс в нем путается. Но насколько мне известно, это может быть что угодно.
решение1
Проблема, как поясняется в комментариях, заключается в том, чтоqtreeне может обрабатывать более 14 ветвей. Решением было просто использовать лес. С его помощью я теперь могу рисовать более крупные деревья, такие как это:
Что происходит из:
\documentclass[border=1mm]{standalone}
\usepackage{graphics}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
calign=center,
grow'=east,
parent anchor=east, child anchor=west,
text height=1.4ex, text depth=0.2ex
}
[. [.\$GATTACATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.G [.A [.T [.TACATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.G [.C [.TAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] ] [.AGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.CTGS\$ ]
] ] [.C [.T [.GATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.A [.G [.C [.T [.A [.TATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GTCGTAGCTATGATCTGS\$ ]
] ] ] [.TCGTAGCTATGATCTGS\$ ]
] [.T [.ATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATCTGS\$ ]
] ] [.CGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.G [.CTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.ATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] ] [.T [.C [.G [.ATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.TAGCTATGATCTGS\$ ]
] ] [.AGCTATGATCTGS\$ ]
] [.S\$ ]
] [.A [.T [.TACATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.A [.G [.C [.T [.GATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.AGCTAGTCGTAGCTATGATCTGS\$ ]
] ] ] [.TCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.G [.C [.TAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.ATCTGS\$ ]
] [.C [.GTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.TGS\$ ]
] ] [.CATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.G [.C [.T [.GATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.A [.T [.ATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATCTGS\$ ]
] [.G [.CTAGTCGTAGCTATGATCTGS\$ ]
[.TCGTAGCTATGATCTGS\$ ]
] ] ] ] [.TCGTAGCTATGATCTGS\$ ]
] ] [.T [.TACATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.A [.CATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.G [.C [.T [.GATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.A [.T [.ATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATCTGS\$ ]
] [.G [.CTAGTCGTAGCTATGATCTGS\$ ]
[.TCGTAGCTATGATCTGS\$ ]
] ] ] ] [.TCGTAGCTATGATCTGS\$ ]
] [.T [.ATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.CGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATCTGS\$ ]
] ] [.G [.A [.T [.GCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.CTGS\$ ]
] ] [.C [.TAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.S\$ ]
] [.C [.G [.T [.CGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.AGCTATGATCTGS\$ ]
] [.ATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.CGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.TGS\$ ]
] ] [.C [.ATAGCTGATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.T [.G [.ATGCTAGCTATATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.S\$ ]
] [.A [.G [.C [.T [.A [.TATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GTCGTAGCTATGATCTGS\$ ]
] ] ] [.TCGTAGCTATGATCTGS\$ ]
] [.T [.ATCGTCGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATCTGS\$ ]
] ] [.CGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] [.G [.T [.CGATGCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.AGCTATGATCTGS\$ ]
] [.A [.T [.GCGCTCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.AGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] ] [.C [.TCGCGATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
[.GATAGCTAGCTAGTCGTAGCTATGATCTGS\$ ]
] ] ] [.S\$ ]
]
\end{forest}
\end{document}
Синтаксис в forest
отличается от qtree
так что каждый узел имеет дополнительный символ '.' в этом примере. Помните об этом, если вы используете этот ответ в качестве примера того, как строить деревья с помощью леса :)