Quero desenhar um diagrama de árvore com Assíntota. Mas tem alguns problemas.
Pesquisei e encontrei 2 dicas na web. http://asymptote.sourceforge.net/FAQ/section4.html http://asymptote.sourceforge.net/doc/Frames-and-pictures.html
Usando essas dicas, e tenteicaixaeárvores.
settings.outformat="pdf";
unitsize(5cm);
usepackage(amsmath);
frame f1;
label(f1, "$\mathbb{N} \models A(0)$", Draw);
add(f1, (0, 5))
frame f2;
label(f2, "$\mathbb{N} \models A(1)$", Draw);
add(f2, (0, 4));
draw(f1 -- f2);
Mas isso não funciona. Durardesenhar(f1 -- f2);comando está errado.
empatecomandos precisam de coordenadas. Mas esse método... não é inteligente (para mim).
Eu queroconectar2 caixas. Como posso conectar 2 objetos?
eu encontreiárvore de desenhomódulo no PDF dos tutoriais oficiais, mas parece difícil de usar de forma flexível (a forma da árvore é mutável?).
Se houver uma maneira de usar facilmenteárvore de desenhomódulo, você diria isso?
Obrigado.
Responder1
O código a seguir funciona como um asymptote
script independente. Não usei o drawtree
módulo, então não posso ajudá-lo com isso. No meu código, não estou usando frames. Em vez disso, cada rótulo é desenhado na imagem padrão.
texpreamble("\usepackage{amssymb}");
settings.outformat="pdf";
unitsize(5cm);
pair p1 = (0, 5);
pair p2 = (0, 4);
draw(p1--p2);
label("$\mathbb{N} \models A(0)$", p1, FillDraw(white, black));
label("$\mathbb{N} \models A(1)$", p2, FillDraw(white, black));
Responder2
Como as metodologias alternativas são geralmente aceitáveis, não posso resistir a fornecer umaflorestasolução.
math content
coloca o conteúdo de todos os nós no modo matemático, evitando a necessidade de $...$
. draw
desenha uma borda ao redor de cada nó da árvore.
Os nós são conectados automaticamente: pai para filho para cada relacionamento pai-filho. (Use <node content>, no edge
para exceções.) Especifiquei l sep
para corresponder ao unit
definido no código original. Esta é a distância mínima entre os níveis da árvore. (5cm é muito.)
florestanão precisa de coordenadas explícitas. Ele formatará automaticamente a árvore.
\documentclass[tikz, border=10pt, multi]{standalone}
\usepackage{forest,amssymb}
\begin{document}
\begin{forest}
for tree={
draw,
math content,
l sep=50mm,
}
[\mathbb{N} \models A(0)
[\mathbb{N} \models A(1)]
]
\end{forest}
\end{document}
Alterar a aparência da árvore é muito fácil. Você apenas altera o preâmbulo do forest
ambiente.
Por exemplo,
for tree={
draw=red,
thick,
edge={blue, thick, <->},
fill=red!10,
math content,
l sep=50mm,
grow=45,
}
produz
enquanto a especificação da árvore em si permanece idêntica
[\mathbb{N} \models A(0)
[\mathbb{N} \models A(1)]
]