LaTeX/段落格式
在学术写作中,很少需要更改段落格式。它主要用于格式化浮动体中的文本或更奇特的文档。
段落对齐
[edit | edit source]LaTeX 中的段落通常是完全对齐的,即 左边和右边都与边距对齐。无论出于何种原因,如果你想更改段落的对齐方式,可以使用三种环境,以及 LaTeX 命令等效项。
对齐方式 | 环境 | 命令 |
---|---|---|
左对齐 | flushleft | \raggedright
|
右对齐 | flushright | \raggedleft
|
居中 | center | \centering
|
指定环境的 \begin
和 \end
之间的文本将被适当地对齐。列出的命令用于其他环境中。例如,p(段落)列在 tabular 中。
在标准 LaTeX 中无法显式设置完全对齐。这意味着如果你没有将前面的 3 个命令包含在组中,整个文档将受到影响。 因此,使用命令的正确方法是
|
但是,如果你确实需要在本地禁用上述命令之一(例如因为你必须使用一些有问题的软件包),可以使用软件包 ragged2e 中的命令 \justifying
。
段落缩进
[edit | edit source]默认情况下,标题后的第一个段落遵循标准的英美出版商的做法,即没有缩进。后续段落缩进的大小由一个名为 \parindent
的参数决定。此常量持有的默认长度由你使用的文档类设置。可以使用 \setlength
命令覆盖它。这会将段落缩进设置为 1cm
\setlength{\parindent}{1cm} % Default is 15pt.
|
LaTeX 中的空格也可以是灵活的(Lamport 称之为“橡胶”长度)。这意味着诸如在段落 \parskip
之前插入的额外垂直空间之类的值可以具有默认尺寸加上扩展量减去收缩量。这在复杂文档的页面中有用,因为并非每个页面都可能恰好是固定高度行数,因此在垂直空间中进行一些调整是有用的。你可以在 \setlength
命令中像这样指定它
\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
。
段落换行
[edit | edit source]\paragraph
的默认样式可能一开始看起来很奇怪,因为它会在标题旁边写下接下来的文本。如果你不喜欢它,请使用除传统的 article/book 以外的类,或者使用 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]
|
在命令出现的位置换行。您提供的参数 number 表示命令在 0(允许但不鼓励换行)到 4(无论如何都要执行)范围内的优先级。LaTeX 会尝试产生最佳的换行效果。如果它无法做到,它将根据您提供的优先级决定是否包含换行。 |
\break (TeX) |
如果在水平模式下使用,则等效于 `\linebreak`;如果在垂直模式下使用,则等效于 `\pagebreak`。 |
\par (TeX) |
结束当前段落。它等效于在输入中留一个空行。 |
- 如果您使用这些注释在节标题中进行换行,该行也会在目录中进行换行。要避免这种情况,您可以使用
\section[]{}
命令,该命令在 分节命令 中介绍。
分页在 页面布局 中介绍。有关段落之间手动空格(例如 \bigskip
)的更多详细信息,请参阅 长度。
有几种方法可以引入不会被编译器解释的文本。如果您使用 verbatim 环境,则在 begin 和 end 命令之间输入的所有内容都将像打字机一样处理。所有空格和换行符都将按原样复制,并且文本将以适当的固定宽度字体显示。任何 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}
。任何其他命令都会被输出。verbatim 环境中的字体大小可以通过在 \begin{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{}
时,请注意标准字体没有粗体 TT 字体。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]
。
无论是 hyperref 还是 url 包,都提供了 \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 而设计,因此它理解 Web URL 的语法,永远不会在未加标点的词语中间换行,只会在斜杠和句号处换行。但是请记住,URL 中不允许使用空格,因此在 \url
参数中使用空格将失败,使用其他非 URL 有效字符也会失败。
当通过 hyperref 包使用此命令时,URL 在 PDF 文档中是“可点击的”,而在只使用 url 包时,它不会链接到网页。同样,当使用 hyperref 包时,要删除围绕 URL 的边框,请在 \hypersetup{}
内插入 pdfborder = {0 0 0 0}
。(或者,如果四个零没有效果,pdfborder = {0 0 0}
可能有效。)
您可以将以下代码放入您的序言中以更改样式,将 URL 的显示方式更改为正常字体
\urlstyle{same}
|
另请参阅 超链接
这也是由 moreverb 包提供的 verbatim 环境的扩展。它提供的额外功能是可以在文本旁边添加行号。命令是 \begin{listing}[step]{第一行}
。必需的 第一行 参数用于指定编号应从哪一行开始。可选的 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.
|
这是另一个在文档中嵌入注释的例子。 |
请注意,这在复杂的环境中不起作用,例如数学环境。您可能想知道,为什么要加载一个名为 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
|
我们要保留这部分 从这里开始继续 |
\iffalse
条件语句始终为假。
LaTeX 提供了多个用于引用文本的环境;它们之间略有不同,并且针对不同类型的引用。它们都在任一边缘缩进,如果您想要引号,则需要自己添加引号。提供的环境是
- quote
- 用于简短的引文,或由空行分隔的一系列简短的引文。
- quotation
- 用于包含多个段落的长引文,因为它会缩进每个段落的第一行。
- verse
- 用于行尾很重要(例如诗歌)的引文。进入后,新节由空行创建,节中的新行使用换行符命令
\\
指示。如果一行占据了页面上的多行,则所有后续行将缩进,直到明确使用\\
分隔。
在科学出版物中,通常以摘要开头,它为读者提供要期待的内容的快速概述。请参阅 文档结构。
此页面使用 Andy Roberts 的 入门 LaTeX 的材料,经作者授权使用。