跳至內容

LaTeX/文字格式

來自華夏公益教科書

LaTeX

入門
  1. 介紹
  2. 安裝
  3. 安裝額外軟體包
  4. 基礎
  5. 如何獲得幫助

常見元素

  1. 文件結構
  2. 文字格式
  3. 段落格式
  4. 顏色
  5. 字型
  6. 列表結構
  7. 特殊字元
  8. 國際化
  9. 旋轉
  10. 表格
  11. 標題建立
  12. 頁面佈局
  13. 自定義頁面頁首和頁尾‎
  14. 匯入圖形
  15. 浮動體、圖形和標題
  16. 腳註和頁邊空白註釋
  17. 超連結
  18. 標籤和交叉引用
  19. 首字母

機制

  1. 錯誤和警告
  2. 長度
  3. 計數器
  4. 方框
  5. 規則和撐杆

技術文字

  1. 數學
  2. 高階數學
  3. 定理
  4. 化學圖形
  5. 演算法
  6. 原始碼列表
  7. 語言學

特殊頁面

  1. 索引
  2. 詞彙表
  3. 參考文獻管理
  4. 更多參考文獻

特殊文件

  1. 科學報告(學士報告、碩士論文、博士論文)
  2. 信件
  3. 簡報
  4. 教師專欄
  5. 簡歷
  6. 學術期刊(MLA、APA 等)

建立圖形

  1. 介紹程式圖形
  2. MetaPost
  3. 圖片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 建立 3D 圖形

程式設計

  1. 純 TeX
  2. 建立軟體包
  3. 建立軟體包文件
  4. 主題

其他

  1. 模組化文件
  2. 協作編寫 LaTeX 文件
  3. 匯出到其他格式

幫助和建議

  1. 常見問題解答
  2. 技巧和竅門

附錄

  1. 作者
  2. 連結
  3. 軟體包參考
  4. LaTeX 文件示例
  5. 索引
  6. 命令詞彙表

編輯此框編輯目錄


本節將指導您瞭解文字格式化技術。格式化指的是大多數與外觀相關的操作,包括文字樣式和間距。格式化也可能指的是段落和頁面佈局,在這裡我們將重點介紹單詞和句子的自定義。

作者使用格式化技術來區分文字元素與其餘文字。作者希望區分文字元素的多種方式導致了多種格式化技術。斜體字通常用於強調關鍵詞或短語。腳註有助於提供額外資訊或澄清,而不會打斷文字的主線。出於這些原因,格式化非常重要。但是,也很容易濫用它,一個過度格式化的文件看起來和讀起來可能比一個完全沒有格式化的文件更糟糕。

LaTeX 非常靈活,實際上我們只會略作介紹,因為您可以根據需要對文件的呈現方式進行更多控制。話雖如此,LaTeX 的目的之一就是免除您自己處理物理呈現的壓力,所以您不必太過在意!

間距

[edit | edit source]

行間距

[edit | edit source]

如果您想在文件中使用更大的行間距,可以透過將

\linespread{factor}

命令放在文件的前言中來更改它的值。使用 \linespread{1.3} 表示“一行半”行間距,使用 \linespread{1.6} 表示“雙倍”行間距。通常情況下,行不會擴充套件,因此預設行擴充套件因子為 1。這在所有情況下可能並不理想:請參見 http://tex.stackexchange.com/questions/30073/why-is-the-linespread-factor-as-it-is

setspace 軟體包允許更細粒度地控制行間距。要設定整個文件的“一行半”行間距,但在通常不需要的地方(例如腳註、標題)不設定,

\usepackage{setspace}
%\singlespacing
\onehalfspacing
%\doublespacing
%\setstretch{1.1}

要更改文件內的行間距,setspace軟體包提供環境singlespace, onehalfspace, doublespacespacing:

This paragraph has \\ default \\ line spacing.
 
\begin{doublespace}
  This paragraph has \\ double \\ line spacing.
\end{doublespace}
 
\begin{spacing}{2.5}
  This paragraph has \\ huge gaps \\ between lines.
