跳转到内容

LaTeX/字体

来自维基教科书,开放世界中的开放书籍

LaTeX

入门
  1. 简介
  2. 安装
  3. 安装额外的软件包
  4. 基础
  5. 如何获得帮助

常见元素

  1. 文档结构
  2. 文本格式
  3. 段落格式
  4. 颜色
  5. 字体
  6. 列表结构
  7. 特殊字符
  8. 国际化
  9. 旋转
  10. 表格
  11. 标题创建
  12. 页面布局
  13. 自定义页面页眉和页脚
  14. 导入图形
  15. 浮动体、图形和标题
  16. 脚注和边注
  17. 超链接
  18. 标签和交叉引用
  19. 首字母

机制

  1. 错误和警告
  2. 长度
  3. 计数器
  4. 规则和撑杆

技术文本

  1. 数学
  2. 高级数学
  3. 定理
  4. 化学图形
  5. 算法
  6. 源代码列表
  7. 语言学

特殊页面

  1. 索引
  2. 词汇表
  3. 参考文献管理
  4. 更多参考文献

特殊文档

  1. 科学报告(学士报告、硕士论文、博士论文)
  2. 信件
  3. 演示文稿
  4. 教师专区
  5. 简历
  6. 学术期刊(MLA、APA 等)

创建图形

  1. 介绍程序图形
  2. MetaPost
  3. 图片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 创建 3D 图形

编程

  1. Plain TeX
  2. 创建软件包
  3. 创建软件包文档
  4. 主题

其他

  1. 模块化文档
  2. 协作编写 LaTeX 文档
  3. 导出到其他格式

帮助和建议

  1. 常见问题解答
  2. 技巧

附录

  1. 作者
  2. 链接
  3. 软件包参考
  4. LaTeX 文档示例
  5. 索引
  6. 命令词汇表

编辑此框编辑目录


字体系列

[编辑 | 编辑源代码]

有数百种,如果不是数千种,字体或字体系列。常见的例子包括TimesCourierHelvetica。这些系列通常可以分为三大类:衬线无衬线等宽。LaTeX 命令通常使用以下简写来指代这些系列rm, sftt分别。

默认情况下,LaTeX 使用Computer Modern,这是唐纳德·克努斯为 TeX 设计的一系列字体。它包含衬线、无衬线和等宽字体,每种字体都有多种字重视觉尺寸

默认情况下,LaTeX 文档的主体以罗马(衬线)字体设置,但可以通过设置家族默认值来更改

\renewcommand{\familydefault}{<family>}

其中<family>是以下任一值

  • \rmdefault
  • \sfdefault
  • \ttdefault

强调文本

[编辑 | 编辑源代码]

Tex 识别两种类型的标记命令

  • 语义 - \emph{text} -- 默认情况下为斜体字体。可以通过 \renewcommand\emph{\textbf} 覆盖。根据需求/偏好替换 textbf。
  • 视觉 - 实际上应用了所需的格式
    • 系列 - \textrm{} \textsf{} \texttt
    • 字重 - \textbf{} - 粗体,\textmd{} - 中等
    • 形状 - \textup{}, \textit{}, \textsl{}

对于特定字体,视觉标记有变体。以上是常用的元素。有关这些项目的参考,请参阅字体样式部分

要为单词或短语添加一些强调,请使用\emph{text} 命令,该命令通常会将文本斜体化。

I want to \emph{emphasize} a word.

我想强调一个词。

该命令是动态的:如果您强调一个已经在强调句子中的单词,它将恢复为正体字体。

\emph{In this emphasized sentence, there is an emphasized \emph{word} which looks upright.}

在这个强调的句子中,有一个强调的看起来是正体。

可以通过使用粗体来更突出地强调单词或短语,特别是对于读者在阅读文本时可能会尝试查找的关键词。由于粗体文本通常在段落甚至页面中任何其他文本之前阅读,因此应谨慎使用。在使用无衬线字体时,它也可以代替斜体,以提供与非强调文本的更大对比。粗体文本可以使用\textbf{text} 命令生成。

\textbf{Bold text} may be used to heavily emphasize very important words or phrases.

粗体文本可用于强烈强调非常重要的单词或短语。

字体样式

[编辑 | 编辑源代码]

字体通常有各种样式和字重,例如斜体粗体。下表列出了访问典型字体形状所需的命令。

注意:命令形式中不允许有段落换行。

