Baumdiagramm (Sequenzdiagramm) in Asymptote

Baumdiagramm (Sequenzdiagramm) in Asymptote

Ich möchte ein Baumdiagramm mit Asymptote zeichnen. Habe aber ein paar Probleme.

Ich habe im Internet gesucht und zwei Hinweise gefunden. http://asymptote.sourceforge.net/FAQ/section4.html http://asymptote.sourceforge.net/doc/Frames-and-pictures.html

Mit diesen Tipps und versuchte,KastenUndBäume.

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);

Aber das funktioniert nicht. Letztezeichnen(f1 -- f2);Befehl ist falsch.

ziehenBefehle müssen koordiniert werden. Aber diese Methode ist ... (für mich) nicht klug.

Ich möchteverbinden2 Boxen. Wie kann ich 2 Objekte verbinden?

ich fandzeichnerbaumModul im offiziellen Tutorial-PDF, aber es scheint schwierig, es flexibel zu verwenden (ist die Form des Baums veränderbar?).

Wenn es eine Möglichkeit gibt, einfach zu verwendenzeichnerbaumModul, würdest du das sagen?

Danke.

Antwort1

Der folgende Code funktioniert als eigenständiges asymptoteSkript. Ich habe das drawtreeModul nicht verwendet, daher kann ich Ihnen dabei nicht helfen. In meinem Code verwende ich keine Rahmen. Stattdessen wird jedes Etikett im Standardbild gezeichnet.

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));

Bildbeschreibung hier eingeben

Antwort2

Da alternative Methoden im Allgemeinen akzeptabel sind, kann ich nicht widerstehen, eineWaldLösung.

math contentversetzt den Inhalt aller Knoten in den Mathematikmodus und macht so die Verwendung von überflüssig $...$. drawzeichnet einen Rahmen um jeden Knoten im Baum.

Die Knoten werden automatisch verbunden: Elternknoten zu Kindknoten für jede Eltern-Kind-Beziehung. ( <node content>, no edgeFür Ausnahmen verwenden.) Ich habe angegeben, l sepdass dies mit der Definition im Originalcode übereinstimmt unit. Dies ist der Mindestabstand zwischen den Ebenen des Baums. (5 cm sind viel.)

Waldbenötigt keine expliziten Koordinaten. Der Baum wird automatisch formatiert.

\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}

alternative Lösung

Das Erscheinungsbild des Baums zu ändern ist sehr einfach. Sie ändern einfach die Präambel der forestUmgebung.

Zum Beispiel,

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

produziert

veränderter Baum

während die Spezifikation für den Baum selbst identisch bleibt

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

verwandte Informationen