從模板開(kāi)始 || 開(kāi)始使用 LaTeX
上回說(shuō)到...?LaTeX 環(huán)境配置好了。
LaTeX 如何入門(mén)呢?
LaTeX 這東西,對(duì)初學(xué)者來(lái)說(shuō)確實(shí)不算友好,畢竟你一開(kāi)始就要用代碼操作一切。
網(wǎng)上倒是有很多教程,讀者們可以自行面向知乎學(xué)習(xí)。
然而這些不是我要說(shuō)的。我比較建議的 LaTeX 入門(mén)方法,就是不用入門(mén),直接上手開(kāi)整。
記得上篇序章說(shuō)的嗎?有模板的 LaTeX > Word >?沒(méi)模板的?LaTeX. 我們唯一的目標(biāo)是提高文檔編輯的效率。至于學(xué)習(xí) LaTeX 那是可以邊用邊學(xué)的。
所以,第一步就是找一個(gè)或幾個(gè)好用的、能覆蓋你需要的功能的模板。
去哪里找模板?
Overleaf 肯定是個(gè)好地方:https://www.overleaf.com/

我推薦從 example project 開(kāi)始入門(mén)。這個(gè)實(shí)例用到了很多實(shí)用的基本功能。

你同樣可以根據(jù)需要在?overleaf?找到用于學(xué)術(shù)論文、書(shū)籍、作業(yè)、展板、幻燈片的模板。

比如說(shuō)北京大學(xué)的學(xué)位論文模板,

比如說(shuō)頂刊 nature 的官方模板(希望在座各位以后能有機(jī)會(huì)用上)

或者平時(shí)寫(xiě)作業(yè)用得上的一些簡(jiǎn)單模板(如果你因?yàn)橐咔槎仨毺峤浑娮影孀鳂I(yè))(就像我這學(xué)期這樣)

除了overleaf,其他地方包括知乎,CSDN等網(wǎng)站也會(huì)找到一些模板。我的建議就是平時(shí)見(jiàn)到可能有用的模板就可以收著。

有了模板之后,怎么學(xué)?
首先保證這個(gè)模板可以穩(wěn)定正確地編譯。
這里必須強(qiáng)調(diào)的一個(gè)很重要的概念稱(chēng)為 recipe.

recipe 可以理解為幾種略微不同的編譯方式。
常用的你們都可以在上圖左邊看到,一般常用的有 latexmk, xelatex, pdflatex, lualatex, bibtex,想用哪個(gè)方式編譯可以在左邊選擇相應(yīng)的 recipe.?
但是必須承認(rèn)我在這方面并不專(zhuān)業(yè),這些編譯方式具體什么區(qū)別,我并不知道得很具體。我只知道 xelatex 在中文環(huán)境比較常用,對(duì)眾多 unicode 字符兼容性也更好;而lualatex在繪制費(fèi)曼圖時(shí)較為常用;bibtex 是用于處理參考文獻(xiàn)的,不能單獨(dú)使用,而應(yīng)當(dāng)和其他編譯方式按一定順序配合才能實(shí)現(xiàn)自動(dòng)排版參考文獻(xiàn)。
比如說(shuō),讀者可能看到我之前一些關(guān)于特殊函數(shù)的專(zhuān)欄筆記,那些筆記所用的模板,就必須使用 xelatex,若用?pdflatex 則會(huì)報(bào)錯(cuò)。又比如 Tikz-feynman 包的文檔里也明確說(shuō)明:
As a final remark, the calculation of where vertices should be placed is usually done through an algorithm written in Lua. As a result, LuaTEX is required in order to make use of these algorithms. If LuaTEX is not used, TikZ-Feynman will default to a more rudimentary algorithm and will warn the user instead.
在計(jì)算費(fèi)曼圖頂點(diǎn)位置時(shí)需用到基于 Lua 的算法,所以為了使所有頂點(diǎn)位置正確,recipe 應(yīng)當(dāng)選擇 Lualatex。
說(shuō)了這么多,關(guān)鍵就是你要明確知道你的模板應(yīng)當(dāng)用哪種 recipe,編譯的時(shí)候不要搞錯(cuò)了。
有了可用的模板之后,你就可以通過(guò)對(duì)照源代碼和編譯文件中相應(yīng)的內(nèi)容來(lái)確定源代碼應(yīng)該怎么寫(xiě)了。這里我還想介紹一下正反向搜索。
正反向搜索
即找到源代碼光標(biāo)對(duì)應(yīng)的輸出的 pdf?文件中位置,或根據(jù) pdf 文件的某個(gè)位置找到該位置對(duì)應(yīng)的源代碼。這個(gè)功能在編輯長(zhǎng)文檔的時(shí)候相當(dāng)重要,因?yàn)樵创a可讀性遠(yuǎn)低于生成的 pdf,難以快速找到某個(gè)位置。

在 overleaf 里面,上圖圈出的兩個(gè)箭頭就是負(fù)責(zé)正反向搜索的。

在 vscode 里面,則默認(rèn)設(shè)置了快捷鍵。
正向搜索是 Ctrl + Alt + J,預(yù)覽窗口中相應(yīng)位置會(huì)通過(guò)閃爍的紅點(diǎn)標(biāo)示出源代碼中光標(biāo)所對(duì)應(yīng)的位置。
反向搜索則是按住 Ctrl + 鼠標(biāo)點(diǎn)擊預(yù)覽的 pdf 文件某位置。光標(biāo)會(huì)自動(dòng)跳到源代碼的對(duì)應(yīng)位置。
如果你在知乎搜過(guò)相關(guān)教程,可能見(jiàn)到不少人教你用 Sumatra PDF 配置預(yù)覽,還要專(zhuān)門(mén)改設(shè)置實(shí)現(xiàn)正反向搜索。
我不建議這樣做。
他們想用 SumatraPDF 預(yù)覽也許是因?yàn)橐郧鞍姹?VSCode 的 LaTeX 插件不夠成熟,配置起來(lái)一堆問(wèn)題。但是現(xiàn)在版本完全沒(méi)問(wèn)題直接就配好了。上面我說(shuō)的這些都不需要專(zhuān)門(mén)設(shè)置的。
反而我照他們的教程做,反向搜索出 bug 了,怎么也搞不定。

總之你現(xiàn)在可以通過(guò)模板學(xué)習(xí) LaTeX 了。自己編寫(xiě)文檔初期可以考慮這么做:想實(shí)現(xiàn)某種排版格式,直接把模板中相應(yīng)代碼拷過(guò)來(lái),改成自己的內(nèi)容。速度并不慢。熟悉之后還可以越來(lái)越快。
這次先說(shuō)這么多吧。接下來(lái)想聊聊公式系統(tǒng)。