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
。これは、ツリーのレベル間の最小距離です。(5cm は大きいです。)
森明示的な座標は必要ありません。ツリーは自動的にフォーマットされます。
\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)]
]