setspace 和引用环境导致多余的空行

setspace 和引用环境导致多余的空行

quoting我尝试使用同名包来设置环境,其中包括块引用的单行间距,而不是普通文本的一行半间距。间距对我来说似乎很奇怪,所以我将其归结为以下 MWE,它在singlespacing应用于时清楚地显示了额外的行quoting,尽管由于单行间距是标准,所以不应该发生任何事情。

\documentclass[12pt,twocolumn]{article}
\usepackage[a4paper,landscape]{geometry}
\usepackage{setspace}
\usepackage{quoting}
\usepackage{lipsum}
\begin{document}
\lipsum*[66]

\begin{quoting}
\lipsum*[66]
\end{quoting}

\lipsum*[66]

\newpage

\quotingsetup{font=singlespacing}

\lipsum*[66]

\begin{quoting}
\lipsum*[66]
\end{quoting}

\lipsum*[66]
\end{document}

setspace注意:和的加载顺序quoting似乎无关紧要。我还lipsum通过使用 来确保 的段落分隔符不会干扰我们\lipsum*,这不会插入\pars。

输出

这是预期的行为吗?我可以修补它吗?这是一个错误吗?

答案1

在该包的用户指南中,关于在命令中quoting使用参数有如下说明:font=...\quotingsetup{font=...}

字体用于排版引用环境内容的字体。允许的值是 LATEX 的字体切换/格式命令的名称(前面没有反斜杠);例如,使用 font=itshape 将引号排版为斜体。(默认情况下,引用使用周围文本的字体/格式。)要指定多个字体属性,请使用逗号分隔的字体/格式名称列表,例如,font={itshape,raggedright}(注意周围的括号)。

那么,归根结底,就是包不认为(无论对错......)这singlespacing是一个有效的字体切换或格式化指令,最终在引用的材料之前(但有趣的是,不是之后)添加一个额外的空白行。

在用户指南的其他地方,还有一条评论说

选择字体字体+[命令\quotingsetup] 不接受本身带有参数的值。在这种情况下,您必须重新定义命令\quotingfont

具体来说,要将环境中的行距​​更改quoting为单倍行距,建议使用指令

\renewcommand*{\quotingfont}{\setstretch{1.0}}

setspace当然,包裹已经装好)。

事实上,通过这种修改,您的 MWE 就可以按预期工作了。

答案2

添加到米科的优秀答案,可以使用etoolbox\AtBeginEnvironment宏来解决该问题:

\documentclass[12pt,twocolumn]{article}
\usepackage[a4paper,landscape]{geometry}
\usepackage{setspace}
\usepackage{quoting}
\usepackage{etoolbox}
\usepackage{lipsum}
\begin{document}
\onehalfspacing
\lipsum*[66]

\begin{quoting}
\lipsum*[66]
\end{quoting}

\lipsum*[66]

\newpage

\AtBeginEnvironment{quoting}{\singlespacing}
%\quotingsetup{font=singlespacing}

\lipsum*[66]

\begin{quoting}
\lipsum*[66]
\end{quoting}

\lipsum*[66]
\end{document}

在此处输入图片描述

答案3

Mico 和 Harish Kumar 已经提出了删除多余空白行的方法。我要补充的是,该setspace软件包的这一“功能”不仅限于quoting,还会影响 LaTeX 标准环境quotequotation:每当您发出\singlespacing 里面环境,setspace添加一个额外的空白行:

\documentclass[12pt,twocolumn]{article}
\usepackage[a4paper,landscape]{geometry}
\usepackage{setspace}
\usepackage{lipsum}
\begin{document}
\lipsum*[66]

\singlespacing

\begin{quotation}
\lipsum*[66]
\end{quotation}

\lipsum*[66]

\newpage

\lipsum*[66]

\begin{quotation}
\singlespacing

\lipsum*[66]
\end{quotation}

\lipsum*[66]
\end{document}

相关内容