抱歉,如果这是重复的,但我找不到正确的方法。
我想重新定义我的quote
和quotation
命令以使用不同的字体。我的主要字体是Linux Libertine O
(我正在使用 fontspec),我想使用小的Linux Biolinum O
我的引文中的版本。
我尝试过的一些命令包括这个,但它不起作用:
\let\quoteOld\quote
\renewenvironment{quote}{\fontspec{Linux Biolinum O}\small\quoteOld}
附加问题:我需要学习什么才能自己弄清楚如何实现上述目标?我希望有一本书或资源可供阅读。
答案1
正如我在你的另一个问题中评论的那样,你不应该使用\fontspec
它来更改字体,而应该定义一个新的字体系列。该etoolbox
包提供了简单的修补命令。为此,你只需使用它的\AtBeginEnvironment
命令即可。
% !TEX TS-program = XeLaTeX
\documentclass{article}
\usepackage{etoolbox}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newfontfamily\quotefont{Linux Biolinum O}
\AtBeginEnvironment{quote}{\quotefont\small}
\begin{document}
Some text.
\begin{quote}
A quotation.
\end{quote}
\end{document}
答案2
您的代码片段缺少第三个必需参数,\renewenvironment
该参数指定在环境结束时要执行的代码。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newfontfamily{\quotefont}{Linux Biolinum O}
\let\quoteOld\quote
\let\endquoteOld\endquote
\renewenvironment{quote}{\quotefont\small\quoteOld}{\endquoteOld}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{quote}
\lipsum*[1]
\end{quote}
\lipsum[1]
\end{document}
答案3
fontspec
添加字体代码后,只需更改引号大小。
% Using 'xelatex'
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\expandafter\def\expandafter\quote\expandafter{\quote\small}
\begin{document}
Normal text.
\begin{quote}
This is a quote.
\end{quote}
\end{document}
该行:\expandafter\def\expandafter\quote\expandafter{\quote\small}
无需添加任何其他包即可工作。