![在逐项列举或枚举之后清除页面,但前提是该页面是最外层](https://linux22.com/image/339607/%E5%9C%A8%E9%80%90%E9%A1%B9%E5%88%97%E4%B8%BE%E6%88%96%E6%9E%9A%E4%B8%BE%E4%B9%8B%E5%90%8E%E6%B8%85%E9%99%A4%E9%A1%B5%E9%9D%A2%EF%BC%8C%E4%BD%86%E5%89%8D%E6%8F%90%E6%98%AF%E8%AF%A5%E9%A1%B5%E9%9D%A2%E6%98%AF%E6%9C%80%E5%A4%96%E5%B1%82.png)
我正在编写一份技术文档,其中每一页都有一张图片,后面跟着 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 却如我所愿。