bussproofs 封装中的对齐

bussproofs 封装中的对齐

我在用着bussproofs并且希望我的前提始终与推理线的开头左对齐。到目前为止,当我有一个前提推理时,我只能将前提置于推理线的中心,如下所示:

\documentclass{article}
\usepackage{bussproofs}
\begin{document}
\begin{prooftree} \AxiomC{$\neg A$} \UnaryInfC{$\neg A \lor \neg B$} \end{prooftree}
\end{document}

是否可以让前提与线保持对齐?

答案1

这里有两个选项:

  1. 将较小的框(您的前提\AxiomC)放置在与较大的框(您的结论)宽度相同的框中\UnaryInfC,仅左对齐。这可以使用\makebox[<width>][l]{...}; 或

  2. 用于从显示中\phantom{<stuff>}移除<stuff>但仍为其分配适当的空间。

在此处输入图片描述

\documentclass{article}
\usepackage{bussproofs}% http://ctan.org/pkg/bussproofs
\newlength{\mylen}
\begin{document}
\begin{prooftree}
  \settowidth{\mylen}{$\neg A \lor \neg B$}%
  \AxiomC{\makebox[\mylen][l]{$\neg A$}}
  \UnaryInfC{$\neg A \lor \neg B$}
\end{prooftree}

\begin{prooftree}
  \AxiomC{$\neg A \phantom{\:{\lor}\:\neg B}$}
  \UnaryInfC{$\neg A \lor \neg B$}
\end{prooftree}
\end{document}

在第一个例子中,结论的宽度\mylen通过存储在(新的长度)中\settowidth\mylen然后用于提供前提的盒子宽度。

在第二个例子中,通过在现在原子化的周围添加,对二元运算符周围的间距\lor进行了微小的修正。\:{\lor}

答案2

在 bussproof 中,使用顺序对齐样式(rtfm:第 3 节)默认可实现此目的,命令相同,只是最后的“C”不同,它们的参数不用括号括起来,并且命令\fCenter标记了对齐点。

\documentclass{article}
\usepackage{bussproofs}
\begin{document}
\begin{prooftree}
   \Axiom$\fCenter\neg A$
   \UnaryInf$\fCenter\neg A \lor \neg B$
\end{prooftree}
\end{document}

會做你想做的事。

答案3

您还可以\kernHyps{kern}在推理命令之前使用,将该推理的假设推动克恩. 例如 .1in 或 -.1in。

\documentclass{article}
\usepackage{bussproofs}
\begin{document}
\begin{prooftree} \AxiomC{$\kernHyps{-.18in}\neg A$} \UnaryInfC{$\neg A \lor \neg B$} \end{prooftree}
\end{document}

这将给你

在此处输入图片描述

相关内容