![setspace 和引用环境导致多余的空行](https://linux22.com/image/256956/setspace%20%E5%92%8C%E5%BC%95%E7%94%A8%E7%8E%AF%E5%A2%83%E5%AF%BC%E8%87%B4%E5%A4%9A%E4%BD%99%E7%9A%84%E7%A9%BA%E8%A1%8C.png)
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*
,这不会插入\par
s。
这是预期的行为吗?我可以修补它吗?这是一个错误吗?
答案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 标准环境quote
和quotation
:每当您发出\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}