跳到主要内容

文本格式化

文本格式化是文档排版的基础。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)适用场景
\tiny5pt极小注释、版权声明
\scriptsize7pt下标、脚注引用
\footnotesize8pt脚注、图表说明
\small9pt摘要、引用
\normalsize10pt正文默认
\large12pt小节标题
\Large14pt节标题
\LARGE17pt大标题
\huge20pt章标题
\Huge25pt封面标题

使用方法:字号是声明命令,影响后续内容直到组结束:

{\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 环境
  • 最佳实践:一致性、适度强调、可读性

掌握文本格式化是创建专业文档的基础。下一章将介绍环境的使用。