跳到正文

fontenc、inputenc、fontspec 和字体宏包

这里不需要 inputenc 和 fontenc,它们会被接受但不起作用,因为源文件始终按 UTF-8 读取。在普通文档中,字体固定为 Latin Modern 和 New Computer Modern Math:fontspec 的 \setmainfont 以及 times、libertine 等宏包都会被忽略,只有用 \familydefault 切换到无衬线字体(可配合 helvet)才有效。

宏包的作用

  • inputenc 告诉 pdfLaTeX 源文件使用什么编码。在 2018 年之前,直接输入带重音的字母需要 \usepackage[utf8]{inputenc};现在的 LaTeX 默认按 UTF-8 读取。
  • fontenc 选择字体编码。\usepackage[T1]{fontenc} 让 pdfLaTeX 使用内置重音字母的字体,从而改善断词效果,并方便从 PDF 中复制文字。
  • fontspec(XeLaTeX 和 LuaLaTeX)可以加载任何已安装的 OpenType 字体:\setmainfont{...}、\setsansfont{...}、\setmonofont{...}、\newfontfamily。
  • lmodern、times、mathptmx、helvet、libertine 或 newtxtext 等字体宏包会把 pdfLaTeX 文档切换为另一种字体。

这里可用的功能

功能在 Scissor LaTeX 中说明
含有 ä、é、ł、希腊文、西里尔文、中日韩文字等的 UTF-8 源文件可用始终可用,无论是否使用 inputenc。
\usepackage[utf8]{inputenc}, \usepackage[T1]{fontenc}, lmodern忽略会被接受;无需做任何事。
\renewcommand{\familydefault}{\sfdefault}可用正文使用 Latin Modern Sans。
helvet 或 tgheros 配合上面这一行可用无衬线字体使用 TeX Gyre Heros,一种类似 Helvetica 的字体。
sfmath可用公式使用无衬线字体。
\texttt{...}, \ttfamily可用Latin Modern Mono。
\textbf, \textit, \emph可用
\textsc{...}部分可用在默认的 Latin Modern 字体中显示为普通字母。使用 helvet 时以及在会议版式中(使用 Latin Modern 的 LNCS 除外),显示为真正的小型大写字母。
正文中的 \textsf{...}、\sffamily忽略文字仍是衬线字体。
fontspec:\setmainfont、\setsansfont、\setmonofont忽略在导言区中会被接受,但不起作用。
\newfontfamily\name{Font}不支持会被跳过并显示提示,字体名会被输出。
times, mathptmx, palatino, libertine, newtxtext, charter ...忽略文字仍是 Latin Modern。
\fontsize{14}{16}\selectfont可用取 5 到 144 pt 之间最接近的常用字号;行距随字号变化。
\fontfamily{...}\selectfont忽略不显示提示;文字保持原来的字体。
\small, \large, \Huge ...可用会议和期刊版式除外,它们保持自己的字号。
unicode-math:\setmathfont忽略数学字体仍是 New Computer Modern Math。
unicode-math:公式中的 \symbf、\symit不支持公式显示为红色。请使用 \mathbf、\boldsymbol 或 bm。

正文字号由文档类选项(10pt、11pt 或 12pt)决定;参见页面布局。

示例

许多文档开头的这几行导言区代码会被接受,但不改变任何东西;无论有没有它们,直接输入的重音字母都可用:

inputenc、fontenc 和 lmodern 会被接受

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}
Hans Mustermann bestellt Crème brûlée, Smørrebrød und Pierogi z
kapustą. \texttt{Monospaced}, \textbf{bold} and \textit{italic}
work as usual.
\end{document}
由 Scissor LaTeX 排版: inputenc、fontenc 和 lmodern 会被接受

fontspec 加载时不会出错,但文字仍是 Latin Modern:

\setmainfont 不起作用

\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\begin{document}
This paragraph would be set in Pagella by XeLaTeX or LuaLaTeX.
Here it stays in Latin Modern, the default font.
\end{document}
由 Scissor LaTeX 排版: \setmainfont 不起作用

唯一有效的字体切换:整篇文档使用无衬线字体。

用 \familydefault 和 sfmath 切换到无衬线字体

\documentclass{article}
\usepackage{helvet}
\usepackage{sfmath}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\section{Results}
John Doe measured $v = 44\,\mathrm{m/s}$, which matches the
estimate $v \approx \sqrt{2 g h}$.
\end{document}

兼容性

  • 从 TeX 发行版迁移到这里: 文字和公式都会保留,使用 Latin Modern 字体。用 fontspec 或字体宏包设置的字体不会被使用,为 XeLaTeX 编写的文档无需修改即可排版。
  • 从这里迁移到 TeX 发行版: 文档可以根据所用宏包的要求,用 pdfLaTeX、XeLaTeX 或 LuaLaTeX 编译,所选字体届时会生效。

完整手册见 CTAN:fontspec、fontenc、inputenc 和 unicode-math。另请参阅其他语言和字体。

常见问题

需要 \usepackage[utf8]{inputenc} 吗?

在这里不需要:源文件始终按 UTF-8 读取。保留这一行也没有坏处,较旧的 TeX 发行版仍然需要它。

如何使用 Times New Roman 或 Arial?

在普通文档中不行。正文字体是 Latin Modern;唯一的切换方式是用 \renewcommand{\familydefault}{\sfdefault} 改为无衬线字体,配合 \usepackage{helvet} 时会得到类似 Helvetica 的 TeX Gyre Heros。会议模板自带字体:大多数使用 TeX Gyre Termes(类似 Times 的字体),ACM 使用 Libertinus。

fontspec 能在 Scissor LaTeX 中使用吗?

它加载时不会出错,所以 XeLaTeX 文档可以打开并排版,但 \setmainfont 和其他字体设置都会被忽略。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07