
私は tikz-qtree パッケージを使用してこのツリーを作成しようとしています。いくつかのパーツはありますが、点線を作成できません。
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts, amsmath, amsthm, amssymb}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[scale=1.2,every node/.style={align=center}]
\tikzset{level distance=50pt,sibling distance=5pt}
\Tree [.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ $\bullet$\\$\gamma:\rho^c$
]
[.$\beta$:$\sigma^a$ $\bullet$\\$\delta:\vartheta^c$ ] ]
\end{tikzpicture}
\end{document}
点線を描いていただけますか?
答え1
tikz
任意のオプションを使用してツリー内にノードを作成することができます。たとえば、次のように、角が丸い点線の境界線を持つラベルを持つノードを作成できます。
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
しかし、私はforest
Tiのすべてのパワーを提供するものをお勧めしますけZ などです。必要に応じて、最後の行をノードに配置し、任意のオプションを使用して Forest によって円が自動的に追加され、同時に点線の境界線などが追加されるようにすることができます。たとえば、ツリーのプリアンブルに次のコードを使用できます。
for tree={
math content,
デフォルトでは、ノードには数学コンテンツが含まれます。
parent anchor=children,
child anchor=parent,
少し整理しましょう。
},
before typesetting nodes={
すべての準備が整うまでこれを延期します。
where n children=0{
ターミナルノードのみ。
no edge,
彼らにエッジを描かないでください。
draw,
境界線を引いてください。
densely dotted,
その境界線を密な点線にします。
content/.wrap value={\strut#1},
すべて同じ高さにします。
rounded corners,
角を丸くします。
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
終端ノードの前に、小さな塗りつぶされた円である別のノードを挿入します。そのノードへのエッジも描画しないでください。ノードは、replace by
元のノードを代替ノードでアサートし、次にappend
元のノードでアサートすることによってアサートされます。これを後で行うのは、そうしないと元のノードがすべて保存されず、移動しようとすると内容が失われる可能性があるためです。
}{}
非終端ノードに対しては何も行いません。
}
遅れたものは終わり。
これにより、常に数式モードに切り替えることなく、ツリー自体を非常に簡潔に指定できるようになります。
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
これを組み立てると、
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
生産する
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{tikz-qtree}
\usepackage{forest}
\begin{document}
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
\end{document}