LaTeX 技巧 964:高效使用 LaTeX

在不久前,我在微信公眾號上看到一篇關于 使用 Vim 和 LaTeX 做筆記的文章 :

在這篇文章中,作者介紹了使用 Vim 作為 LaTeX 的編輯器,并配合 Snippets 來實現高效輸入 LaTeX 代碼的方式。但 Vim 作為一個無法使用鼠標,完全靠鍵盤來進行輸入的編輯器,學習路線非常陡峭,很多人都是聽過 Vim 的大名但從來不能夠對它的使用融會貫通。

但對于一般人而言,你不需要通過學習 Vim 來達到高效編輯 LaTeX 的方式。而是通過一些比較容易實現的方式,使得你能夠在原來的基礎上更加高效得使用 LaTeX,并達到以思考的速度輸入 LaTeX 的方式。

在第一部分,我會首先介紹高效編輯 LaTeX 文檔的幾種方式,這能夠讓你在短時間內迅速提高你的 LaTeX 輸入速度。

而第二部分,則是將輸入 LaTeX 中遇到的常見問題進行一個總結,例如輸入數學字母、自定義定理類環境、參考文獻的設置等等。盡管網絡上已經有各種各樣的教程教你如何使用這些特殊的環境,但搜索時依然能搜索到很多沒有用的方案。這是因為你用的 TeX 版本可能跟作者不同,或者是作者所說的方案已經過時但網站沒有及時更新等等。我在這里給出我對這些基本環境的一個使用,并會經常進行更新。

我用的 TeX 編譯器主要是 TeXPadTeX,這是一款支持實時編譯的 TeX 編譯器,而不需要手動進行編譯。而在 TeXPadTeX 無法處理的文檔時,我會選擇使用 TeX Live。TeXPadTeX 基本兼容 TeX Live,在使用上沒有太大的區別。而對于 CTeX,我由于沒有安裝 CTeX,所以無法測試。


目錄

  1. 高效編輯 LaTeX 文檔的幾種方式

  2. 數學字母

  3. 自定義定理類環境

  4. 插入圖片

  5. 參考文獻


1 高效編輯 LaTeX 文檔的幾種方式

1.1 實時預覽

用 LaTeX 寫文檔很好,但它也有一個很明顯的缺點,那就是用 LaTeX 寫出來的文檔,并不是所見即所得。不論是正文還是數學公式或者是參考文獻,都需要將其寫入 TeX 文件,并進行編譯以后才能生成 PDF。而在預覽 PDF 文件時,如果你發現有些地方存在書寫錯誤,你就需要更改相應的 TeX 文件,并再次進行編譯才能夠生成新的 PDF 進行預覽。

非所見即所得的 LaTeX 造成了很多困擾,這表示你必須編譯以后才能看到內容上的錯誤,而修改內容又需要重新編譯,這是一個重復性操作。另一方面,你只有在編譯時,才能夠發現 TeX 代碼中的錯誤,這在后期調試時十分不方便。

盡管現在已經有越來越多的編輯器支持「實時預覽」,也就是所見即所得。但不論是在功能上,還是體驗上,都比不上 TeXPad 這款軟件。TeXPad 的一個特色就是左側編輯右側預覽,幾乎無任何延時,并且在報錯上也是十分靈敏,方便你在編寫的過程中找到錯誤。

實時預覽與實時報錯演示
實時預覽與實時報錯演示

TeXPad 對新手十分友好,通過實時預覽和實時報錯,能夠在入門 LaTeX 時節省很多的時間在調整細節和糾錯上。有許多 LaTeX 老手并不喜歡這樣的模式,認為再復雜的式子他也可以快速輸入。我曾一度也如此認為,直至有一次要輸入以下公式:

輸入復雜的公式
輸入復雜的公式

這個公式的復雜,讓我深切體會到 TeXPad 實時編譯實時預覽的好處。向量需要加粗,括號需要變大,上標需要加上小括號等等。如果沒有實時預覽,只要有一處沒有考慮到就需要重新修改重新編譯重新預覽,反復如此。而有了實時預覽之后,就可以一次性將這個公式打出來。

