我一直在尝试使用 prooftrees 包中的 forest 包创建外观不错的 prooftrees。我对 Tex 总体上还比较陌生,我正在尝试为我的 prooftrees 创建一个 ./style,其中包含一个参数,这样当它分支出来时我就可以获取一些文本。目前我有这个
\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage{forest}
\forestset{
smullyan tableaux/.style={
for tree={
math content
},
where n children=1{
!1.before computing xy={l=\baselineskip},
!1.no edge
}{},
closed/.style={
label=below:$\times$
},
open/.style={
label=below:$\bigcirc$
},
text/.style={
label=below:{#1}
}
},
}
\begin{document}
% and where I'm trying to call "text" with the argument #1
\begin{forest}
smullyan tableaux
[\forall{x}(P(x) \rightarrow Q(x)) \wedge \forall{x}P(x) \rightarrow \forall{x}Q(x): F
[\mid
[\forall{x}(P(x) \rightarrow Q(x)) \wedge \forall{x}P(x): T
[\forall{x}Q(x): F
[\mid
[Q(t): F
[\mid
[\forall{x}(P(x) \rightarrow Q(x)): T
[\forall{x}P(x): T
[\mid
[P(t) \rightarrow Q(t): T, text={Hey}
[P(t): F
[\mid
[P(t): T, closed
]
]
]
[Q(t): T, closed
]
]
]
]
]
]
]
]
]
]
]
]
\end{forest}
\end{document}
答案1
您必须将 翻倍#
,即text/.style={label=below:{##1}}
。原因是此定义本身出现在定义中;对于每个嵌套级别,您必须将符号翻倍#
。如果您text
不是将其定义为定义的一部分smullyan tableaux
而是将其定义为定义之外的部分,则包含 的定义#
将起作用。
请注意有一个包防护树;如果你做了更多的证明,看看它,也许它是有用的。
这是您的证明树的简化版本,以证明您的定义现在有效。
\documentclass{article}
\usepackage{forest}
\begin{document}
\forestset{
smullyan tableaux/.style={
for tree={
math content
},
where n children=1{
!1.before computing xy={l=\baselineskip},
!1.no edge
}{},
closed/.style={
label=below:$\times$
},
open/.style={
label=below:$\bigcirc$
},
text/.style={
label=below:{##1}
}
},
}
\begin{forest}
smullyan tableaux
[P(t) \rightarrow Q(t): T, text={Hey}
[P(t): F
[\mid
[P(t): T, closed
]
]
]
[Q(t): T, closed
]
]
\end{forest}
\end{document}
答案2
这是prooftrees
的一个版本。请注意,我已将样式smullyan tableaux
更改为,以避免覆盖标准 Titext
my text
钾Z 键。
如果我们使用,我们可以通过消除所有s 并让绘制分支prooftrees
来显著简化树规范。这需要,这不是默认值。唯一的缺点是,当 wff 不是推理产生的第一个公式时,我们需要使用 ,因为显然无法区分这种情况与它是第二个且不需要分支的情况。但这只需要添加应该与其前任分组的 wff。\mid
prooftrees
single branches
grouped
prooftrees
grouped
为了消除编号,我们使用not line numbering
。为了自定义闭合符号,我们使用close with
。
\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage{prooftrees}
\forestset{
smullyan tableaux/.style={
close with=\ensuremath{\times},
my text/.style={% don't overwrite a standard TikZ key!
label={[yshift=-5pt]below:{##1}},
l sep'+=5pt,
},
not line numbering,
single branches
},
}
\begin{document}
\begin{prooftree}
{
smullyan tableaux
}
[\forall{x}(P(x) \rightarrow Q(x)) \land \forall{x}P(x) \rightarrow \forall{x}Q(x): F
[\forall{x}(P(x) \rightarrow Q(x)) \land \forall{x}P(x): T
[\forall{x}Q(x): F, grouped
[Q(t): F
[\forall{x}(P(x) \rightarrow Q(x)): T
[\forall{x}P(x): T, grouped
[P(t) \rightarrow Q(t): T, my text={Hey}
[P(t): F
[P(t): T, close
]
]
[Q(t): T, close
]
]
]
]
]
]
]
]
\end{prooftree}
\end{document}