\end{spacing}

不間斷空格

[edit | edit source]

這個必不可少的功能對於新手來說有點陌生,雖然它在大多數所見即所得的文件處理器中都可以使用。兩個標記(例如單詞、標點符號)之間的不間斷空格會阻止處理器在它們之間插入換行符。此外,不間斷空格不能被放大。這對一致的閱讀非常重要。

LaTeX 使用“~”符號作為不間斷空格。您通常會在某些語言的標點符號之間、在單位和貨幣之間、在首字母之間等等地方使用不間斷空格。在法語排版中,您應該在所有兩部分標點符號之前放一個不間斷空格。

示例

D.~Knuth
EUR~50

句子間距 - 字詞和句子之間的空格

[edit | edit source]

為了在輸出中獲得一個直的右邊界,LaTeX會在單詞之間插入不同數量的空格。預設情況下,它遵循傳統的排版實踐,並在句末插入更多空格來幫助讀者:一個 em-space 而不是一個詞空格。這可以在打字機或電腦鍵盤上透過按兩次而不是一次空格鍵來近似實現。在打字機發明之後,英語習慣是在句子之間按兩次空格鍵(但在各種其他標點符號周圍不這樣做),而法語習慣是按一次空格鍵(但隨後在各種其他標點符號周圍再次按一次)。

在句末新增的額外空格在當前大眾市場英語印刷中被認為是老式的排版風格。這種做法是在15世紀發現的,讀者更喜歡它,並一直保持了15世紀到20世紀的標準。二戰前後排版技術的改變鼓勵大眾市場出版商為了成本/利潤原因越來越多地使用單倍行距,在 20 世紀 80 年代後期,當時創新的 Macintosh DTP 技術為芝加哥大學出版社重新引入和宣揚威廉·莫里斯在 19 世紀失敗的嘗試而創造了一個突然廣闊的平臺,該嘗試將被拒絕的 15 世紀早期的緊密排版字型作為規範,但這次是針對沒有行業或市場知識的人。“法式間距”在此時在美國(僅)被重新定義為一個貶義詞,用來描述它的反義詞:意思是句子之間的 em 間距而不是詞間距。LaTeX 使用者應該注意,唐納德·克努特專門建立 TeX 來糾正他所描述的當時(70 年代,MacintoshDTP 之前)機器排版的醜陋和不可讀性,他後來添加了 FrenchSpacing 選項,不是作為預設選項,而是作為一種需要冗長指定的選項,即原始 TeX 假設使用者想要以讀者為中心的排版(句子之間的 em 間距,而不是詞間距),並且唐納德·克努特明確地對 FrenchSpacing 選項進行了編碼,以實現與當前芝加哥大學後排版人員所宣告的含義完全相反,儘管他被“其他方面”認為是極其聰明和極其知情的)。大多數現代排版人員將句末空格與詞間距相同。(例如,參見布林赫斯特的《排版風格要素》。)

可以使用以下命令停用句末的額外空格

\frenchspacing

它告訴 LaTeX 在句點後不要插入比普通字元後更多的空格。可以在文件後面的其他地方使用 \nonfrenchspacing 命令關閉法式間距。

如果作者希望使用較寬的句子末尾間距,則必須謹慎操作,以防止標點符號被誤解為句子的結尾。TeX 假設句子以句號、問號或感嘆號結尾。雖然如果句號後面是大寫字母,這不會被視為句子結尾,因為大寫字母后面的句號通常出現在縮寫中。作者必須指定任何與這些假設的例外情況。在空格前加反斜槓會生成一個不會被放大的空格。波浪號“~”字元生成一個不間斷空格。在句號前使用命令\@ 指定該句號終止句子,即使它位於大寫字母之後。(如果您使用的是\frenchspacing,則無需指定任何這些例外情況。)

拉伸空格

[編輯 | 編輯原始碼]

您可以在一行中使用 \hfill 插入一個水平拉伸空格,以便剩餘部分被“推”到右邊緣。例如,這在頁首中可能很有用。

