您當前的位置:首頁 > 繪畫

強迫症玩轉 LaTeX

作者:由 知乎使用者OsxP38 發表于 繪畫時間:2022-02-18

相比@李阿玲小姐,我在 LaTeX 方面絕對是菜鳥。這次終於忍不住在這個專欄下發文,是因為在「我大三,學計算機,寫了一篇paper,並上傳到arxiv上面,但是為什麼老師說先把paper在arxiv上刪掉?」這個問答中看到兩篇論文。題主的那篇,內容和語言都讓人無法直視,不過這裡我只說格式。@余天升的答案裡也貼出一篇他覺得「格式結構完全正確」的論文,點開一看,也是滿滿的槽點。

很久以前我回答過「畢業論文的格式要求合理麼?」其中提到打磨格式要半年,很少有人會相信。我不敢說自己的論文格式有多麼標準,但是想到我改文章時一直在糾結的那些細枝末節,再看看上面那兩篇文章……如果這也叫做「寫論文」,那我一定是強迫症晚期……

我寫論文用的是 LaTeX,相比 Word 來說,已經不需要那麼關心格式了。但我還是列出一些自己及周圍同事平時改文章時會在意的細節。其中可能會暴露出我使用 LaTeX 時的一些壞習慣或錯誤理解,還請各位高手能夠指出。

數學符號不可以出現在行首。但是 LaTeX 的自動排版免不了出現下面的情況:

強迫症玩轉 LaTeX

此時,需要把 rank $3$ 換成 rank~$3$,用 ~ 代替空格,禁止 LaTeX 在空格處換行。行文時,以一個數學符號開始一個句子,也是不好的。但是,把所有 $ 前面的空格換成 ~,聽說也不是什麼好辦法。

交叉引用和參考文獻的編號不能在行首。比如 Theorem 1 或者 See [Knu90] 的空格處,不可以換行。方法如上,用 ~ 代替空格。如 I。 Newton 這樣的姓名縮寫,也應該寫成 I。~Newton。

對於 i。e。,etc。,e。g。 這樣的縮寫,小寫字母后的句點會被當作句子的結束,之後的空格會變成較大的句間空格。評論中盛文博指出,此處應該用 i。e。\ ,etc。\ ,e。g。\ (斜槓+空格),不是 ~,因為這裡可以換行。

注意調整括號的大小。對於很高的公式,比如分式,直接用 ( ) 不能將內容括起來。我以前會用 \left( 和 \right),後來被導師糾正了:這種簡單粗暴的手段,效果並不好。現在,我基本會把 \big \bigg \Big \Bigg 都試試,看哪個舒服。

數字用數學環境,哪怕只是一個 1 或者 0,只要是數字就用數學環境。如果沒有養成這個習慣,碰到 -1 這樣的東西,很多人一眼看出這裡你用錯了。如果這個數字在 12 以內,又沒有數學意義,最好用文字(one two three)代替。

字母 L 的小寫區分度不高,經常用 \ell 代替。還有許多其他類似的 trick。

數學符號是斜體,文字是正體。如果你用一個單詞,比如 eff 做下標,那麼這個單詞應該是正體,用 \text 就可以了。

定理是斜體,如果你在定理裡寫了一個公式,其中用單詞做了下標,那麼 \text 會把這個單詞變成斜體。這是不可以的,你需要在 \text 裡再用 \textrm,把他強制為正體。

特殊數學函式,比如 sin cos log exp 之類是正體,且與變數間有間距。為此你需要用 \sin 而不是 sin。自己定義的數學函式用 \DeclareMathOperator 宣告。

數學公式是一個語法成分,有標點符號,什麼地方斷行有講究。具體參考 在用LaTeX排版的數學公式中,有時公式後面會跟一個逗號,有時不用,這是為什麼呢?(如下圖所示)是不同模板自己的規定嗎?還是跟不跟逗號是一件無關緊要的事

數學公式的對齊,eqnarray 的效果是這樣的

強迫症玩轉 LaTeX

