Skip to content

初級手冊

sppmg edited this page Feb 3, 2018 · 17 revisions

本文目錄:


想要詳細了解如何使用樣板?

檔案列表及功用

各校子目錄內容: (檔案依照 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檔讀入,子文件中不須再引入。注意!因 hyperrefcleveref 兩套件在之後才載入,所以要與此兩套件相關、須要置於其後的設定請放到 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.textitlepage.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

關於風格,其實我個人認為 natureieee 好看 XD 。 你可以從下面網頁預覽各風格,並在不違反規定情況下選用:

  1. BibLaTeX - ShareLaTeX
  2. BibTeX - ShareLaTeX

字型大小、風格類

設定作業系統 及 中英文字型

作業系統設定值目前僅用於自動選擇預設字型。

若使用 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} 使用套件 backgroundeso-pix 完成。不建議更改。
\wmScale{1} 縮放比。
\wmOpacity{1} 不透明度。1 == 100% 不透明
\wmShiftFromCenterX{0mm} 圖片中心相對紙張中心垂直位移,記得附加單位。
\wmShiftFromCenterY{0mm} 圖片中心相對紙張中心水平位移,記得附加單位。
\wmAngle{0} 旋轉角度,角度量。

套件 backgroundeso-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 時,不會自動加入目錄中。本樣板透過附加指令到這三者前,所以可以自動加入。非使用此樣板者請注意須要手動加。)

PDF

PDF 說明
\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 產生簡單格式之純文字目錄檔的方法。

使用方法:

  1. tools/toc2txt.tex 複製至文件目錄(與 main.tex )同一層,並確定存在 main.toc 檔案(可能有些編輯器會在離開時刪除此檔,請注意!)。
  2. 確認 LaTeX 編譯參數使用 "-interaction=nonstopmode" 。
  3. 直接編譯 toc2txt.tex 即可。將生成 main_toc.txt

過程中會出現 Undefined control sequence 錯誤訊息,但因為使用 "-interaction=nonstopmode" ,因此不影響生成之 main_toc.txt。同時生成的 toc2txt.pdf 可以直接刪除。

經測試發現 Windows 中產生的 main_toc.txt 可能會用 unix 換行字元,因此在 Windows 中使用較落後的文字編輯器(如「記事本」)會顯示成只有一行。解決方法有兩種:

  1. 使用 wordpad 或其他軟體開啟(我的印象中 wordpad 可以處理)。
  2. 使用 tools/unix2dos4toc.bat 。 將 busybox.exeunix2dos4toc.batmain_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 不改沒關係。