防止多列环境中的诗句换行

防止多列环境中的诗句换行

我试图在多列环境中加入一节诗,以使诗歌的行间不出现间断。

我曾希望

\settowidth{\versewidth}{}
\begin{verse}[\versewidth]

会为我做到这一点。但事实并非如此。

考虑MWE:

\documentclass{book}
\usepackage{lipsum}
\usepackage{verse}
\usepackage{xcolor}
\usepackage{multicol}
\setlength{\columnsep}{1cm}

\begin{document}
\begin{multicols}{2}
\lipsum[3]
\settowidth{\versewidth}{Behind the clouds the sun is shining}
\begin{verse}[\versewidth]
\begin{footnotesize}
\textbf{\textcolor{red}{Be still sad heart. stop repining, \\
Behind the clouds the sun is shining; \\
Yours is the common fate of all--- \\
Into each life some rain must fall.}}
\end{footnotesize}
\end{verse}
\end{multicols}
\end{document}

输出

在此处输入图片描述

由于我使用的footnotesize是诗句字体,所以段落下方似乎应该有足够的空间来实现这一点,但事实并非如此。

问题:如何增加诗句环境的默认宽度,以便每行诗句在段落下都完整显示?在这种情况下,如果最长的一行略微超出列宽,我不会反对——尽管我不确定 LaTeX 是否允许这样做。

谢谢。

答案1

用于\settowidth{\versewidth}{\footnotesize \bfseries Behind the clouds the sun is shining}测量最长线的正确长度。

A

非常接近。列宽为 158.27 pt。

\bfseries不带nor 的诗句宽度\footnotesize为 158.97pt,略大一些。

正确的诗句宽度是 156.21 pt。

\documentclass{book}
\usepackage{lipsum}
\usepackage{verse}
\usepackage{xcolor}
\usepackage{multicol}
\setlength{\columnsep}{1cm}

\begin{document}    
         
    \begin{multicols}{2}    
            
        \lipsum[3]
                
        \settowidth{\versewidth}{\footnotesize \bfseries Behind the clouds the sun is shining} % changed <<<<<<
        \begin{verse}[\versewidth]
                \footnotesize \bfseries \textcolor{red}{
                    Be still sad heart. stop repining, \\
                    Behind the clouds the sun is shining; \\
                    Yours is the common fate of all--- \\
                    Into each life some rain must fall.}        
        \end{verse}

    \end{multicols}
\end{document}

相关内容