詩節内での改ページを避ける

詩節内での改ページを避ける

詩をタイプセットしようとしているのですが、スタンザ内で改ページされないように、スタンザ間で強制的に改ページを行いたいと思っています。以下の例に示すように、さまざまな方法を探しましたが、どれもうまくいかないようです。これを行う方法はありますか?

\documentclass[12pt]{scrartcl}
\usepackage[letterpaper,margin=1in]{geometry}
\setlength{\parskip}{12pt}

% try not to have a page break in the middle of a stanza
\widowpenalty=10000
\clubpenalty=10000
\linepenalty=400
  \raggedbottom

\begin{document}

\begin{verse}

Lorem \textbf{ipsum} dolor sit amet, \emph{consectetur}\\adipisicing
elit, sed do eiusmod\\tempor incididunt ut labore et\\dolore magna
aliqua. Ut enim

ad minim veniam, quis nostrud\\exercitation ullamco laboris\\nisi ut
aliquip ex ea commodo\\consequat. Donec\\gravida quis augue in
tincidunt.\\Ut pulvinar ac sapien venenatis dignissim.\\Fusce vulputate
congue dui, at dictum risus congue vel.\\Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

Lorem ipsum dolor sit amet,\\consectetur adipiscing elit.\\Sed
ullamcorper est in erat efficitur congue. Integer ullamcorper ac lorem
non maximus. Aliquam ut placerat nisl, eget euismod ante.

Sed ut perspiciatis\\unde omnis iste\\natus error sit\\voluptatem
accusantium.

Lorem \textbf{ipsum} dolor sit amet, \emph{consectetur}\\adipisicing
elit, sed do eiusmod\\tempor incididunt ut labore et\\dolore magna
aliqua. Ut enim

ad minim veniam, quis nostrud\\exercitation ullamco laboris\\nisi ut
aliquip ex ea commodo\\consequat. Donec\\gravida quis augue in
tincidunt.\\Ut pulvinar ac sapien venenatis dignissim.\\Fusce vulputate
congue dui, at dictum risus congue vel.\\Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

ad minim veniam, quis nostrud\\exercitation ullamco laboris\\nisi ut
aliquip ex ea commodo\\consequat. Donec\\gravida quis augue in
tincidunt.\\Ut pulvinar ac sapien venenatis dignissim.\\Fusce vulputate
congue dui, at dictum risus congue vel.\\Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

ad minim veniam, quis nostrud\\exercitation ullamco laboris\\nisi ut
aliquip ex ea commodo\\consequat. Donec\\gravida quis augue in
tincidunt.\\Ut pulvinar ac sapien venenatis dignissim.\\Fusce vulputate
congue dui, at dictum risus congue vel.\\Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.


\end{verse}

\end{document}

答え1

行と行末のペナルティは内部的には効果がなくverse \\\par各行はそれらのペナルティが作用する Tex プリミティブ レベルでは別々の段落になります。\\*ページ区切りを防ぐには、次のように使用できます。

このバージョンでは、未定義のページ スタイルに関するエラーは生成されないことに注意してください。

\documentclass[12pt]{scrartcl}
%\pagestyle{fancy}
\usepackage[letterpaper,margin=1in]{geometry}
\setlength{\parskip}{12pt}



\begin{document}

\begin{verse}

Lorem \textbf{ipsum} dolor sit amet, \emph{consectetur}\\*adipisicing
elit, sed do eiusmod\\*tempor incididunt ut labore et\\*dolore magna
aliqua. Ut enim

ad minim veniam, quis nostrud\\*exercitation ullamco laboris\\*nisi ut
aliquip ex ea commodo\\*consequat. Donec\\*gravida quis augue in
tincidunt.\\*Ut pulvinar ac sapien venenatis dignissim.\\*Fusce vulputate
congue dui, at dictum risus congue vel.\\*Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\*Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

Lorem ipsum dolor sit amet,\\*consectetur adipiscing elit.\\*Sed
ullamcorper est in erat efficitur congue. Integer ullamcorper ac lorem
non maximus. Aliquam ut placerat nisl, eget euismod ante.

