So verhindern Sie einen Seitenumbruch zwischen Absätzen

So verhindern Sie einen Seitenumbruch zwischen Absätzen

Ich möchte so etwas wie ein „Zitat mit Quellenangabe“ setzen, z. B. am Anfang eines Buchkapitels. Das sollte dann so aussehen:

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.

Zu diesem Zweck habe ich eine Umgebung und einen Befehl, die wie folgt verwendet werden:

\section{Chapter Title}

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

Frage:Wie kann ich sicherstellen, dass zwischen der Quellenangabe und dem Hauptteil des Zitats kein Seitenumbruch erfolgt? Ein Seitenumbruch macht mir nichts aus.innerhalbdas Zitat, aber es sollte keins zwischen dem Zitat und der Quellenangabe stehen.

Ich ändere gerne mein gesamtes Setup, wenn das nötig ist. In meinem Fall sieht das so aus:

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

Antwort1

Tatsächlich wäre es viel einfacher zu beantworten, wenn es ein mitgeliefertes Beispieldokument gäbe, Fragmente sind viel schwieriger zu kommentieren, aber

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

Sie \bgroup \egroupsind nicht erforderlich, da die fooquoteUmgebung bereits eine Gruppe ist. Außerdem { \bgroupwird ein Leerzeichen eingeführt.

Die Neudefinition (die eigentlich ziemlich gefährlich ist) scheint zu früh zu erfolgen, da sie sich auf jede verschachtelte Umgebung und insbesondere auf die Umgebung \endauswirkt . Sie möchten sie einfach danach aktivieren (nehme ich an), also sollte sie direkt am Ende des Endcodes der Definition stehen.\endquotefooquote

flushrightsoll eine Umgebungsform sein, die Deklarationsform ist \raggedleftaber wenn es nur eine Zeile ist, würde ich wahrscheinlich einfach verwenden \hspace{\fill}. \nopagebreaksollte ausreichen, um Seitenumbrüche an dieser Stelle zu vermeiden, solange an anderer Stelle auf der Seite Flexibilität vorhanden ist.

Bildbeschreibung hier eingeben

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

verwandte Informationen