枚举表格中没有垂直空间的环境

枚举表格中没有垂直空间的环境

我正在尝试排版 Leslie Lamport 定义的分层证明结构如何撰写证明

在此处输入图片描述

特别是,我正在尝试排版部分

Assume:  1. $r \in \mathbf{Q}$
         2. $r^2 = 2$
Prove:   False

通过将一个enumerate放入一个中tabular

我目前最好的尝试是

\documentclass{article}

\begin{document}

\begin{tabular}{lp{10cm}}
\scshape Assume: &
\begin{enumerate}
\item $r \in \mathbf{Q}$
\item $r^2 = 2$
\end{enumerate}
\\
\scshape Prove: &
False
\end{tabular}

\end{document}

在此处输入图片描述

如您所见,环境前后有一些相当难看的额外垂直空间enumerate。我该如何摆脱这些额外的垂直空间?

答案1

如果你想保留表格:

\documentclass{article}
\usepackage{enumitem}
\begin{document}

\begin{tabular}{lp{10cm}}
\scshape Assume: &
\begin{minipage}[t]{\linewidth}
\begin{enumerate}[leftmargin=*,itemsep=-4pt]
\item $r \in \mathbf{Q}$
\item $r^2 = 2$
\end{enumerate}
\end{minipage}
\\[3ex]
\scshape Prove: &
False\\
\end{tabular}

\end{document}

在此处输入图片描述

答案2

我会考虑做些不同的事情,而是使用itemize环境:

\begin{itemize}
    \item[Assume]
    \begin{enumerate}
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
    \end{enumerate}
    \item[Prove] False
\end{itemize}

截屏

您可以scshape通过加载enumitem包裹:

\begin{itemize}[font=\sc]
    \item[Assume]
    \begin{enumerate}
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
    \end{enumerate}
    \item[Prove] False
\end{itemize}

截屏

使用itemize环境是有益的,因为它允许分页;tabular环境将事物牢固地包装在一个盒子中。

这是一个完整的 MWE。

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{enumitem}
\begin{document}

\begin{itemize}
    \item[Assume]
    \begin{enumerate}
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
    \end{enumerate}
    \item[Prove] False
\end{itemize}

\begin{itemize}[font=\sc]
    \item[Assume]
    \begin{enumerate}
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
    \end{enumerate}
    \item[Prove] False
\end{itemize}
\end{document}

答案3

还有另一个版本enumitem

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{enumitem}

\begin{document}

\noindent some text before
\begin{description}[font=\normalfont\scshape,nosep,labelwidth=45pt,leftmargin=\dimexpr\labelwidth+\labelsep]
    \item[Assume:]
    \begin{enumerate}[leftmargin=*,nosep]
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
    \end{enumerate}
    \item[Prove:] False
\end{description}
\end{document} 

答案4

这是 cmhughes 解决方案的一个变体。它使用descriptionenumerateenumitem定义两个新列表和一些新命令以保持一致性。

无论如何,我们的想法是提供以下新命令:

\mythm
\myproofsketch
\myassume
\myprove

用于启动证明的各个部分。以及以下环境:

mytheorem

分别包含整个内容并以枚举形式列出假设。

\documentclass{article}
\usepackage{enumitem}
\newlength{\mylstindent}
\settowidth\mylstindent{\bfseries Theorem}
\newlist{mytheoremlst}{description}{1}
\setlist[mytheoremlst]{leftmargin=0pt,itemindent=\mylstindent,style=sameline,font={\normalfont\textsc},noitemsep}
\newlist{myassumptions}{enumerate}{1}
\setlist[myassumptions]{nosep,label=\arabic*.,align=left,itemindent=\mylstindent,before={\hspace*{-\mylstindent}\vspace*{-1.2em}}}
\newcommand*{\myproofsketch}{%
  \vskip 5pt
  \item[Proof Sketch:]}
\newcommand*{\myassume}{\item[Assume:]\begin{myassumptions}}
\newcommand*{\myprove}{\end{myassumptions}\item[Prove:]}
\newcommand*{\mythm}{\item[\normalfont\bfseries Theorem]}
\newenvironment{mytheorem}{%
    \begin{mytheoremlst}%
    }%
    {\end{mytheoremlst}%
    }

\begin{document}

\begin{mytheorem}
    \mythm There does not exist $r$ in $\mathbf{Q}$ such that $r^2=2$.
    \myproofsketch We assume $r^2=2$ for $r \in \mathbf{Q}$ and argue to a \emph{reductio}. Writing $r=\frac{a}{b}$ where the HCD of $a$ and $b$ is $1$, we deduce from $\frac{m}{n}^2=2$\dots
    \myassume%
        \item $r \in \mathbf{Q}$
        \item $r^2 = 2$
     \myprove False
\end{mytheorem}

\end{document}

生成:

使用新命令的定理布局

有人能建议一种更好的设置方法,myassumption让第一个假设与“假设:”垂直对齐,而不会丢失与第二个假设的水平对齐吗?这有点像黑客行为,而且可能很脆弱……

相关内容