\vspace*{\fill}
如果只有一行,效果很好。假设我有以下文本:
1. This is the first line.
2. Some random text here.
3. This has to be centered.
4. Last line.
如果我将其放在\vspace*{\fill}
第三行之前和之后,它将位于第二行和第四行之间。我需要从顶部到底部的垂直空间,而不是最后一行和下一行之间的垂直空间。
答案1
我认为你可以玩 parboxes。
在我的示例的第二页上(第一页仅用于比较),您会发现三个高度相同但内容对齐方式不同的 parbox(顶部、中心、底部)。
在第三页上,您会发现两个高度相同且顶部和底部对齐的 parbox(页面的第一个和最后一个),中间有一些被\vspace*{\fill}
s 包围的文本。
如果这不能解决您的问题,请编辑您的问题并添加最小工作示例(MWE)。
\documentclass{article}
\begin{document}
\noindent This is for comparison.
\vspace*{\fill}
\noindent This has to be centered.
\vspace*{\fill}
\noindent Last line.
\newpage
% three parboxes of the same height with different content alignment
\noindent\parbox[][.333\textheight][t]{\linewidth}{This is the first line.
Some random text here.
Some other random text here.
Some other random text here.}
\noindent\parbox[][.333\textheight][c]{\linewidth}{This has to be centered.}
\noindent\parbox[][.333\textheight][b]{\linewidth}{Last line.}
\newpage
% two parboxes of the same height with different content alignment with some text between them
\noindent\parbox[][.4\textheight][t]{\linewidth}{This is the first line.
Some random text here.
Some other random text here.
Some other random text here.}
\vspace*{\fill}
\noindent This has to be centered.
\vspace*{\fill}
\noindent\parbox[][.4\textheight][b]{\linewidth}{Last line.}
\end{document}
答案2
使用零高度框。无需猜测任何长度。
\documentclass{article}
\usepackage{lipsum,showframe} % just for the example
\newenvironment{zerotext}[1]
{\dimen0=\parindent
\par\noindent
\begin{minipage}[#1][0pt]{\textwidth}
\parindent=\dimen0}
{\end{minipage}}
\begin{document}
\begin{zerotext}{t}
\lipsum[2]
\end{zerotext}
\vfill
\lipsum[4]
\vfill
\begin{zerotext}{b}
\lipsum[5]
\end{zerotext}
\end{document}