我有一个由枚举组成的长文档。每个项目由几行组成,可能还包括其他元素,如图形和列表。文档类型要求每个项目都显示在单个页面上,而项目中没有分页符。页面底部未使用的空白区域是可以接受的。
这是一个例子
\documentclass[a5paper,12pt]{article}
\usepackage{blindtext}
\begin{document}
\begin{enumerate}
\item \blindtext
\item \blindtext % don't break this apart
\item very long text here
\end{enumerate}
\end{document}
我知道samepage
环境的解决方案,以及minipage
。问题是我无法将个人\item
s包装到这些环境中,这是我需要的。
needspace
工作,但后来我需要手动确定每个项目的垂直范围(至少这是我的想法)。
这可能会帮助您:调整enumerate
环境的边距,以便文本不会被打破。
以下是关于如何在逐项化环境中进行此类操作的一个答案:https://tex.stackexchange.com/questions/170525/itemize-left-margin
您可以通过以下自动化与每个\clearpage
发布\item
:
\documentclass[a5paper,12pt]{article}
\usepackage{blindtext}
\let\oldenumerate\enumerate% Store \begin{enumerate} in \begin{oldenumerate}
\let\endoldenumerate\endenumerate% Store \end{enumerate} in \end{oldenumerate}
\renewenvironment{enumerate}
{\let\olditem\item% Store \item in \olditem
\renewcommand{\item}{\clearpage\olditem}% Update \item
\oldenumerate}% \begin{enumerate}
{\endoldenumerate}% \end{enumerate}
\begin{document}
\begin{enumerate}
\item \blindtext
\item \blindtext % don't break this apart
\item very long text here
\end{enumerate}
\end{document}
上面的代码以一种将enumerate
代码改为等同于\item
的方式更新\clearpage\item
环境。这样可以确保每个\item
都会在新页面上开始,可能会在底部留下空白区域。
我最后做的是使用enumitem包并将枚举分解成小部件中的部分:
\documentclass[a5paper,12pt]{article}
\usepackage{blindtext}
\usepackage{enumitem} % modified itemize
\begin{document}
\begin{minipage}{\linewidth}
\begin{enumerate}[series=task,start=1,leftmargin=*,resume]
\item \blindtext
\end{enumerate}
\end{minipage}
\begin{minipage}{\linewidth}
\begin{enumerate}[resume*=task]
\item \blindtext
\end{enumerate}
\end{minipage}
\end{document}
我更喜欢不太复杂的东西,但至少它没有手动分页。