在我使用 选择字体之前\fontspec{ ... }
,XeLaTeX 使用默认的 Computer Modern。一旦我选择了某种字体,我就不知道如何重新选择 Computer Modern。有人能帮忙吗?
答案1
XeLaTeX (via fontspec
) 实际上使用的是 Computer Modern 的 Latin Modern 版本。因此,要改回它,您可以做两件事:
- 安装拉丁现代字体进入你的系统并使用加载字体
\newfontfamily
- 使用标准
\fontfamily...\selectfont
方法。
<!>
% !TEX TS-program = XeLaTeX
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
%\newfontfamily\lmodern{Latin Modern Roman} % If font exists on your system
% Optical sizes need to be set up manually using the [SizeFeatures] option
% or select the font using the regular font selection methods
\newcommand{\lmr}{\fontfamily{lmr}\selectfont} % Latin Modern Roman
\newcommand{\lmss}{\fontfamily{lmss}\selectfont} % Latin Modern Sans
\newcommand{\lmtt}{\fontfamily{lmtt}\selectfont} % Latin Modern Mono
\begin{document}
Some text in Linux Libertine.
{\lmr Some text in Latin Modern}
\end{document}
或者,如果您在文档中主要使用 Computer Modern,则可以使用它\newfontfamily
来定义替代字体。
正如所指出的安德烈·维赫罗夫,第二种解决方案可能更可取,因为 Latin Modern 的光学尺寸是在以常规方式加载字体时设置的。使用第一种解决方案,您需要[SizeFeatures]
在声明时使用选项添加光学尺寸信息\newfontfamily
。
如果你想完全恢复默认设置(而不是仅仅使用命令访问拉丁现代字体),你可以重新定义\rmdefault, \sfdefault
并\ttdefault
改为(如建议的那样乌尔丽克·菲舍尔)。这将覆盖\setmainfont
设置。
\renewcommand\rmdefault{lmr}
\renewcommand\sfdefault{lmss}
\renewcommand\ttdefault{lmtt}
編輯註釋:请注意,此答案的当前版本已重新组织,以反映评论中的讨论。谢谢。
答案2
默认情况下,fontspec 不使用 computer modern 字体,而是使用 latin modern 字体。要恢复默认设置,请将字体系列设置为 lmr、lmss、lmtt。本地设置或通过重新定义默认值:
\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Cambria}
\begin{document}
rm \texttt{tt} \textsf{sf}
{\fontfamily{lmr}\selectfont rm
\fontfamily{lmss}\selectfont sf
\fontfamily{lmtt}\selectfont tt}
\renewcommand\rmdefault{lmr}
\renewcommand\sfdefault{lmss}
\renewcommand\ttdefault{lmtt}
\normalfont
rm \textsf{sf} \texttt{tt}
\end{document}
答案3
以前fontspec
有一个cm-default
选择。现在它已经过时了。
不过,您仍然可以切换回OT1
或T1
使用 CM 系列的字体编码。例如:
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\xits{XITS}
\newfontfamily\cursor{TeX Gyre Cursor}
\usepackage[OT1]{fontenc}
\renewcommand\rmdefault{cmr}
\renewcommand\sfdefault{cmss}
\renewcommand\ttdefault{cmtt}
\begin{document}
This is Computer Modern Roman.
\textsf{This is Computer Modern Sans.}
\texttt{This is Computer Modern Typewriter.}
{\xits This is Times-like XITS font.}
{\cursor This is Courier-like TeX Gyre Cursor.}
\end{document}
这是通过pdffonts
效用获得的:
名称 类型 emb sub uni 对象 ID ------------------------------------ ----------------- --- --- --- --------- DQLQYU+CMR10 1C 型 是 是 否 4 0 ZSODJO+CMSS10 类型 1C 是 是 否 5 0 YLHYBL+CMTT10 1C 型 是 是 否 6 0 EKZHDP+XITS-Identity-H CID 类型 0C 是 是 是 8 0 PMNGJM+TeXGyreCursor-Regular-Identity-H CID 类型 0C 是 是 是 10 0
如果您想使用EU1
(即 XeTeX 中的 Unicode)作为默认字体编码,这是可以的。您可以OT1
随时切换到编码:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\usepackage[OT1,EU1]{fontenc}
\begin{document}
This is Linux Libertine O.
{\fontencoding{OT1}\fontfamily{cmr}\selectfont
This is Computer Modern Roman.}
\end{document}
名称 类型 emb sub uni 对象 ID ------------------------------------ ----------------- --- --- --- --------- BLJUZB+LinLibertineO-Identity-H CID 类型 0C 是 是 是 5 0 ANBDAK+CMR10 1C 型 是 是 否 6 0
答案4
当我思考如何使用时,我使用了这个例子塞尔诺利格在 lualatex 的上下文中如何将 selnolig 包与默认 lualalatex 字体一起使用?。
通过评论@mico这是一个适用于 TeXLive 2017 的直接解决方案:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\begin{document}
Some text in Linux Libertine.
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
Some text in Latin Modern.
\end{document}