Setspace und Zitat: Warum ist der Abstand des Inhalts vor dem Zitat durcheinander?

Setspace und Zitat: Warum ist der Abstand des Inhalts vor dem Zitat durcheinander?

Ich versuche, in meinem Hauptdokument den Zeilenabstand auf anderthalbfachen Abstand einzustellen und für eingerückte Zitate einfachen Abstand zu verwenden.

Ich habe bemerkt, dass eine gute Möglichkeit dazu vorgeschlagen wurde inWie gestaltet man Blockzitate?, wenn ich dies jedoch auf ein eingerücktes Zitat innerhalb eines Absatzes anwenden möchte, wird der einfache Zeilenabstand auf den vorangehenden Text angewendet:

Bildschirmfoto

Welcher Mechanismus führt zuvor zu dem fehlerhaften einzelnen Leerzeichen und wie kann dieser korrigiert werden?

\lipsum[66]Eine Problemumgehung besteht darin, zwischen dem ersten und einen Zeilenumbruch einzufügen \begin{quote}. Dies ist jedoch semantisch „falsch“, da sie zum selben Absatz gehören sollten.

MWE:

\documentclass[UKenglish]{article}

\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{etoolbox}

\onehalfspacing

\AtBeginEnvironment{quote}{\singlespacing}

\begin{document}

\lipsum[66]
\begin{quote}
  \lipsum[75]
\end{quote}
\lipsum[66]

\end{document}

Antwort1

\onehalfspacingManche Einstellungen in TeX und LaTeX gelten für den gesamten Absatz, der mit und eingestellte Zeilenabstand \singlespacingist eine solche Einstellung. Normalerweise wird der Absatz mit den am Absatzende aktiven Einstellungen gesetzt.

Intern quotewird es als implementiert \list, das an einer Stelle aufruft, \parum einen neuen Absatz für die Liste zu beginnen.

Mit dem Patch wird der betreffende Code dann im Wesentlichen ausgeführt

\lipsum[66]
{\singlespace\list...\endlist}

wobei \listein \parAufruf enthalten ist. Das bedeutet, dass LaTeX eine ähnliche Situation sieht wie die folgende

\lipsum[66]{\singlespace\par}

Hier wird der Absatz beendet und der gesamte Absatz mit aktiver Zeilenabstandseinstellung gesetzt.an diesem Punkt. Der gesamte Absatz wird also mit einfachem Zeilenabstand gesetzt.

Das ist eindeutig nicht das, was wir wollen. Eine Lösung wäre, den Absatz manuell zu beenden, bevor Sie zu quote(das haben Sie bereits in der Frage gefunden) übergehen. Wenn sich das semantisch falsch anfühlt, können Sie das \par(das quoteohnehin ausgeführt wird) etwas früher erzwingen, indem Sie es in den Patch aufnehmen

\documentclass[UKenglish]{article}

\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}

\onehalfspacing

\AtBeginEnvironment{quote}{\par\singlespacing}

\begin{document}

\lipsum[66]
\begin{quote}
  \lipsum[75]
\end{quote}
\lipsum[66]

\lipsum[66]

\end{document}

Zitat mit einfachem Zeilenabstand und umgebender Text mit halbem Zeilenabstand.

Da Sie laden, csquotesempfehle ich Ihnen, tatsächlich eine seiner Umgebungen anstelle der Standardumgebung zu verwenden quote. Wir können dann sein Verhalten wie in vorgeschlagen csquotes.cfgund gezeigt ändernmeine AntwortZuWie ändere ich die Schriftgröße eines csquotes-Zitats?

Für die semantisch schönere Lösung müssen wir die interne Implementierung von \singlespacingals Einstellung verwenden \setstretch {\setspace@singlespace}, um die durch eingeführte Leerzeichenkorrektur zu vermeiden \singlespacing.

\documentclass[UKenglish]{article}

\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{setspace}

\onehalfspacing

\makeatletter
\newenvironment{singlequote}
  {\quote\setstretch{\setspace@singlespace}}
  {\endquote}
\makeatother

\SetBlockEnvironment{singlequote}

\usepackage{lipsum}

\begin{document}
\lipsum[66]
\begin{displayquote}
  \lipsum[75]
\end{displayquote}
\lipsum[66]
\end{document}

Antwort2

Wenn ich Ihren Code ohne Änderungen an den Abständen ausprobiere, hat das Anführungszeichen in der Ausgabe vor und nach dem Anführungszeichen eine leere Zeile. Es sieht also so aus, als ob es sich um eine Zwischenzeile zwischen den beiden handelt \lipsum[66].

Wenn Sie möchten, dass in der Ausgabe vor dem Anführungszeichen kein zusätzliches Leerzeichen angezeigt wird, fügen Sie davor ein Leerzeichen ein. Zum Beispiel:

% spacingpob.tex SE 569716
\documentclass[UKenglish]{article}

\usepackage{babel}
\usepackage[autostyle]{csquotes}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{etoolbox}

%\onehalfspacing

%\AtBeginEnvironment{quote}{\singlespacing}
%\AtBeginEnvironment{quote}{\onehalfspacing\singlespacing}

\begin{document}

\lipsum[66]
\vspace{-0.6\baselineskip}
\begin{quote}
  \lipsum[75]
\end{quote}
\lipsum[66]

\end{document}

Ich denke, man muss unterscheiden zwischen dem Nachdenken über dieSemantikim LaTeX gegenüber dem in der Ausgabe.

verwandte Informationen