diagrama de árvore (sequência) em assíntota

diagrama de árvore (sequência) em assíntota

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 asymptotescript independente. Não usei o drawtreemó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));

insira a descrição da imagem aqui

Responder2

Como as metodologias alternativas são geralmente aceitáveis, não posso resistir a fornecer umaflorestasolução.

math contentcoloca o conteúdo de todos os nós no modo matemático, evitando a necessidade de $...$. drawdesenha 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 edgepara exceções.) Especifiquei l seppara corresponder ao unitdefinido 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}

solução alternativa

Alterar a aparência da árvore é muito fácil. Você apenas altera o preâmbulo do forestambiente.

Por exemplo,

   for tree={
    draw=red,
    thick,
    edge={blue, thick, <->},
    fill=red!10,
    math content,
    l sep=50mm,
    grow=45,
  }

produz

árvore alterada

enquanto a especificação da árvore em si permanece idêntica

  [\mathbb{N} \models A(0)
    [\mathbb{N} \models A(1)]
  ]

informação relacionada