假设我想更改一段文本的字体,例如对标题和段落使用 Bookman(类似于本社区维基指南)。
如果我更改\familydefault
,如第 (1) 节中所示,则只有标题会受到影响。另一方面,如果我选择 Bookman 作为,则它只影响段落文本,而不影响标题 (2)。组合这两个命令可得到所需的结果 (3),向*\fontfamily
添加命令 (4) 也是如此。\normalfont
\familydefault
是什么导致了这种行为?是否\fontfamily
设置了一些在格式化标题时不会被访问的“currentfont”变量?为什么更改会\familydefault
立即影响标题,但不会影响文本?
*这一点在@mpg 的评论。
\documentclass{article}
\usepackage[T1]{fontenc}
%print a _short section of lipsum text
\newcommand{\shlipsum}{%
\section{A quick brown fox}
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.\\%
}
%reset font to typewriter CM
\newcommand{\resetfont}{\renewcommand{\familydefault}{cmtt}\normalfont}
\begin{document}
\resetfont
\renewcommand{\familydefault}{pbk} %sets heading only
\shlipsum
\resetfont
\fontfamily{pbk}\selectfont %sets paragraph text only
\shlipsum
\resetfont
\renewcommand{\familydefault}{pbk}
\fontfamily{pbk}\selectfont
\shlipsum
\resetfont
\renewcommand{\familydefault}{pbk}
\normalfont
\shlipsum
\end{document}
答案1
\fontfamily{pbk}\selectfont
从该点为当前组的其余部分选择该家族。
\renewcommand{\familydefault}{pbk}
只是重新定义该宏,除非发生其他操作,否则不执行任何操作\fontfamily{\familydefault}\selectfont
。该组合通常不会明确执行,但它是标题命令通常使用的一部分,\resetfont
以便\normalfont
即使文档中该位置的文本本地使用不同的字体样式,它们也能获得一致的字体。