![代码](https://linux22.com/image/281999/%E4%BB%A3%E7%A0%81.png)
我正在尝试使用 tikz 重现以下内容:
并且:
关于第一张图片我可以从以下开始:
\documentclass{article}
\usepackage{tikz-qtree}
\usepackage{tikz-cd}
\tikzstyle{every picture}+=[remember picture]
\begin{displaymath}
((\neg Qb \wedge x (Px \rightarrow Qx))
\tikz[baseline]\node (n1) {$\rightarrow$}; \neg Pb)
\end{displaymath}
\begin{displaymath}
(\neg Qb \wedge \tikz[baseline]\node (n2) {$\forall$};x
(Px \rightarrow Qx)) \qquad \tikz[baseline]\node (n3) {$\neg Pb$};
\end{displaymath}
\begin{tikzpicture}[overlay]
\draw (n1) -- (n2);
\draw (n1) -- (n3);
\end{tikzpicture}
\end{document}
然而,结果却不太优雅,而且我不知道该如何进行:
答案1
对于第一棵树,如果分支不需要从主逻辑连接词开始,那么基于 TikZ 的forest
包将是一个不错的选择。
第二棵树也可以用 来绘制forest
,就好像它是从下往上生长的。
代码
\documentclass{article}
\usepackage{forest}
\renewcommand\b[1]{\textbf{#1}}
\begin{document}
\begin{forest}
for tree={parent anchor=south,child anchor=north}
[$((\lnot Qb \wedge \forall x(Px \to Qx)) \to \lnot Pb)$, s=1cm
[$(\lnot Qb \wedge \forall x (Px\to Qx))$
[$\lnot Qb$
[$Qb$]
]
[$\forall x (Px\to Qx)$
[$(Px\to Qx)$
[$Px$]
[$Qx$]
]
]
]
[$\lnot Pb$
[$Pb$]
]
]
\node[below,red]at(current bounding box.south){Figure: First Tree};
\end{forest}
%
\hskip20pt
%
\begin{forest}
for tree={
child anchor=south,grow'=north,
edge path={\noexpand\path[\forestoption{edge}](!u.parent anchor)-|(.child anchor)\forestoption{edge label};}
},
[\b{V}
[\b{F}
[\b{V}[$(C$,no edge]]
[$\wedge$,no edge,tier=final]
[\b{F}[$B)$,no edge]]
]
[\b{V},name=n
[$\to$,no edge,tier=final]
[,no edge,name=nc
[$\lnot$,no edge,tier=final]
]
[\b{F}[$D$,no edge,tier=final]]
]
]
\draw(n.north)--(nc.north);
\node[below,red]at(current bounding box.south){Figure: Second Tree};
\end{forest}
\end{document}
输出
答案2
我不知道这是否有用,因为它不使用 tikz,但这是我使用 qtree 包排版第一个例子的方法:
\documentclass{article}
\usepackage{qtree}
\usepackage{amssymb}
\begin{document}
\Tree
[.{$((\neg Qb \wedge \forall x (Px \rightarrow Qx)) \rightarrow \neg Pb)$}
[.{$(\neg Qb \wedge \forall x (Px \rightarrow Qx))$}
[.{$\neg Qb$}
[.{$Qb$}
]
]
[.{$\forall x (Px \rightarrow Qx)$}
[.{$(Px \rightarrow Qx)$}
[.{$Px$}
]
[.{$Qx$}
]
]
]
]
[.{$\neg Pb$}
[.{$Pb$}
]
]
]
\end{document}
警告:这在逻辑上并不正确,事实上,它充满了错误。如果你只是因为它碰巧出现在网站上而想学习逻辑,请不要使用它!
请注意,旧版本的 qtree 显然与 pdflatex 存在问题,但当前版本兼容(而且我一直将它与 pdflatex 一起使用)。