如何避免定义的段落出现在页面底部?

如何避免定义的段落出现在页面底部?

我使用下面的宏为两行诗定义了一个诗歌环境。并且可以使两行诗与samepage环境保持连续。

但是我如何让它们不在页面的最后一行结束。

\def\shloka{\bgroup\bfseries\begin{flushleft}\fontsize{13}{15}\selectfont\leftskip=10pt\begin{samepage}}
\def\endshloka{\end{samepage}\end{flushleft}\egroup}

答案1

无需使用任何额外的包,可以按如下方式完成:

<material without pagebreak, e.g., your two line poem>
\vspace*{\baselineskip}%
\allowbreak
\vspace{-\baselineskip}%
\vspace{0pt}%

解释:

  • 第一个\vspace*添加了一个垂直空格,但没有添加之前的换行符
  • LaTeX\allowbreak将检查是否可以在此处分页。如果这导致页面过满,LaTeX 将在您的诗歌之前分页。如果这是一个可能的分页点,它将被记录下来,并可能在稍后被选为最佳分页点(在这种情况下,一个基线跳跃的空间将最终位于底部)
  • 如果此时选择分页,则以下两个垂直空格将消失在分页符中
  • 然后我们备份,这样我们就可以直接在最后一行文本之后排版进一步的材料,而不需要额外的空间。
  • 添加这个\vspace{0pt}只是为了防止那些\addvspace不应该“看到”我们人为的负空间的东西。

相关内容