1. 程式人生 > 其它 >使用Latex編寫論文(pkuthss模板)

使用Latex編寫論文(pkuthss模板)

這段時間在寫畢業論文,使用的是Latex編寫,這裡記錄一下期間遇到的各種問題的解決方法。

Latex 和 Word 的對比

Latex 的優勢在於參考文獻的管理比較簡單。畢業論文要求所有參考文獻按照出現順序進行編號,但是我們在改論文的過程中不可避免會出現新增、刪除、調整位置的情況。Word 下面每次手動改參考文獻順序是很痛苦的。雖然有一些第三方工具比如 EndNote 可以幫助解決這個問題,但是……我沒用過。
Latex的劣勢在於格式管理麻煩,尤其是文中頻繁出現公式或轉義字元的情況,總是會被打斷思路。

編譯環境

線上環境可以直接使用 Overleaf。Overleaf的優點在於這是一個線上網站,全平臺可用,並且支援多人協作。但是缺點在於其編譯速度慢,並且亮色背景我不喜歡。Overleaf可以直接匯入網站中的 pkuthss 模板開始寫作。

本地環境的優勢在於編譯速度快,尤其是幾十頁篇幅的文件。另外編輯環境的背景顏色可以自己定製,可以使用喜歡的Dark主題。
本地環境的配置如下:texlive + vscode + Latex Workshop。

  • texlive 可以到 tug.org 下載對應平臺的安裝包進行安裝,我使用的是 Windows 平臺的 Easy Install。安裝時間太長,抽空去吃了個午飯。(我其實試過使用 choco 來安裝 texlive,不過安裝之後感覺缺了一些東西??)
  • 寫作環境使用的是 VS Code,程式設計師都懂。
  • 編譯配置的話 VS Code 安裝 Latex Workshop即可。

本地專案搭建

首先下載 pkuthss 模板,這裡從 GitHub下載
然後是編譯命令,Overleaf 裡使用的 XeLatex,本地我們也保持一致。
涉及到參考文獻 ref.bib 的編譯,我們按照 pkuthss 中 main.tex 的提示使用 biber。
最終,專案配置 [.vscode/settings.json] 內容編寫如下:

{
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOCFILE%"
            ]
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "xe->bib->xe->xe",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        }
    ]
}

模板修改

版本管理

寫一次論文中間可能經過多次修改,如果不做版本管理,得到的可能就是“初稿、修改1、修改2、...、終稿”這樣一堆檔案。這顯然很不程式設計師。
我們直接初始化一個Git專案來管理版本。
由於Git只適合管理文字檔案,這裡我們需要將不合適的內容排除。
我們直接使用Github提供的 Tex.gitignore模板 來填寫 .gitnore 檔案。
可以看到,左側檔案欄裡 *.aux 等一系列編譯中間檔案都變成了灰色,不會進入版本歷史。

插入圖表目錄

有時候圖表比較多,老師會建議插入圖表目錄。
直接使用 \listoffigures 插入圖片目錄的話,顯示出來的圖片是 1.1 xxxx 這種格式,我們希望改為 圖 1.1 xxxx 這種格式。
操作方法是在 main.tex 中 \tableofcontents(正文目錄) 後面加入這樣一段:

	{%
	\let\oldnumberline\numberline%
	\renewcommand{\numberline}{\figurename~\oldnumberline}%
	\renewcommand{\listfigurename}{圖目錄}
	\listoffigures%
	}

表目錄同=同理,fugure 改成 table 就可以:

	{%
	\let\oldnumberline\numberline%
	\renewcommand{\numberline}{\tablename~\oldnumberline}%
	\renewcommand{\listtablename}{表目錄}
	\listoftables%
	}

持續更新……