许多方程式环境的多列间距

许多方程式环境的多列间距

我想我有一个非常简单的问题。我想写下一个逻辑推理系统。这本第 9 页有一个很好的例子文档

在此处输入图片描述

什么环境你会建议我使用什么来获得类似的效果?特别是,我希望获得良好的多列对齐(如在表格中)和每个元素周围的一些标准间距。我并不特别关心整个事物周围的边框。

我尝试使用,tabular但是它产生的间距太小。这个问题可能可以修复,但感觉像是一种 hack。

编辑:我想我可能被误解了。我不知道不是询问如何写下推理规则本身。我已经知道如何做,并且我使用bussproofs包来做到这一点。我需要一种方法来将我拥有的所有规则放在一个表中,并在其中留出适当的间距。因此我询问一个环境这对于类似的事情来说是合适的。

编辑(2):好的,如果有人认为这tabular是正确的方法,您能否告诉我如何为所有单元格(水平和垂直)添加一些填充(边距)。我意识到这可能是一个微不足道的问题,但是我刚刚花了半个小时寻找答案。

答案1

跳过细节,可以通过以下方式实现tabular

\usepackage{array}
\newcolumntype{C}{>{$\displaystyle}c<{$}}
\newcommand{\onecol}[1]{\multicolumn{2}{C}{#1}}

上面的代码应该放在序言中。然后可以通过以下方式设置大事:

\begin{figure}
\centering
\renewcommand{\arraystretch}{2} % adjust here for interrow spacing
\begin{tabular}{CC}
\onecol{Formula for first line} \\
\onecol{Formula for second line} \\
\onecol{Formula for third line} \\
Left formula & right formula (row 4)\\
Left formula & right formula (row 5)\\
...
\end{tabular}
\caption{Sequent calculus formulation}\label{fig:seqcalc}
\end{figure}

\arraystretch您可以定义而不是设置

\newcommand\mystrut{\vrule width 0pt height 24pt depth 24pt}

\mystrut在除第一行和最后一行之外的每一行中插入一个单元格。调整尺寸以适应。

答案2

实际上,我认为你应该使用一些 amsmath 环境:gather、aligned 和 gather。我现在正在用手机打字,所以举个例子比较困难(我稍后会更新),但你可能需要这样的东西:

\begin{gather*}
  \begin{aligned}
   \begin{gathered} Left formula \\ Left formula … \end{gathered} &&
   \begin{gathered} Right formula \\ Right formula … \end{gathered}
  \end{aligned}
  \\
  \begin{gathered}
   Formula \\
   Formula \\
  \end{gathered}
\end{gather*}

如果您需要一组两列的公式(每列居中),请使用对齐和聚集。对于单列,只需使用聚集。将所有内容放在聚集中,以便集合集体居中,您应该会得到示例显示的内容。

答案3

tabular以下是使用@egreg和@percusse 的建议制作的一个小模型\frac

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{array}% http://ctan.org/pkg/array
\usepackage{MnSymbol}% http://ctan.org/pkg/mnsymbol
\newcolumntype{C}{>{$\displaystyle}c<{$}}
\newcommand{\onecol}[1]{\multicolumn{2}{C}{#1}}
\newcommand{\seq}[2]{\frac{\strut#1}{\strut#2}}
\begin{document}
\begin{figure}[ht]
  \centering
  \renewcommand{\arraystretch}{2.5} % adjust here for interrow spacing
  \begin{tabular}{C@{\quad}C}
    \onecol{\seq{}{A \vdash A}\ \textit{Identity}} \\
    \onecol{\seq{\Gamma,A,B,\Delta \vdash C}{\Gamma,B,A,\Delta \vdash C}\ \textit{Exchange}} \\
    \onecol{\seq{\Gamma \vdash B \qquad B,\Delta \vdash C}{\Gamma,\Delta \vdash C}\ \textit{Cut}} \\
    \seq{}{\Gamma \vdash \mathbf{t}}\ (\mathbf{t}_\mathcal{R}) &
      \seq{}{\Gamma, \mathbf{f} \vdash A}\ (\mathbf{f}_\mathcal{L}) \\
    \seq{\Gamma \vdash A}{\Gamma,I \vdash A}\ (I_\mathcal{L}) &
      \seq{}{{}\vdash I}\ (I_\mathcal{R}) \\
    \seq{\Gamma,A,B \vdash C}{\Gamma, A \otimes B \vdash C}\ (\otimes_\mathcal{L}) &
      \seq{\Gamma \vdash A \qquad \Delta \vdash B}{\Gamma,\Delta \vdash A \otimes B}\ (\otimes_\mathcal{R}) \\
    \seq{\Gamma \vdash A \qquad \Delta,B \vdash C}{\Gamma,\Delta,A \multimap B \vdash C}\ (\multimap_\mathcal{L}) &
      \seq{\Gamma,A \vdash B}{\Gamma \vdash A \multimap B}\ (\multimap_\mathcal{R}) \\
    \seq{\Gamma,A \vdash C}{\Gamma,A \mathbin{\&} B \vdash C}\ (\&_{\mathcal{L}-1}) &
      \seq{\Gamma,B \vdash C}{\Gamma,A \mathbin{\&} B \vdash C}\ (\&_{\mathcal{L}-2}) \\
    \onecol{\vdots}
  \end{tabular}
  \caption{Sequent Calculus Formulation of \textbf{ILL}}
\end{figure}
\end{document}

需要注意的事项:

  • tabular规范将决定两列条目之间的空间:

    \begin{tabular}{C@{\quad}C}
    

    将在任一列中最宽的元素之间插入\quad。要直观地显示间隙,您可以使用C@{}|@{\quad}|@{}C

    在此处输入图片描述

  • 似乎\arraystretch足以2.5展开其中的表达式tabular

  • \frac将其内容相对于数学轴居中,因此无需摆弄垂直调整来将内容放在右侧。
  • \frac还提供了\strut分子和分母中的 ,以用于间距考虑。或者,\mystrut按照@egreg 的回答中的定义使用。为方便起见,所有内容都用于宏中\seq,该宏以与 相同的配置作为参数\frac

相关内容