這是不可以的。PracTeX Journal 有文章專門討論這個問題:Avoid eqnarray!一般用 amsmath 的 align 環境來替代。ams 還有許多應對跨行公式的神器。

多重下標儘量避免,哪怕影響行文也要儘量避免。實在不行的,也要注意哪些字母適合縮小,哪些字母縮小就沒法看了。

積分的正確寫法是 \int_0^1 f(x) \, dx ,這裡的「\,」加入了一個很小很小的空格,區別如下圖所示。許多人會忽略,但是許多人一眼就能看出來。

強迫症玩轉 LaTeX

其他不同大小的空格還有 \; \quad 等,用法各不相同。我見過的最強迫症的,會寫出 D。\,E。~Knuth,我還沒到這級別。

評論中郝運等病友指出,上面的微分符號「d」應該用正體。像之前提到的那樣,用 \DeclareMathOperator 宣告。@趙永峰指出,數學常數應該用正體。這些都是 ISO 標準的要求。但是美國數學學會的官方指南中也沒有這樣,Knuth 本人的 TeXbook 也沒有這樣,所以這裡純屬個人喜好。

從強迫症更嚴重的人那裡學到的:對映用 f \colon A \to B,\colon 處不用「:」。描述性的集合寫成 \{ \, x \mid x<0 \, \},\mid 處不用「|」。兩邊的小空格 \, 我也不太用。這裡的區別也是細微的空格間距。

評論中@趙永峰指出,我也經常看到別人犯的錯誤:數學的一些內積符號,及量子力學的 bra ket 符號,用 \langle 和 \rangle,不是大小於號 < >。後者真心醜。

有三種長短不一的橫線,也許初看起來差別不大,但也有許多人一眼可以看出來。短的用「 -」,用於複合詞,比如 counter-intuitive。長一點的用「——」,用來表示範圍,或者連線兩個人名,比如 Euler——Lagrange。最長的是「——-」,用在句子中當破折號。

參考文獻如果用 BibTeX,那麼注意大小寫。BibTeX 不會保留你輸入的大小寫,你需要用 { } 括起來強制他保留。

不要完全相信網上下載的 bib entry。編譯後一定要看看參考文獻列表。你需要知道特定的 bibliography style 是什麼格式。比如文章標題應該是斜體的他弄成正體,那就是你下載的 bib entry 寫錯了。我經常碰到的問題是副標題和主標題寫在一起。

一些歐洲名字的縮寫特別變態,你需要對這些小語種有一定了解。

如果用 alpha 這樣顯示年份的引用格式,引用時按年代順序排列,不要寫成 [BB90, New63, CL13] 這樣的亂序。

……

一時就想到這些。如果有一些細節我沒有提到,但你覺得特別重要的,歡迎在評論中補充。

我們不妨看看@葛巾是怎麼評價一件好的正裝的:

為什麼說它有點品質,注意看一下襯衫露出領口的高度,看看襯衫領口的伏貼,襯衫的法式袖剪裁,面料在燈光下的質感,手抬起時西裝肩部的滑順度,一件好的正裝不要求多貴,要的是你看起來沒有違和感。

體會一下,其實論文也是一樣。也許有許多細節你覺得無關緊要,但這就是專業與業餘的區別。我在改論文的時候,對行首符號、數學字型、括號大小、空格間距之類的細節會特別敏感。如此強迫重症之下,如果長時間改同一篇論文,絕對會瘋。因此總要先放下來去做點別的事,過段時間再回來改。所以花個半年修格式,真是常有的事。於是,當我看到本文開頭的那兩篇文章時,就好像看見有人一絲不掛,真的不敢直視……

已經離開的 @Clerk Ma 向我推薦過一本 Mathematics into Type,讓我受益匪淺。如果你需要用 LaTeX 寫比較數學的論文,我建議也購入一本這樣的格式手冊。

話說……上面用做反例的兩個截圖竟然來自合作者剛給我的草稿……明天我罵死他!

標簽: 空格  數學  LaTeX  正體  格式