
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:
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 \onehalfspacing
e \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 \par
o 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 \list
inclui uma \par
chamada. 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 quote
será 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}
Como você está carregando, csquotes
recomendo que você use um de seus ambientes em vez do padrão quote
. Podemos então modificar seu comportamento conforme sugerido csquotes.cfg
e 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 \singlespacing
configuraçã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.