作者Hsins (迅雷不及掩耳盜鈴)
看板LaTeX
標題[分享] 台大碩博士論文模板/GitHub Actions 集成
時間Fri May 8 17:03:24 2020
上次弄模板已經是兩年前的事了,一開始只是寫給自己和碩班同學使用,所以
不太在意細節,能弄出來就好了…
不過陸陸續續還是發現在 GitHub 上有使用者會默默地給那個專案 Star 或者
Fork 下來自己改,於是趁著前陣子勞動節連假稍微大修了一下(幾乎跟一開
始長得不太一樣了…):
- 專案倉庫:
https://bit.ly/2YFf3VU
- Overleaf:
https://bit.ly/2YJ9bLl
初次使用時,先到 ntusetup.tex 下面進行論文相關資訊的設定,至於模板的
選項和主要進入點則是 main.tex 檔案。這次的修改將資料夾結構切得比較清
楚一點,以便 GitHub Actions 的集成,將各個檔案切開之後也比較能夠讓新
手快速進入狀況,並將精力投入在寫作上而不是模板的設定上:
```
├── back
│ ├── appendix-*.tex // 附錄
│ ├── references.bib // 參考文獻
│ └── ...
├── contents
│ ├── chapter-*.tex // 論文內容
│ └── ...
├── figures
│ └── ...
├── front
│ ├── abstract.tex // 摘要
│ ├── acknowledgement.tex // 致謝
│ └── denotation.tex // 符號列表
├── main.tex // 主文件
└── ntusetup.tex // 模板設定
```
在文檔選項的部分,可以在 main.tex 的 \documentclass 中進行設定,這次
修改很大一部分參考了對岸清華大學的模板,使用 kvsetkeys, kvoptions 套
件進行鍵值(key-value)對的處理,比起傳統透過 \DeclareOption 來設定
選項的方式,能夠更方便地處理預設值。
這份模板基於 report 文檔,所以能夠使用他的相關選項,比如雙面印刷時可
以設置 twoside 和 openright 來自動地插入空白頁,使得新章節起頭都在奇
數頁。除此之外,目前提供的可選項有(擺在第一位的是預設值):
```
% 碩士論文 or 博士論文
degree = master | doctor
% 中文內容 or 英文內容
language = chinese | english
% 字體設定
% - default : 使用標楷體與 Times New Romans (不含粗體)
% - template: 使用 Kaiti 與 Times New Romans (含粗體)
% - system : 有點雞肋,尚未實作,打算根據不同系統選字體 > " <
% - overleaf: 使用 Overleaf 提供的楷體與 Times New Romans
fontset = default | template | system | overleaf
% 是否插入浮水印
watermark = true | false
% 是否插入 DOI 數位標識
doi = true | false
```
相信對很多人來說,尤其是剛剛入門 LaTeX 的初學者,經常會出問題的就是
編譯環境的建置與安裝,不同系統(macOS, Windows, Linux)搭配不同的發
行版本(MacTeX, MikTeX, cwTeX, cTex, TexLive)又有好幾種編譯環境(
pdflatex, xelatex, lualatex...),讓人望之卻步。
所以 Overleaf/ShareLaTeX 的出現無疑是一線曙光,然而免費版本的並不具
備有版本追蹤和回溯功能。由於之前接觸 Docker 技術一段時間,又一直在搗
搞 CI/CD 環境建置,所以我用 GitHub Actions 服務搭配這個模板創建了一
個簡單的自動化編譯與佈署方案:
-
https://bit.ly/3bcl6ny
可以直接點選
"Use this template" 以模板方式打開這個倉庫,創建自己的
專案,接著只需要在自己的電腦上使用自己喜歡的編輯器進行寫作,當推送上
去時會觸發工作流(workflow)進行編譯與推送,編譯完成會將最新編譯完成
的版本放到 Release 頁面並記錄時間,這樣一來便可以透過 git 管理你的論
文代碼版本,並且不需要在自己的電腦上安裝 LaTeX 也可以編譯出文件…
如果有問題或建議,還請不吝指教 > " <
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.247.1 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LaTeX/M.1588928606.A.454.html
※ 編輯: Hsins (140.112.247.1 臺灣), 05/08/2020 17:05:46
1F:推 sppmg: 讚!GitHub actions 部份感覺很強。kv 可以考慮用 expl3 做 05/09 10:02
2F:推 tzudata: 幫推 05/10 10:30
3F:推 k010447: 超實用!感謝大師的提供 05/10 21:56
4F:→ k010447: 想當初寫論文搞了好久 05/10 21:58
5F:推 Ice9: 好人一生平安! 05/19 06:09
6F:推 st1009: LaTeX 新手想請問新細明體怎用?我看網路上別人都直接引用 07/01 12:53
7F:推 st1009: 但我用的時候出現他提示我找不到.... 07/01 12:56
8F:推 sppmg: 說你的環境,xelatex或pdflatex,是否使用樣板,提供簡易範例 07/01 20:52
9F:推 st1009: 我用Overleaf xelatex 07/01 21:05
10F:推 st1009: 沒有使用樣板,不過有從版上台科樣板挖一些設定回去用 07/01 21:07
12F:→ st1009: 不過他的設定好像沒有新細明體 07/01 21:13
15F:→ st1009: 錯誤訊息是 "新細明體" cannot be found. 07/01 21:26
16F:→ Hsins: XeLaTeX 可以直接使用系統已經安裝的或是指定路徑下的字體 07/02 07:24
18F:→ Hsins: 裡面並沒有新細明體,你可以從列表找相近的字體使用,或者 07/02 07:28
19F:→ Hsins: 把字體檔放入專案工作目錄下,直接指定檔案使用 07/02 07:30
20F:→ Hsins: 比如放到工作目錄下的 fonts 資料夾 07/02 07:32
21F:→ Hsins: \setCJKmainfont[Path=./fonts/]{Ming.ttf} 07/02 07:34
22F:推 st1009: 謝謝!我試看看 07/02 09:03
23F:推 sppmg: 如原po,你選含Ming的像 cw* 或 AR PL * 都可。另外細明體 07/02 22:08
24F:→ sppmg: 最好用英文 MingLiU,曾聽說用中文會找不到(windows下)。 07/02 22:10
25F:推 sppmg: 新細跟細應該只有差英文字母是否固定間距。 07/02 22:12
26F:推 st1009: 我的英文要用time new roman所以這樣說好像用細就好了 07/02 22:32
27F:推 st1009: 我不懂為何我的字的換行跟樣板對不起來,我的字形是直接抓 07/07 11:19
28F:→ st1009: win裡面的字形檔,邊界設定也一樣,可是我的緒論會換行的 07/07 11:23
29F:→ st1009: 字跟我樣板不一樣....理論上模板對會一樣對吧? 07/07 11:26
32F:→ st1009: 上面是我的overleaf和要做的模板,不知道有人可以幫忙嘛Q 07/07 11:44
33F:推 sppmg: (還沒看)如果沒差很多的話應該正常,因為字元大小不同, 07/07 19:53
34F:→ sppmg: 一旦 LaTeX 判斷需要換行,那行字距會拉開來填滿行尾。 07/07 19:54
35F:推 sppmg: 你第二個根本不是LaTeX生成的啊!XD 檔名都 .docx 了! 07/07 19:57
36F:→ sppmg: office字距是死的,LaTeX字距是活的,甚至還可能縮字體寬度 07/07 20:00
37F:推 st1009: 原始模板是docx現在希望可以做latex版,希望對方不嫌棄... 07/07 22:14
38F:→ st1009: 我這樣發論文應該不會太冒險吧... 我想審查人員很難看出差 07/07 22:19
39F:→ st1009: 別... 為了不害人,如果有過再公開模板上來分享 07/07 22:21
40F:推 st1009: 總覺得行距怪怪的,每頁莫名多好多行,可是1.5感覺沒錯... 07/11 16:13
41F:→ st1009: 可能還是乖乖開虛擬機用word寫了...不然會不急(′_ゝ`) 07/11 16:15
42F:→ st1009: *會不急 -> 來不急 07/11 16:19
43F:推 sppmg: 你字體多少 07/12 18:06
44F:→ st1009: 12 07/12 18:27
45F:→ Hsins: 有額外問題的話發文討論吧,集中在這篇以後的人要找不方便 07/13 15:14
46F:推 st1009: 好的抱歉,我先再自己研究一下 07/13 20:48
47F:推 shownlin: 真的很感謝,今年就是用你的模板寫論文的y 08/04 20:29
48F:推 sarsman: 感謝,省去很多摸索的時間! 11/24 17:24
49F:推 emeqcoindo: 雖然有點久了,但還是抱持著有問有機會的想法:請問gi 01/05 10:13
50F:→ emeqcoindo: thub action 中,有一個需要clone 的repository移除了 01/05 10:14
51F:推 emeqcoindo: ,是否其他替代的方法?感謝 01/05 10:23
52F:→ diabolica: 感謝 05/29 01:21