Author Name \hfill \today

類似地,您可以使用\vfill 插入垂直拉伸空格。它可能對特殊頁面有用。

\maketitle
\vfill
\tableofcontents
\clearpage

\section{My first section}
% ...

有關更多詳細資訊,請參閱長度

手動間距

[編輯 | 編輯原始碼]

單詞和句子之間的空格、段落、節、小節等之間的空格由 LaTeX 自動確定。手動插入空格違反了 LaTeX 的哲學,通常會導致格式錯誤。手動間距是宏編寫和包建立的範疇。

有關更多詳細資訊,請參閱長度

連字元

[編輯 | 編輯原始碼]

LaTeX 在需要時會對單詞進行連字元處理。不同的語言具有不同的連字元規則。預設情況下,LaTeX 僅支援英語,因此,如果您希望為目標語言使用正確的連字元規則,請參閱國際化

如果連字元演算法沒有找到正確的連字元位置,您可以使用以下命令來告訴 TeX 關於例外情況,從而糾正這種情況。命令

\hyphenation{word list}

導致在用“-”標記的位置僅對引數中列出的單詞(用空格隔開)進行連字元處理。該命令的引數應該只包含由正常字母構建的單詞,或者更確切地說,是 LaTeX 認為是正常字母的字元。眾所周知,連字元演算法沒有找到所有正確的美式英語連字元位置,用於多個單詞。已知例外情況的日誌會定期釋出在TUGboat 雜誌上。(2012 年清單:https://www.tug.org/TUGboat/tb33-1/tb103hyf.pdf)。

連字元提示儲存在連字元命令發生時處於活動狀態的語言中。這意味著,如果您將連字元命令放在文件的序言中,它將影響英語語言的連字元處理。如果您在\begin{document} 之後放置該命令,並且您正在使用某些用於國家語言支援的軟體包(如 babel),則連字元提示將在透過 babel 啟用的語言中處於活動狀態。以下示例將允許對“hyphenation”進行連字元處理以及“Hyphenation”,並且它將阻止對“FORTRAN”、“Fortran”和“fortran”進行任何連字元處理。引數中不允許使用任何特殊字元或符號。示例

\hyphenation{FORTRAN Hy-phen-a-tion}

使用 babel,設定連字元例外的推薦命令是\babelhyphenation。當使用 LuaTeX 時,babel 還允許新增新的模式並修改現有的模式(使用\babelpatterns),以及定義非標準規則(如某些語言中的“ff”到“ff-f”,或排名的連字元處理)以在沒有顯式標記的情況下應用(使用\babelposthyphenation)。

命令\- 在單詞中插入一個可選連字元。這也成為該單詞中允許連字元處理的唯一位置。此命令對於包含特殊字元(例如,重音字元)的單詞特別有用,因為 LaTeX 不會自動對包含特殊字元的單詞進行連字元處理。

\begin{minipage}{2in}
I think this is: su\-per\-cal\-%
i\-frag\-i\-lis\-tic\-ex\-pi\-%
al\-i\-do\-cious
\end{minipage}

LaTeX 不會對包含連字元的複合詞進行連字元處理[1]。有兩個軟體包可以添加回靈活性。hyphenat 軟體包提供\hyp 命令。此命令對連字元進行排版,然後對組成詞進行自動連字元處理。載入軟體包後

\usepackage{hyphenat}

應該寫,而不是 electromagnetic-endioscopy

electromagnetic\hyp{}endioscopy

extdash 軟體包還提供了用於控制包含連字元的複合詞的連字元處理的功能——與其本身的單詞相反,它留給 LaTeX 處理。shortcuts 選項啟用更緊湊的語法

\usepackage[shortcuts]{extdash}

典型用法如下,假設採用緊湊語法。在這兩種情況下,LaTeX 都可以斷開和對組成詞進行連字元處理,但在後一種情況下,它不會在 L 之後斷開

electromagnetic\-/endioscopy
L\=/approximation

可以使用標準 LaTeX 命令將一個或多個單詞保持在同一行上

\mbox{text}

這會阻止連字元處理,並導致其引數在任何情況下都保持在一起。例如

My phone number will change soon. It will be \mbox{0116 291 2319}.

\fbox 類似於\mbox,但此外,還會在內容周圍繪製一個可見的方框。

要完全避免連字元處理,可以將連字元處理的懲罰設定為極值

\hyphenpenalty=100000

您可以透過更改\tolerance=1000\hyphenpenalty=1000 的值來更改 LaTeX 進行連字元處理的程度。您需要試驗這些值才能獲得所需的效果。具有較低容差值的文件會導致 LaTeX 無法容忍單詞之間不均勻的間距,從而比具有較高容差值的文件更頻繁地對單詞進行連字元處理。另外請注意,使用更大的文字寬度會降低遇到連字元處理錯誤的單詞的機率。例如,新增

\usepackage{geometry}

將擴大文字寬度,並減少邊距溢位量。

LaTeX 將左引號和右引號視為不同的實體。對於單引號,重音符,`(在美國鍵盤上,此符號位於波浪號鍵上;在大多數鍵盤上位於數字 1 鍵旁邊)給出左引號,而撇號,'給出右引號。對於雙引號,只需將符號加倍,LaTeX 會相應地解釋它們。(不要使用"作為右雙引號:當babel軟體包用於某些語言(例如德語)時,"被重新定義為產生一個變音符;使用"作為右雙引號會導致間距錯誤或被用來產生變音符)。在英國鍵盤上,'`' 位於 ' 1 ' 鍵的左側,並與 ' ¬ ' 共享鍵,有時還與 ' ¦ ' 或 ' | ' 共享鍵。撇號 (') 鍵位於冒號/分號鍵的右側,並與 ' @ ' 符號共享它。


