我已经定义了一个环境,即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
使用。恢复系列时,使用(我认为这将是一个更好的关键字,但我尽可能遵循您问题中的命名方案)。当您没有向环境传递这样的参数时,您将从不可恢复系列中获得一个示例。start
Exmps
continued
resume
start
Exmps
请注意,我用 替换了您的 ,\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}
你会得到: