
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:
¿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 \onehalfspacing
y \singlespacing
es una de esas configuraciones. Por lo general, el párrafo se compone con la configuración activa al final del párrafo.
Internamente quote
se implementa como un \list
, que en algún momento llama \par
a 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 \list
incluye una \par
llamada. 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 quote
se 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}
Ya que está cargando, csquotes
le recomiendo que utilice uno de sus entornos en lugar del estándar quote
. Luego podemos modificar su comportamiento como se sugiere csquotes.cfg
y 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 \singlespacing
as 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.