在学术写作中,修改段落格式通常是不必要的。它主要用于排版浮动元素中的文本或处理更为复杂的文档。

段落对齐

LaTeX 中的段落通常是两端对齐的,即与左右边距对齐。如果出于某种原因,你希望修改段落的对齐方式,可以使用三种环境,并且也有相应的 LaTeX 命令。

对齐方式 环境 命令
左对齐 flushleft \raggedright
右对齐 flushright \raggedleft
居中对齐 center \centering

在指定环境的 \begin\end 之间的所有文本将被适当地对齐。列出的命令适用于其他环境。例如,在 tabular 环境中的段落列中。

在标准的 LaTeX 中,没有显式设置完全对齐的命令。这意味着如果你没有将上述三种命令包围在一个组中,文档的其余部分会受到影响。因此,正确的做法是:

{\raggedleft Some text flushed right.}

然而,如果你真的需要局部禁用上述命令(例如,因为必须使用某些损坏的包),你可以使用来自 ragged2e 包的 \justifying 命令。

段落缩进

默认情况下,标题后的第一个段落不进行缩进,这遵循了标准的英美出版商习惯。后续段落的缩进量由一个名为 \parindent 的参数决定。这个常量的默认长度由你使用的文档类设置。你可以通过使用 \setlength 命令来覆盖它,这将把段落缩进设置为 1cm:

\setlength{\parindent}{1cm} % 默认值是 15pt。

在 LaTeX 中,空白也可以变得灵活(Lamport 称之为“橡胶长度”)。这意味着,像段落前插入的额外垂直空白 \parskip 这样的值可以有一个默认尺寸,再加上一些扩展和收缩的量。这对于复杂文档中的页面非常有用,因为并非每一页都是精确固定高度的,所以垂直空间的增减是有益的。你可以通过以下方式指定这一点:

\setlength{\parskip}{1cm plus 4mm minus 3mm}

如果你想要缩进一个本来不缩进的段落,可以在段落开始时使用:

\indent

显然,这只有在 \parindent 不为零时才有效。如果你想要缩进每个章节的开始,可以使用 indentfirst 包:加载后,任何章节/小节的开始部分都会按照常规段落缩进。

要创建一个不缩进的段落,可以使用:

\noindent

这是当你开始一个文档时不使用章节命令时非常有用。

然而,如果你决定将缩进设置为零,那么你需要在段落之间加入垂直空白,以便使它们清晰可见。段落之间的空白由 \parskip 控制,可以像上面一样进行修改。不过,这个参数在其他地方也会用到,例如在列表中,这意味着修改这个设置可能会导致文档的其他部分看起来很不整齐。如果你希望使用没有缩进并在段落之间加空白的风格,可以使用 parskip 包,它会为你做这些调整,同时调整列表和其他使用段落间距的结构的间距,以防它们之间的间距过大。如果你想要既有缩进又有段落之间的空白,可以使用:

\usepackage{parskip}
\setlength{\parindent}{15pt}

段落的后续行缩进

要缩进段落的后续行,可以使用 TeX 命令 \hangindent。默认情况下,悬挂缩进应用于第一行之后,但你可以通过 \hangafter 命令来更改这一行为。以下是一个示例:

\hangindent=0.7cm This paragraph has an extra indentation at the left.

TeX 命令 \leftskip\rightskip 可以分别为每一行的左侧和右侧添加额外的空白,使得后续段落的格式与整体文档边距不同。这些空白会加在由 \parindent\hangindent 添加的缩进之外。

改变段落最后一行的缩进

要改变段落最后一行的缩进,可以使用 TeX 命令 \parfillskip

段落换行

默认的 \paragraph 样式可能看起来有些奇怪,因为它会把接下来的文本排在标题旁边。如果你不喜欢这种方式,可以使用除了传统的 articlebook 以外的类,或者使用 ConTeXt 或 PlainTeX。修改正在使用的类并不是 LaTeX 的推荐用法,这可能会导致许多令人沮丧的问题。

无论如何,我们来分析一下这个问题。如果你通过 \\ 添加一个手动换行,LaTeX 会抱怨:

There's no line here to end.

只需添加一个空格即可解决问题:

\paragraph{Title} \hspace{0pt} \\
Text...

或者,你可以使用一个更简洁但不完全等价的语法:

\paragraph{Title} ~\\
Text...

在上面的临时方法中,你也可以用 ${}$(空的内联数学表达式)替换 \hspace{0pt}~

行间距

要改变整个文档的行间距,可以使用 \linespread 命令,详见“文本格式化”部分。

