买者自负。

买者自负。

我正在尝试为逻辑创建一个树形图。我以前曾使用语法树来为逻辑制作普通真值树。然而,我尝试创建的树看起来不像语法树。它们看起来像这样:

在此处输入图片描述

树向下延伸,树枝以直角分叉。公式位于各个树枝的左侧和右侧,而不是节点的底部。

我必须做很多这些,所以我想避免任何过于复杂的事情,比如使用 TikZ。

答案1

请注意,我认为我不应该回答诸如此类的“替我做”的问题。当我回答时,我是为了我自己。我提供代码只是为了好玩。我通常不解释它,因为我不知道该解释什么,此外,除了解决它之外,我还花了精力设置谜题。我通常不太支持更改、解释、调整和调整的请求。这些留给缺乏锻炼的读者作为练习。如果我的代码碰巧有用,那就这样吧;如果没有用,那就太难了。好的答案是对好问题的回应。替我做不能指望同样的特权。

买者自负。

是的,当然它使用 TiZ. 它是一棵树。每棵树都需要一片森林。

\documentclass[border=10pt]{standalone}
\usepackage{amssymb}
\usepackage[edges]{forest}
\newcommand*{\lif}{\ensuremath{\mathbin{\rightarrow}}}
\begin{document}
\forestset{
  declare boolean={T}{true},
  F/.style={not T},
  lr tableau/.style={
    before typesetting nodes={
      for tree={
        math content,
        fork sep'=7.5pt,
        if T={
          parent anchor=east,
          child anchor=east,
          anchor=mid east,
        }{
          parent anchor=west,
          child anchor=west,
          anchor=mid west,
        },
      },
    },
    forked edges,
    before computing xy={
      where level=0{if T={parent anchor=north east}{parent anchor=north west}}{
        if={
          >O_< {!u.n children}{2}%
        }{l'=\baselineskip}{},
      },
      where n children=0{if T={child anchor=south east}{child anchor=south west}}{},
    }
  },
  close/.style={
    if n=1{label={[label distance=0pt, anchor=north]-135:\textsf{x}}}{label={[label distance=0pt, anchor=north]-45:\textsf{x}}},
  },
}
\begin{forest}
  lr tableau,
  [\lnot \phi, label=left:\checkmark
    [\alpha \lif \beta, label=left:\checkmark
      [\beta \lif \phi, label=left:\checkmark
        [\lnot\alpha, F, label=right:\checkmark
          [\alpha
            [\phi, F
              [\alpha, F, close ]
              [\beta
                [\beta, F, close ]
                [\phi, close ]
              ]
            ]
          ]
        ]
      ]
    ]
  ]
\end{forest}

\end{document}

有森林的场景

相关内容