\vfill 列表中的项目之间

\vfill 列表中的项目之间

我想创建一个列表,并\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

  1. \vfill是一个指令,或多或少告诉 TeX“完成段落并插入空白来填充”。

  2. \itemsep是橡胶长度参数,因此\renewcommand{\itemsep}{\vfill}完全是错误的。

  3. 此外,或与\setlength{\itemsep}{\vfill}等效的也是错误的,因为不是橡胶长度规范。itemsep=\vfillenumitem\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。

在此处输入图片描述

相关内容