或者,你也可以使用 \usepackage{setspace} 包,这也在“文本格式化”部分有介绍。此包提供了 \doublespacing\onehalfspacing\singlespacing\setstretch{baselinestretch} 命令,这些命令将设置所有章节和段落的行间距,直到使用另一个命令覆盖它们。此外,包还提供了以下环境,以便仅在文档内的特定位置更改行间距,而不影响整个文档:

  • doublespace:双倍行距;

  • onehalfspace:1.5倍行距;

  • singlespace:正常行距;

  • spacing:可自定义的行间距,例如:\begin{spacing}{\baselinestretch} ... \end{spacing}

有关如何在列表中更改行间距的息,请参见自定义列表部分。

手动换行

LaTeX 会自动处理格式化和换行。你应该尽量避免手动换行,因为这可能会导致格式问题。

控制换行应留给宏和包的编写者。下面是一个简易参考:

  • \newline:在命令的位置强制换行;

  • \\:在命令的位置强制换行;通常是前一个命令的简写,但在某些环境下,LaTeX 会重新定义它;

  • \\[extra-space]:命令 \\ 有一个可选参数,指定在下一行之前插入的额外垂直空白量。这个量可以是负值;

  • \\*:在命令的位置强制换行,并禁止在强制换行后进行分页。这个命令也具有可选的垂直空白参数;

  • \linebreak[number]:在命令的位置强制换行。提供的数字参数表示命令的优先级,范围从 0(允许换行,但不强制)到 4(无论如何强制换行)。LaTeX 会尽量生成最佳的换行。如果不能,它会根据你提供的优先级决定是否包含换行;

  • \break (TeX):如果在横向模式下使用,这相当于 \linebreak;如果在纵向模式下使用,它相当于 \pagebreak

  • \par (TeX):结束当前段落。相当于在输入中留下一个空行。

如果你在章节标题中使用这些命令来进行换行,目录中的该标题也会被换行。为了避免这种拆分,可以使用 \section[]{} 命令,详细息请参见章节命令部分。

关于页面换行,请参见“页面布局”部分。有关段落之间手动空白(如 \bigskip)的更多详细息,请参见“长度”部分。

特殊段落

原样文本

有几种方式可以引入编译器不会解释的文本。如果使用 verbatim 环境,beginend 命令之间的所有输入都会被像打字机一样处理。所有的空格和换行都会按原样复制,且文本会以适当的固定宽度字体显示。任何 LaTeX 命令都会被忽略,并作为普通文本处理。这对于排版程序源代码非常理想。以下是一个示例:

\begin{verbatim}
The verbatim environment
  simply reproduces every
 character you input,
including all  s p a c e s!
\end{verbatim}

注意:进入 verbatim 环境后,唯一被识别的命令是 \end{verbatim}。其他命令都会被输出。你可以在 \begin{verbatim} 前放置一个字体大小命令来调整 verbatim 环境中的字体大小。如果这造成问题,可以改用 alltt 包,它提供一个具有相同名称的环境:

\begin{alltt}
Verbatim extended with the ability
to use normal commands.  Therefore, it
is possible to \emph{emphasize} words in
this environment, for example.
\end{alltt}

但记得在前言部分添加 \usepackage{alltt}!在 alltt 环境中,你可以使用命令 \normalfont 恢复正常字体。要在 alltt 环境中写数学公式,可以使用 \( \) 来包围它们,而不是通常的 $

如果你在 alltt 环境中使用 \textbf{},请注意标准字体没有粗体的等宽字体txtfonts 包提供了粗体字体:只需在 \usepackage{alltt} 后添加:

\renewcommand{\ttdefault}{txtt}

如果你只是想引入一个短的原样文本短语,且不需要使用整个环境,可以使用 \verb 命令:

\verb+my text+

\verb 后跟随的第一个字符是分隔符:在这里我们使用了 +,但你可以使用任何字符,除了 *\verb 会原样输出其后的所有文本,直到找到下一个分隔符。例如,以下代码:

\verb;\textbf{Hi mate!};

将打印 \textbf{Hi mate!},忽略 \textbf 对文本的影响。

不过,你可以尝试使用 fancyvrb 包,它提供了一个 Verbatim 环境(注意大写字母),该环境允许你为原样文本添加边框、更改字体大小,甚至在 Verbatim 环境内部进行排版效果的处理。它还可以与 fancybox 包一起使用,添加参考行号(对于数据块或编程非常有用),甚至可以包括整个外部文件。

beamer 中使用 verbatim 时,框架需要标记为易碎的:\begin{frame}[fragile]

排版 URL

hyperrefurl 包中的其中一个提供了 \url 命令,它可以正确地排版 URL,例如:

