如何扩展 prooftree 环境(bussproofs 包)

如何扩展 prooftree 环境(bussproofs 包)

我正在使用包bussproofs来绘制连续的微积分风格证明。证明通常很长,我想缩放它们,但我做不到。出现了一个无意义的错误:

!LaTeX 错误:出现错误 — — 可能缺少 \item。

如您所见,扩展和prooftree环境是分开工作的,但不能协同工作。

bussproofs你对如何扩展 prootrees 有什么建议吗?指南中没有相关信息。

\documentclass[]{beamer}
\usepackage{graphicx}
\usepackage{bussproofs}
\usepackage{amssymb}
\begin{document}

\begin{frame}

\begin{prooftree}
    \AxiomC{A}
    \AxiomC{B}
    \BinaryInfC{C}
\end{prooftree}

\scalebox{.6}{The problem}

\scalebox{.6}{
    \begin{prooftree}
        \AxiomC{A}
        \AxiomC{B}
        \BinaryInfC{C}
    \end{prooftree}
}

\end{frame}

\end{document}

答案1

在下面的例子中,我定义了一个scprooftree环境,它具有要使用的比例因子作为强制参数;这个环境是对的简单修改,prooftree如在中实现的bussproofs.sty

\documentclass[]{beamer}
\usepackage{graphicx}
\usepackage{bussproofs}
\usepackage{amssymb}

\newenvironment{scprooftree}[1]%
  {\gdef\scalefactor{#1}\begin{center}\proofSkipAmount \leavevmode}%
  {\scalebox{\scalefactor}{\DisplayProof}\proofSkipAmount \end{center} }

\begin{document}

\begin{frame}
\begin{prooftree}
  \AxiomC{A}
  \AxiomC{B}
  \BinaryInfC{C}
\end{prooftree}
\scalebox{.6}{No problem anymore}
\begin{scprooftree}{0.6}
  \AxiomC{A}
  \AxiomC{B}
  \BinaryInfC{C}
\end{scprooftree}
\begin{scprooftree}{2}
  \AxiomC{A}
  \AxiomC{B}
  \BinaryInfC{C}
\end{scprooftree}
\end{frame}

\end{document}

在此处输入图片描述

最初的问题是由于prooftree环境使用center环境而产生的;尝试执行类似以下操作会触发相同的错误

\scalebox{0.6}{\begin{center}A\end{center}}

解决方案是缩放对象并然后用来center将其居中。另一个选择是使用 来\vbox框住整个prooftree环境,然后对其进行缩放。

答案2

将 prooftree 环境放入 \parbox 中也能解决问题,但是默认居中会丢失,用户应使用 \parbox 的宽度值和居中环境将其居中。

\scalebox{.6}{
\parbox{1cm}{
    \begin{prooftree}
        \AxiomC{A}
        \AxiomC{B}
        \BinaryInfC{C}
    \end{prooftree}}
}

相关内容