块引用前后的前导(垂直空间)

块引用前后的前导(垂直空间)

我正在尝试重新定义quote环境(由 触发csquote's \blockquote)以删除引号前后的整个(!)额外前导,以确保引号与基线网格保持同步(我还重新引入了引号,以弥补因删除空白而造成的区别损失,但这不是问题的一部分)。

我确实知道如何修改quote环境,并且我已经设法减少了空白,但我正在寻找一种完全删除它的方法。例如,这个解决方案受到 Herbert 对类似问题的回答的启发,尽管已打开,但文本的最后一条基线和引文的第一条基线之间仍然有 13.8pt(多出 1.8pt)的距离\raggedbottom。任何提示都值得赞赏!

\documentclass{article}
\usepackage{csquotes,lipsum,lmodern}

\makeatletter
\renewenvironment{quote}
               {\list{}{\listparindent=0em
                        \itemindent=\listparindent
                        \leftmargin=\parindent
                        \rightmargin=\parindent
                        \topsep=0em
                        \parsep\z@\@plus\p@}%
                \item\relax}
               {\endlist}
\makeatother

\renewcommand{\mkblockquote}[4]{\enquote{#1}#2#3#4}
\raggedbottom

\begin{document}
\lipsum[2-3]
\blockquote{\lipsum*[2]}
\lipsum[3-4]
\blockquote{\lipsum*[3]}
\lipsum[4-5]
\blockquote{\lipsum*[4]}
\lipsum
\blockquote{\lipsum*[5]}
\end{document}

答案1

\raggedbottom是 的默认设置article。但是,您的各种\lipsum命令(非星号版本)确实会结束段落,并且开始新段落的列表环境也会在\partopsep其前后添加。因此,将以下内容添加到您对环境的重新定义中quote

\partopsep=0em

另外,你可以使用我的quoting包裹:

\documentclass{article}

\usepackage{csquotes}

\usepackage[vskip=0pt,begintext=\textooquote,endtext=\textcoquote]{quoting}

\SetBlockEnvironment{quoting}

\newcommand*{\sometext}{%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
    vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
    dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
    id, vulputate a, magna. Donec vehicula augue eu neque.}

\begin{document}

\sometext
% <-- No indentation at the start of `quoting`
\blockquote{\sometext}
% <-- No indentation after `quoting`
\sometext

\end{document}

在此处输入图片描述

相关内容