1.2 文本擴展

在 LaTeX 中插入一張圖片或者一個表格并不容易。對于插入圖片而言,要定義 figure 環境,設置圖片位置、圖片的文件名,圖片標題等等。對于插入表格而言,需要定義 table 環境,設置表頭、對齊方式、表格具體內容等等。插入圖片和表格的代碼相對比較復雜,不容易記憶。

好在插入圖片或者插入表格都有固定的規律可循。比如,插入圖片時,我們通常使用類似這樣的代碼:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{x2}
   \\[0mm]
   \caption{$y=x^2$}
   \label{fig:x2}
\end{figure}

這樣,對于每一張圖片,只需這三個大括號中依次填入: 圖片名稱、圖片標題、標簽即可。通過 Keyboard Maestro 或 Text Expander 等等軟件能夠十分方便得通過這三條信息來生成一段插入圖片的 LaTeX 代碼。例如我設置通過輸入 ffig 來插入一張圖片,此時會彈出一個對話框,這個對話框就要求我輸入這三條信息,輸入完成后點擊 OK,即可在當前應用程序中生成一段插入指定圖片的 LaTeX 代碼。

快速插入一張圖片
快速插入一張圖片

這樣的場景在 LaTeX 中十分常見,例如 align 環境、itemize 環境、array 環境、section 環境等等都可以通過這樣的方式來自動插入 LaTeX 代碼。

使用文本擴展不僅僅意味著你可以少輸入很多字母,它更深刻的用處是在你不需要去記憶任何環境的代碼規則。在一臺新的電腦上,我無法在不查找資料的情況下在 LaTeX 中插入一張圖片,但在我自己的電腦上,我很輕松的通過 Keyboard Maestro 來插入一張圖片。

1.3 設置縮寫

在 LaTeX 中,可以給常用的命令設置縮寫。例如在公式中需要對向量 x 進行加粗,但每次都采用 \bm{x} 來進行加粗會比較麻煩。這時我們可以通過 \def 來指定縮寫,例如 \def\bx{\bm{x}},此時 \bx\bm{x} 完全等價。

設置縮寫
設置縮寫

通過設置縮寫,可以將 LaTeX 中較長的代碼直接通過一個小命令來使用,這在編寫 TeX 文檔時可以節省不少時間。

1.4 文本擴展與縮寫的比較

文本擴展是通過設置短語,來實現快速輸入,在內容上與原來完全一致。而縮寫則是通過在導言區定義新的命令,在正文中可以通過這個命令來達到指定的功能。他們的優缺點分別有:

  • 文本擴展的優點

  • 可以設置模板 (例如插入圖片、表格等等)

  • 簡化了打字方式,但在內容呈現上與原來一樣

  • 文本擴展與當前軟件無關,無論是在不同的文件中,甚至在不同的軟件中,文本擴展永遠可以使用

  • 縮寫的優點

  • 復雜公式中,更加容易看清公式的結構

  • 文本擴展的缺點

  • 所有內容都是按照原樣來寫,這樣復雜的公式的代碼會超級長

  • 縮寫的缺點

  • 在每一個文件中,都需要設置縮寫才可以使用

  • 不同的人對于縮寫的設置習慣不同,不利于協作

以上就是文本擴展和縮寫的比較,在實際使用中,我們需要結合起來使用。

1.5 使用 MathPix 識別公式

Mathpix Snip 是一個能夠將圖片中的公式轉成 LaTeX 代碼的工具,它能夠通過截取你想要識別的公式,并輸出 LaTeX 代碼。

圖片轉 LaTeX 的工具很多,但大部分軟件做得不是太好,識別準確率也不高。很多軟件雖然可以識別,但后期的修正 bug 會浪費很多的時間。而 MathPix 在識別準確率上做得很好,可以讓你在截圖以后直接可以放心使用識別出來的 LaTeX 代碼,這非常快速并且節省時間。

通過 MathPix 截圖并轉換成 LaTeX 代碼
通過 MathPix 截圖并轉換成 LaTeX 代碼

下面是轉換完成的 LaTeX 代碼,整體來說還是轉換的很不錯的。

