
我試圖將我的主文件設定為一倍半間距,並為縮排引用設定單間距。
我注意到建議了一個好方法如何設定塊引用樣式?,但是當我嘗試將其應用於段落內的縮進引號時,單個空格將應用於前面的文本:
先前應用虛假單一空格的機制是什麼以及如何修正?
\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
\onehalfspacing
TeX 和 LaTeX 中的某些設定適用於整個段落,而用和設定的行間距\singlespacing
就是這樣的設定之一。通常,段落排版時會設定在段落末端處於活動狀態。
在內部quote
實作為 a \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 中的內容與輸出中的內容。