Sed ut perspiciatis\\*unde omnis iste\\*natus error sit\\*voluptatem
accusantium.

Lorem \textbf{ipsum} dolor sit amet, \emph{consectetur}\\*adipisicing
elit, sed do eiusmod\\*tempor incididunt ut labore et\\*dolore magna
aliqua. Ut enim

ad minim veniam, quis nostrud\\*exercitation ullamco laboris\\*nisi ut
aliquip ex ea commodo\\*consequat. Donec\\*gravida quis augue in
tincidunt.\\*Ut pulvinar ac sapien venenatis dignissim.\\*Fusce vulputate
congue dui, at dictum risus congue vel.\\*Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\*Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

ad minim veniam, quis nostrud\\*exercitation ullamco laboris\\*nisi ut
aliquip ex ea commodo\\*consequat. Donec\\*gravida quis augue in
tincidunt.\\*Ut pulvinar ac sapien venenatis dignissim.\\*Fusce vulputate
congue dui, at dictum risus congue vel.\\*Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\*Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.

ad minim veniam, quis nostrud\\*exercitation ullamco laboris\\*nisi ut
aliquip ex ea commodo\\*consequat. Donec\\*gravida quis augue in
tincidunt.\\*Ut pulvinar ac sapien venenatis dignissim.\\*Fusce vulputate
congue dui, at dictum risus congue vel.\\*Vivamus rutrum commodo nunc,
sed elementum velit consectetur nec.\\*Aenean sit amet tellus non nisi
vulputate ornare. Vestibulum in nibh cursus, volutpat leo in, auctor
lacus. Donec euismod suscipit nunc sed tempus.


\end{verse}

\end{document}

答え2

poetscol では、スタンザ環境を再定義して、ペナルティを希望どおりに変更できます。また、Poemscol は、ページ境界でスタンザが区切られている場合 (または区切られていない場合) を自動的にマークします。これも役立つかもしれません。

以下は の最小限の例ですpoemscol。ペナルティは実際には、スタンザ環境間でページめくりをわずかに促進するように設定されています。ただし、ページめくりでスタンザが区切られる場合は、 はページの下部に (または任意のもの)poemscolを配置します。*

\documentclass{article}
\usepackage{fancyhdr,geometry,keyval,ifthen,mparhack}
\usepackage{poemscol}
\stanzaatbottom{*}
\nostanzaatbottom{\relax}
\geometry{textwidth=4in,textheight=6.75in,headheight=14pt,paperwidth=6in,paperheight=9in}
\begin{document}
\poemtitle{The Funeral Day}


\epigraph{Suffield, Connecticut, 1952}

\begin{poem}
\begin{stanza}
Later, we folded our hands in his tidy room.\verseline
Patience taught us nothing: we sat for hours\verseline
While the brass clock mumbled to itself like a nun.\verseline
The shadows in the eaves began\verseline
To knot up all the air. And then outside\verseline
This bird just sang and sang and sang.\verseline
What was it to him? Where did he get the right?\verseline
I got up to close the window\end{stanza}

\begin{stanza}
And there I saw the tobacco-fields\verseline
Moving their shrouds in the dusk.\verseline
The wind came thoughtlessly over the wide cloth\verseline
And lifted the white undersides of leaves.\verseline
I didn't close the window. When I sat back down,\verseline
I didn't say what I had seen.\end{stanza}
\end{poem}

\end{document}

Poemscol はスタンザ環境を次のように定義します。

\newenvironment{stanza}{\penalty-100\instanzatrue\mark{\nostanzaatbottomvalue\ }}
 {\nobreak\mark{\stanzaatbottomvalue\ }\nobreak\ifspeciallinelock%
\relax\else%
\nolinebreak\incrementverselinenumber%
\fi%
\speciallinelockfalse%
\nobreak
  \instanzafalse

  \stanzaskip
}

スタンザ環境を変更して、スタンザ区切りでのページ区切りを抑制または防止する場合は、\renewenvironment最初の行のペナルティの値を使用して変更します。

関連情報