在表格环境中装箱一些单元格

在表格环境中装箱一些单元格

我想用 LaTeX 制作一个表格,将表格中的一些单元格用方框框起来。我还想能够嵌套方框,这样就可以在方框中再套上一个方框。下面是一个例子来说明我的意思:

在此处输入图片描述

我已经搜索这个问题一段时间了,但似乎无法找到解决这个问题的方法,而且由于我对 LaTeX 还很陌生,所以我也不知道该如何解决这个问题。

答案1

可能有很多方法可以做到这一点,这取决于你想如何扩展它。我使用了一个,array因为你的问题中的安排看起来很像tabular

在此处输入图片描述

\documentclass{article}
\begin{document}
\[\begin{array}{l|cclc|l}
  \multicolumn{1}{l}{1.} & \quad & & \forall x\forall y : P(x,y) & \multicolumn{1}{c}{\quad} & \mbox{premise} \\ \cline{2-5}
  2. & & u_0 & \forall y : P(u_0,y) && \forall e \\ \cline{3-4}
  3. & & \multicolumn{1}{|c}{v_0} & P(u_0,v_0) & \multicolumn{1}{|c|}{} & \forall e \\ \cline{3-4}
  4. & & & \forall v : P(u_0,v) && \forall i \\ \cline{2-5}
  \multicolumn{1}{l}{5.} & & & \forall u\forall v : P(u,v) &\multicolumn{1}{c}{} & \forall i
\end{array}\]
\end{document}​

第 2 列和第 5 列只是占位符,指定为c输入;它们仅包含\quad用于间距目的的条目。


tabular对于大型结构,在 LaTeX 中创建起来很繁琐。有几个 GUI 可能会有所帮助:

  1. excel2latex

    在此处输入图片描述

    默认包含\bigstruts,这要求bigstrut包裹。此外,您可能希望将默认tabular输出修改为array,并将其包装在显示数学环境中\[...。\]

  2. 数值这使得将电子表格形式的结构导出到 LaTeX

  3. ...更多信息请访问简化 LaTeX 表格生成的工具综合列表

答案2

{NiceTabular}这是使用 来实现这一点的方法nicematrix。此环境类似于经典的{tabular}( array),但在单元格、行和列下添加了 PGF/Tikz 节点。在 中使用 Tikz 构建数组后,可以使用这些节点绘制任何您想要的内容\CodeAfter

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

\begin{document}

\[\begin{NiceArray}{lcclcl}
  1. & \quad & & \forall x\forall y : P(x,y) & \quad & \mbox{premise} \\ 
  2. & & u_0 & \forall y : P(u_0,y) && \forall e \\ 
  3. & & v_0 & P(u_0,v_0) & & \forall e \\ 
  4. & & & \forall v : P(u_0,v) && \forall i \\ 
  5. & & & \forall u\forall v : P(u,v) &  & \forall i
\CodeAfter
  \tikz \draw (2-|2) rectangle (5-|6) (3-|3) rectangle (4-|5) ;
\end{NiceArray}\]

\end{document}​

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

第一个代码的输出

事实上,对于你的情况,也可以使用内置命令,在与左上角对应的单元格中使用\Block键。你不必明确使用 Tikz。draw

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[\begin{NiceArray}{lcclcl}
  1. & \quad & & \forall x\forall y : P(x,y) & \quad & \mbox{premise} \\ 
  2. & \Block[draw]{3-4}{} & u_0 & \forall y : P(u_0,y) && \forall e \\ 
  3. & & \Block[draw]{1-2}{} v_0 & P(u_0,v_0) & & \forall e \\ 
  4. & & & \forall v : P(u_0,v) && \forall i \\ 
  5. & & & \forall u\forall v : P(u,v) &  & \forall i
\end{NiceArray}\]

\end{document}​

输出是一样的。

相关内容