setspace y quote: ¿por qué el espacio entre el contenido previo a la cita está desordenado?

setspace y quote: ¿por qué el espacio entre el contenido previo a la cita está desordenado?

Estoy intentando configurar mi documento principal con un espacio y medio y tener un espacio simple para las citas sangradas.

Noté que se sugirió una buena forma de hacerlo en¿Cómo darle estilo a una cita en bloque?, sin embargo, cuando intento aplicar eso para una cita con sangría dentro de un párrafo, el espacio simple se aplica al texto anterior:

captura de pantalla

¿Cuál es el mecanismo que aplica el espacio único espurio antes y cómo corregirlo?

Una solución alternativa es hacer un salto de línea entre la primera \lipsum[66]y \begin{quote}, pero eso es semánticamente "incorrecto" ya que se supone que pertenecen al mismo párrafo.

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}

Respuesta1

Algunas configuraciones en TeX y LaTeX se aplican al párrafo completo, el interlineado establecido con \onehalfspacingy \singlespacinges una de esas configuraciones. Por lo general, el párrafo se compone con la configuración activa al final del párrafo.

Internamente quotese implementa como un \list, que en algún momento llama \para iniciar un nuevo párrafo para la lista.

Con el parche, el código de la pregunta esencialmente termina ejecutándose

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

donde \listincluye una \parllamada. Eso significa que LaTeX ve algo similar a la siguiente situación.

\lipsum[66]{\singlespace\par}

Aquí el párrafo finaliza y todo el párrafo se compone con la configuración de interlineado activaen ese punto. Por lo tanto, todo el párrafo se escribe con espacio simple.

Está claro que esto no es lo que queremos. Una solución sería finalizar manualmente el párrafo antes de continuar quote(esto es lo que ya encontró en la pregunta). Si esto se siente semánticamente mal, puedes forzar \par(que quotese ejecutará de todos modos) un poco antes incluyéndolo en el parche.

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

Cita a espacio simple y texto circundante a espacio medio.

Ya que está cargando, csquotesle recomiendo que utilice uno de sus entornos en lugar del estándar quote. Luego podemos modificar su comportamiento como se sugiere csquotes.cfgy se muestra enmi respuestaa¿Cómo cambiar el tamaño de fuente de una cita de csquotes?

Para obtener una solución semánticamente mejor, tenemos que utilizar la implementación interna de \singlespacingas configuración \setstretch {\setspace@singlespace}para evitar la corrección de espacio introducida por \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}

Respuesta2

Al probar su código sin ningún cambio en el espaciado, la cita en el resultado tiene una línea en blanco antes y después. Por tanto, parece intermedio entre los dos \lipsum[66].

Si desea que la salida no muestre ningún espacio adicional antes de la cita, coloque un espacio negativo antes. Por ejemplo:

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

Creo que quizás necesites distinguir entre pensar en elsemánticaen LaTeX versus el de la salida.

información relacionada