LaTeX教學2.2 源文件的結構

2.2 源文件結構

重新來看一下我們最開始寫的文檔

\documentclass{article}
\begin{document}
    This is my \emph{first} document prepared in \LaTeX. 
\end{document}

在這個文檔中可以體現出源文件的結構, 所有的LaTeX文檔都是以\documentclass{文類}作為開始, 從\documentclass{}\begin{document}之前的所有命令語句統稱為導言, 在\begin{document}\end{document}之間的命令語句和文本統稱為正文. 命令\end{document}之后的所有字符LaTeX均將其忽略.

2.2.1 文類

標準文類

導言的第一句話, 通常也是LaTeX元文件的第一條命令, 就是文類命令:
\documentclass[參數1, 參數2,……]{文類}[日期]
每個LaTeX源文件都必須從這條命令開始, 它通知LaTeX將該論文源文件按照指定文類規定的文檔格式進行排版, 這個文類命令必須用在導言的首句, 其中的必要參數用于指定所用文類的名稱, 最后一個可選參數日期是選擇宏包對應日期的版本, 一般情況下省略. 在英文文檔中, 常用的文類有4種

文類名 用途 特點
article 短文, 評論, 學術論文 無左右頁區分處理, 無chapter結構
book 專業著作, 學位論文 默認有左右頁區分處理, 章起右頁
report 科技,實驗報告 默認無左右頁區分處理, 章起新頁
beamer 論文陳述幻燈片 提供多種主題樣式, 可方便地更換幻燈片整體風格

在表格中前三種由于廣泛應用于論文寫作, 因此被稱為標準文類.

可以試一下, 在第一個示例的文類下是無法正常編譯中文的, 如果要編譯中文, 有兩種方式可以選擇,

  1. 選擇是更換對應文類為ctexart,ctexbook,ctexrep, 但是這種方式會根據中文論文的排版習慣改變文檔內的顯示形式, 在正文結構里會提到, 而且在使用這四種文類的時候, 如果使用的是XeLaTeX或者是LuaLaTeX編譯方式, 可以直接使用\documentclass{ctex……}, 這兩種編譯方式可以自動將文檔中的中文識別為UTF8的編碼進行編譯, 如果使用的是(Pdf)LaTeX, 因為由于歷史原因, 這兩種編譯方式默認編碼是GBK, 而CTeX宏集是以默認的編碼格式是UTF8, 所以要使用可選參數[UTF8]來將(PDF)LaTeX的編碼格式設置為UTF8, 則需要使用\documentclass[UTF8]{ctex……}來設置文類. 因為LaTeX并不會自動識別用戶文檔所用的編碼格式, 所以建議使用者總是加上可選參數[UTF8], 即總是使用\documentclass[UTF8]{ctex……}
  2. 另一種是添加中文支持宏包\usepackage[UTF8]{ctex}, 因為這種方式沒有改變文類, 只是增添了適應文字類型, 所以文檔內的顯示形式不會改變, 而對于可選參數[UTF8]我們同樣遵循第一點里說的, 建議總是使用[UTF8]

關于LaTeX中中文的輸出更多內容, 可以在C:\CTEX\MiKTeX\doc\latex\ctex\ctex.pdf(使用MiKTeX)或C:\texlive\2018\texmf-dist\doc\latex\ctex\ctex.pdf(使用TeX Live)查看ctex.pdf文件

標準文類的選項
選項 是否默認 說明
10pt 常規字體尺寸10pt
11pt 常規字體尺寸10.95pt
12pt 常規字體尺寸12pt
a4paper 是(取決于安裝TeX系統時設置) 紙張幅面,寬210mm×高297mm
letterpaper 是(取決于安裝TeX系統時設置) 紙張幅面, 寬216mm×高279mm
a5paper 紙張幅面, 寬148mm×高210mm
b5paper 紙張幅面, 寬176mm×高250mm

以上是在設置文類時的可選參數, 上表中提及的選項均可以在所有標準文類中使用.即我們可以使用文類\documentclass[b5paper,11pt]{article}來設置一個用b5紙, 文檔正文字體大小為11pt的論文文類.

2.2.2 宏包

每個功能強大的命令或環境都是由多個TeX基本命令和LaTeX命令組合而成的, 這種組合命令稱為, 存儲這些宏的命令文件稱為宏包, 其擴展名為.sty.

宏包的作用是擴展或新增某些排版功能, 相當與C++中的#include<>, 在導言區使用命令
\usepackage[參數1,參數2,……]{宏包名稱}[日期]
來調用宏包, 調用宏包命令只能在導言區使用, 宏包名稱不區分大小寫, 通常均為小寫, 最后一項可選參數日期與文類命令中的日期作用相同, 通常情況下省略. 雖然LaTeX中的宏包數量上千個, 但是撰寫論文常用的只有20多個, 下表列出了他們的名稱和用途, 具體如何使用可以在幫助->宏包幫助中輸入宏包名稱來查看其對應的幫助文檔.

宏包名 用途 宏包名 用途
amsmath 多種公式環境和數學命令 graphicx 插圖處理
amssymb 數學符號生成命令 hyperref 創建超文本鏈接和PDF書簽
array 數組和表格制作 ifthen 條件判斷
caption 插圖和表格標題格式設置 ctex 中文字體
ctexcap 中文字體和標題 fancyhdr 頁眉頁腳設置
titlesec 章節標題格式設置 titletoc 目錄格式設置
fontspec 字體選擇 geometry 版面尺寸設置
fancyvrb 抄錄環境設置

2.2.3 正文結構

層次

對于一篇論文或一本書, 它的結構層次是很重要的, LaTeX為不同的文類提供了不同的章節劃分標準.

