将自定义大小和间距应用于引用环境

将自定义大小和间距应用于引用环境

在 LyX 中使用“文章”文档类,并尝试让quote段落环境以“小”文本大小和单倍行距(全局)运行,同时保持文档的其余部分(标准段落环境)使用默认设置——默认文本大小和双倍行距。

已尝试在 LaTeX 序言中使用以下内容:

\let\oldquote\quote
\renewcommand\quote{\small\singlespacing\oldquote}

这几乎可以正常工作。问题是,标准环境中的某些段落采用了我试图(专门)应用于环境的单倍行距quote。如何确保单倍行距仅适用于环境quote

答案1

在序言中添加以下内容:

\expandafter\def\expandafter\quote\expandafter{\quote\small\singlespacing}

完整示例:

\documentclass{article}
\usepackage{setspace}
\usepackage{lipsum}

\expandafter\def\expandafter\quote\expandafter{\quote\small\singlespacing}
\doublespacing

\begin{document}

\lipsum[4]
\begin{quote}
\lipsum[4]
\end{quote}
\lipsum[4]

\end{document}

在此处输入图片描述

\expandafter<token1><token2>将被替换<token1> expansion of <token2>,并且在扩展<token1>之后才会扩展。<token2>

答案2

我是该软件包的一名朋友etoolbox。它提供了很多有用的宏。其中之一就是\appto将材料添加到定义中。

\usepackage{etoolbox}
\appto\quote{\small\singlespacing}

如果环境有任何参数,则此方法会失败。因此,您可以使用\AtBeginEnvironment同样提供的命令etoolbox

\usepackage{etoolbox}
\AtBeginEnvironment{quote}{\small\singlespacing}

LaTeX 内核还定义了一个钩子。不幸的是,它使用了特殊符号@。命令是\g@addto@macro。因此您必须使用\makeatletter/ \makeatother

\makeatletter
\g@addto@macro\quote{\small\singlespacing}
\makeatother

\makeatletter 解释

相关内容