如何更改 csquotes 引文的字体大小?

如何更改 csquotes 引文的字体大小?

我引用了一些借助该csquotes包的文本,例如:

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}
\usepackage{babel}
\begin{document}
Lorem ipsum dolor sit amet.

\blockquote[somebody]{Bla bla bla.}

Lorem ipsum dolor sit amet.
\end{document}

我希望引文的字体大小小一点。

我怎样才能取得这样的结果?

答案1

csquotes包的一个想法是动态地决定一个引文是否太长以至于可以作为块引文输入,或者是否足够短以至于可以内联输入。我假设您不想更改内联引文的字体大小,而是更改块引文的字体大小。

为此,您需要知道\blockquotejust 调用quote环境,因此我们只需要更改此环境的格式设置。此示例展示了如何使用包etoolbox和执行此操作relsize

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}
\usepackage{babel}

\usepackage{relsize,etoolbox}
\AtBeginEnvironment{quote}{\smaller}

\begin{document}
Bla bla bla.

\blockquote[somebody]{Bla bla bla.\\}

Bla bla bla.
\end{document}

在此处输入图片描述

(请注意,我添加换行符\\只是为了触发将csquotes引用排版为块引用。)

答案2

我使用以下更新的环境csquotes。将其复制到您的序言中。

\renewenvironment{quote}{\list{}{\rightmargin0pt\leftmargin0pt}\item\relax
\small\singlespacing}{\endlist}
\SetBlockEnvironment{quote}

\rightmargin0pt\leftmargin0pt声明引文的边距(每个边距 0pt 表示文本宽度)。您要查找的是\small将引文设置为比正常文本小一级的命令。

答案3

\blockquote实际上是一个动态命令,可以在内联排版其参数(如果它短于使用包选项和设置的阈值thresholdthresholdtype或显示模式(即作为由行/段落分隔符分隔的实际块引用)之间切换。 这两种模式可以独立修改。

如果您始终想排版块引号而不管其长度如何,也许\begin{displayquote}...\end{displayquote}更切题。该环境的行为可以通过\SetBlockEnvironment其他方式控制。


专门用于缩小块引用csquotes.cfg建议定义一个新的环境,quote然后可以\blockquote用于\SetBlockEnvironment

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}
\usepackage{babel}

\usepackage{relsize}

\newenvironment*{smallquote}
  {\quote\smaller}
  {\endquote}

\SetBlockEnvironment{smallquote}

\usepackage{lipsum}

\begin{document}
\lipsum[1]
\blockquote[somebody]{Lorem ipsum. A short inline quote.}
\lipsum[2]
\blockquote[somebody]{\lipsum[3]}
\lipsum[4]
\end{document}

内联引用在引号中不变,块代码较长则较小


或者,您可以使用 提供的钩子csquotes

可以通过重新定义钩子来修改内联引用\mktextquote,通过改变来修改块引用\mkblockquote

内联引文的字体大小不同看起来很奇怪,所以我假设你只想更改块引文。默认定义\mkblockquote

\newcommand{\mkblockquote}[4]{#1#2#4#3}

我们只需添加一个\smaller\usepackage{relsize}来自蒂乌里回答),然后使用\renewcommand

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}
\usepackage{babel}

\usepackage{relsize}
\renewcommand{\mkblockquote}[4]{\smaller#1#2#4#3}

\usepackage{lipsum} % for filler text

\begin{document}
\lipsum[1]
\blockquote[somebody]{Lorem ipsum. A short inline quote.}
\lipsum[2]
\blockquote[somebody]{\lipsum[3]}
\lipsum[4]
\end{document}

本例的输出如上所示。


\SetBlockEnvironment也会影响\begin{displayquote}...\end{displayquote},但为了更好地控制这些环境,可以使用\mkbegdispquote和进行自定义\mkenddispquote,其默认值为

\newcommand{\mkbegdispquote}[2]{}
\newcommand{\mkenddispquote}[2]{#1#2}

所以我们也可以使用

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{csquotes}
\usepackage{babel}

\usepackage{relsize}
\renewcommand{\mkbegdispquote}[2]{\smaller}

\usepackage{lipsum} % for filler text

\begin{document}
\lipsum[1]
\begin{displayquote}[somebody]
Lorem ipsum. A short inline quote.
\end{displayquote}
\lipsum[2]
\begin{displayquote}[somebody]
\lipsum[3]
\end{displayquote}
\lipsum[4]
\end{document}

相关内容