作者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/cn.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