代码

代码

我正在尝试使用 tikz 重现以下内容:

enter image description here

并且:

enter image description here

关于第一张图片我可以从以下开始:

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

然而,结果却不太优雅,而且我不知道该如何进行:

enter image description here

答案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}

输出

enter image description here

答案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}

beautiful typesetting courtesy of qtree; horrible logic courtesy of the question!

警告:这在逻辑上并不正确,事实上,它充满了错误。如果你只是因为它碰巧出现在网站上而想学习逻辑,请不要使用它!

请注意,旧版本的 qtree 显然与 pdflatex 存在问题,但当前版本兼容(而且我一直将它与 pdflatex 一起使用)。

相关内容