fontspec
定义命令
\setmainfont{font name}[font features]
\setsansfont{font name}[font features]
\setmonofont{font name}[font features]
设置文档的默认字体。但是,如果我使用无衬线字体作为主字体,例如\setmainfont{Latin Modern Sans}
,\rmfamily
被重新定义为 Latin Modern Sans,那么我就无法指定单独的衬线字体。当然,我可以使用设置衬线字体\setsansfont
,但这样字体就全部倒置了。
难道不应该有一个命令吗\setseriffont
?我不认为“主”字体必须始终是衬线字体。如果这是有意为之,那么将无衬线字体作为默认字体的最佳方法是什么,但仍然将衬线字体定义为\rmfamily
?
(这与“用无衬线字体排版整个文档的最简单方法是什么?”。我已经解释过,我可以使用 来排版文档为无衬线字体\setmainfont
。这个问题是关于命令 的语义,与相比,\setmainfont
它似乎并没有从其名称中暗示任何特定的字体特征——另请参阅\setsansfont
\rmfamily
\sffamily
Will Robertson 的评论。
答案1
\renewcommand{\familydefault}{\sfdefault}
那是:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
abc
\textrm{abc}
\textsf{abc}
\end{document}
答案2
如果有助于保持一切清晰,您可以使用命令\setromanfont
代替\setmainfont
,尽管 fontspec 手册没有提到它:
\documentclass{article}
\usepackage{fontspec}
\setromanfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
abc
\textrm{abc}
\textsf{abc}
\end{document}