一年一度的美國大學生數學建模競賽(MCM/ICM)又要開始了。在比賽中,將有一部分同學選擇用LaTeX排版論文,以使論文獲得更好的視覺效果;但是,就既往經驗來看,其中的很大一部分同學,還並沒有熟練地掌握LaTeX的相關技巧,只是比較生硬的套用網上所給的論文模板(例如通行的mcmthesis,以及本站發布的easymcm),一旦出現一些小問題就會不知所措。
此份文檔為一份比較詳細的 LaTeX 排版問答集錦,內容集中於比賽時可能出現的種種情況。主要着眼於西安交大錢院學輔維護的 easymcm 宏包。讀者可將此份文檔存留、收藏;待遇到問題無法自行解決時,再來到這份文檔中查找解決方案。
此份文檔將根據我所了解到的問題繼續補充。如未找到答案,請到錢院學輔設置的美賽專欄上發言。
1 安裝與編譯問題
Q1.1: 我使用 CTeX套裝進行排版,編譯時系統報錯:
! LaTeX Error: File ` lastpage.sty ' not found.
(或 xcolor.sty 等其他常見宏包)是缺少宏包嗎?應如何解決呢?
您使用的應是非完整的
CTeX套裝,缺少宏包且不能自動聯網安裝。如一定要使用CTeX套裝(不推薦,見下),在安裝時,應下載帶有Full字樣的安裝包,如下圖所示(截圖來自清華鏡像)。

極不推薦使用老舊的
CTeX套裝,請安裝最新發行版(例如 TeX Live 2019),安裝教程可見這里或這里。與CTeX套裝相關的其他問題,作者將不再回復。
Q1.2:原來安裝了 CTeX 套裝,后來(先卸載了套裝,再)安裝了最新的 TeX 發行版(如 TeX Live)后編譯出錯,是什么原因?
CTeX套裝與其他 TeX 發行版共存本就有諸多問題,此外CTeX還有可能修改系統環境變量、導致無法在命令行中調用其他 TeX 發行版的程序。一般問題是環境變量缺失,請據此為線索自行搜索解決方案,並確保
CTeX套裝完全刪除干凈。
Q1.3: 編譯時顯示 easymcm.sty 文件未找到?
首先檢查
easymcm.sty文件是否與被編譯的PAPER.tex或其他文件在同一目錄下。如果仍不能找到,請檢查編譯時所在的目錄是否是當前目錄(可檢查 IDE 或終端開頭輸出的若干信息)。一種常見的可能是:沒有解壓
zip文件,直接通過 Windows 系統文件管理器中集成的zip查看器打開了PAPER.tex。請解壓后再用。另外,似乎這個問題大多是在 \(\rm\mathbb{C}\TeX\) 套裝下出現的。如實在無法解決,建議安裝最新的 TeX Live,以解決此問題(並避免產生其他更多問題)。
Q1.4: 我在編譯宏包時出現了以下報錯信息:
! Missing \endcsname inserted.
這是由於您不慎編譯了
easymcm.sty宏包文件。請編譯PAPER.tex。(您可能是在使用 WinEdt 軟件,因為其他的 IDE 都不會允許這樣做。)
Q1.5: 目前通行的mcmthesis是一個“文檔類”,而本站發布的easymcm是一個“宏包”。請問這二者有何區別?
文檔類(文件后綴名為
.cls)是一整套預定義的文檔樣式,其決定了諸如標題樣式、紙張大小、章節格式等屬性,相當於是文檔的“框架”。由LaTeX定義的基本文檔類包括article、book、report等。而宏包(文件后綴名為.sty)如同編程語言中的“庫文件”,可為文檔提供若干補充的命令、功能和設置。這是一般的情況。不過,在實際使用時,文檔類和宏包卻可以發揮類同的作用,這主要是因為LaTeX系統對文檔類/宏包文件的內容、格式未做太過嚴格的限定,因此許多功能既可以通過文檔類實現,也可以通過宏包實現。mcmthesis采用的文檔類樣式,實現較復雜,但更為精細。本站的easymcm宏包二次開發自mcmthesis的老版本,仍然是一個宏包文件,結構簡單,便於使用。在實際使用時,文檔類通過
\documentclass命令確定,宏包通過\usepackage命令引用。一份可編譯的tex文檔可以引用多個宏包,也可以不引用任何宏包,但必須確定一種文檔類。
2 圖片、表格、數學公式、網址的處理
Q2.1: 我還不太會插入圖標和表格……
請在使用 LaTeX 排版論文前花一點時間認真學習各項基本功能,如圖表處理等。請認真閱讀
latex-zh-cn(各發行版本中均有,使用texdoc命令即可獲得——這是什么意思?,若找不到請點這里下載),其中的內容已足夠你在文檔中獲得圖表。
Q2.2: 較大的表格,不易用 LaTeX 命令編寫。請問是否有解決方案?
一般而言,有兩種解決方案:
- 使用有關工具將
Excel、Matlab等表格(矩陣)格式轉換為LaTeX命令,或直接在可視化界面中編輯表格並轉換為LaTeX命令。一個可用的工具是Excel2LaTeX(LaTeXStudio上的中文介紹與下載、CTAN上的發布頁面),另一個可以在線轉換的網頁是TablesGenerator(點此進入,我推薦這一方式)。其中的若干門道,這里就不再介紹了,用戶可以自行嘗試。- 將表格截圖后以圖片形式插入到
LaTeX中。這是最方便的做法,問題在於截圖是位圖格式的,對文檔的顯示效果可能有一定的影響。同時,在插入截圖時,還應采取這樣的“古怪”方式:\begin{table}[!htbp] \centering \caption{Name of the table}\label{tb:XXX} \includegraphics[width=Xcm]{XXX.jpg} \end{table}由此,顯示出的標題將是“Table X: Name of the table”,而不是“Figure”。
figure環境與table環境都是浮動對象,沒有本質上的區別,主要區別就是標題名稱。
Q2.3: easymcm自帶的樣例論文中,所有的表格幾乎都是三線表。不能使用更復雜的樣式嗎?
三線表是科技論文中的通用表格形式,簡潔明快,在美賽論文中的確不推薦用其他類型的表格。但是,如果需要處理特別復雜的表格,必須在表格中用若干豎線分隔,則還是用默認的表格樣式為好。不建議新手自己用代碼寫復雜表格,請按照Q2.2中所提供的解決方案來生成復雜表格的
LaTeX代碼。關於三線表的更多信息,可以查看三線表宏包booktabs的說明文檔(使用texdoc命令查看,見 Q2.1 的回答)。可換頁表格需調用longtable宏包。
Q2.4: LaTeX中的公式代碼太繁瑣了,記不住、用不熟,怎么破?
如果您已經比較熟悉
LaTeX中數學公式的基本語法,以及若干的數學環境,只是對具體的符號代碼感到苦惱,可以准備一份公式代碼表在手頭以供查閱。各種紙質的、在線的LaTeX教程中,都有這樣的公式符號代碼表。如果您對基本的公式語法都感到陌生,則建議您利用其他可視化編輯器生成
LaTeX代碼。使用Office套裝處理文檔的用戶,應該比較熟悉MathType公式編輯器了,其內置有生成TeX代碼的模塊,具體的配置方法可在網上容易地找到(前提是,您使用的是完整版的MathType,不是在試用期結束后殘存的“精簡版”)。另外,還有一個較好的在線公式編輯器,語言可調整為中文,也可以充當一個公式表:如果您遺忘了某些符號,或記不清矩陣、積分號等的使用方法,可直接在界面上尋找對應按鈕,點擊就能生成規范的LaTeX代碼。還可參考我在錢院學輔信息站編寫的 LaTeX 公式語法速成文章。
Q2.5: 插入由\texttt引導的網址時,出現了不能換行的問題。如何解決?
打字機字族
ttfamily在TeX的底層定義中,默認是不能換行的。(參考這個知乎上的回答)使用easymcm模板時,為了自動換行,請在論文正文及參考文獻區采用\url命令將需要引用的網址括起來,例如一個含網址的bibitem應寫成這樣:\bibitem{XXX} Easymcm: A useful template for MCM/ICM. 2019.1.22. \url{https://www.cnblogs.com/xjtu-blacksmith/p/9737960.html}效果如下圖所示,可見自動換行的問題已解決了。特別注意,
\url是一個抄錄環境——也就是說,在其中不需要將_、^、$等字符做轉義處理。
3 樣式、字體字號、段落的設置
Q3.1:模板中與官方 Word 模板為何有微小差異(如字體顏色、字號、字體不是「純正」的 Times New Roman 等)?
- \(\rm\LaTeX\) 與 Word 機制不同,默認值也不同。想要將一個頁面的各項參數設置得和 Word 中「一模一樣」,需要額外設置許多屬性,不甚現實。使用 \(\rm\LaTeX\),即是追求較 Word 更好的排版效果(用 L 反而付出更多工作量),若視覺效果相同反倒失去意義。
- 關於紅色字體:根據往年情況,Word 模板中的紅色意指「在此填入自己的內容」,填入后宜改為黑色(因此不必去「設置字體為紅色」)。目前
easymcm與其他模板一致,采用此種解釋。- 關於局部的字號差異:最終提交者為 PDF,本質上是矢量圖,根本無從核查某處「字號為多少」。Word 模板設置字號容易,\(\rm\LaTeX\) 中稍繁,故模板中只是近似配置,勿擔憂。(關於某條線、某個段落間距之類,同理。)
easymcm已經發行三年,最初發布時默認字體甚至不是 Times 字體(襲用基底mcmthesis v5.0的 Palatino 字體),未有因「論文樣式有偏差」而導致比賽結果受影響的匯報(具體例子:作者本人使用該模板參賽,獲 M 獎)。事實證明,論文內容決定最終評審意見,論文樣式只要達到清晰、基本合規即可,細節不必過分追求,更不必為此焦慮;當下成百上千人(前幾年則有更多人)與你使用同樣模板參賽,足以使你安心。如一定要修改,請在各個相關評論區尋找已有回復,不再解答。
Q3.2:為何正文頁碼為 2?(或:為何目錄沒有頁眉?)
目錄無頁眉,又仍計為第一面(實質是「湊頁」),故產生如此現象。沒有要緊影響,暫時采用此種樣式;可能會在下一個版本中修改。
欲修改,請到
sty文件中的最后部分,將\thispagestyle{empty}命令去除,或將其改為\thispagestyle{fancy}。
Q3.3: 如何調整段間距?
在導言區修改
\parskip的數值即可。如命令\setlength{\parskip}{2\baselineskip}就將行距設置為兩倍的基礎行距(也可填入具體長度,如
2pt、2cm等)。不建議隨意調整。
Q3.4: 為調整頁邊距,我在導言區加載了 geometry 宏包后頁面顯示有問題,請問哪里出了問題?
easymcm中已經加載過geometry宏包了,再次加載會出錯(有如在C++程序中多次引用頭文件的錯誤)。不推薦用戶修改相關參數。如一定要修改,則應打開easymcm.sty並修改引用geometry宏包時所設定的參數——該宏包是第一個被引用的宏包,容易找到。
Q3.5: 如何修改目錄、正文標題的樣式?
不推薦用戶修改,修改目錄不是簡單的事情。如果您希望藉此「提高水平」,在比賽前有充足的時間和精力,請查找其他資料,比如通過
texdoc命令閱讀titlesec、titletoc等宏包的使用方法。
4 交叉引用的相關問題
Q4.1: 編譯后,生成了空白的目錄(或顯示為 ?? 的引用標記),請問發生了什么?!
重復編譯幾次即可。
Q4.2: 我的論文章節太多,導致目錄生成了兩頁。如何將其壓縮到一頁以內?
美賽論文理應短小精悍、結構突出,一篇20頁的論文不應有太過繁密的章節划分。目錄應當控制在一頁以內,因此
easymcm宏包中未考慮目錄超出一頁的情形。如果目錄被迫超出一頁(即實在無法刪減章節),有下列解決方案:
- 不顯示三級標題,只顯示二級標題。在導言區加入
\setcounter{tocdepth}{2}即可。- 定制目錄樣式,去掉目錄中
section級別標題的默認頂部間距。方法在網上可查到,但不推薦,因目錄樣式定制不是一件容易的事情。- 如您堅持認為自己的論文必須有兩頁目錄,請參考一位博友所引用的解決方案:知乎頁面。