要在 LaTeX 中“引用”

要在 LaTeX 中“引用”

要在 LaTeX 中“引用”

要在 LaTeX 中“引用”

“德國引號”

«法語引號»

“請按“x”鍵。”

„Proszę, naciśnij klawisz «x»”.

右引號在 LaTeX 中也用於撇號,沒有問題。

對於左下引號和歐洲引號風格,您需要使用 T1 字型編碼,該編碼由以下命令啟用

\usepackage[T1]{fontenc}

有關字型編碼的更多詳細資訊,請參閱字型

csquotes 軟體包提供了一種多語言引用解決方案,並與 BibTeX 提供的引用機制整合。例如,此軟體包允許您根據 babel 語言選擇切換語言和引號風格。

變音符號和重音符號

[編輯 | 編輯原始碼]

大多數重音符號和變音符號可以透過正確配置序言直接透過鍵盤輸入插入。對於鍵盤上不可用的符號,可以透過在需要變音符號的字母之前放置特殊的轉義元字元來將變音符號新增到字母中。

請參閱特殊字元

邊距錯位

[編輯 | 編輯原始碼]

某些非常長的單詞、數字或 URL 可能無法正確地進行連字元處理,並且會遠遠超出側邊距。解決此問題的一種方法是使用sloppypar 環境,它告訴 LaTeX 不要嚴格調整單詞間距。因此,單詞之間的一些空格可能有點過大,但長單詞將被正確放置。

This is a paragraph with
a very long word ABCDEFGHIJKLMNOPRST;
then we have another bad thing
--- a long number 1234567890123456789.

\begin{sloppypar}
This is a paragraph with
a very long word ABCDEFGHIJKLMNOPRST;
then we have another bad thing
--- a long number 1234567890123456789.
\end{sloppypar}

另一種解決方案是編輯文字以避免長單詞、數字或 URL 靠近側邊距。

一些字母組合的排版不是簡單的將不同字母一個接一個地設定,而是實際使用特殊的符號(如“ff”),稱為連字。連字可以透過在兩個字母之間插入{}來禁止,或者如果這不起作用,則插入{\kern0pt}。這可能需要針對由兩個單片語成的單詞。一個經典的例子是shelfful[2]

