有条件地恢复列表

有条件地恢复列表

我已经定义了一个环境,即Examples

\newtheoremstyle{myexcstyle}{3ex}{3ex}{}{}{\scshape}{:}{.5em}{}
\theoremstyle{myexcstyle}
\newtheorem*{exmps}{Examples}
\newenvironment{Exmps}[1][]
{%
        \ifthenelse{\isempty{#1}}
    {\begin{exmps}}{\begin{exmps}[#1]}
        \leavevmode\vspace{-1ex}
        \begin{enumerate}[label=\arabic*., font=\bfseries, itemsep=1.5ex]
        }
        {
        \end{enumerate}
    \end{exmps}
}

我需要的是,当注释/评论[continued]通过环境时,它应该恢复编号enumerate。这应该只在评论存在时发生。否则它应该总是开始一个新列表。理想情况下,以下 MWE

\documentclass[openany]{book}
\usepackage{amssymb,amsthm}
\usepackage{geometry}
\usepackage[inline]{enumitem}
\usepackage{mathtools}
\usepackage{thmtools}
\usepackage{xifthen}
\newtheoremstyle{myexcstyle}{3ex}{3ex}{}{}{\scshape}{:}{.5em}{}
\theoremstyle{myexcstyle}
\newtheorem*{exmps}{Examples}
\newenvironment{Exmps}[1][]
{%
        \ifthenelse{\isempty{#1}}
        {\begin{exmps}}{\begin{exmps}[#1]}
        \leavevmode\vspace{-1ex}
            \begin{enumerate}[label=\arabic*., font=\bfseries, itemsep=1.5ex]
            }
            {
            \end{enumerate}
        \end{exmps}
}

\begin{document}

    \begin{Exmps}
        \item   Example 1
    \end{Exmps}

    \begin{Exmps}
        \item   Example 1
    \end{Exmps}

%   After some theorems and results on the same topic

    \begin{Exmps}[continued]
        \item   Example 2
    \end{Exmps}

\end{document} 

应该生成以下输出。我该如何实现这一点?

在此处输入图片描述

答案1

我建议使用etoolbox\ifstrequal宏。为了能够(非本地)交错不可恢复和可恢复的示例,我相信您需要一个专用的enumerate 系列换句话说enumitem,我在这里调用了它。当然,如果您需要几个独立的可恢复系列,resumable-series系列名称可以来自您环境的参数。Exmps

启动系列时,在环境的可选参数中resumable使用。恢复系列时,使用(我认为这将是一个更好的关键字,但我尽可能遵循您问题中的命名方案)。当您没有向环境传递这样的参数时,您将从不可恢复系列中获得一个示例。startExmpscontinuedresumestartExmps

请注意,我用 替换了您的 ,\leavevmode\vspace{-1ex}\mbox{}\par\nobreak\vskip -0.5ex\@nobreaktrue确保示例标题后没有分页符。

\documentclass{article}
\usepackage{amsthm}
% \usepackage{thmtools} % not needed here
\usepackage{enumitem}
\usepackage{etoolbox}

\newtheoremstyle{myexcstyle}{3ex}{3ex}{}{}{\scshape}{:}{.5em}{}
\theoremstyle{myexcstyle}

\newtheorem*{exmps}{Examples}

\makeatletter
\newcommand*{\my@start@example}[2]{%
  \begin{exmps}#1%
  % \@nobreaktrue prevents the list environment used by enumerate from
  % inserting \@beginparpenalty, which would allow a page break.
  \mbox{}\par\nobreak\vskip -0.5ex\@nobreaktrue
  \begin{enumerate}[label=\arabic*., font=\bfseries, itemsep=1.5ex, #2]%
}

\newenvironment{Exmps}[1][]
  {%
    \ifstrequal{#1}{start}
      {\my@start@example{}{series=resumable-series}}%
      {%
        \ifstrequal{#1}{continued}
          {\my@start@example{[continued]}{resume=resumable-series}}
          {\my@start@example{}{}}%
      }%
  }
  {\end{enumerate}%
   \end{exmps}%
  }
\makeatother

\begin{document}

  \begin{Exmps}
      \item   Example 1
  \end{Exmps}

  \begin{Exmps}[start]       % start the 'resumable-series' series
      \item   Example 1
  \end{Exmps}

  \begin{Exmps}[continued]   % resume the 'resumable-series' series
      \item   Example 2
  \end{Exmps}

\end{document}

在此处输入图片描述

使用以下输入:

\begin{Exmps}
    \item   Non-resumable
    \item   other item
\end{Exmps}

\begin{Exmps}[start]       % start the 'resumable-series' series
    \item   Resumable, first
    \item   other item
    \item   other item
\end{Exmps}

\begin{Exmps}
    \item   Non-resumable
    \item   other item
\end{Exmps}

\begin{Exmps}[continued]
    \item   Resumable, an item
    \item   other item
\end{Exmps}

\begin{Exmps}[continued]
    \item   Resumable, an item
    \item   Last item.
\end{Exmps}

你会得到:

在此处输入图片描述

相关内容