跳转到内容

LaTeX/特殊字符

来自 Wikibooks,开放世界中的开放书籍

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. 方框
  5. 规则和支撑

技术文本

  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. 命令词汇表

编辑此框编辑目录


在本章中,我们将讨论与输入编码、排版变音符号和特殊字符相关的主题。

在下文中,我们将针对所有除小写字母 a–z、大写字母 A-Z、数字 0–9 和英文标点符号以外的符号使用“特殊字符”。

某些语言通常需要专门的输入系统来简化文档编写。阿拉伯语、中文、日语、韩语等语言就是这种情况。此特定主题将在 国际化 中进行讨论。

生成带有变音符号(例如重音符号)的字符的规则略有不同,具体取决于您是在文本模式、数学模式还是制表环境中。

输入编码

[edit | edit source]

TeX 默认使用 ASCII。但 128 个字符不足以支持非英语语言。TeX 有自己的方法,通过命令来处理每个变音标记(参见 转义代码)。但是,如果我们希望重音符号和其他特殊字符直接出现在源文件中,则必须告诉 TeX 我们要使用不同的编码。

LaTeX 提供多种编码

  • ASCII:默认值。源文件中仅支持纯英文字符。
  • ISO-8859-1(也称为 Latin 1):8 位编码。它支持大多数拉丁语语言的字符,仅此而已。
  • UTF-8:Unicode 多字节编码。支持完整的 Unicode 规范。
  • 其他...

在下文中,我们假设您要使用 UTF-8。

指定编码有一些重要步骤

  • 确保您的文本编辑器以 UTF-8 解码文件。
  • 确保它以 UTF-8 保存您的文件。大多数文本编辑器不区分这两种情况,但有些区分,例如 Notepad++。
  • 如果您在终端中工作,请确保它设置为支持 UTF-8 输入和输出。一些旧的 Unix 终端可能不支持 UTF-8。PuTTY 默认情况下未设置为使用 UTF-8,您需要对其进行配置。
  • 告诉 LaTeX 源文件是 UTF-8 编码的。
\usepackage[utf8]{inputenc}

inputenc [1] 包告诉 LaTeX 您.tex文件的文本编码格式是什么。

inputenc 包允许用户在文档中更改编码 - 通过命令 \inputencoding{'编码名称'}

\usepackage[utf8]{inputenc}
% ...
% In this area
% The UTF-8 encoding is specified.
% ...
\inputencoding{latin1}
% ...
% Here the text encoding is specified as ISO Latin-1.
% ...
\inputencoding{utf8}
% Back to the UTF-8 encoding.
% ...

扩展支持

[edit | edit source]

LaTeX 对 UTF-8 的支持相当具体:它只包含有限范围的 Unicode 输入字符。它只定义了那些已知在当前字体编码中可用的符号。您可能会遇到使用 UTF-8 可能会导致错误的情况

! Package inputenc Error: Unicode char \u8:ũ not set up for use with LaTeX.

这是因为 utf8 定义并不一定映射您能够在键盘上输入的所有字符字形。例如,这些字符包括

ŷ Ŷ ũ Ũ ẽ Ẽ ĩ Ĩ

在这种情况下,您可以尝试使用 utf8x 选项定义更多字符组合。 utf8x 未正式支持,但在某些情况下可能有效。但是,它可能会破坏与某些包(如 csquotes)的兼容性。

另一种可能性是坚持使用 utf8 并自己定义字符。这很容易

\DeclareUnicodeCharacter{'codepoint'}{'TeX sequence'}

其中 codepoint 是所需字符的 Unicode 码位。 TeX 序列 是在遇到与码位匹配的字符时要打印的内容。您可以在此 网站 上找到码位。码位很容易在网络上找到。示例

\DeclareUnicodeCharacter{0177}{\^y}

现在输入 ŷ 将有效地打印 ŷ。

转义代码

[edit | edit source]

除了直接输入 UTF-8,LaTeX 还支持特殊字符的组合。如果您的键盘缺少一些所需的重音符号和其他变音符号,这很方便。

以下重音符号可以放在字母上。虽然大多数示例中都使用了“o”字母,但重音符号可以放在任何字母上。重音符号甚至可以放在“缺失”的字母上方;例如,\~{} 会在空白处生成一个波浪号。

以下命令只能在段落(默认)或 LR(左右)模式下使用。

