当列表(在下面的示例中,,itemize
但我在使用enumitem
和exe
包的环境定义的列表时也遇到了同样的问题gb4e
)出现在页面底部时,最后一项不会与底部对齐。最后一项和页面底部之间有一些垂直空间。我想摆脱它。
\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}
当然,当段落位于同一页的列表之后时,此垂直间距(\topsep
加上)是有意义的,因此仅设置和不是一个好的解决方案。另外,这些参数还控制列表前的间距。\partopsep
\topsep
\partopsep
0pt
我可以使用enumitem
's 键手动解决此问题after
,但我更喜欢自动解决方案。我猜这样的解决方案也会影响分页符,这是一件好事。
\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}
澄清一下。我想要一个解决方案来测试列表是否出现在页面底部。如果是,则应删除其后的垂直空间。否则,应保留该空间。
答案1
虽然不是很优雅,但是却很有效。
\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}
啊哈!我找到罪魁祸首了!可以重新定义 \enditemize 来自动执行此操作。
\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
\@topsepadd=0pt
\makeatother
\end{itemize}
\end{document}
答案2
您可以将itemize
环境放在环境中figure
——table
环境也可以……——并设置[b!]
为位置放置说明符。然后,使用\unskip
after\end{enumerate}
和 before\end{figure}
消除空格以下枚举环境。无需minipage
环境或\vfill
指令。
请注意,只要没有\caption
发出指令,读者就永远不会知道figure
正在使用环境。
\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}