LaTeX/段落格式
在学术写作中很少需要改变段落格式。它主要用于格式化浮动中的文本或更奇特的文档。
LaTeX 中的段落通常是完全对齐的,即与左右边距对齐。无论出于何种原因,如果你想改变段落的对齐方式,可以使用三种环境,以及 LaTeX 命令等效项。
对齐方式 | 环境 | 命令 |
---|---|---|
左对齐 | flushleft | \raggedright
|
右对齐 | flushright | \raggedleft
|
居中 | center | \centering
|
指定环境的 \
和 \end
之间的所有文本将被适当对齐。列出的命令用于其他环境中。例如,p(段落)列在 tabular 中。
在标准 LaTeX 中无法显式设置完全对齐。这意味着如果你没有将前面 3 个命令包含在组中,文档的其余部分将受到影响。 所以使用命令的正确方法是
|
但是,如果你真的需要在本地禁用上述命令之一(例如因为你必须使用一些损坏的软件包),可以使用软件包 ragged2e 中的命令 \justifying
。
默认情况下,标题后的第一个段落遵循标准的英美出版商的做法,即不缩进。后续段落缩进的大小由一个名为 \parindent
的参数决定。此常量所持的默认长度由你使用的文档类设置。可以通过使用 \setlength
命令来覆盖它。这将把段落缩进设置为 1 厘米
\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
。
\paragraph
的默认样式可能看起来很奇怪,因为它在标题旁边写入后面的文本。如果你不喜欢它,请使用除了传统文章/书籍之外的类,或者使用 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
|
在命令出现的位置换行。 |
\\
|
\n |
\\[extra-space]
|
命令 \\ 具有一个可选参数,用于指定在下一行之前插入的额外垂直空间量。此量可以为负值。 |
\\*
|
\nobreakspace |
\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 中使用逐字文本,需要将框架设置为易碎的:\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 中则不行)。它是为网页 URL 设计的,因此它了解网页 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 环境的扩展。它提供的额外功能是它可以在文本旁边添加行号。命令是 \{listing}[step]{first line}
。必需的 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.
|
这是另一个在文档中嵌入注释的示例。 |
请注意,这在复杂环境中不起作用,例如数学公式。您可能想知道,为什么要加载一个名为 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 入门 的材料,经作者许可。