Lamport 证明风格,enumitem,增强嵌套级别

Lamport 证明风格,enumitem,增强嵌套级别

两年前,用户 egreg 发布了一个很好的解决方案,

enumitem:使用变量在本地打开和关闭标签设置? 看起来像这样

\usepackage{enumitem}
\makeatletter
\newenvironment{lamport}{%
  \setenumerate{
    label=$\langle$\the\@enumdepth$\rangle$\arabic*.,
    ref=$\langle$\the\@enumdepth$\rangle$\arabic*,
    nosep
  }
}{}
\makeatother

可以模仿 Lamport 证明风格

https://lamport.azurewebsites.net/pubs/proof.pdf http://lamport.azurewebsites.net/latex/pf2.pdf http://lamport.azurewebsites.net/latex/latex.html

但是它只允许 4 个嵌套级别(这是 LaTeX 的默认设置)

因此下面的例子不起作用:

\begin{lamport}
  \begin{enumerate}
    \item \label{item:nest2:1}
    The theorem  follows from Lemma 1\\
    \textsc{Proof of Lemma 1:}
    \begin{enumerate}
      \item \label{item:nest2:2}
      Lemma 1 follows from Lemma 2\\
      \textsc{Proof of Lemma 2:}
      \begin{enumerate}
        \item \label{item:nest2:4}
        Lemma 2 follows from  Lemma 3\\
        \textsc{Proof of Lemma 3:}
        \begin{enumerate}
          \item \label{item:nest2:5}
          Lemma 3 follows from Lemma 4\\
          \textsc{Proof of Lemma 4}
          \begin{enumerate}
            \item \label{item:nest2:6}
            Lemma 4 follows from Lemma 5
          \end{enumerate}
        \end{enumerate}
      \end{enumerate}
    \end{enumerate}
  \end{enumerate}
\end{lamport}

简而言之,如何将嵌套级别增强到至少 10 级(这是否是个好主意,是另一回事,但我宁愿有这种可能性,如果需要的话就不使用它

感谢 Uwe Brauer

答案1

只需添加\renewlist{enumerate}{enumerate}{<depth>}到定义中。这里我选择了 9。另外,请注意,\setenumerate(和\setitemize\setdescription) 已被弃用,取而代之的是\setlist[<envname>]

\documentclass{article}

\usepackage{enumitem}

\makeatletter
\newenvironment{lamport}{%
  \renewlist{enumerate}{enumerate}{9}
  \setlist[enumerate]{
    label=$\langle$\the\@enumdepth$\rangle$\arabic*.,
    ref=$\langle$\the\@enumdepth$\rangle$\arabic*,
    nosep
  }
}{}
\makeatother

\begin{document}

\begin{lamport}
  \begin{enumerate}
    \item \label{item:nest2:1}
    The theorem follows from Lemma 1\\
    \textsc{Proof of Lemma 1:}
    \begin{enumerate}
      \item \label{item:nest2:2}
      Lemma 1 follows from Lemma 2\\
      \textsc{Proof of Lemma 2:}
      \begin{enumerate}
        \item \label{item:nest2:4}
        Lemma 2 follows from  Lemma 3\\
        \textsc{Proof of Lemma 3:}
        \begin{enumerate}
          \item \label{item:nest2:5}
          Lemma 3 follows from Lemma 4\\
          \textsc{Proof of Lemma 4:}
          \begin{enumerate}
            \item \label{item:nest2:6}
            Lemma 4 follows from Lemma 5\\
            \textsc{Proof of Lemma 5:}
            \begin{enumerate}
              \item \label{item:nest2:7}
              Lemma 5 follows from Lemma 6\\
              \textsc{Proof of Lemma 6:} 
            \end{enumerate}
          \end{enumerate}
        \end{enumerate}
      \end{enumerate}
    \end{enumerate}
  \end{enumerate}
\end{lamport}

\end{document}

枚举

相关内容