在 XeLaTeX 中切换回 Computer Modern

在 XeLaTeX 中切换回 Computer Modern

在我使用 选择字体之前\fontspec{ ... },XeLaTeX 使用默认的 Computer Modern。一旦我选择了某种字体,我就不知道如何重新选择 Computer Modern。有人能帮忙吗?

答案1

XeLaTeX (via fontspec) 实际上使用的是 Computer Modern 的 Latin Modern 版本。因此,要改回它,您可以做两件事:

  1. 安装拉丁现代字体进入你的系统并使用加载字体\newfontfamily
  2. 使用标准\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选择。现在它已经过时了。

不过,您仍然可以切换回OT1T1使用 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}

渲染输出

相关内容