逻辑证明 - 表格内的框

逻辑证明 - 表格内的框

我想要创建如下的表格:

在此处输入图片描述

但是我只想到了表格代码,却不知道如何添加这两个框。

  \begin{table}
      \centering
      \begin{tabular}{lll}
        1. & $(\lnot (\alpha \lor (\lnot \alpha)))$ & Assumption \\
        2. & $\alpha$ & Assumption \\
        3. & $(\alpha \lor (\lnot \alpha))$  & $\lor i$: 2  \\
        4. & $\bot$ & $\bot i$: 1,3  \\
        5. & $(\lnot \alpha)$ & $\lnot i$, 2-4 \\
        6. & $(\alpha \lor (\lnot \alpha))$ & $\lor i$: 5 \\
        7. & $\bot$ &  $\bot i$: 1,6 \\
        8. & $(\lnot (\lnot (\alpha \lor (\lnot \alpha))))$ & $\lnot i$:1-7\\
        9. & $(\alpha \lor (\lnot \alpha))$ & $\lnot \lnot e$: 8 \\
      \end{tabular}
      \label{tab:mytable}
  \end{table}

知道如何添加盒子吗?

答案1

这个logicproof包装的设计有着明确的目标。

\documentclass{article}
\usepackage{logicproof}

\begin{document}

\begin{logicproof}{2}
\begin{subproof}
  (\lnot (\alpha \lor (\lnot \alpha))) & Assumption    \\
  \begin{subproof}
    \alpha                             & Assumption    \\
    (\alpha \lor (\lnot \alpha))       & $\lor$i: 2    \\
    \bot                               & $\bot$i: 1,3
  \end{subproof}
  (\lnot \alpha)                       & $\lnot$i, 2-4 \\
  (\alpha \lor (\lnot \alpha))         & $\lor$i: 5    \\
  \bot                                 & $\bot$i: 1,6
\end{subproof}
(\lnot (\lnot (\alpha \lor (\lnot \alpha)))) 
                                       & $\lnot$i: 1-7 \\
(\alpha \lor (\lnot \alpha))           & $\lnot\lnot$e: 8
\end{logicproof}

\end{document}

在此处输入图片描述

答案2

一种方法是使用tikzmark库。在以下 MWE 中,这些shift值适用于标准article文档类。对于其他类,您可能需要调整它们。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}

\begin{table}
  \centering
  \begin{tabular}{lll}
    1.\tikzmark{a1} & $(\lnot (\alpha \lor (\lnot \alpha)))$ & Assumption \\
    2.\tikzmark{a3} & $\alpha$ & Assumption \\
    3. & $(\alpha \lor (\lnot \alpha))$  & $\lor i$: 2  \\
    4.\tikzmark{a4} & $\bot$ & $\bot i$: 1,3  \\
    5. & $(\lnot \alpha)$ & $\lnot i$, 2-4 \\
    6. & $(\alpha \lor (\lnot \alpha))$ & $\lor i$: 5 \\
    7.\tikzmark{a2} & $\bot$ &  $\bot i$: 1,6 \\
    8. & $(\lnot (\lnot (\alpha \lor (\lnot \alpha))))$ & $\lnot i$:1-7\\
    9. & $(\alpha \lor (\lnot \alpha))$ & $\lnot \lnot e$: 8 \\
  \end{tabular}
  \label{tab:mytable}
\end{table}

\begin{tikzpicture}[overlay, remember picture]
  \draw ([shift={(6cm, 1em)}]pic cs:a1) rectangle ([shift={(5pt,-2pt)}]pic cs:a2);
  \draw ([shift={(5.8cm, 0.8em)}]pic cs:a3) rectangle ([shift={(10pt,-2pt)}]pic cs:a4);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

带包裹tabularray

  • vline{2} = {1}{1-8}{solid},绘制第一条垂直线第 2 列、第 1 至 8 行。
  • vline{2} = {2}{2-4}{red,solid},,绘制第二条垂直线第 2 列、第 2 行至第 4 行。
  • leftpos=0,rightpos=0仅触及第一条 vline。

红色可以使相关的代码更加形象化。

\documentclass[border=5mm]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{counter}
\newcounter{mycnta}
\newcommand{\mycnta}{\stepcounter{mycnta}\arabic{mycnta}}
\begin{document}

\begin{tblr}
    {
        column{1}={cmd=\mycnta .},
        %
        vline{2} = {1}{1-8}{solid},
        vline{2} = {2}{2-4}{red,solid},
        vline{4} = {1}{2-4}{red,solid},
        vline{4} = {2}{1-8}{solid},
        %
        hline{1,9} = {2-4}{solid},
        hline{2,5} = {2-4}{red,leftpos=0,rightpos=0,solid},
    }
& $(\lnot (\alpha \lor (\lnot \alpha)))$ & Assumption \\
& $\alpha$ & Assumption \\
& $(\alpha \lor (\lnot \alpha))$  & $\lor i$: 2  \\
& $\bot$ & $\bot i$: 1,3  \\
& $(\lnot \alpha)$ & $\lnot i$, 2-4 \\
& $(\alpha \lor (\lnot \alpha))$ & $\lor i$: 5 \\
& $\bot$ &  $\bot i$: 1,6 \\
& $(\lnot (\lnot (\alpha \lor (\lnot \alpha))))$ & $\lnot i$:1-7\\
& $(\alpha \lor (\lnot \alpha))$ & $\lnot \lnot e$: 8 \\
\end{tblr}
\end{document}

在此处输入图片描述

答案4

使用{NiceTabular}nicematrixTikZ 通过使用 PGF/Tikz 节点创建的框架来绘制框架nicematrix

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{table}
  \centering
  \begin{NiceTabular}{lll}
    1. & $(\lnot (\alpha \lor (\lnot \alpha)))$ & Assumption \\
    2. & $\alpha$ & Assumption \\
    3. & $(\alpha \lor (\lnot \alpha))$  & $\lor i$: 2  \\
    4. & $\bot$ & $\bot i$: 1,3  \\
    5. & $(\lnot \alpha)$ & $\lnot i$, 2-4 \\
    6. & $(\alpha \lor (\lnot \alpha))$ & $\lor i$: 5 \\
    7. & $\bot$ &  $\bot i$: 1,6 \\
    8. & $(\lnot (\lnot (\alpha \lor (\lnot \alpha))))$ & $\lnot i$:1-7\\
    9. & $(\alpha \lor (\lnot \alpha))$ & $\lnot \lnot e$: 8 \\
  \CodeAfter
    \begin{tikzpicture}
      \draw (1-|2) rectangle (8-|last) ;
      \draw ([xshift=1mm]2-|2) rectangle ([xshift=-1mm]5-|last) ;
    \end{tikzpicture}
  \end{NiceTabular}
  \label{tab:mytable}
\end{table}

\end{document}

上述代码的输出

相关内容