我想创建一个列表,并\vfill
在所有项目之间进行操作。如下所示:
\documentclass{article}
\begin{document}
\begin{itemize}
\item One \vfill
\item Two \vfill
\item Three \vfill
\item Four \vfill
\end{itemize}
\end{document}
它可以工作,但如果像这样会更优雅:
\documentclass{article}
\begin{document}
\renewcommand{\itemsep}{\vfill}
\begin{itemize}
\item One
\item Two
\item Three
\item Four
\end{itemize}
\end{document}
但是我得到了错误(因为\itemsep
是长度?)。那么如何实现呢?此外,我希望它只影响本地环境,而不是影响所有此类列表的全局环境。
答案1
\vfill
是一个指令,或多或少告诉 TeX“完成段落并插入空白来填充”。\itemsep
是橡胶长度参数,因此\renewcommand{\itemsep}{\vfill}
完全是错误的。此外,或与
\setlength{\itemsep}{\vfill}
等效的也是错误的,因为不是橡胶长度规范。itemsep=\vfill
enumitem
\vfill
使用
\setlength{\itemsep}{\fill}
或者
itemsep=\fill
如 LaTeX 手册中所述,\vfill
其作用与
\par\vspace{\fill}
并且,类似但不完全相同,\hfill
可以被视为 的缩写\hspace{\fill}
。
如果您\vfill
最后还想要一个自动化功能,我建议您定义一个新环境:
\documentclass{article}
\usepackage[pass,showframe]{geometry} % just to show the final effect
\usepackage{enumitem}
\newenvironment{fullpageitemize}
{\itemize[nolistsep,itemsep=\fill]}
{\vfill\enditemize}
\begin{document}
\begin{fullpageitemize}
\item One
\item Two
\item Three
\item Four
\end{fullpageitemize}
\end{document}
我们nolistsep
删除所有垂直空间,然后重置\itemsep
为\fill
;最后\vfill
在环境结束时执行a。