我使用下面的宏为两行诗定义了一个诗歌环境。并且可以使两行诗与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
不应该“看到”我们人为的负空间的东西。