段落間の改ページを防ぐ方法

段落間の改ページを防ぐ方法

たとえば、本の章の冒頭に「引用と出典」のようなものをタイプセットしたいのですが、次のようになります。

CHAPTER TITLE

       This  is an  introductory quote.
       It's stylistically questionable,
       but it's a fun LaTeX exercise.

                         -- said by  me

Now starts the main body text, which is not rele-
vant to this question. It just goes on and on and
on and on.
    It just looks like ordinary text.  You do not
have to keep reading.

この目的のために、私は次のように使用する環境とコマンドを用意しました。

\section{Chapter Title}

\begin{fooquote}
This is an introductory quote % etc. etc.
\quoteattribution{-- said by me}
\end{fooquote}

質問:引用部分と本文の間に改ページがないことをどのように保証できますか?改ページがあっても構いません。内で引用文ですが、引用文と出典の間に引用文があってはなりません。

必要であれば、設定全体を変更しても構いません。私の場合は次のようになります。

\newenvironment{fooquote}%
{ \bgroup
  \let\oldend=\end
  \def\end##1{\oldend{##1}\csname @afterindentfalse\endcsname
                          \csname @afterheading\endcsname}
  \begin{quote}%
  \itshape%
}{%
  \end{quote}
  \egroup
}
\newcommand{\quoteattrib}[1]{\normalfont\flushright#1}

答え1

実際には、サンプル文書が提供されていれば回答がはるかに簡単になりますが、断片的なコメントははるかに難しいです。

\newenvironment{fooquote}%
{ \bgroup
  \let\oldend=\end
  \def\end##1{\oldend{##1}\csname @afterindentfalse\endcsname
                          \csname @afterheading\endcsname}
  \begin{quote}%
  \itshape%
}{%
  \end{quote}
  \egroup
}
\newcommand{\quoteattrib}[1]{\normalfont\flushright#1}

環境がすでにグループであるため、これら\bgroup \egroupは必要ありません。また、スペース文字も導入されます。fooquote{ \bgroup

\end定義 (実際にはかなり危険です) は早すぎるようで、\endネストされた環境、特にquote環境に影響を及ぼします。後でアクティブ化したいだけなのでfooquote(推測ですが)、定義の終了コードの最後に配置する必要があります。

flushrightは環境フォーム、宣言フォームとなることを意図しています\raggedleftが、1 行の場合は、ページの他の部分に柔軟性がある限り、その時点でページ区切りを防ぐには . を使用するだけで十分でしょう\hspace{\fill}\nopagebreak

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

\documentclass{book}

\makeatletter
\newenvironment{fooquote}{%
  \begin{quote}%
  \itshape
}{%
  \end{quote}%
\par
\aftergroup\@afterindentfalse
\aftergroup\@afterheading
\ignorespacesafterend
}
\newcommand{\quoteattrib}[1]{\par\nopagebreak\normalfont\hspace*{\fill}#1\par}

\makeatother

\begin{document}

\chapter{CCC}

\begin{fooquote}
red yellow blue
\quoteattrib{me}
\end{fooquote}

One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.

One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.

\end{document}

関連情報