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 的材料,經作者授權使用。
