在逐项列举或枚举之后清除页面,但前提是该页面是最外层

在逐项列举或枚举之后清除页面,但前提是该页面是最外层

我正在编写一份技术文档,其中每一页都有一张图片,后面跟着 itemize 或 enumerate 环境中的信息/操作列表。我想确保在每次列出此类列表后清除页面,而无需插入手动\clearpage命令。重新定义 itemize/enumerate 环境以使其运行的最佳方法是什么\clearpage?一个困难是可以有嵌套列表,我只想在最外层列表结束后清除页面。

例如:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=\textwidth]{image1.png}
\begin{enumerate}
    \item First item
    \item Second item
        \begin{enumerate}
        \item Sub-list 1
        \item Sub-list 2
        \end{enumerate}
    \item Third item
\end{enumerate}

\includegraphics[width=\textwidth]{image2.png}
...

实际上,图片是使用带有[t]标志的图形命令包含的。我遇到的问题是,如果列表很短,则下一个列表将从同一页开始,而不是从下一页的图像开始。

答案1

我将使用该enumitem包并创建一个新的列表类型,在序言中写类似这样的内容(假设您最多有 3 个级别):

\usepackage{enumitem}
\newlist{info}{enumerate}{3}
\setlist[info,1]{after=\clearpage}

这样,每个第一的级别info列表以 结尾\clearpage。当然,在 的参数中\setlist,您可以添加其他规范,例如格式标签、列表布局等。

答案2

我设法自己找到了答案,其他人可能会觉得这很有用。由于我不想改变使用的环境(如@Bernard的答案),因此需要改变枚举的工作方式。在乳胶源中,我发现了环境的定义方式,这是我的解决方案:

\makeatletter
\newcommand\myendenum{%
    \ifnum \@enumdepth > 1%
        \endlist%
    \else%
        \endlist\clearpage%
    \fi}
\let\endenumerate\myendenum
\makeatother

检查\@enumdepth确保子列表不会中断。我的第一个猜测是与 0 进行比较,但 1 却如我所愿。

相关内容