在 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