LaTeX 命令 等效开关 输出样式 备注
\textnormal{...} {\normalfont ...} 文档字体系列 这是默认字体或普通字体。
\emph{...} {\em ...} 强调 通常是斜体。在斜体文本中使用 emph{} 会删除强调文本的斜体。
\textrm{...} {\rmfamily ...} 罗马字体系列
\textsf{...} {\sffamily ...} 无衬线字体系列
\texttt{...} {\ttfamily ...} 电传打字机字体系列 这是一种等宽字体,也称为等距字体。取决于字体,数字零可能带有连字符以与字母O区分。
\textup{...} {\upshape ...} 直立式 与普通字体相同。
\textit{...} {\itshape ...} 斜体式
\textsl{...} {\slshape ...} 倾斜式 普通字体的倾斜版本(类似于斜体,但略有不同)。
\textsc{...} {\scshape ...} 小大写
\uppercase{...} 大写(全大写) 还有 \lowercase。不过有一些注意事项,请参见 这里
\textbf{...} {\bfseries ...} 粗体
\textmd{...} {\mdseries ...} 中等粗细 普通字体粗细。
\textlf{...} {\lfseries ...} 轻盈 比普通字体更轻盈的字体粗细。并非所有字体都支持。

一般来说,应该优先使用命令而不是其等效开关,因为命令会在所选样式结束后的紧邻位置自动修正间距。

您可能已经注意到没有下划线,这是因为下划线是打字机时代的产物,当有粗体和斜体可用时,不建议使用它。[2] 然而,在某些情况下,例如在编辑时突出显示更改,下划线可能很有用。虽然下划线可以通过 \underline{...} 命令实现,但以这种方式下划线的文本不会正确换行。相反,请使用 \ul{...} 命令(来自 soul 包)或 \uline{...} 命令(来自 ulem(下划线强调)包)。默认情况下,后者包也会覆盖 \emph,使文本下划线而不是斜体化。如果您不想这样做,请使用 normalem 选项,即 \usepackage[normalem]{ulem}。这两个包还提供带有 \st{...}\sout{...}删除线文本。

调整文字大小

[edit | edit source]

内置大小

[edit | edit source]

要相对于默认正文文字大小缩放文字,请使用以下命令

命令 输出
\tiny 示例文本
\scriptsize 示例文本
\footnotesize 示例文本
\small 示例文本
\normalsize 示例文本
\large 示例文本
\Large 示例文本
\LARGE 示例文本
\huge 示例文本
\Huge 示例文本

这些命令在给定范围内改变大小。例如,{\Large some words} 将只改变 some words 的大小,不会影响文档中其他部分的字体。它适用于文本的大部分内容。

{\Large\tableofcontents}

这些命令不能在数学模式下使用。但是,公式的一部分可以通过使用包含大小命令的 \mbox 命令设置成不同的尺寸。新尺寸在大小命令之后立即生效;如果整个段落或单元都设置成特定大小,则大小命令应包含空行或 \end{...},以分隔单元。

默认情况下,\normalsize 是 10 磅,但这可以在 \documentclass 声明中更改,例如 \documentclass[12pt]{article}。请注意,并非每个文档类对所有上述大小命令都有独特的大小。

绝对磅值大小
大小 标准类(除了slides), beamer AMS 类, memoir slides
[10pt] [11pt] [12pt] [10pt] [11pt] [12pt]
\tiny 5 6 6 6 7 8 13.82
\scriptsize 7 8 8 7 8 9 16.59
\footnotesize 8 9 10 8 9 10 16.59
\small 9 10 10.95 9 10 10.95 16.59
\normalsize 10 10.95 12 10 10.95 12 19.907
\large 12 12 14.4 10.95 12 14.4 23.89
\Large 14.4 14.4 17.28 12 14.4 17.28 28.66
\LARGE 17.28 17.28 20.74 14.4 17.28 20.74 34.4
\huge 20.74 20.74 24.88 17.28 20.74 24.88 41.28
\Huge 24.88 24.88 24.88 20.74 24.88 24.88 41.28

TeX 中的磅值遵循标准的美国磅值系统,其中 1 pt 大约为 0.35136 毫米。大多数现代计算机程序中使用的标准磅值(称为桌面出版磅值PostScript 磅值)有 1 pt 大约为 0.3527 毫米,而标准的欧洲磅值(称为Didot 磅值)有 1 pt 大约为 0.37597151 毫米(参见:点 (排版))。

任意大小

[edit | edit source]

命令 \tiny...\Huge 通常足以满足您的需求,但您有时可能需要任意字体大小。这是通过 \fontsize{<size>}{<line space>}\selectfont 来实现的。例如

\fontsize{5cm}{5.5cm}\selectfont

将当前字体大小设置为 5 厘米,行距为 5.5 厘米行距

如果您使用的是latexpdflatex引擎,您可能会收到类似于以下内容的警告

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <142.26378> not available
(Font)              size <24.88> substituted on input line 103.

