似乎fontspec
's的使用\setmainfont
会覆盖其他字体系列。这是预期的行为吗?
我应该用吗\renewcommand{\familydefault}{\sfdefault}
?
MWE 如下:
\documentclass{article}
\usepackage{fontspec}
\usepackage{lipsum}
\setromanfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}
\setmainfont{Arial}
%\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\section{Introduction}
\lipsum[1]
\section{Font list}
\begin{itemize}
\item Main font: \expandafter\texttt\expandafter{\fontname\font}
\item {\rmfamily Roman font: \expandafter\texttt\expandafter{\fontname\font}}
\item {\sffamily Sans font: \expandafter\texttt\expandafter{\fontname\font}}
\item {\ttfamily TT font: \expandafter\texttt\expandafter{\fontname\font}}
\end{itemize}
\end{document}
答案1
这是它设计的工作方式。\setmainfont
本质上只是设置\rmfamily
。因此,如果您明确设置了罗马字体,则根本不需要使用\setmainfont
。因此,在您的示例中,您首先将设置\rmfamily
为 Times New Roman,然后将\setmainfont
其设置为 Arial。
因此,如果您想要使用 Times、Arial 和 Courier 作为字体,则可以使用:
\setromanfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}
或者
\setmainfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}
\setmainfont
和之间实际上没有实际区别\setromanfont
。