\Large Not shelfful\\
but shelf{}ful

如果您使用的是 LuaLaTeX,可以使用selnolig 包來自動化其中的一些工作。

當斜槓字元/緊接在文字之前和/或之後,且沒有空格隔開時,LaTeX 不允許在斜槓和相鄰文字之間換行。這種行為的實現是由於歷史上文字中大多數斜槓出現的情況都是根據慣例將周圍文字放在同一行上的情況。例如

  • 日期,如“1/1/2021”。
  • 單位的縮寫,如“mm/year”。

日期和單位縮寫相對較短,因此必須將它們保持在同一行上的約束不會造成問題。但是,/ 字元也可能出現在更長的表示式中,這可能會在輸出中產生“過滿”錯誤,導致文字超出邊距。在這些情況下,應該將/ 字元替換為“\slash”,這樣如果需要,可以允許在斜槓標記之後“換行”。例如

  • 用斜槓分隔的單詞,如“input/output”,應該排版為“input\slash output”,或者 Yes/No/Cancel。(較短的例子,如 and/or 可以安全地保留為不允許換行。)
  • 使用斜槓作為分隔符的作業系統中的目錄名稱,如 /home/texlion/Documents,應該排版為“/home\slash texlion\slash Documents”。請注意,3 個斜槓中的第一個斜槓**不**被替換。

/ 或者 \slash 之後的單詞不會自動斷字。這與斷字下描述的帶連字元的單詞的非斷字問題類似。在兩個單詞中同時實現換行和自動斷字的一種方法是

input\slash\hspace{0pt}output

/\slash 都可以與一個零寬度\hspace 一起使用,如下所示。\slash 包含一個懲罰,使在該位置換行不太可能。如果需要,這種組合可以被製成一個新的斜槓宏。 hyphenat 包含一個 \fshyp,它會在斜槓之後新增一個連字元,例如“input/- output”,如果在該位置換行。

要更改字體系列、強調文字和其他與字型相關的問題,請參閱Fonts

格式化宏

[編輯 | 編輯原始碼]

即使您可以輕鬆地使用這些命令更改字型的輸出,您最好不要使用像這樣的顯式命令,因為它們與 LaTeX 的基本理念背道而馳,即分離文件的邏輯和視覺標記。這意味著,如果您在多個地方使用相同的字型更改命令來排版一種特殊的資訊,您應該使用 \newcommand 來定義一個用於字型更改命令的“邏輯包裝器命令”。

