这是我上一个问题的后续问题如何全局设置字体类型。
要全局使用 helvet,我必须使用命令\renewcommand\familydefault\sfdefault
。因此,当我使用以下代码时:
\usepackage[T1]{fontenc}
\usepackage{helvet}
\renewcommand\familydefault\sfdefault
字体成功更改为Helvet。
据我了解,目前默认字体系列是\rmfamily
,而 helvet 属于\sffamily
。因此,我需要将默认字体系列声明为 Sans Serif (即\sffamily
)。
然而,根据无衬线字体,还有其他字体也属于 Sans Serif。例如,Arev。当我尝试全局使用字体 Arev 时,我需要做的就是使用以下代码:
\usepackage[T1]{fontenc}
\usepackage{arev}
字体全局已成功更改为Arev。
我的问题是,Arev 属于 Sans Serif。为什么我不需要将默认字体系列声明为 Sans Serif(即不需要使用\renewcommand\familydefault\sfdefault
)?什么时候使用该命令才合适\renewcommand\familydefault\xxdefault
(\xxdefault
可以是\sfdefault
,\rmdefault
或\ttdefault
)?
然而,
答案1
每个软件包处理事情的方式都不同。有些字体软件包只为 serif 系列或 sans 系列设置字体,而其他的字体arev
软件包,line 系列则为两个系列设置字体。
例如,helvet
包(作为包的一部分psfonts
,因此可以在中找到以下内容psfonts.sty
)本质上仅执行以下任务:
\renewcommand{\sfdefault}{phv}
也就是说,它将sf
字体系列设置为字体phv
(即 Helvetica),仅此而已。它不会将rm
字体系列设置为任何内容,因此它保持默认状态。
arev
另一方面,在包的代码中,你会发现以下几行(在arevtext.sty
):
\renewcommand{\rmdefault}{fav}
\renewcommand{\sfdefault}{fav}
\renewcommand{\ttdefault}{fvm}
这意味着该包既fav
为rm
系列设置字体,也为系列设置字体。这就是为什么加载此包后sf
不需要再设置的原因。\renewcommand\familydefault\sfdefault
因此,您的问题的答案是:这取决于软件包是否已经为您设置了此字体。要了解这一点,您应该查看软件包的文档(或者您可以通过加载它来尝试它的功能)。某些软件包甚至提供了一个选项来设置它们会更改哪些字体系列。