Vertically align a list to the bottom of the page

When a list (in the example below, itemize, but I'm having the same trouble with lists defined using enumitem, and the exe environment of package gb4e) occurs at the bottom of the page, the last item is not aligned to the bottom. There is some vertical space between the last item and the bottom of the page. I would like to get rid of it.

\documentclass{book}
\begin{document}
dummy page 1 (to easily see the problem in the double page view)
\newpage
top of page 2
\vfill
bottom of page 2
\newpage
top of page 3
\vfill
\begin{itemize}
\item item 1
\item item 2
\item item 3 (I'd like this to be aligned with the last line on the facing
page)
\end{itemize}
\end{document}

This vertical space (\topsep plus \partopsep) of course makes sense when a paragraph follows the list on the same page, so just setting \topsep and \partopsep to 0pt is not a good solution. Plus, these parameters control the spacing before the list as well.

I was able to manually solve this using enumitem's key after, but I would prefer an automatic solution. I guess such a solution would also inflence page breaks, which is a good thing.

\begin{itemize}[after=\vspace*{-\topsep}\vspace{-\partopsep}]
\item item 1
\item item 2
\item item 3 (I'd like this to be aligned with the last line on the facing
page)
\end{itemize}

CLARIFICATION. I'd like to have a solution which would test whether the list occurs at the bottom of the page. If so, the vertical space after it should be removed. Otherwise, the space should stay.

• Would defining a new environment that appends the negative vspace count as your automatic solution? – Charles Stewart Sep 23 '15 at 13:07
• If it does that only at the bottom of the page, sure! – Sašo Živanović Sep 23 '15 at 13:19

It's not elegant, but it works.

\documentclass{book}
\usepackage{showframe}
\begin{document}
top of page
\vfill
\noindent\begin{minipage}{\textwidth}
\begin{itemize}
\item item 1
\item item 2
\item item 3 (I'd like this to be aligned with the last line on the facing
page)
\end{itemize}
\end{minipage}
\end{document}

Aha! I found the culprit! One can redefine \enditemize to do this automatically.

\documentclass{book}
\usepackage{showframe}
\begin{document}
top of page
\vfill
\begin{itemize}
\item item 1
\item item 2
\item item 3 (I'd like this to be aligned with the last line on the facing
page)
\makeatletter
\makeatother
\end{itemize}
\end{document}

You could place the itemize environment inside a figure environment -- a table environment works too... -- and set [b!] as the location placement specifier. Then, use \unskip after \end{enumerate} and before \end{figure} to eliminate the space below the enumerate environment. No need for a minipage environment or \vfill instructions.

Note that as long as no \caption directive is issued, the reader will never know that a figure environment is being employed.

\documentclass{book}
\usepackage{showframe}
\begin{document}
top of page
\begin{figure}[b!] % <-- the "b!" option is crucial
\begin{itemize}
\item item 1
\item item 2
\item item 3 (I'd like this to be aligned with the last line on the facing
page)
\end{itemize}\unskip
\end{figure}
\clearpage % advance to next page
\end{document}