文本格式化
文本格式化是文档排版的基础。LaTeX 提供了丰富的字体样式、字号设置和段落格式控制功能。本章将深入讲解这些功能的原理和使用方法,帮助你创建专业美观的文档。
字体样式深入理解
LaTeX 字体系统概述
LaTeX 的字体系统区分"字体族"(font family)、"字体系列"(font series)和"字体形状"(font shape)三个维度:
- 字体族:衬线体(roman)、无衬线体(sans serif)、等宽体(monospace)
- 字体系列:粗细(medium、bold)和宽度(normal、extended)
- 字体形状:直立(upright)、斜体(italic)、倾斜(slanted)、小型大写(small caps)
这种设计让你可以独立控制字体的各个属性,实现灵活的排版效果。
文本命令 vs 声明命令
LaTeX 提供两种设置字体样式的方式,各有适用场景:
文本命令(带参数):格式明确,作用范围清晰
\textbf{粗体文本} % 只有参数内容受影响
\textit{斜体文本}
\texttt{等宽文本}
声明命令(无参数):影响后续所有内容,直到组结束
{\bfseries 这段是粗体} 正常文本
{\itshape 这段是斜体} 正常文本
{\ttfamily 这段是等宽} 正常文本
选择原则:对于短文本,推荐使用文本命令,更加直观;对于较长的段落或需要混合多种格式的场景,声明命令更灵活。
字体族命令
| 文本命令 | 声明命令 | 说明 |
|---|---|---|
\textrm{} | \rmfamily | 衬线字体(Roman),默认字体 |
\textsf{} | \sffamily | 无衬线字体(Sans Serif) |
\texttt{} | \ttfamily | 等宽字体(Typewriter) |
应用场景:
% 衬线字体用于正文
正文使用衬线字体,适合长时间阅读。
% 无衬线字体用于标题和演示
\sffamily\bfseries 第一章 引言
% 等宽字体用于代码
\texttt{print("Hello, World!")}
字体形状命令
| 文本命令 | 声明命令 | 说明 |
|---|---|---|
\textup{} | \upshape | 直立形状,默认 |
\textit{} | \itshape | 斜体,专门的斜体字形 |
\textsl{} | \slshape | 倾斜,将直立字形倾斜 |
\textsc{} | \scshape | 小型大写字母 |
斜体与倾斜的区别:
斜体(italic)是专门设计的字形,字母形状有变化;倾斜(slanted)只是将直立字形机械地倾斜。高质量的字体通常提供真正的斜体字形。
\textit{Italic} vs \textsl{Slanted}
% 观察字母 a 的差异:斜体 a 与倾斜 a 形状不同
字体系列命令
| 文本命令 | 声明命令 | 说明 |
|---|---|---|
\textbf{} | \bfseries | 粗体 |
\textmd{} | \mdseries | 中等粗细,默认 |
组合字体样式
字体属性可以组合使用:
% 嵌套文本命令
\textbf{\textit{粗斜体}}
\textsf{\textbf{无衬线粗体}}
% 组合声明命令
{\bfseries\itshape 粗斜体}
{\sffamily\bfseries 无衬线粗体}
注意:并非所有字体都支持所有样式组合。如果请求的样式不存在,LaTeX 会尝试最接近的替代。
强调文本
\emph 命令根据上下文自动选择合适的强调方式:
正常文本中的 \emph{强调文本} 会显示为斜体。
\textit{斜体文本中的 \emph{强调文本} 会显示为直立。}
这种"自适应"特性使 \emph 成为推荐的强调方式。在斜体环境中强调时,它会自动切换为直立,形成视觉对比。
下划线与删除线
下划线:
\underline{下划线文本}
% 问题:下划线不会自动调整位置
\underline{包含下标 $x_i$ 的文本} % 下划线穿过下标
% 解决:使用 ulem 宏包
\usepackage{ulem}
\uline{自动调整的下划线}
删除线(需要 ulem 宏包):
\usepackage{ulem}
\sout{删除线} % 水平删除线
\xout{斜删除线} % 斜线删除
字号系统
相对字号
LaTeX 提供十级相对字号,从最小到最大:
| 命令 | 大小比例(基准10pt) | 适用场景 |
|---|---|---|
\tiny | 5pt | 极小注释、版权声明 |
\scriptsize | 7pt | 下标、脚注引用 |
\footnotesize | 8pt | 脚注、图表说明 |
\small | 9pt | 摘要、引用 |
\normalsize | 10pt | 正文默认 |
\large | 12pt | 小节标题 |
\Large | 14pt | 节标题 |
\LARGE | 17pt | 大标题 |
\huge | 20pt | 章标题 |
\Huge | 25pt | 封面标题 |
使用方法:字号是声明命令,影响后续内容直到组结束:
{\large 大号文字}
{\small 小号文字}
% 常见用法
{\Large\bfseries 重要提示}
绝对字号
文档类的字号选项设置基准字号:
\documentclass[10pt]{article} % 默认
\documentclass[11pt]{article} % 基准 11pt
\documentclass[12pt]{article} % 基准 12pt
注意:LaTeX 标准文档类只支持 10pt、11pt、12pt 三种基准字号。如需其他大小,可以使用 extsizes 宏包或手动指定。
手动设置字号
使用 \fontsize 命令可以精确控制:
\fontsize{14pt}{18pt}\selectfont
% 第一个参数:字号
% 第二个参数:行距
% 恢复默认
\normalsize
行距控制
行距与字号相关联:
\linespread{1.0} % 单倍行距(默认)
\linespread{1.3} % 1.3 倍行距(约 1.5 倍)
\linespread{1.6} % 1.6 倍行距(约 2 倍)
% 注意:\linespread 的参数是相对于默认行距的比例
% 要设置 1.5 倍行距,通常使用 1.3(因为 LaTeX 默认行距约为 1.2 倍字号)
精确控制行距:
\setlength{\baselineskip}{20pt} % 设置基线间距
\renewcommand{\baselinestretch}{1.5} % 另一种设置方式
颜色处理
加载颜色宏包
\usepackage{xcolor} % 推荐使用 xcolor,功能比 color 更强大
预定义颜色
\textcolor{red}{红色}
\textcolor{blue}{蓝色}
\textcolor{green}{绿色}
\textcolor{yellow}{黄色}
\textcolor{cyan}{青色}
\textcolor{magenta}{品红}
\textcolor{black}{黑色}
\textcolor{white}{白色}
\textcolor{gray}{灰色}
\textcolor{darkgray}{深灰}
\textcolor{lightgray}{浅灰}
\textcolor{brown}{棕色}
\textcolor{olive}{橄榄色}
\textcolor{orange}{橙色}
\textcolor{pink}{粉色}
\textcolor{purple}{紫色}
\textcolor{teal}{蓝绿色}
\textcolor{violet}{紫罗兰}
自定义颜色
RGB 模式(0-255):
\definecolor{myred}{RGB}{200, 50, 50}
\textcolor{myred}{自定义红色}
HTML 模式(十六进制):
\definecolor{myblue}{HTML}{0066CC}
\textcolor{myblue}{HTML 蓝色}
灰度模式(0-1):
\definecolor{mygray}{gray}{0.5}
\textcolor{mygray}{50% 灰色}
颜色混合
xcolor 支持颜色混合:
\textcolor{red!50}{50% 红色} % 与白色混合
\textcolor{red!50!blue}{红蓝混合} % 红蓝各 50%
\textcolor{red!30!blue!70}{30红70蓝} % 指定比例
背景色
\colorbox{yellow}{黄色背景}
% 带边框的背景
\fcolorbox{red}{yellow}{红色边框,黄色背景}
文本背景色
\colorbox{lightgray}{\textcolor{blue}{灰色背景蓝色文字}}
段落格式
段落间距
\setlength{\parskip}{1em} % 段落之间的垂直间距
\setlength{\parindent}{2em} % 首行缩进
% 使用 ctex 时的设置
\ctexset{
parskip = 1em,
indent = 2em
}
段落对齐
LaTeX 默认使用两端对齐(justified),这是书籍排版的传统方式。其他对齐方式:
% 左对齐段落
\begin{flushleft}
左对齐的文本内容
\end{flushleft}
% 或使用声明
{\raggedright 左对齐内容}
% 右对齐段落
\begin{flushright}
右对齐的文本内容
\end{flushright}
% 或使用声明
{\raggedleft 右对齐内容}
% 居中段落
\begin{center}
居中的文本内容
\end{center}
% 或使用声明
{\centering 居中内容}
注意:使用声明形式时,段落末尾需要 \par 或空行:
{\centering 这是居中的段落。\par}
单词断字
LaTeX 自动处理英文单词的断字,但有时需要手动干预:
% 指定断字点
\hyphenation{long-word break-point}
% 禁止断字
\mbox{不能断开的文字}
% 临时禁止断字
{\hyphenpenalty=10000\exhyphenpenalty=10000
这段文字不会被断字处理}
悬挂缩进
悬挂缩进用于术语表、参考文献等场景:
% 使用 \hangindent
\hangindent=2em
\hangafter=0
这是一个悬挂缩进的段落,第一行正常,后续行缩进 2em。
% 使用 hanging 宏包
\usepackage{hanging}
\begin{hangparas}{2em}{1}
段落1,悬挂缩进 2em。
段落2,悬挂缩进 2em。
\end{hangparas}
列表排版
无序列表
\begin{itemize}
\item 第一项
\item 第二项
\item 第三项
\end{itemize}
有序列表
\begin{enumerate}
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
描述列表
\begin{description}
\item[术语一] 术语一的解释说明
\item[术语二] 术语二的解释说明
\end{description}
列表嵌套
列表可以嵌套,最多支持 4 层:
\begin{enumerate}
\item 第一层
\begin{itemize}
\item 第二层
\begin{enumerate}
\item 第三层
\end{enumerate}
\end{itemize}
\end{enumerate}
自定义列表样式
使用 enumitem 宏包自定义列表:
\usepackage{enumitem}
% 自定义标记
\begin{itemize}[label=$\star$]
\item 星号标记
\item 另一个星号
\end{itemize}
% 自定义编号格式
\begin{enumerate}[label=\Roman*.]
\item 罗马数字
\item II
\end{enumerate}
% 设置间距
\begin{itemize}[
topsep=0pt, % 列表上方间距
itemsep=5pt, % 项目间距
parsep=0pt, % 段落间距
leftmargin=2em % 左边距
]
\item 项目
\end{itemize}
% 定义新列表环境
\newlist{steps}{enumerate}{1}
\setlist[steps]{label=Step \arabic*:, leftmargin=*}
\begin{steps}
\item 准备材料
\item 开始制作
\end{steps}
引用与摘录
短引用
quote 环境适合短引用,无首行缩进:
正如高德纳所说:
\begin{quote}
程序是为了被人读而写的,顺便让机器执行。
\end{quote}
长引用
quotation 环境适合长引用,支持多段落,有首行缩进:
\begin{quotation}
这是一段较长的引用,可以包含多个段落。
第二个段落会自动首行缩进。
\end{quotation}
诗歌引用
verse 环境用于诗歌,使用 \\ 换行:
\begin{verse}
白日依山尽,\\
黄河入海流。\\
欲穷千里目,\\
更上一层楼。
\end{verse}
脚注与边注
脚注
这是正文\footnote{这是脚注内容}。
% 自定义标记
\footnote[1]{指定编号}
\footnote*{星号标记}
% 改变脚注格式
\renewcommand{\thefootnote}{\fnsymbol{footnote}} % 符号标记
\renewcommand{\thefootnote}{\alph{footnote}} % 字母标记
边注
\marginpar{这是边注}
% 指定位置的边注
\marginpar[\leftarrow 左边注]{右边注 \rightarrow}
水平线
基本水平线
\hrule % 全宽水平线(纯 TeX 命令)
\rule{宽度}{高度} % 指定尺寸的线
% 常用形式
\rule{\textwidth}{0.4pt} % 横贯页面的细线
\rule{5cm}{1pt} % 5cm 长、1pt 高的线
更美观的分隔线
% 使用基本 LaTeX
\begin{center}
\rule{0.8\textwidth}{0.4pt}
\end{center}
% 使用小标题加线
\section*{附录}
% 定制标题线
\noindent\textbf{附录}\hrulefill
排版最佳实践
一致性原则
- 正文字体在整个文档中保持一致
- 标题层级使用统一的字号和格式
- 强调方式保持一致(统一使用
\emph或\textbf)
适度强调
% 推荐:适度使用强调
重要的概念使用 \emph{强调} 标记。
% 避免:过度强调
这是 \textbf{\textit{\underline{过度强调}}},反而没有重点。
可读性优先
% 推荐:使用合适的字号和间距
\documentclass[12pt]{article}
\linespread{1.3}
% 避免:字号过小或行距过密
\documentclass[10pt]{article}
\linespread{1.0}
小结
本章详细介绍了 LaTeX 文本格式化:
- 字体样式:理解字体族、形状、系列的组合方式
- 两种命令形式:文本命令和声明命令的选择
- 字号系统:相对字号和绝对字号的使用
- 颜色处理:预定义颜色、自定义颜色、颜色混合
- 段落格式:间距、对齐、断字控制
- 列表排版:各类列表和自定义样式
- 引用与脚注:quote、quotation、footnote 环境
- 最佳实践:一致性、适度强调、可读性
掌握文本格式化是创建专业文档的基础。下一章将介绍环境的使用。