初級手冊 - sppmg/TW_Thesis_Template GitHub Wiki
本文目錄:
想要詳細了解如何使用樣板?
檔案列表及功用
各校子目錄內容: (檔案依照 LaTeX 載入時機排序)
檔案 | 說明 | 細說 |
---|---|---|
codes/ | 程式檔目錄 | 用來存放程式碼。(cls 已限定 listing 搜尋路徑於此,不可放在根目錄) |
figures/ | 圖檔目錄 | 用來存放論文中的圖片。亦可直接存在根目錄,但可能顯得凌亂。 |
*_thesis.cls | 類型檔 | 定義各校風格與載入基本套件。cls 檔可鏈式載入,因此各 cls 檔可能僅僅是作為實際作用的 cls 的連結(如 NCU_thesis.cls )或是在實際作用的 cls 前後做附加設定(如 NTU_thesis.cls )。 |
thesis_base.cls | 類型檔 | 定義主要的類別。各校版本均基於此檔做調整。 |
sppmgTools.sty | sppmg套件 | sppmg 提供的工具,可於各樣板間共用,因此另外獨立於 cls。(請置於主檔同目錄或 TeX 之套件搜尋路徑中) |
sppmgTools.cwl | sppmg套件 | sppmg 提供工具的指令形式,用於編輯器「指令自動完成」之功能,請自行確認編輯器如何載入。 |
main.tex | 主檔案 | 檔案用於定義各子檔(章節)順序。欲生成整份文件請編譯此檔。 |
config.tex | 個人資訊設定檔 | 論文題目、文件風格等設定。 |
macros_preamble.tex | 共用導言檔 | 將你要放在各個檔案導言區的指令置於此檔。此檔將由.cls檔讀入,子文件中不須再引入。注意!因 hyperref 與 cleveref 兩套件在之後才載入,所以要與此兩套件相關、須要置於其後的設定請放到 macros_preamble.tex 中的 \macrosAfterHyperref |
macros_document.tex | 共用文內設定 | 有些指令必須置於文內(\begin{document} 內),如設定字體大小的 \fontsize 指令。這類型指令可置於此檔保持各子檔整潔以及避免漏放指令。(這個檔案會自動載入於\begin{document}之後) |
cover.tex | 封面 | 當學校封面與書名頁設定不同時才會加,此時 cover.tex 為書皮封面。 |
titlepage*.tex | 書名頁/封面 | 中央格式一樣,因此電子檔僅使用一張。(英文版有兩種封面,但如非必要建議僅用中文封面)有些學校封面與書名頁設定不同時 titlepage.tex 用於內頁書名頁。 |
acknowledgements.tex | 誌謝 | 可不加,自行於 main.tex 註解掉。 |
abbreviation.tex | 符號表 | 這裡簡單的以表格列出,亦可透過套件方便的生成,見教學檔。 |
abstract_*.tex | 各語系摘要 | 格式同章節,限定章標題為「摘要 」(zh)與「Abstract 」(en),因為會依此加上文件資訊(依各校規定而不同)。 |
chapter_*.tex | 各章節 | 通常一章就一個檔。當然你可以再細分成更小的 section 子檔。有些人會將 chapter 放在獨立目錄中,但以我的經驗,在搭配 standalone 等套件做子檔單獨編譯的情況下容易搞混相對路徑,所以我都放一起。 |
bibliography.tex | 文獻列表 | 包含三種文獻引入方式,切換由 config.tex 控制 |
appendix_*.tex | 各附錄 | 格式同章節 |
letter_*.pdf | 各校須附文件 | 不附加直接刪除即可,可不註解。若這裡沒有請自己去學校下載。 |
*.sh / *.bat | 可執行指令檔 | 作為自動化工具來處理合併問題,如台大論文(NTU)須合併中央版。須要 BASH(Linux/Mac?) / Busybox(Windows)。 |
tools 目錄下內容
檔案 | 說明 | 細說 |
---|---|---|
busybox.exe | shell 程式 | 於windows 上執行 *.sh 用。 |
toc2txt.tex | .toc 轉換工具 | 由目錄檔產生簡單文字目錄以供複製 |
unix2dos4toc.bat | unix 換行字元轉 windows | windows 下, toc2txt 生成的文字檔似乎使用 unix 的換行字元,如見到文字檔僅很長的一行字,使用此檔轉換為 Windows 格式。 |
compress_pdf.sh | 壓縮 PDF | 自動壓縮 main.pdf ,需安裝 gs (Ghostscript) 與 pdftk。可保留書籤資訊。 |
設定 config.tex
config.tex
僅用於設定變數與 bool 值({true}/{false})。
下面依照 config.tex
設定值順序說明。
通用規則
變數設定
一般資訊直接修改{}內的文字。如姓名:
\def\author {君の名は。}
config.tex
中允許使用「@」字元
選項允許值
若後方註解有 {}
表示為選項,僅能擇一輸入,如語系變數與是否發佈之 bool:
\def\lang{zh} % {zh}/{en}/{}
\setboolean{publish}{false} % {true}/{false}
注意!有分大小寫
變數名稱定義 zh/en
凡是結尾有「Zh」表示輸入中文資訊(如: \titleZh
)。
凡是結尾有「En」表示輸入英文資訊(如: \titleEn
)。
若有如
\def\title{\titleZh}
表示主設定(標題)使用中文版,這用於僅選擇一種語系時顯示,例如書名頁要求中英文姓名,但封面僅中文姓名。
基本資訊設定
編譯設定
項目 | 說明 |
---|---|
\setboolean{publish} | true 會隱藏編輯中的標記(目前只有隱藏 todonotes 的註解) |
\lang{zh} | 設定語系,會影響文件成為中、英文風格。 |
\setboolean{disableChinese} | 完全停用中文。給無中文字體的使用者用的(英文版預設為 true ,怕無中文字體者編譯出問題)。一般即使是英文論文,封面也會包含中文。(NCU 的英文版的 main.tex 依此設定隱藏中文相關頁面。但其實不隱藏未必出問題,可能只是中文字處為空白而已) |
\titlepageLang{zh} | NCU 的英文版獨有。可選擇使用中文封面或是英文封面。不過校方沒規定英文封面,個人建議用中文即可。 |
\synctex=1 | 啟用SyncTeX ,可由 PDF 跳至 LaTeX 原始碼相應位置。見教學。 |
定義文件資訊
設置如系所(\dep
)、題目(\title
)等資訊。註解已經寫的很清楚了,也有預設值可供參考,這裡不贅述。
教授設定方面:
v1.8 之後(不含) | v1.8 以前(包含) |
---|---|
僅須在 \profs 中以逗號分隔各教授。若姓名中須用到逗號,記得加大括號 {,} 。 樣板不會進行排序。中英並陳學校會有 *Zh /*En 尾碼,記得注意使用一樣的順序。 姓名數量無限制,但因為版面配置上使用到固定之垂直間隔,用到5個以上即有部份學校會擠壓下方文字到下一頁,若有此須求者請自行至相關 tex 檔修改版面上的間距值。 |
共同指導教授預設最多兩個(\sprofi , \sprofii ),更多請進相關 tex 檔修改姓名表格。若少於兩個直接留白 {} 即可。 |
所謂相關 tex 檔
,封面就是在 cover.tex
或 titlepage.tex
(書名頁)。另外,部份學校(如交大)摘要也須要姓名列表,若要修改其表格內容,請進 <校名>_thesis.cls
找尋 \abstractHeader
部份修改。
設定插入文件
設定插入文件的檔名。此值僅在 main.tex
已設定插入指令後才有用。部份學校(如交大)因為我不清楚其插入文件規定,所以在 main.tex
中相關的指令是註解掉的。使用者請解註解或是直接在 main.tex
中以 \includepdf{file.pdf}
插入。
中央版則不用擔心,直接設定檔名即可。
文獻列表
自 v1.8
開始支援 Embedded
, BibTeX
, biber
/ BibLaTeX
三種插入文件方式。
預設(且建議)使用 biber
/ BibLaTeX
。
如果你要求的列表風格沒有預設樣板或是教授要求特殊風格,請選擇 Embedded
並於bibliography.tex
手動插入條目。
項目 | 說明 |
---|---|
\bibManType | 文獻插入方法。0 = Embedded , 1 = BibTeX , 2 = biber / BibLaTeX 。 |
\bibStyle | 列表風格。僅作用於 BibTeX , BibLaTeX |
\setboolean{bibStyleNameYear} | 是否使用姓名、年份排序文獻列表。預設(false)使用文獻於文章中出現次序排。(僅作用於BibLaTeX ) |
關於風格,其實我個人認為 nature
比 ieee
好看 XD 。 你可以從下面網頁預覽各風格,並在不違反規定情況下選用:
字型大小、風格類
設定作業系統 及 中英文字型
作業系統設定值目前僅用於自動選擇預設字型。
若使用 ifplatform
套件且編譯時包含 -shell-escape
選項,則會自動判斷 {linux}/{mac}/{win} 三系統。無法自動判斷作業系統時才會使用作業系統設定值 \OS
。
簡而言之:
OS | 你需要的操作 |
---|---|
Linux | 保持原設定或於編譯時添加 -shell-escape |
Mac | 修改設定成 {mac} 或或於編譯時添加 -shell-escape |
Win | 毋需做任何事 |
字型部份如有設定將使用設定值,不受 \OS
影響。
下面詳述設定值
項目 | 說明 |
---|---|
\OS{linux} | 設定作業系統 |
\mainfont | 主要(英文)字體,一般使用羅馬體。 |
\sansfont | 非襯線(英文)字體 |
\monofont | 等寬(英文)字體,用於程式碼 |
\CJKmainfont | 主要中日韓字體,建議使用明、宋體。 |
\CJKsansfont | 我預設為楷體。 |
\CJKmonofont | 預設同 \CJKmainfont |
字型設定可以使用字型檔的檔名(eg. mingliu.ttc)或是字型名(MingLiU 或 細明體)。若要用字型名建議使用英文名,曾聽聞中文名重複使用下會出問題。
Linux 使用者可以由指令方便取得字型名
$ fc-list :lang=zh
選項留空會自動選字,中文字預設如下表:
OS | 字型 (CJKmainfont) | 字型 (CJKsansfont) |
---|---|---|
Linux | AR PL UMing TW (明體) | AR PL UKai TW (楷體) |
Mac | LiSong Pro (儷宋 Pro) | Kaiti TC Regular (楷體-繁) |
Windows | MingLiU (細明體) | DFKai-SB (標楷體) |
(作用字族) | rm | sf |
字體大小風格及行距
風格基本上照預設即可,頂多就基礎字體大小 (\baseFontSize) 與行距 (\baseLineStretch) 須要調整。
預設中文字體大小 14pt ,行距 1.5x 。
預設英文字體大小 12pt ,行距 1.3x 。
(台大「建議」中文 12 號,個人認為可以不甩,就說「我看不到啊!」 :D )
Style 相關選項允許複合使用風格(如:\bfseries )或是大小(如:\small)等指令。
字體大小風格及行距 | 說明 |
---|---|
基礎文字 | 會影響整份文件 |
\baseFontSize{14pt} | 字體大小,中文預設14pt,英文12pt。允許數值請見檔案後方註解。 |
\baseLineStretch{1.5} | 行距,中文預設1.5,英文1.3。 |
\fakeBoldFactor{2} | 假粗體粗度。 有些字型將粗體另外設計成獨立字型檔,LaTeX 可以將粗體指定成那個粗體字檔。不過此樣板預設僅採用一種字型檔,因此粗體是透過軟體加粗線條,稱為假粗體。 |
文獻列表 | |
\bibFontStyle{\small} | 使用 LaTeX 指令,可設風格樣式,如粗體。 |
\bibLineStretch{1.2} | |
表格 | |
\floatFontStyle{\small} | 使用 LaTeX 指令,可設風格樣式,如粗體。 |
\tableLineStretch{1.2} | |
圖表說明 | |
\captionFontStyle{\small} | 使用 LaTeX 指令,可設風格樣式,如粗體。 |
\subcaptionFontStyle{\footnotesize} | 用於子圖表的說明文。 |
\captionLineStretch{1.2} | |
頁頂頁足 | |
\pageHeaderStyle{\sffamily\itshape\footnotesize} | 使用 LaTeX 指令,可設風格樣式,如粗體。 |
\pageFooterStyle{\sffamily\footnotesize} | 使用 LaTeX 指令,可設風格樣式,如粗體。 |
標題風格
章節標題風格 | 說明 |
---|---|
\titlepageFontFamily{\sffamily} | 封面、書名頁字族(見下方說明。部份學校限定字族,如台大。此時無此選項。) |
\abstractHeaderStyle{\sffamily\Large} | 摘要之文件資訊風格 |
\chapterTitleNumStyle{\sffamily\LARGE\bfseries} | 僅作用於英文版的 「Chapter 1」 文字。 |
\chapterTitleStyle{\sffamily\huge\bfseries} | \chapter 標題風格 |
\sectionTitleStyle{\sffamily\Large\bfseries} | \section 標題風格 |
\subsectionTitleStyle{\sffamily\large\bfseries} | \subsection 標題風格 |
\subsubsectionTitleStyle{\sffamily\normalsize\bfseries} | \subsubsection 標題風格 |
\paragraphTitleStyle{\sffamily\normalsize\bfseries} | \paragraph 標題風格 |
\subparagraphTitleStyle{\sffamily\normalsize\bfseries} | \subparagraph 標題風格 |
由於我設定 CJK sans font 使用楷體,所以章節 \sffamily 將使用楷體與無襯線英文。若你不喜歡無襯線英文但要保留楷體,可以將 \sffamily 改為
\rmfamily\CJKfamily{sf}
就可以混合楷體與羅馬體英文(但請注意 disableChinese 選項是否已設為 false )
章節與數字風格 | 說明 |
---|---|
\secNumDepth{4} | 章節標題給予數字標號的深度, \paragraph == 4。超出的章節不標號。 |
\titleNumStyle{0} | 章節標題風格,影響 \subsubsection 以下的章節級,見教學示例。 |
\indentBlockSSS{0mm} | \subsubsection 縮排寬度,僅用於儲存數值。見教學說明。 |
\indentBlockPar{0mm} | \paragraph 縮排寬度。 |
\indentBlockSPar{0mm} | \subparagraph 縮排寬度。 |
目錄風格
控制目錄呈現風格
目錄及章節風格 | 說明 |
---|---|
\tocDepth{2} | 目錄顯示層級,\subsection == 2。超出的章節不顯示於目錄。 |
\tocStyleAlign{0} | 目錄對齊風格,見教學示例。 |
\tocStyleChapter{1} | 目錄條目風格,見教學示例。 |
\tocStyleChapterFontFM{} | \frontmatter 附加樣式。如設定 {\itshape} 讓摘要等等標題在目錄中呈現斜體。 |
頁面風格類
浮水印
浮水印將從 \startWatermark
後面開始,如樣板不合自行於 main.tex
變更位置。
中央版未添加,欲使用者自行加入。
浮水印 | 說明 |
---|---|
\wmContent{} | 圖檔名或文字。將於 figures/ 搜尋檔案,找不到則視為文字貼上。 |
\wmMethod{1} | 使用套件 background 或 eso-pix 完成。不建議更改。 |
\wmScale{1} | 縮放比。 |
\wmOpacity{1} | 不透明度。1 == 100% 不透明 |
\wmShiftFromCenterX{0mm} | 圖片中心相對紙張中心垂直位移,記得附加單位。 |
\wmShiftFromCenterY{0mm} | 圖片中心相對紙張中心水平位移,記得附加單位。 |
\wmAngle{0} | 旋轉角度,角度量。 |
套件 background
與 eso-pix
各有優缺點如下。
套件 | bug |
---|---|
background | 圖片可能覆蓋在 \includepdf 頁面之上。 |
eso-pix | 第一個顯示的浮水印永遠是 100% 不透明 |
純白空白頁
由於樣板採用 book
樣式設定,使用雙頁模式 (twoside
) 與右頁開始章節 (openright
)。
因此在章與章之間常有填補用的空白頁。
有些人希望白頁要是完全空白的,不含任何文字。(我自己比較喜歡保留頁首頁尾資訊)
純白空白頁 | 說明 |
---|---|
\setboolean{reallyBlankPage} | 讓章間自動補的白頁不含頁首頁尾(無頁碼) |
其他
TOC 目錄配置
切換是否將目錄
、圖目錄
、表目錄
加入目錄中。
TOC 目錄配置 | 說明 |
---|---|
\setboolean{tocEntryToToc} | Table Of Contents |
\setboolean{lofEntryToToc} | List Of Figures |
\setboolean{lotEntryToToc} | List Of Tables |
由於目錄等等頁面有些人認為沒多少人會去看。因此樣板預設只顯示 目錄
,以節省空間。
(註:原始 LaTeX book class 在使用 \tableofcontents
, \listoffigures
, \listoftables
時,不會自動加入目錄中。本樣板透過附加指令到這三者前,所以可以自動加入。非使用此樣板者請注意須要手動加。)
說明 | |
---|---|
\setboolean{pdfLinkBoxDisplay} | 是否於連結處加上色框?此框僅於電子檔顯示,不會印出。(框的資訊是紀錄在 pdf 中,即使不加框,有些 pdf 閱讀器也可以自行加標記。) |
加入套件及導言區
如果你要用樣板沒載入的套件,可於下表位置載入
位置 | 指令 | 時機 |
---|---|---|
macros_preamble.tex | \RequirePackage{pkg} | 多檔共用套件 |
main.tex 導言區 | \usepackage{pkg} | 多檔共用套件,但套件須要載入於 hyperref 與 cleveref 兩套件之後。 |
各子檔導言區 | \usepackage{pkg} | 套件僅單檔使用 |
(導言區: \documentclass{}
與 \begin{document}
之間 )
樣板支援子檔單獨編譯,但編譯子檔時 LaTeX 並不會去讀取 main.tex
內容。因此我建議將所有導言區內容在單檔測試完畢之後,全部移入到 macros_preamble.tex
。若有少數套件需要載入於 hyperref 與 cleveref 兩套件之後 的話,將其寫於 macros_preamble.tex
中的 \macrosAfterHyperref
。
以 glossaries
套件為例,若須支援頁面連結必須載入於 hyperref
之後,所以在 macros_preamble.tex
中:
\def\macrosAfterHyperref{
% demo , uncomment below 2 lines for use ``glossaries'' with link.
\RequirePackage[toc]{glossaries}
\makeglossaries
}
sppmg 工具解說 (sppmgTool.sty)
我在寫作以及製作樣板過程中弄了幾個簡便的指令,因為他們可以獨立於此樣板運作(以及因須求時常更動),所以我分離出來成為單一套件。這裡說明各指令功能、用法,日後會併入教學。
快速插入單圖
完整語法如下
\fig[scalefactor][fig:label][!htb]{path}[caption][short caption]
各參數中,只有 {path} 是必要的(當然囉!),其餘可略。所以最簡單形式就是:
\fig{path}
但一串連續的方括號[]僅能由後方開始省略。如下兩種用法:
\fig[scalefactor]{path}[caption]
\fig[scalefactor][fig:label]{path}[caption]
如果要跳過中間的 labal ,僅設定圖的位置的話,請加上一個空括號。
\fig[scalefactor][][!htb]{path}
當 labal 省略或是空括號時,將自動設定為fig:filename.ext (就是檔名前加fig:啦)
圓圈文字
將文字外面加上圈圈
\circhar{c}
將文字放置本頁任意位置
\placetextbox{x(mm)}{y(mm)}{text}
原本是拿來做自動填單的。 會在紙張座標 (x,y) 的位置貼上文字,文字塊的中心對準 (x,y) 。座標原點 (0,0) 位於紙的左下角。 x,y 單位是 mm ({}內單純填數字,不可加單位)。 建議在調整位置時,在 \documentclass 選項加上 colorgrid,這樣會顯示一個彩色網格,便於對齊位置。
調整文字大小、行距
\fs{fontsize}
\fs{fontsize}[baselineskip]
\fs{fontsize}[baselinestretch]
其實就是 \fontsize{fontsize}[baselineskip] 的精簡版。 使用後會影響其後的字體大小與行距。不過僅影響同區域的文字,表格、圖表說明或其他檔案均不受影響。
當第二個參數小於第一個參數時,將改為設定行距倍數。因此以下兩者是等效的:
\fs{14}[25.2]
\fs{14}[1.5]
25.2pt = 14pt * 1.2x * 1.5x (1 倍行高為 1.2倍字體高)
顯示當前使用字體
Debug 用。 文章中插入 \showfont 就會插入一個表格顯示當前字體資訊。
sppmg 外部工具解說
這裡指的是 tools 目錄中的各項工具。其中 busybox.exe 是提供給 Windows 使用者的簡易工具,用來模擬 Linux 上的環境。
toc2txt.tex(由目錄檔產生簡單文字目錄)
由於本樣板設定會使得 pdf 文字經複製後亂序的情況,而論文上傳通常須要另外於上傳網頁輸入目錄。因此這裡提供使用 LaTeX 產生簡單格式之純文字目錄檔的方法。
使用方法:
- 將
tools/toc2txt.tex
複製至文件目錄(與main.tex
)同一層,並確定存在main.toc
檔案(可能有些編輯器會在離開時刪除此檔,請注意!)。 - 確認 LaTeX 編譯參數使用 "
-interaction=nonstopmode
" 。 - 直接編譯
toc2txt.tex
即可。將生成main_toc.txt
。
過程中會出現 Undefined control sequence 錯誤訊息,但因為使用 "-interaction=nonstopmode
" ,因此不影響生成之 main_toc.txt
。同時生成的 toc2txt.pdf 可以直接刪除。
經測試發現 Windows 中產生的 main_toc.txt
可能會用 unix 換行字元,因此在 Windows 中使用較落後的文字編輯器(如「記事本」)會顯示成只有一行。解決方法有兩種:
- 使用 wordpad 或其他軟體開啟(我的印象中 wordpad 可以處理)。
- 使用
tools/unix2dos4toc.bat
。 將busybox.exe
、unix2dos4toc.bat
、main_toc.txt
三者置於同一個目錄,之後直接點unix2dos4toc.bat
執行即可。
compress_pdf
一個壓縮 pdf 的工具。須要安裝 pdftk 及 gs(Ghostscript)
使用方法:
./compress_pdf.sh src.pdf
其中 src.pdf 為欲壓縮的檔案,未加則預設為 main.pdf (所以請將 compress_pdf.sh 與 main.pdf 置於同目錄)
此檔案 .bat 版未於 Windows 中測試過,可能無法使用。
patch 版樣板使用說明
大多學校的論文差異有限,於是為了維護方便(懶惰),我只附上與中央版有差異的檔案,使用前要覆蓋至中央版 (NCU_zh / NCU_en) 。(只要是 _patch 結尾的如:台大、交大版都是這種處理方式)
不過相信大家跟我一樣懶,最好能夠點一下就完成,所以我又做了個建立工具 build.sh ,只要執行他就可以建立一個完整的樣板。(他除了複製檔案外,也會進行中英文版本的細部設定。)
Linux / Mac 自動建立樣板
以台大 (NTU) 為例,你會看到 NTU_patch 下有 build.sh。
因為 Linux 下已經有 BASH ,所以直接在終端機執行以下指令即可。 Mac 應該也有,所以處理方式一樣。
bash build.sh
執行後會先問你要中文還是英文。假設你輸入 en 你就會在樣板包的根目錄看到完整的樣板 NTU_en 。
(因為 Linux 使用者「可能」比較少直接點檔案執行,所以我目前在 build.sh 結束時不做暫停。如果你用視窗模式執行可能後續訊息會一閃而過,不過基本上可以不理。)
Windows 自動建立樣板
同樣以台大 (NTU) 為例,你會看到 NTU_patch 下有 build.bat。
因為 Windows (現在還)沒有 BASH ,所以我使用 busybox.exe (位於 /tools 下) 來執行 build.sh 。而你要做的就只是點 build.bat 執行即可。
執行後會先問你要中文還是英文。假設你輸入 en 你就會在樣板包的根目錄看到完整的樣板 NTU_en 。
手動建立樣板
避免自動化工具失效,這裡附上手動處理流程。
仍舊以台大 (NTU) 為例。請將 NTU_patch 的內容複製並覆蓋至 NCU 目錄。中英皆可(事實上中英設定在 config.tex 的 \lang 中,複製到任一目錄皆可)。 config.tex 目前設定值為中文版本,英文論文使用者請將語系設為英文:
\def\lang{en}
英文字體大小與行高,個人建議使用 12pt 以及 1.3x:
\def\baseFontSize{12pt}
\def\baseLineStretch{1.3}
目錄中已有相容性的 NCU_thesis 可以載入 NTU_thesis ,所以各子檔檔頭的 class=NCU_thesis 不改沒關係。