这是因为这些较旧的引擎只支持一组固定的大小,介于 5 到 17 磅之间。当他设计 Computer Modern 时,Knuth 为这些大小创建了单独的字体文件,每个文件都针对特定大小进行了笔划宽度和间距优化。为了避免扭曲它们,默认情况下会禁用缩放这些字体。

使用lualatexxelatex可以避免此问题,它们使用 Latin Modern(Computer Modern 的矢量化版本)作为默认字体系列。这仍然为每个原始光学大小提供单独的文件,但在要求任意大小时会自动缩放最接近的字体。

使用替代字体

[edit | edit source]

当 TeX 最初在 1970 年代后期设计时,基于矢量的字体不存在于任何常见的格式中,PostScript 直到 1982 年才发布。因此,TeX 被设计为使用自己的字体系统,即 METAFONT。随着时间的推移,TeX(和 LaTeX)扩展到支持 PostScript 字体,现代 LaTeX 引擎也支持在现代系统中找到的 TrueType (TTF) 和 OpenType (OTF) 字体。

使用 TTF 和 OTF 字体

[edit | edit source]

如果您使用的是lualatexxelatex,您可以使用 fontspec 包使用 TTF 和 OTF 字体

\documentclass{article}

\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Georgia}
\setsansfont[Ligatures=TeX]{Arial}

\begin{document}
Lorem ipsum...
\end{document}

选项 [Ligatures=TeX] 允许您使用 文本格式 章节中提到的标准 TeX 连字,而不是您键盘上不太可能存在的 Unicode 字符。例如,---可用于创建 em 破折号 (—),引号可以键入 ``like this'' 而不是 “like this”,等等。

fontspec 包极具可配置性。有关详细信息,请参见手册[3],但下面介绍了一些基本内容。

选择字体文件

[edit | edit source]

给定字体的不同粗细和样式通常存储为单独的字体文件。一个典型的字体可能提供四个文件来表示它的常规粗细,*斜体*,**粗体**和* **粗斜体**。给定字体的名称,fontspec通常可以推断出各个文件的名称。但是,许多字体有多于两种粗细 - 例如,Futura 的一些版本有*细体*,*正体*,*中粗体*,*半粗体*,*粗体*和*特粗体*。有时,小写字母**大写** 也作为单独的文件存储。

我们可能希望手动选择粗细以获得特定的外观或更好地匹配文档中其他字体的粗细。继续以 Futura 为例,假设我们希望使用“正体”作为默认粗细,“半粗体”作为粗体,并且字体文件名为

  • Futura-Boo用于直立正体粗细
  • Futura-BooObl用于*斜体*正体粗细
  • FuturaSC-Boo用于小写字母**大写**,正体粗细
  • Futura-Dem用于直立半粗体(粗体)
  • Futura-DemObl用于*斜体*半粗体

我们的字体设置可能类似于

\usepackage{fontspec}
\setmainfont[
    Ligatures=TeX,
    UprightFont = *-Boo,
    ItalicFont = *-BooObl,
    SmallCapsFont = *SC-Boo,
    BoldFont = *-Dem,
    BoldItalicFont = *-DemObl
]{Futura}

请注意,我们可以使用Futura-Boo, Futura-BooObl代替输入*来插入基本名称。

控制字体特征

[edit | edit source]

OpenType (OTF) 格式允许字体设计者嵌入可以打开和关闭的字体特征,例如

  • 字形的替代版本
  • 衬线和“旧式”数字,每个数字都有*表格*和*比例*间距[4]
  • 最多三组连字:*标准*,*上下文*和*历史*。
  • 上标和下标字形
  • 小写字母**大写**(与标准大写和小写字母在同一文件中)

所有这些特征都可以使用不同的fontspec选项打开和关闭。例如,如果我们希望以旧式,比例间距的数字将正文文本设置为Linux Libertine,我们可以将字体设置如下

\setmainfont[
    Ligatures=TeX,
    Numbers={OldStyle, Proportional}
]{Linux Libertine}

可以使用\addfontfeatures{...}打开和关闭特征。假设您想在表格中使用衬线,表格数字

{\addfontfeatures{Numbers={Lining, Tabular}}
    \begin{tabular}{l r}
        Widgets: & 25 \\
        Gadgets: & 6 \\
        Whatsits & 24 \\
    \end{tabular}
} % Return to previous figure style

在 latex 和 pdflatex 中更改字体

[edit | edit source]

如果您没有使用 Unicode 感知引擎之一,字体选择会更加复杂。(请参阅以下有关编码的讨论。)以下资源可用于latexpdflatex字体配置包括

字体编码

[edit | edit source]

数字化人类语言是一个复杂的话题,自 TeX 诞生以来已经发生了重大变化。

Unicode