$$
\frac{\partial}{\partial \theta} \int \psi_{\theta}(x) d \nu=\int \frac{\partial}{\partial \theta} \psi_{\theta}(x) d \nu
$$

總結

工欲善其事,必先利其器。在學習上我們不應該偷懶,但在寫 LaTeX 代碼上,我們應該用最高效地方式來進行編寫,以達到節省時間節省精力的目的。通過一款支持實時預覽的編輯器,使用文本擴展和縮寫相結合,再配合 MathPix 之類的圖片轉 LaTeX 工具,這將讓你編寫 LaTeX 代碼足夠地高效。


2 數學字母

在數學公式中,你可能需要為公式中的字母設置字體,例如向量或矩陣的加粗、線性變換的花體、數集的字體等等。

幾種常用字體
幾種常用字體

2.1 清除公式中的字母格式

在數學公式中,直接輸入的字母都會變為斜體。例如輸入 sin(x) 會得到一個全是斜體的 sin(x),通過 \sin(x) 進行輸入則其中的 sin 為正體。

左: sin(x),右: \sin(x)
左: sin(x),右: \sin(x)

但公式中,并不是所有的數學符號都在 LaTeX 中有對應的命令。例如矩陣的跡: tr 或者 trace,在 LaTeX 中并沒有特定的命令來輸入。這時,可以通過 \mathrm{} 來進行輸入。

左: tr(A),右: \mathrm{tr}(A)
左: tr(A),右: \mathrm{tr}(A)

通過 \mbox{} 來進行輸入時,也可以達到一樣的效果,但這兩種方法在字體和字母間距上有細微差別。

2.2 字母加粗

對于公式中的向量或者矩陣,常常需要對字母進行加粗。對字母進行加粗有兩種情況,一種是字母為正體并加粗,一種是字母為斜體并加粗。這兩種分別可以通過 \mathbf{}\bm{} 來實現。其中 bm 需要引入一個包: bm

\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})
\bm{u},\bm{v}\in\mathbf{Col}(\mathbf{M})

2.3 使用花體字母

在有些情況下,你可以需要使用到花體字母,例如描述線性空間的線性變換等等。花體字母常用的有兩種,\mathcal{}\mathscr{} ,其中 mathscr 需要引入包: mathrsfs

\mathcal{A}\in \mathrm{End}(V)
\mathcal{A}\in \mathrm{End}(V)

2.4 使用空心字母

在描述數集時,常采用空心字母來表示。通過 \mathbb{} 能夠輸入空心字母,需要引入包: amsfonts

a, b, c\in\mathbb{R}
a, b, c\in\mathbb{R}

2.5 其他數學字母

其他數學字母
其他數學字母

圖片來源: Texdoc Symbols


3 自定義定理類環境

定理類環境是指,文檔中關于定理、引理、命題、推論等等的環境。LaTeX 可以實現自定義定理類環境,包括設置排序單位、設置字體、分隔符等等。在 LaTeX 中,自定義定理類環境不需要另外的包 (網絡上大多的資料都提示需要 amsmath 這個包,但我不用這個包的時候也能夠正常運行),但在調整定理類環境的樣式時需要使用 ntheorem 這個包。

3.1 基本語法

通過在導言區添加 \newtheorem{環境名}{標題}[排序單位] 即可自定義定理環境。其中:

  • 環境名: 必選參數,在你的 TeX 文件中,\begin{}\end{} 中大括號內的內容。

  • 標題: 必選參數,在你的 PDF 文件中,該環境顯示出來的內容。

  • 排序單位: 可選參數,設置你的自定義環境自動標號的內容。

未設置排序單位
未設置排序單位
  • 定理名字: 可選參數,在 \begin{}[]\end{} 中中括號內的內容即為定理的名字,會通過小括號顯示在定理中。

設置定理名字
設置定理名字

3.2 排序單位

  • 取消排序: 若需要取消定理類環境的編號,你只需在定義定理類環境時,加上星號。

取消排序
取消排序
  • 按照 sectionsubsection 等排序: 只需在排序單位中設置即可。

