Como evitar uma quebra de página entre parágrafos

Como evitar uma quebra de página entre parágrafos

Gostaria de escrever algo como uma "citação mais atribuição", por exemplo, no início de um capítulo de livro. Deveria ficar assim:

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.

Para isso, possuo um ambiente e um comando, utilizado assim:

\section{Chapter Title}

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

Pergunta:Como posso garantir que não há quebra de página entre a atribuição e o corpo da citação? Não me importo se houver uma quebra de páginadentro dea citação, mas não deve haver nenhuma entre a citação e a atribuição.

Fico feliz em alterar toda a minha configuração, se for necessário. No meu caso é assim:

\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}

Responder1

Na verdade, seria muito mais fácil responder se houvesse um documento de exemplo fornecido, os fragmentos são muito mais difíceis de comentar, mas

\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}

os \bgroup \egroupnão são necessários porque o fooquoteambiente já é um grupo, também { \bgroupintroduz um caráter espacial.

A \endredefinição (que na verdade é bastante perigosa) parece ser muito cedo e afetará a qualidade \endde qualquer ambiente aninhado e, em particular, do quoteambiente. Você só deseja ativá-lo depois fooquote(presumo), então deve estar logo no final do código final da definição.

flushrightpretende ser um formulário de ambiente, sendo o formulário de declaração, \raggedleftmas se for uma linha, eu provavelmente usaria apenas \hspace{\fill}. \nopagebreakdeve ser suficiente para evitar quebras de página nesse ponto, desde que haja flexibilidade em outras partes da página.

insira a descrição da imagem aqui

\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}

informação relacionada