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 入門 的材料,經作者許可。