按照 section 排序
按照 section 排序
  • theoremlemma 等統一編號排序: 此時要將 theorem 用中括號的形式放入環境名和標題之間,不可放至末尾。

theorem, lemma 統一編號
theorem, lemma 統一編號

3.3 設置字體

  • 定理類環境默認的字體為斜體,可以通過 \theorembodyfont 來設置字體,其中 \upshape 為正體,\itshape 為斜體。\theorembodyfont 必須放在 newthorem上方

將定理類環境中的內容設置為正體
將定理類環境中的內容設置為正體
  • 需要注意的是,這個設置會對接下來所有定義的 newtheorem 都會產生影響。在仍然需要設置斜體時,可以通過 \theorembodyfont{\itshape} 將字體變為斜體。

設置正體和斜體
設置正體和斜體

3.4 設置換行

  • 可以通過設置 \theoremstyle{break} 來使定理和正文中進行換行。\theoremstyle 必須放在 newthorem上方

設置換行
設置換行
  • 這個命令會對接下來所有定義的 newtheorem 都會產生影響,可以通過 \theoremstyle{plain} 使其恢復為原來的樣式。

3.5 設置分隔符

可以通過 \theoremseparator{} 設置定理和正文的分隔符。

設置分隔符
設置分隔符

4 插入圖片

4.1 插入單張圖片

插入圖片需要引入包: graphicx,通過 \includegraphics 即可插入一張圖片。但一般情況下,你需要將圖片放入到一個 figure 環境中。默認情況下,在一個空白頁中,圖片會插入到頁面中間,但在一個非空白頁中,圖片會插入到頁面頂部。若想要圖片按照你指定的位置來進行插入,那就需要設定 figure 環境的參數。

沒有設置任何參數時,圖片顯示在頂部
沒有設置任何參數時,圖片顯示在頂部

figure 環境包括 4 個參數:

  • h: here,此處

  • t: top,頁頂

  • b: bottom,頁底

  • p: page,獨立一頁

在設置參數時,通常使用 ht。這表示 LaTeX 試圖將圖片放在此位置,如果不行 (此處沒有足夠的空白能夠插入該圖片) 則會將圖片放在新頁面的頂部 (如果頁面為空時,放入頁面中央)。

在設置好圖片放置的位置以后,還需要設置圖片居中,使用 \centering 即可設置圖片居中。

接下來可以插入圖片了,插入圖片的命令是 \includegraphics{},大括號中輸入圖片的文件名即可,在不引起混淆的情況下,可以不輸入文件的擴展名。可選項為設置圖片的大小,一般情況下,設置圖片寬度占文字寬度的多少即可,例如: width=0.8\textwidth

之后則是設置圖片與標題的距離、標題、標簽等等。這就得到插入一張圖片時需要的代碼:

\begin{figure}[ht]
   \centering
   \includegraphics[width=0.8\textwidth]{}
   \\[0mm]
   \caption{}
   \label{}
\end{figure}

4.2 插入兩張圖片并水平排列

與插入一張圖片的方式基本相同,只不過需要使用 minipage 包將圖片進行包裹,并分別設置寬度即可。

插入兩張圖片并水平排列
插入兩張圖片并水平排列

代碼如下:

\begin{figure}[ht]
   \centering
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x2}
       \caption{$y=x^2$}
   \end{minipage}
   \begin{minipage}[t]{0.48\textwidth}
       \centering
       \includegraphics[width=0.8\textwidth]{x3}
       \caption{$y=x^3$}
   \end{minipage}
\end{figure}

4.3 設置圖片存放路徑

在圖片較多的情況下,將圖片都存放在根目錄會導致根目錄文件較多。但如果將圖片保存在子目錄,那插入圖片時會比較麻煩,每次都需要寫上子目錄的名稱。你可以通過設置圖片存放路徑的方式,使得圖片存放指定的目錄,并在插入圖片時直接使用圖片名稱即可。

通過 \graphicspath{{figures/}} 可以設置圖片的路徑為 figures/,此時即可將圖片存入該文件夾,而在代碼中,可以直接通過文件名進行調用。


5 參考文獻

