Asymptote 中的樹(序列)圖

Asymptote 中的樹(序列)圖

我想用 Asymptote 畫樹形圖。但有一些問題。

我在網路上搜尋了一下,發現了2個提示。 http://asymptote.sourceforge.net/FAQ/section4.html http://asymptote.sourceforge.net/doc/Frames-and-pictures.html

使用這些技巧,並嘗試盒子

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

但這行不通。最後的繪製(f1 - f2);命令錯誤。

命令需要協調。但這種方法......不聰明(對我來說)。

我想要連接2 盒。如何連接 2 個物件?

我發現繪圖樹官方教學PDF裡有模組,但看起來很難靈活使用(樹的形狀可以改變嗎?)。

如果有一種方法可以方便的使用繪圖樹模組,你能告訴我嗎?

謝謝。

答案1

以下程式碼作為獨立asymptote腳本運行。我沒有使用過該drawtree模組,所以我無法幫助你。在我的程式碼中,我沒有使用框架。相反,每個標籤都繪製在預設圖片中。

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

在此輸入影像描述

答案2

由於替代方法通常是可以接受的,因此我無法抗拒提供森林解決方案。

math content將所有節點的內容置於數學模式,避免需要$...$.draw在樹中的每個節點周圍繪製邊框。

節點會自動連接:每個父子關係的父節點到子節點。 (用於<node content>, no edge例外情況。)我已指定與原始程式碼中的定義l sep相符。unit這是樹的層之間的最小距離。 (5公分很多了。)

森林不需要明確的座標。它會自動格式化樹。

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

替代解決方案

改變樹的外觀非常容易。您只需更改環境的序言即可forest

例如,

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

產生

改變的樹

而樹本身的規格保持不變

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

相關內容