setspace e quote: por que o espaçamento do conteúdo pré-citação está confuso?

setspace e quote: por que o espaçamento do conteúdo pré-citação está confuso?

Estou tentando definir meu documento principal com espaçamento um e meio e espaçamento simples para citações recuadas.

Percebi que uma boa maneira de fazer isso foi sugerida emComo estilizar blockquote?, no entanto, quando tento aplicar isso a uma citação recuada dentro de um parágrafo, o espaçamento simples é aplicado ao texto anterior:

captura de tela

Qual é o mecanismo que aplica o espaço único espúrio antes e como corrigir isso?

Uma solução alternativa é fazer uma quebra de linha entre o primeiro \lipsum[66]e o \begin{quote}, mas isso é semanticamente "incorreto", pois eles deveriam pertencer ao mesmo parágrafo.

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}

Responder1

Algumas configurações em TeX e LaTeX se aplicam ao parágrafo completo, o espaçamento entre linhas definido com \onehalfspacinge \singlespacingé uma dessas configurações. Normalmente o parágrafo é composto com as configurações ativas no final do parágrafo.

Internamente quoteé implementado como um \list, que em algum momento pede \paro início de um novo parágrafo para a lista.

Com o patch, o código em questão basicamente acaba sendo executado

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

onde \listinclui uma \parchamada. Isso significa que o LaTeX vê algo semelhante à seguinte situação

\lipsum[66]{\singlespace\par}

Aqui o parágrafo termina e todo o parágrafo é composto com a configuração de espaçamento entre linhas ativanesse ponto. Portanto, todo o parágrafo é composto com espaçamento simples.

É evidente que não é isso que queremos. Uma solução seria encerrar manualmente o parágrafo antes de prosseguir quote(isso é o que você já encontrou na pergunta). Se isso parecer semanticamente errado, você pode forçar \par(que quoteserá executado de qualquer maneira) um pouco mais cedo, incluindo-o no patch

\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ção em espaço simples e texto ao redor com espaçamento meio.

Como você está carregando, csquotesrecomendo que você use um de seus ambientes em vez do padrão quote. Podemos então modificar seu comportamento conforme sugerido csquotes.cfge mostrado emminha respostaparaComo alterar o tamanho da fonte de uma citação de csquotes?

Para uma solução semanticamente melhor, temos que usar a implementação interna da \singlespacingconfiguração as \setstretch {\setspace@singlespace}para evitar a correção de espaço introduzida 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}

Responder2

Tentando seu código sem nenhuma alteração no espaçamento, a cotação na saída apresenta uma linha em branco antes e depois dela. Portanto, parece intermediário entre os dois \lipsum[66].

Se você deseja que a saída não mostre nenhum espaço extra antes da cotação, coloque algum espaço negativo antes dela. Por exemplo:

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

Acho que você talvez precise distinguir entre pensar sobre osemânticano LaTeX versus na saída.

informação relacionada