我正在使用bussproofs
包来提供一些类型证明。根据bussproofs
手册,无法prooftree
在数学模式中使用。但是,我想插入prooftree
到cases
环境中。有什么技巧可以克服这个问题吗?
最小工作示例:
\documentclass{article}
\usepackage{amssymb,amsmath}
\usepackage{bussproofs}
\begin{document}
\[\epsilon=
\begin{cases}
\AxiomC{$\alpha$}
\UnaryInfC{$\beta$}
\DisplayProof
%\begin{prooftree}
%\AxiomC{$\alpha$}
%\AxiomC{$\beta$}
%\BinaryInfC{$\gamma$}
%\end{prooftree}
\end{cases}\]
\end{document}
我希望注释部分也能编译。
答案1
使用时bussproofs
虽然可以将逻辑证明简化为独立环境,但当事情变得更加复杂时,您必须小心处理它。一般来说,如果您能够装箱并存储内容,那么您可以随时在更复杂的结构中使用这个盒子。
但是,另一种选择是完全避免使用该bussproofs
包,并坚持使用传统array
结构来匹配您的逻辑表达式:
\documentclass{article}
\usepackage{amssymb,amsmath}% http://ctan.org/pkg/{amssymb,amsmath}
\usepackage{bussproofs,varwidth}% http://ctan.org/pkg/{bussproofs,varwidth}
\newsavebox{\mypt}
\begin{document}
\begin{lrbox}{\mypt}% Store prooftree in \mypt
\begin{varwidth}{\linewidth}
\begin{prooftree}
\AxiomC{$\alpha$}
\AxiomC{$\beta$}
\BinaryInfC{$\gamma$}
\end{prooftree}
\end{varwidth}
\end{lrbox}
\[
\epsilon =
\begin{cases}
\AxiomC{$\alpha$}
\UnaryInfC{$\beta$}
\DisplayProof & \text{ if $x$} \\
\usebox{\mypt} & \text{ if $y$}
\end{cases}
\]
\hrulefill
\[
\epsilon = \left\{\begin{array}{@{}l@{}l@{}}
\dfrac{~\alpha~}{\beta} & \text{ if $x$} \\
\dfrac{~\alpha \qquad \beta~}{\gamma} & \text{ if $y$}
\end{array}\right.
\]
\end{document}
此时,这是一个关于间距的问题,尽管输出的结构与 非常相似bussproofs
。