Go to \url{http://www.uni.edu/~myname/best-website-ever.html} for my website.

这将准确显示该 URL(类似于 \verb 命令),但 \url 命令还会在标点符号处执行无连字符换行(仅在 PDFLaTeX 中有效,在纯 LaTeX + dvips 中无效)。它专为 Web URL 设计,因此它理解其语法,并且只会在斜杠和句点处断开,不会在没有标点的单词中途断开。然而,请记住,URL 中不能包含空格,因此在 \url 参数中使用空格将导致失败,同样,使用其他非 URL 有效字符也会失败。

通过 hyperref 包使用此命令时,URL 在 PDF 文档中是“可点击”的,而仅使用 url 包时,它不会链接到 Web。如果使用 hyperref 包,并且想要去除 URL 周围的边框,可以在 \hypersetup{} 内插入 pdfborder = {0 0 0 0}。(如果四个零不起作用,可以尝试 pdfborder = {0 0 0}。)

你可以将以下代码放入前言部分来更改 URL 的样式,使其与正常字体相同:

\urlstyle{same}

另请参见“超链接”部分。

列表环境

这是由 moreverb 包提供的 verbatim 环境的扩展。它提供的额外功能是可以在文本旁边添加行号。命令是 \begin{listing}[step]{first line}。强制的第一个行号参数是指定从哪个行开始编号。可选的 step 参数是设置编号行之间的步长(默认值为 1,这意味着每行都会编号)。

使用此环境时,记得在文档的前言部分添加:

\usepackage{moreverb}

多行注释

正如我们所看到的,LaTeX 唯一允许添加注释的方式是使用特殊字符 %,它会注释掉该行剩余的部分。如果你想插入长注释或注释掉文档中的某部分内容以便稍后修改,这种方式会非常耗时,除非你使用自动化的编辑器。另一种方法是使用 verbatim 包,按惯例在前言部分加载:

\usepackage{verbatim}

(你也可以使用 comment 包替代)你可以使用一个叫做 comment 的环境,这会注释掉环境内的所有内容。以下是一个示例:

This is another
\begin{comment}
rather stupid,
but helpful
\end{comment}
example for embedding
comments in your document.

这将输出:

This is another example for embedding comments in your document.

请注意,这在复杂的环境中(如数学环境)无法正常工作。你可能会问,为什么要加载一个叫做 verbatim 的包来添加注释?答案很简单:注释文本会像 verbatim 文本一样被编译器处理,唯一的区别是 verbatim 文本被引入文档中,而注释则会被丢弃。

另外,你可以定义一个 \comment{} 命令,在文档的前言部分添加以下内容:

\newcommand{\comment}[1]{}

然后,要注释掉文本,只需像这样做:

\comment{This is a long comment and can extend over multiple lines, etc.} But it won't show.

但是,这种方法可能会在文档中产生不必要的空格,因此可以改用:

\newcommand{\comment}[2]{#2}

然后,如果你只提供一个参数给 \comment{},它会产生期望的效果而不会产生额外的空格。

另一个缺点是内容仍会被解析并可能展开,因此不能随意放入其中(例如 LaTeX 命令)。

跳过源代码的部分

一种更稳健的方式来让 TeX 引擎跳过源代码的某部分是使用 TeX 的 \iffalse 条件。典型用法如下:

This we want to keep

\iffalse % ----- START THE CUT ---------

But this part 
$$\int_{-\infty}^\infty\mathrm{d}x\,x^{-2}$$ 
we want to skip

\fi % ---------- END THE CUT -----------

Here it begins again
This we want to keep

\iffalse 条件始终为假。

引用文本

LaTeX 提供了多个环境用于引用文本,它们有小的差别,适用于不同类型的引用。所有这些环境都将文本在两侧缩进,如果你需要,可以手动添加引号。提供的环境有:

  • quote:用于短的引用或由空行分隔的小段引用;

  • quotation:用于较长的引用,通常超过一个段落,因为它会缩进每个段落的第一行;

  • verse:用于需要换行的重要引用,如诗歌。在此环境中,每个新节由一个空行分隔,新行在一个节内由换行命令 \\ 指定。如果一行超过一页,所有随后的行会缩进,直到显式用 \\ 分隔。

摘要

在科学出版物中,通常会从摘要开始,向读者提供对内容的快速概览。有关文档结构的更多息,请参见“文档结构”部分。

注释和参考文献

本页面使用了 Andy Roberts 的《Getting to grips with LaTeX》中的材料,并得到了作者的许可。


Last modified: Sunday, 20 April 2025, 10:30 AM