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}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}唯一有效的字体切换:整篇文档使用无衬线字体。
用 \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