setspace и quote: почему нарушен интервал между кавычками?

setspace и quote: почему нарушен интервал между кавычками?

Я пытаюсь установить для основного документа полуторный интервал и одинарный интервал для цитат с отступом.

Я заметил, что хороший способ сделать это был предложен вКак оформить цитату?, однако когда я пытаюсь применить это к цитате с отступом внутри абзаца, к предшествующему тексту применяется одинарный интервал:

Скриншот

Каков механизм применения ложного одинарного пробела и как это исправить?

Обходным решением является создание переноса строки между первым \lipsum[66]и \begin{quote}, но это семантически «неправильно», поскольку они должны принадлежать одному абзацу.

МВЭ:

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

решение1

Некоторые настройки в TeX и LaTeX применяются ко всему абзацу, межстрочный интервал, заданный с помощью \onehalfspacingи \singlespacingявляется одной из таких настроек. Обычно абзац набирается с настройками, активными в конце абзаца.

Внутренне quoteреализовано как \list, которое в определенный момент вызывает \parначало нового абзаца для списка.

С патчем код в вопросе по сути завершается выполнением

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

где \listвключает \parвызов. Это означает, что LaTeX видит что-то похожее на следующую ситуацию

\lipsum[66]{\singlespace\par}

Здесь абзац заканчивается и весь абзац набирается с активной настройкой межстрочного интервала.в таком случае. Таким образом, весь абзац набирается с одинарным интервалом.

Очевидно, это не то, что нам нужно. Одним из решений было бы вручную закончить абзац перед тем, как вы войдете в quote(это то, что вы уже нашли в вопросе). Если это кажется семантически неправильным, вы можете принудительно \par(который quoteв любом случае выполнится) немного раньше, включив его в патч

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

Кавычки с одинарным интервалом и окружающий текст с полуторным интервалом.

Поскольку вы загружаете, csquotesя рекомендую вам использовать одну из его сред вместо стандартной quote. Затем мы можем изменить его поведение, как предложено csquotes.cfgи показано вмой ответкКак изменить размер шрифта цитаты csquotes?

Для семантически более удобного решения нам придется использовать внутреннюю реализацию \singlespacingпараметра as \setstretch {\setspace@singlespace}, чтобы избежать коррекции пространства, вносимой \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}

решение2

Пробуя ваш код без каких-либо изменений в интервале, цитата в выводе имеет пустую строку до и после себя. Таким образом, он выглядит промежуточным между двумя \lipsum[66].

Если вы хотите, чтобы в выводе не было лишних пробелов перед кавычками, то поставьте перед ними отрицательный пробел. Например:

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

Я думаю, что вам, возможно, следует различать размышления осемантикав LaTeX по сравнению с выводом.

Связанный контент