Wie zeichnet man einen Auflösungsbaum wiedas Beispiel hier
Antwort1
Der Baum kann einfach erstellt werden mitTikZ
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,fit,trees}
\begin{document}
\begin{tikzpicture}[
grow'=up,
level 1/.style={sibling distance=14em},
level 2/.style={sibling distance=6em}]
\node (f) {False}
child { node (1l) {$p(a)$}
child {node (2ll) {$\neg p(a)$}}
child {node (2lr) {$p(a)\vee p(b)$}}
}
child {node (1r) {$\neg p(a)$}
child {node (2rl) {$p(X)\vee r(X)$}}
child {node (2rr) {$\neg r(b)$}}
};
\end{tikzpicture}
\end{document}
Das Einzige, was nicht ganz so trivial sein dürfte, ist das Zeichnen geschlossener Pfade um einige Formelgruppen. Ein möglicher Ansatz hierfür wäre die Verwendung vonJake's answer
Zugepolsterte Begrenzung der konvexen Hülle:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,fit,trees}
\newcommand{\convexpath}[2]{
[
create hullnodes/.code={
\global\edef\namelist{#1}
\foreach [count=\counter] \nodename in \namelist {
\global\edef\numberofnodes{\counter}
\node at (\nodename) [draw=none,name=hullnode\counter] {};
}
\node at (hullnode\numberofnodes) [name=hullnode0,draw=none] {};
\pgfmathtruncatemacro\lastnumber{\numberofnodes+1}
\node at (hullnode1) [name=hullnode\lastnumber,draw=none] {};
},
create hullnodes
]
($(hullnode1)!#2!-90:(hullnode0)$)
\foreach [
evaluate=\currentnode as \previousnode using \currentnode-1,
evaluate=\currentnode as \nextnode using \currentnode+1
] \currentnode in {1,...,\numberofnodes} {
-- ($(hullnode\currentnode)!#2!-90:(hullnode\previousnode)$)
let \p1 = ($(hullnode\currentnode)!#2!-90:(hullnode\previousnode) - (hullnode\currentnode)$),
\n1 = {atan2(\x1,\y1)},
\p2 = ($(hullnode\currentnode)!#2!90:(hullnode\nextnode) - (hullnode\currentnode)$),
\n2 = {atan2(\x2,\y2)},
\n{delta} = {-Mod(\n1-\n2,360)}
in
{arc [start angle=\n1, delta angle=\n{delta}, radius=#2]}
}
-- cycle
}
\begin{document}
\begin{tikzpicture}[
grow'=up,
level 1/.style={sibling distance=14em},
level 2/.style={sibling distance=6em}]
\node (f) {False}
child { node (1l) {$p(a)$}
child {node (2ll) {$\neg p(a)$}}
child {node (2lr) {$p(a)\vee p(b)$}}
}
child {node (1r) {$\neg p(a)$}
child {node (2rl) {$p(X)\vee r(X)$}}
child {node (2rr) {$\neg r(b)$}}
};
\draw[cyan!70!black] \convexpath{f,1l.west,1r.east}{13pt};
\draw[red!70!black] \convexpath{1r,2rl.west,2rr.east}{12pt};
\end{tikzpicture}
\end{document}
Sie haben Zugriff auf zahlreiche Ressourcen zu den Themen TikZ
:
- Der
pgf manual
. - Der
minimal introduction to TikZ
. - Der
examples gallery
bei TeXample.net - Die zahlreichen Beispiele auf dieser Site.