[分享] 台大碩博士論文模板/GitHub Actions 集成

作者: Hsins (翔)   2020-05-08 17:03:24
上次弄模板已經是兩年前的事了,一開始只是寫給自己和碩班同學使用,所以
不太在意細節,能弄出來就好了…
不過陸陸續續還是發現在 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 也可以編譯出文件…
如果有問題或建議,還請不吝指教 > " <
作者: sppmg (sppmg)   2020-05-09 10:02:00
讚!GitHub actions 部份感覺很強。kv 可以考慮用 expl3 做
作者: tzudata (子資料)   2020-05-10 10:30:00
幫推
作者: k010447 (Dragger)   2020-05-10 21:56:00
超實用!感謝大師的提供想當初寫論文搞了好久
作者: Ice9 (又到了屬於我的季節)   2020-05-19 06:09:00
好人一生平安!
作者: st1009 (前端攻城師)   2020-07-01 12:53:00
LaTeX 新手想請問新細明體怎用?我看網路上別人都直接引用但我用的時候出現他提示我找不到....
作者: sppmg (sppmg)   2020-07-01 20:52:00
說你的環境,xelatex或pdflatex,是否使用樣板,提供簡易範例
作者: st1009 (前端攻城師)   2020-07-01 21:05:00
我用Overleaf xelatex沒有使用樣板,不過有從版上台科樣板挖一些設定回去用#1T1AJG0G (LaTeX) 就是這篇,我挖了他設定中文的方式,不過他的設定好像沒有新細明體#1HTtAF82 (LaTeX) 我參考這篇用\setCJKmainfont{新細明https://imgur.com/UZZlwcA.jpg錯誤訊息是 "新細明體" cannot be found.
作者: Hsins (翔)   2020-07-02 07:24:00
XeLaTeX 可以直接使用系統已經安裝的或是指定路徑下的字體Overleaf 支援的字體清單請參考 https://bit.ly/2YRsX7a裡面並沒有新細明體,你可以從列表找相近的字體使用,或者把字體檔放入專案工作目錄下,直接指定檔案使用比如放到工作目錄下的 fonts 資料夾\setCJKmainfont[Path=./fonts/]{Ming.ttf}
作者: st1009 (前端攻城師)   2020-07-02 09:03:00
謝謝!我試看看
作者: sppmg (sppmg)   2020-07-02 22:08:00
如原po,你選含Ming的像 cw* 或 AR PL * 都可。另外細明體最好用英文 MingLiU,曾聽說用中文會找不到(windows下)。新細跟細應該只有差英文字母是否固定間距。
作者: st1009 (前端攻城師)   2020-07-02 22:32:00
我的英文要用time new roman所以這樣說好像用細就好了我不懂為何我的字的換行跟樣板對不起來,我的字形是直接抓win裡面的字形檔,邊界設定也一樣,可是我的緒論會換行的字跟我樣板不一樣....理論上模板對會一樣對吧?https://www.overleaf.com/read/cmtdftbfkptrhttps://reurl.cc/D9rQed上面是我的overleaf和要做的模板,不知道有人可以幫忙嘛Q
作者: sppmg (sppmg)   2020-07-07 19:53:00
(還沒看)如果沒差很多的話應該正常,因為字元大小不同,一旦 LaTeX 判斷需要換行,那行字距會拉開來填滿行尾。你第二個根本不是LaTeX生成的啊!XD 檔名都 .docx 了!office字距是死的,LaTeX字距是活的,甚至還可能縮字體寬度
作者: st1009 (前端攻城師)   2020-07-07 22:14:00
原始模板是docx現在希望可以做latex版,希望對方不嫌棄...我這樣發論文應該不會太冒險吧... 我想審查人員很難看出差別... 為了不害人,如果有過再公開模板上來分享總覺得行距怪怪的,每頁莫名多好多行,可是1.5感覺沒錯...可能還是乖乖開虛擬機用word寫了...不然會不急(′_ゝ`)*會不急 -> 來不急
作者: sppmg (sppmg)   2020-07-12 18:06:00
你字體多少
作者: st1009 (前端攻城師)   2020-07-12 18:27:00
12
作者: Hsins (翔)   2020-07-13 15:14:00
有額外問題的話發文討論吧,集中在這篇以後的人要找不方便
作者: st1009 (前端攻城師)   2020-07-13 20:48:00
好的抱歉,我先再自己研究一下
作者: shownlin (哈哈阿喔)   2020-08-04 20:29:00
真的很感謝,今年就是用你的模板寫論文的y
作者: sarsman (DeNT15T♠)   2020-11-24 17:24:00
感謝,省去很多摸索的時間!

Links booklink

Contact Us: admin [ a t ] ucptt.com