\newcommand{\oops}[1]{\textit{#1}}

Do not \oops{enter} this room,
it’s occupied by \oops{machines}
of unknown origin and purpose.

不要進入這個房間,它被機器佔用,這些機器的來源和用途未知。

這種方法的優點是,您可以決定在某個稍後的階段使用除 \textit 以外的其他視覺表示來表示危險,而無需瀏覽您的文件,識別所有 \textit 的出現,然後確定每個 \textit 是用來指出危險還是其他原因。

有關詳細資訊,請參閱Macros

文字模式上標和下標

[編輯 | 編輯原始碼]

使用 \textsubscript{}\textsuperscript{} 可以非常輕鬆地完成下標和上標。

\documentclass{article}
\begin{document}
Wombat\textsubscript{walzing}

Michelangelo was born on March 6\textsuperscript{th}, 1475.
\end{document}

注意:需要 2015 年或之後的 LaTeX 版本,或者 fixltx2e 包,才能在所有上下文中使用文字模式下標。[3]

文字數字(“舊式”數字)

[編輯 | 編輯原始碼]

許多排版人員更喜歡在數字與大寫字母交織在一起時、出現在表格中以及出現在方程式中時使用標題數字,有時也稱為排列數字,在其他地方使用文字數字。LaTeX 允許透過 \oldstylenums{} 命令實現這種用法。

\oldstylenums{1234567890}

有些字型沒有內建文字數字;textcomp 包試圖透過有效地從當前選擇的字型生成文字數字來解決這個問題。在您的前言中放置 \usepackage{textcomp}textcomp 還允許您在 \oldstylenums{} 中使用小數點、格式正確的美元符號等。

文字數字的一個常見用途是在節號、段落號和頁碼中。可以透過在前言中放置一些程式碼來將這些設定為使用文字數字

\usepackage{textcomp}

% Enclose everything in an \AtBeginDocument{}
\AtBeginDocument{%
  % Make \section{} use text figures
  \let\myTheSection\thesection
  \renewcommand{\thesection}{ \oldstylenums{\myTheSection} }

  % Make \paragraph{} use text figures
  \let\myTheParagraph\theparagraph
  \renewcommand{\theparagraph}{ \oldstylenums{\myTheParagraph} }

  % Make the page numbers in text figures
  \let\myThePage\thepage
  \renewcommand{\thepage}{ \oldstylenums{\myThePage} }
}

如果您使用額外的分節或分段命令,您可以調整前面的程式碼列表,將它們也包含在內。

注意

後續使用 \pagenumbering 命令,例如 \pagenumbering{arabic},會將 \thepage 命令重置為原始值。因此,如果您在文件中使用 \pagenumbering 命令,請確保從上面的程式碼中重新定義您的 \myThePage definition

...
\tableofcontents
\pagenumbering{roman}
\chapter{Preface}
...
\chapter{Introduction}
...
\pagenumbering{arabic}
% without this, the \thepage command will not be in oldstyle (e.g., in your Table of Contents}
\renewcommand{\thepage}{ \oldstylenums{\myThePage} }
\Chapter{Foo}
...

連字元和破折號

[編輯 | 編輯原始碼]

LaTeX 知道四種破折號:連字元 (-),短破折號 (–),長破折號 (—) 或減號 (−)。您可以使用不同數量的連續破折號來訪問其中的三種。第四個符號實際上根本不是破折號——它是數學減號

Hyphen: daughter-in-law, X-rated\\
En dash: pages 13--67\\
Em dash: yes---or no? \\
Minus sign: $0$, $1$ and $-1$

這些破折號的名稱是:‘-’(-) 連字元,‘--’(–) 短破折號,‘---’(—) 長破折號和 ‘’(−) 減號。它們有不同的用途

輸入 輸出 用途
- - 詞間
-- 頁碼範圍,1–10
--- 標點符號破折號——就像這樣
$-$ 減號

如果您希望 LaTeX 在行之間斷開復合詞,請使用 hyphenat 包中的 \hyp{} 宏,而不是連字元。

命令 \textendash\textemdash 也分別用於生成短破折號 (–) 和長破折號 (—)。

省略號 (…)

[編輯 | 編輯原始碼]

三個點的序列被稱為省略號,通常用於表示省略的文字。在打字機上,逗號或句號與任何其他字母佔用相同的空間。在書籍印刷中,這些字元只佔用很少的空間,並且與前面的字母非常靠近。因此,您不能透過只輸入三個點來輸入“省略號”,因為間距會出錯。相反,有一個專門的命令用於這些點。它被稱為 \ldots

Not like this ... but like this:\\
New York, Tokyo, Budapest, \ldots

或者,您可以使用 \textellipsis 命令,它允許點之間的間距變化。

現成的字串

[編輯 | 編輯原始碼]

有一些非常簡單的 LaTeX 命令用於排版特殊文字字串


Clipboard

To do
Describemicrotypepackage -- hanging punctuation, font expansion, additional kerning.


註釋和參考文獻

[編輯 | 編輯原始碼]
  1. hyphenat 包文件,第 3 頁
  2. 克努斯,唐納德。 "第 5 章:分組"。 TeXbook。第 19 頁。
  3. http://tex.stackexchange.com/questions/1013/how-to-typeset-subscript-in-usual-text-mode

此頁面使用來自安迪·羅伯茨的 Getting to grips with LaTeX 的材料,經作者許可。


上一個:文件結構 索引 下一個:段落格式
華夏公益教科書