\filbreak を使用し、\\ も使用してすべての段落内で改ページを回避する

\filbreak を使用し、\\ も使用してすべての段落内で改ページを回避する

私はいくつかの歌詞を書いています。可能であれば、段落内の改ページよりも部分的に空白のページを優先する必要があります。\widowpenalties 1 10000と を使用して\raggedbottomも機能しませんでした。

\filbreakこれまでは、各段落 (= スタンザ) の後に配置することによってのみ、目的の動作を実現できました。

\documentclass[12pt]{article}
\usepackage[paperwidth=16cm, paperheight=9cm]{geometry}
\usepackage{nopageno}
\setlength\parindent{0pt}
\setlength\parskip{1em}

% Manually adding \filbreak at the end of stanza. This works as expected:
\begin{document}
\raggedright
Roads go ever ever on,\\
Over rock and under tree,\\
By caves where never sun has shone,\\
By streams that never find the sea;\\
Over snow by winter sown,\\
And through the merry flowers of June,\\
Over grass and over stone,\\
And under mountains in the moon.\filbreak

Roads go ever ever on\\
Under cloud and under star,\\
Yet feet that wandering have gone\\
Turn at last to home afar.\\
Eyes that fire and sword have seen\\
And horror in the halls of stone\\
Look at last on meadows green\\
And trees and hills they long have known.\filbreak
\end{document}

手動の\filbreakでコンパイル

しかし、私はこれを各段落ごとに手動で入力したくありません。私は以下の方法を試しました。これ回答。問題は、詩の間の正しい改行を実現するためにも を使用する必要があることです\\。前述の回答の方法を使用すると、\filbreakごとに になる\\ため、機能しません。

\documentclass[12pt]{article}
\usepackage[paperwidth=16cm, paperheight=9cm]{geometry}
\usepackage{nopageno}
\setlength\parindent{0pt}
\setlength\parskip{1em}

% Trying to add \filbreak after each paragraph automatically. Not working:
\makeatletter
    \def\filbreak{!\@@par\vfil\penalty-200\vfilneg}
    % Exclamation mark is there just to show, that \\ is also treated like \par.
\makeatother

\begin{document}
\raggedright
\let\par\filbreak
Roads go ever ever on,\\
Over rock and under tree,\\
By caves where never sun has shone,\\
By streams that never find the sea;\\
Over snow by winter sown,\\
And through the merry flowers of June,\\
Over grass and over stone,\\
And under mountains in the moon.

Roads go ever ever on\\
Under cloud and under star,\\
Yet feet that wandering have gone\\
Turn at last to home afar.\\
Eyes that fire and sword have seen\\
And horror in the halls of stone\\
Look at last on meadows green\\
And trees and hills they long have known.
\end{document}

再定義された\parでコンパイル

どういうわけか、すべての段落の後にカスタム コマンド ( ) を配置することは可能です\filbreakが、すべての の後には配置しません。と は実際には\\どのように接続されていますか? 私は、この質問とは関係のない他の特定の動作を使用して独自の詩パッケージを作成しているため、他の詩パッケージを使用することを好みません。\par\\

答え1

段落間でのみ改ページが許可されるように、 を設定した環境内\\で に変更することをお勧めします。\newlinepoem\interlinepenalty=10000

\documentclass[12pt]{article}
\usepackage[paperwidth=16cm, paperheight=9cm]{geometry}
\usepackage{nopageno}
\setlength\parindent{0pt}
\setlength\parskip{1em}

\newenvironment{poem}{%
  \begin{flushleft}\let\\\newline
  \interlinepenalty=10000
}{\end{flushleft}}

\begin{document}

\begin{poem}
Roads go ever ever on,\\
Over rock and under tree,\\
By caves where never sun has shone,\\
By streams that never find the sea;\\
Over snow by winter sown,\\
And through the merry flowers of June,\\
Over grass and over stone,\\
And under mountains in the moon.

Roads go ever ever on\\
Under cloud and under star,\\
Yet feet that wandering have gone\\
Turn at last to home afar.\\
Eyes that fire and sword have seen\\
And horror in the halls of stone\\
Look at last on meadows green\\
And trees and hills they long have known.
\end{poem}

\end{document}

ここに画像の説明を入力してください

答え2

paraフックを使用し\filbreakて、スタンザ内での改ページを少なくすることができます。\interlinepenalty

\documentclass[12pt]{article}
\usepackage[paperwidth=16cm, paperheight=9cm]{geometry}
\usepackage{nopageno}
\setlength\parindent{0pt}
\setlength\parskip{1em}
\AddToHook{para/after}{\filbreak}
\showoutput
% Manually adding \filbreak at the end of stanza. This works as expected:

\begin{document}

\interlinepenalty=9000

Roads go ever ever on,\\
Over rock and under tree,\\
By caves where never sun has shone,\\
By streams that never find the sea;\\
Over snow by winter sown,\\
And through the merry flowers of June,\\
Over grass and over stone,\\
And under mountains in the moon.

Roads go ever ever on\\
Under cloud and under star,\\
Yet feet that wandering have gone\\
Turn at last to home afar.\\
Eyes that fire and sword have seen\\
And horror in the halls of stone\\
Look at last on meadows green\\
And trees and hills they long have known.
\end{document}

関連情報