如何防止多列环境中的列中断

如何防止多列环境中的列中断

我正在排版一本简单的歌曲集,并希望一些歌曲显示在两列中(我使用multicol包)。但是,我想避免在节内插入分栏符。如果有类似samecol环境的东西就太好了。

我尝试应用来自防止多列索引中的列中断,但没有得到预期的结果。

如有任何建议我将不胜感激。

答案1

我在寻找其他内容时偶然发现了答案。为了防止节内的分栏,我用\\*而不是来标记行尾\\。例如:

\begin{multicols}{2}
  \begin{verse}       
     I heard, I heard, the old man say,\\*
     John Kanaka-naka tu-lai-ay!\\*
     Today, today is a holiday,\\*
     John Kanaka-naka tu-lai-ay!

     Tu-lai-ay, Oh! Tu-lai-ay!\\*
     John Kanaka-naka tu-lai-ay!
  \end{verse} 
 \end{multicols}

我意识到这并不能解决防止列中断的一般问题,但却完全满足了我的需求。

答案2

我建议你看看需要空间包及其宏\Needspace{}。应使用需要保持在一起的行数(以 的倍数表示)来调用此宏\baselineskip。因此,\Needspace{5\baselineskip}将在节开始前强制分栏(如果需要)以将接下来的五行保持在一起。请注意,它只能在段落(节)之间使用。

答案3

\linewidth我找到了一个适合我的解决方案,尽管在不同情况下可能需要调整需要乘以的因子:

\newenvironment{stanza}
   {\begin{minipage}{1.1\linewidth} \begin{verse}}
   {\end{verse} \end{minipage}}

在序言中,并使用stanza环境来处理麻烦的诗节。

相关内容