[edit | edit source]

如今,文本通常使用Unicode 在计算机系统中表示。简而言之,

  • Unicode 文本文件由一系列码位组成,每个码位可以表示一个要绘制的字符,一个重音或其他变音符号以与相邻字符组合,或者一些非打印字符,例如指令,将后续文本从右到左打印。
  • 这些码位中的一个或多个组合在一起表示一个*字形簇*或*字形*,这是字体中我们非正式地称为“字符”的形状。
  • 现代字体格式(如 TrueType 和 OpenType)包含编码表,这些表将码位映射到字体文件包含的字形。

LuaLaTeX 和 XeLaTeX 使用这些工具将 Unicode 编码的输入文件(LuaLaTeX 接受UTF-8 文件,而 XeLaTeX 更加灵活,还接受UTF-16UTF-32)渲染成 PDF 文档。

TeX 编码

[edit | edit source]

原始 TeX 和 LaTeX 设计于 Unicode 出现之前很久,它们使用了一种截然不同的方案。使用latexpdflatex时,您必须选择一个输入编码,引擎使用它来解释您的文件,以及一个输出编码,引擎使用它将您的输入映射到字形。默认字体编码是 OT1,这是原始 Computer Modern 字体的编码。它只包含 128 个字符,其中许多来自 ASCII,但省略了其他一些字符,并包括一些不在 ASCII 中的字符。当需要重音字符时,TeX 通过将普通字符与重音字符组合来创建它们。虽然最终的输出看起来正确,但与基于 Unicode 的方法相比,这种方法存在一些弊端

  • 它阻止在包含重音字符的单词内部自动断字。
  • 在 PDF 中搜索包含重音的单词会失败。
  • 通过 PDF 查看器提取(例如通过复制粘贴)变音符“Ä”实际上会提取两个字符 '"A'。
  • 一些拉丁字母无法通过这种方式创建,更不用说希腊语或西里尔语等非拉丁字母的字母了。

为了克服这些缺点,创建了其他几种 8 位输出编码。T1 编码中的扩展软木塞 (EC) 字体包含使用拉丁字母的大多数欧洲语言的字母和标点符号。LH 字体集包含使用西里尔字母的语言进行排版文档所需的字母。由于西里尔字形数量众多,因此将它们排列成四个字体编码 - T2A、T2B、T2C 和 X2。CB 包含 LGR 编码的字体,用于希腊语文本的排版。通过使用这些字体,您可以改进/启用非英语文档中的断字。使用新的 CM 类字体另一个好处是,它们提供了所有粗细、形状和光学缩放字体大小的 CM 家族字体。

所有这些在OT1 中都是不可能的;因此,您可能希望更改文档的字体编码。

请注意,不同的字体支持不同的输出编码。例如,默认的 Computer Modern 字体不支持 T1。您将需要 Computer Modern Super (cm-super) 或 Latin Modern (lmodern),它们是支持 T1 的 Computer Modern 类字体。如果您没有这些字体,那么(取决于您的 TeX 安装)tex通常会选择 Type3 字体,例如 Type3 EC,它是一种位图字体。位图字体在放大或打印时看起来非常难看。

fontenc 包告诉 LaTeX 使用什么字体编码。字体编码使用以下代码设置

\usepackage['encoding']{fontenc}

其中encoding 是字体编码。可以同时加载多个编码。

您无需在文档中进行任何更改即可使用 CM Super 字体(假设已安装),如果您使用 T1 编码,它们会自动加载。对于lmodern,您需要在设置 T1 编码后加载该包

\usepackage[T1]{fontenc}
\usepackage{lmodern}

ae 包(几乎欧洲)已过时。它提供了一些解决包含特殊字符的单词断字的方法。使用 lmodern 等字体时,这些方法不再需要。使用 ae 包会导致通过pdflatex生成的 PDF 文件出现文本编码问题(例如文本提取和搜索),此外还会出现排版问题。

PDF 字体和属性

[edit | edit source]

PDF 文档能够嵌入字体文件。这使得它们可以移植,因此得名便携式文档格式

许多 PDF 查看器都有一个属性功能,用于列出嵌入的字体和文档元数据。

许多 Unix 系统使用poppler 工具集,该工具集具有pdfinfo用于列出 PDF 元数据,以及pdffonts用于列出嵌入的字体。

参考

[edit | edit source]
  1. Matthew Butterick. "粗体或斜体". 实用排版.
  2. Matthew Butterick. "下划线". 实用排版.
  3. http://mirrors.ctan.org/macros/unicodetex/latex/fontspec/fontspec.pdf
  4. Matthew Butterick. "替代数字". 实用排版.


Previous: Colors 索引 Next: List Structures
华夏公益教科书