填充段落前的垂直空间

填充段落前的垂直空间

我正在处理较小的页面,每页会有一、二或三个短段落。

我希望这些段落垂直居中并且间距大致相等。

我接近\setlength{\parskip}{\fill} 并定义一个\page命令,即\vspace{\fill}\newpage\vfill\newpage。但是,我无法在每页的第一段之前获得相等的空间。

以下是 MWE 演示此问题

在此处输入图片描述

\vspace{\fill}/\vfill在分页符之后被丢弃,因此在第一段之前不执行任何操作,但会创建一个比页面上后面的\vspace*{\fill}内容大得多的空间。\parskip\vspace{\fill}

\documentclass{article}
\usepackage[paperheight=88mm, paperwidth=62mm, margin=4mm, nomarginpar, showframe]{geometry}

\setlength{\parskip}{\fill}
\setlength{\parindent}{0pt}
\newcommand{\page}{\vspace{\fill}\newpage\vspace{\fill}}

\begin{document}

\page

This should be at approximately 50\%.

\page

This should be at approx 33\%.

This should be at approx 66\%.

\page

This should be at approx 25\%.

This should be at approx 50\%.

This should be at approx 75\%.

\page
\vspace*{\fill}

This page starts with an explicit \verb|\vspace*{\fill}|

You can see the first space is larger than the others.

This should be at 75\%.

\vspace{\fill}
\end{document}

请注意,还有几个类似的未解答的问题:

在段落前后添加空格 如何在段落前后添加空格?

答案1

我发现使用时行为接近\vspace*{1\fill},但无法解释原因。感谢 David Carlisle 对我的另一个(已删除)答案的评论,我想我明白发生了什么。

\vspace*{1\fill}添加零空格,然后开始一个新段落(添加换行符,然后添加隐式\parskip(又名\fill)。因此,答案是使用\vspace*{}撤消换行符,然后让隐式\parskip处理其余部分。

\newcommand{\nextpage}{\vspace{\fill}\newpage\vspace*{-\baselineskip}} 

这是修正后的 MWE 和结果。它并不完美。使用我的卡尺在​​我的物理屏幕上测量,更好的值是\vspace*{-1.2\baselineskip}。我不明白为什么,但这已经足够好了。

\documentclass{article}
\usepackage[paperheight=88mm, paperwidth=62mm, margin=4mm, nomarginpar, showframe]{geometry}

\setlength{\parskip}{\fill}
\setlength{\parindent}{0pt}
\newcommand{\nextpage}{\vfill\newpage\vspace*{-\baselineskip}}

\begin{document}
\nextpage

This should be at approximately 50\%.

\nextpage

This should be at approx 33\%.

This should be at approx 66\%.

\nextpage

This should be at approx 25\%.

This should be at approx 50\%.

This should be at approx 75\%.

\nextpage

This page starts with an explicit \verb|\vspace*{\fill}|

You can see the first space is larger than the others.

This should be at 75\%.

\vspace{\fill}
\end{document}

在此处输入图片描述

我觉得第一段有点低

相关内容