在寫文章的過程中,參考文獻的引用是一個很重要的部分,但同時這也是一個很復雜的事情,這體現在以下幾個方面

  • 參考文獻對大小寫,正體斜體等的要求極其嚴格,并且有不同的規范。

  • 正文中引用參考文獻時有很多不同的格式,例如通過 [1][2] 等等的數字進行引用,或者通過 Erhan et al. (2010) 這樣的作者年份來引用等等。

  • 在文章的參考文獻頁,各參考文獻的排序方式有很多規范,例如通過引用順序進行排序或者通過作者名字進行排序等等。

在 LaTeX 中,自動生成參考文獻也有諸多不同的方式。這里以 natbib 這個包來做示例,正文中顯示的引用為作者加上年份,參考文獻按照作者名字進行排序。對于別的參考文獻樣式,只需進行少許更改,即可達到指定的要求。

5.1 基本結構

首先你要引入包 natbib 并設置參數 authoryearround。這里的 authoryear 表示要顯示的內容,而 round 表示年份用小括號進行包裹 (默認用中括號進行包裹)。

然后你需要在 TeX 文檔的末尾添加參考文獻的文件,即在 \end{document} 之前加上以下兩行:

\bibliographystyle{plainnat}
\bibliography{reference}

這兩行的順序不能夠調換,第一行表示參考文獻的樣式是 plainnat,而第二行表示參考文獻的文件是 reference 這個文件。這時,TexPad 會自動問我們是否需要新建該文件。

創建 reference.bib 文件
創建 reference.bib 文件

此時的 TeX 文件結構如下,并在目錄中多出了一個 reference.bib 文件。

基本結構
基本結構

5.2 bib 文件結構

這個 bib 文件其實是一個文獻數據庫,你可以將你所有閱讀過的文獻都放到這個文件中進行管理。需要注意的是,只有你在正文中引用到的文獻,才會出現在參考文獻的列表中。

bib 文件存放所有需要使用到的參考文獻,對每一個文獻,都有一個固定的格式,例如下述內容就代表一個文獻。

@article{erhan2010does,
 title={Why does unsupervised pre-training help deep learning?},
 author={Erhan, Dumitru and Bengio, Yoshua and Courville, Aaron and Manzagol, Pierre-Antoine and Vincent, Pascal and Bengio, Samy},
 journal={Journal of Machine Learning Research},
 volume={11},
 number={Feb},
 pages={625--660},
 year={2010}
}

這并不需要你手動進行輸入,你可以通過任何文獻管理軟件如 Papers、EndNote 等等將文章引用為 BibTeX 格式,或者在 Google 學術上點擊引用并選擇 BibTeX。

從 Google 學術中獲取 BibTeX 格式的參考文獻
從 Google 學術中獲取 BibTeX 格式的參考文獻

5.3 引用參考文獻

在正文中引用參考文獻的方式非常簡單,只需輸入 \cite{} 即可,此時 TexPad 會自動彈出一個框用于選擇需要引入的參考文獻。

引用參考文獻
引用參考文獻

從上圖中你也可以看到,References 下面的參考文獻列表,會隨著正文中引用的參考文獻的變化而變化。而關于 Reference 與正文在同一頁的問題,這只需在參考文獻前添加 \newpage 即可。


選自:https://www.notion.so/LaTeX-6be09d441a594bed84d59dba2b254034

分享到:
未經允許不得轉載:LaTeX 技巧 964:高效使用 LaTeX
已有 條意見

    最新文章

    加載中...
      本站提供專業LaTeX排版、咨詢、定制服務,請點擊下圖咨詢詳情


      全國首個精品的LaTeX視頻教程,大牛帶著你入門,讓LaTeX學習不再糾結,請點擊下圖咨詢詳情

      熱門評論

        聯系我們

        交流QQ群:91940767
        本站QQ號:343083553
        郵箱聯系[email protected]
        淘寶店鋪https://shop240512713.taobao.com/ 提供排版,模板定制,培訓,圖片處理,視頻教程等LaTeX服務。

        關注我們微信公眾號

        如果您投稿或者希望加入我們團隊,請發送您的簡歷到[email protected]
        刺激战场比赛ag