\vfill
在两个文本之间使用效果如下:
\newpage
bla
\vfill
blabla
但如果前面没有文本,它就不起作用:
\newpage
\vfill
blabla
如何实现这一点?
答案1
在之前添加一个空框如\mbox{}
或\hbox{}
(\null
简称或)\vfill
使其起作用。
\newpage
\null
\vfill
blabla
答案2
\vspace
LaTeX 提供了添加空格量的宏,\vspace{\fill}
与 有相同的效果\vfill
,也有相同的缺点。LaTeX还提供1 个宏,\vspace*
表示“我真的、真的希望你在这里留出空间。”这样\vspace*{\fill}
就可以了。也就是说,
\newpage
\vspace*{\fill}%
blabla
将其blabla
置于底部。
1实际上,\vspace
和\vspace*
是相同的宏,但将它们视为变体宏是一个方便的谎言。
答案3
了解 TeX 的分页机制如何工作非常重要,至少要了解其主要方面。
当 TeX 决定在哪里分页时,它会将不适合该页面的内容推回到“最近贡献列表”并进行分页。
通常不适合的是段落的最后一行,但垂直空间也可能发生中断(这种中断发生在总是在垂直空格之前)。现在执行了中断并将垂直空格放回去重新考虑;但是没有人希望以垂直空格开始一个正常的页面,所以 TeX 让它消失。
除非这个垂直空间用以下方式声明\vspace*
:这种垂直空间是绝不算是休息一下,就像一个隐形的大人物。
如何选择分页符并不重要:即使在文档的开头也会发生这种情况。如果你说
\begin{document}
\vspace{3cm}
这个垂直空间就不会出现。
使用\null
after\newpage
可以有效避免垂直空间的消失,因为它\null
会在页面上放置一个空框前(\vspace
类似于零宽度和高度字符)。
因此,建立一个奉献页面的“好”方法是
\cleardoublepage
\thispagestyle{empty}
\vspace*{\stretch{1}}
\begin{flushleft}
\itshape Dedicated to the people on \TeX.SX\\
on the occasion of the first birthday\\
of that wonderful site
\end{flushleft}
\vspace{\stretch{2}}
\cleardoublepage
实际上\vspace*{\stretch{1}}
相当于\null\vfill
;但用 指定拉伸\stretch
可以产生很好的效果:这里奉献后的空白是其之前的空间的两倍。
答案4
~
是一个不间断空格。只需将其放在页面顶部即可:
\newpage
~\vfill
blabla