\documentclass{book}
\begin{document}
    \chapter{chapter 1}
    \section{section 1}
    \subsection{subsection 1}
    \subsubsection{subsubsection 1}
    \paragraph{paragraph 1}
    \subparagraph{subparagraph 1}
    This is the full structure of a book.
    \section{section 2}
\end{document}

book文類

這是book文類的結構層次, 其章節的編號不需要我們自己去添加, LaTeX會自動按順序將編號生成好, 如果沒有前一層則會把前一層的編號自動判斷為0, report文類也是如此.而對于article文類, 它沒有chapter結構, 其余的完全相同, 而對ctexbook, ctexrepctexart文類, chapter和section結構會居中, 如圖
ctexbookmd.png

段落與行

試著在正文中編譯以下文字

This is the first line
This is also the first line
!
.

又發現問題了, 這里和Word里有著明顯區別, 編譯出來的文件并沒有按著想象中的換行, 而是排到了一行, 并且會發現在第一個line后面有一個空格, 即可以理解為一個換行相當于一個空格, 英語中單詞和單詞之間會有空格, 所以在這個地方用換行當成空格也無可厚非; 但在中文中, 我們漢字和漢字之間并不需要空格, 那換行產生的空格怎么消除呢?別擔心, 在為中文準備的ctex系列文類和ctex.sty宏包中, 將這個問題已經處理過了, 看下面的例子

\documentclass[UTF8]{ctexart}
\begin{document}
    這個
    好
    very
    好
    !
    .
    good
 \end{document}

ctex換行.png

可以看出來, ctex……文類在處理換行的時候, 執行以下判定:如果是漢字+漢字, 漢字+標點則取消空格, 如果是英文+英文, 英文+漢字, 英文+標點, 標點+標點則依舊保留空格. 將使用文類改成使用\usepackage[UTF8]{ctex}是一樣的效果. 但是如果想取消換行產生的英文空格怎么辦呢, 很簡單, 在前一行的結尾加一個注釋符%, 就像這樣

Hello%
world

因為注釋符%的作用是忽略該注釋符和其后的所有文字, 即換行產生的空格也被忽略了, 同時可以知道換行產生的空格是在前一行

但是問題又出現了, 我們發現在上述條件下, 換行產生的空格是沒有了, 同一行中漢字和漢字之間的空格也沒有了, 要解決這個問題的話, 調用的宏包或文類中有一個可選參數space中含有三個選項可以讓用戶選擇:

可選參數 作用
true 總不省略漢字換行后的空格, 此時用戶需要%來取消掉不需要的空格
false 總省略漢字后的換行空格(使用(PDF)LaTeX編譯時); 等同于auto(使用XeLaTeX編譯時), 不建議使用此選項
auto 默認值, 如果漢字后是漢字, 則省略空格, 否則保留

即如果想讓漢字后面的空格一直保留的話, 使用\usepackage[space=true]{ctex}\documentclass[space=true]{ctexart}或者在正文部分使用命令\ctexset{space=true}來使命令后的正文使用對應格式,

:在正文中使用\ctexset{space=true}時, 這條命令后緊接的漢字與這條命令前的漢字間的空格依舊由這條命令之前的格式來控制, 可以用以下代碼實驗:

\documentclass{article}
\usepackage{ctex}
\begin{document}
    自動
    控制
    \ctexset{space=true}
    強制
    空格
\end{document}

LaTeX對空格的控制說完了, 可是要是想換行怎么辦呢?LaTeX給我們提供了一些方法, 先看下面的例子:

\documentclass{article}
\begin{document}
    This is the first line.\\
    This is the second line without indent.
\end{document}

上面的代碼輸出了:

\\換行

可以看出來, \\這個符號會輸出一個不帶縮進的換行, 如果使用\newline也可以實現這個效果. 如果想輸出帶縮進的換行, 即新起一段, 可以怎么做呢?當然可以在新的一行前面加上縮進命令\indent, 或者也可以通過一些新的方式, 看下面的例子

\documentclass{article}
\begin{document}
    This is the first line.

    This is the second line with indent.
\end{document}

上面代碼會輸出:
帶縮進換行

同樣可以使用段落命令, 例

\documentclass{article}
\begin{document}
    This is the first line.\par
    This is the second line with indent.
\end{document}

上述代碼輸出效果和兩個換行符產生的效果相同.

:還可以使用\\來生成自定義行距的一行, 命令為\\[<長度>], 例\\[4mm]

綜上所述, 在LaTeX中的一個換行相當于一個空格, 兩個反斜杠\\表示新起一行, 與\newline作用相同, 兩個換行則新起一段, 與\par產生的效果相同.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容

  • LaTeX教學 [TOC] 1. LaTeX簡介 1.1 LaTeX的歷史 1978年, 斯坦福大學的Donald...
    無錘乙醇閱讀 1,273評論 0 4
  • 解讀上一篇文章(2)LaTeX論文排版——總體框架[http://www.lxweimin.com/p/0aaee...
    5john家安閱讀 5,841評論 0 11
  • 1)翻譯下面的句子: 東京將在 2020 年舉辦奧運會,這將為當地經濟注入亟需的活力。 The 2020 Olym...
    荊棘海_Ph閱讀 149評論 0 0
  • 這些是我平時看到的人、事、社會現象、百態生活后,有感而發,也有一、兩條名人名言,對于自身如何做好自我很有意義,...
    秋蘋果之秋荷閱讀 1,142評論 2 1
  • 很多時候,我不太能理解你的愛, 我們本是一體的,是相依的生命, 為何會有這么多的分別。 小時候, 你錯過了我的星星...
    璞城閱讀 326評論 2 5