LaTeX 命令 示例 描述
\`{o} ò 重音符
\'{o} ó 锐音符
\^{o} ô 圆形符号
\"{o} ö 变音符、分音符或双点符号
\H{o} ő 长匈牙利变音符(双锐音符)
\~{o} õ 波浪号
\c{c} ç 尾音符
\k{a} ą 尾音符
\l{} ł 带横线的 l(带笔划的 l)
\={o} ō 长音符(字母上方的横线)
\b{o} o 字母下方的横线
\.{o} ȯ 字母上方的点
\d{u} 字母下方的点
\r{a} å 字母上方的圆圈(对于 å,还有一个特殊的命令 \aa
\u{o} ŏ 字母上方的短音符
\v{s} š 字母上方的抑扬符/尖音符 ("v")
\t{oo} o͡o 两个字母上方的 "领带"(倒置的 u)
\o{} ø 带斜线的 o(带斜线的 o)
{\i} ı 无点 i(没有点的 i)

旧版本的 LaTeX 在添加变音符号时不会移除 i 和 j 字母顶部的点。为了纠正这个问题,必须使用这些字母的无点版本,通过输入 \i\j。例如

  • \^{\i} 应该用于 i 上加尖音符 î;
  • \"{\i} 应该用于 i 上加双点 ü。

然而,当前版本的 LaTeX 不再需要这样做(实际上,这样做可能会导致崩溃并出现错误)。

如果需要用一种语言编写完整的文档,并且该语言多次需要特定的变音符号,那么使用正确的配置就可以直接在文档中编写这些字符。例如,为了更方便地编写双点符号,可以将 babel 包配置为 \usepackage[german]{babel}。这提供了 "o 的简写形式,用于 \"o。如果需要在标签中使用一些文本重音,这将非常有用,因为否则将无法接受任何反斜杠。

有关语言配置的更多信息,请参见 国际化 部分。

小于 <大于 >

[edit | edit source]

两个符号 '<' 和 '>' 实际上是 ASCII 字符,但您可能已经注意到,它们分别打印 '¡' 和 '¿'。这是一个字体编码问题。如果您希望它们打印真实的符号,则必须使用其他字体编码,例如 T1,并使用 fontenc 包加载。有关字体编码的更多详细信息,请参见 字体

或者,可以使用专用命令打印它们

\textless
\textgreater

欧元货币符号

[edit | edit source]

如今在编写关于金钱的内容时,您需要 欧元符号textcomp 包提供了一个 \texteuro 命令,它会提供当前文本字体提供的欧元符号。根据您选择的字体,这可能与官方符号相差甚远。

eurosym 提供了欧元符号的官方版本。在序言中加载它(可选地使用 official 选项)

\usepackage[official]{eurosym}

然后您可以使用 \euro{} 命令插入它。最后,如果您想要一个与当前字体样式匹配的欧元符号(例如,粗体、斜体等),您可以使用不同的选项

\usepackage[gen]{eurosym}

同样,您可以使用 \euro{} 插入欧元符号。

或者,您可以使用 marvosym 包,它也提供了欧元符号的官方版本。

\usepackage{marvosym}
% ...

\EUR{}

现在您已经成功地打印了欧元符号,您可能希望键盘上的 '€' 实际上打印出与上面一样的欧元符号。有一个简单的方法可以做到这一点。您必须确保使用 UTF-8 编码以及一个可用的 \euro{}\EUR{} 命令。

\DeclareUnicodeCharacter{20AC}{\euro{}}
% or
\DeclareUnicodeCharacter{20AC}{\EUR{}}

完整示例

\usepackage[utf8]{inputenc}
\usepackage{marvosym}
\DeclareUnicodeCharacter{20AC}{\EUR{}}

温度和数学的度数符号

[edit | edit source]

打印温度和角度值的 easiest 方式是使用 siunitx 包的 \SI{value}{unit} 命令,它在文本模式和数学模式下都有效

\usepackage{amsmath}
\usepackage{siunitx}
%...

A $\SI{45}{\degree}$ angle.

It is \SI{17}{\degreeCelsius} outside.

有关更多信息,请参见 siunitx 包的文档

一个常见的错误是使用 \circ 命令。它不会打印正确的字符(尽管 $^\circ$ 会)。请改用 textcomp 包,它提供了一个 \textdegree 命令。

\usepackage{textcomp}
%...

A $45$\textdegree angle.

对于温度,您可以使用相同的命令,或者选择 gensymb 包并编写

\usepackage{gensymb}
\usepackage{textcomp}
%...

17\,\celsius % best (with textcomp)

一些键盘布局包含度数符号,如果您使用的是 UTF-8 和 textcomp,可以直接使用它。为了获得更好的字体质量,我们建议使用合适的字体,例如 lmodern

\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{textcomp}

% ...

17\,°C

17\,% best

其他符号

[edit | edit source]

LaTeX 有许多符号可用。大多数符号都在数学领域,后面的章节将介绍如何访问它们。对于更常见的文本符号,请使用以下命令

命令 示例 字符
\% %
\$ $
\{ {
\_ _
\P
\ddag n/a
\textbar n/a |
\textgreater >
\textendash n/a
\texttrademark n/a
\textexclamdown n/a ¡
\textsuperscript{a} a
\pounds n/a £
\# #
\& &
\} }
\S §
\dag n/a
\textbackslash n/a \
\textless <
\textemdash n/a
\textregistered n/a ®
\textquestiondown n/a ¿
\textcircled{a} n/a
\copyright n/a ©

上面表格中没有提到,在 LaTeX 代码中使用波浪号 (~) 来生成 不间断空格。要获得打印的波浪号符号,请编写 \~{}\textasciitilde{}。使用 \textvisiblespace 可以创建一个可见的空格

对于一些更有趣的符号,由于 pifont 包,Postscript ZapfDingbats 字体可用。在你的序言中添加声明:\usepackage{pifont}。接下来,命令 \ding{number} 将打印指定的符号。以下是可用符号的表格

ZapfDingbats symbols.

在特殊环境中

[edit | edit source]

数学模式

[edit | edit source]

上面的一些以及一些类似的重音符号也可以在数学模式下生成。以下命令只能在数学模式下使用。

LaTeX 命令 示例 描述 文本模式等效
\hat{o} 圆形符号 \^
\widehat{oo} \hat 的宽版本,在多个字母上
\check{o} V形或勾号 \v
\tilde{o} 波浪号 \~
\widetilde{oo} \tilde 的宽版本,在多个字母上
\acute{o} 锐音符 \'
\grave{o} 重音符 \`
\dot{o} 字母上方的点 \.
\ddot{o} 字母上方的两个点(文本模式中的变音符) \"
\breve{o} 短音符 \u
\bar{o} 长音符 \=
\vec{o} 字母上的向量(箭头)

当对字母 ij 应用重音符时,可以使用 \imath\jmath 来防止点与重音符重叠。

LaTeX 命令 示例 描述 带顶点的示例
\hat{\imath} 字母 i 上的尖音符,没有顶点
\vec{\jmath} 字母 j 上的向量(箭头),没有顶点

制表环境

[edit | edit source]

在制表环境中,一些用于正文的重音符具有其他用途。在这种情况下,可以使用以下命令来创建它们。

  • \a' 用于尖音符
  • \a` 用于重音符
  • \a= 用于长音符

Unicode 键盘输入

[edit | edit source]

一些操作系统提供了键盘组合来输入任何 Unicode 代码点,即所谓的 unicode 组合键

许多 X 应用程序(*BSD 和 GNU/Linux)支持Ctrl+Shift+u组合。应该会出现一个 "u" 符号。输入代码点并按下enterspace以实际打印字符。示例

<Ctrl+Shift+u> 20AC <space>

将打印欧元符号。

GNOME 和 KDE 等桌面环境可能提供可自定义的组合键,用于更易于记忆的序列。

Xorg 提供了具有变体的先进键盘布局,可以让您使用适当的修饰符组合轻松输入许多字符,例如Alt Gr. 这高度依赖于所选的布局+变体,因此建议您在键盘上玩一玩,在每个键和死键之前加上Alt Gr修饰符。

在 Windows 中,您可以按住Alt并输入一个<codepoint>以获取所需的字符。例如,

<Alt> + 0252

将打印德语字母 ü。

[edit | edit source]

注释和参考资料

[edit | edit source]
  1. 有关该包的详细信息,请参阅 由该包作者编写的完整规范.


上一个:列表结构 索引 下一个:国际化
华夏公益教科书