
1. 項目概述為什么LaTeX是數模競賽的“隱形冠軍”搞數學建模競賽的朋友尤其是參加過國賽、美賽的應該都經歷過這樣的痛苦比賽最后一天論文寫作和排版成了比模型本身更讓人頭疼的“攔路虎”。Word里公式編號對不齊、交叉引用一更新就亂套、圖表位置飄忽不定更別提復雜的數學符號和算法偽代碼了。熬夜調格式調得兩眼發花最后交上去的論文在排版上就先輸了一截。我當年第一次參賽也是這么過來的直到被隊友“安利”了LaTeX才真正體會到什么叫“把時間還給建模和思考”。“數模LaTeX學習筆記”這個項目本質上是一份為數學建模競賽量身定制的LaTeX實戰指南。它解決的絕不僅僅是“怎么打出漂亮的公式”這種表面問題而是直擊數模論文生產流程的核心痛點如何高效、規范、優雅地生成一份符合學術出版標準且能在高壓競賽環境下穩定輸出的競賽論文。這份筆記適合所有數模參賽者無論你是剛聽說LaTeX的小白還是已經會用基礎命令但總被各種細節卡住的中階用戶。它的目標不是讓你成為LaTeX專家而是讓你在最短時間內掌握一套能直接用于數模戰場、穩定可靠的“排版流水線”。2. 核心思路構建模塊化與自動化的論文生產線很多初學者學LaTeX容易陷入兩個誤區一是從宏包、命令的語法細節學起枯燥且難以堅持二是直接拿一個現成的模板就用一旦需要修改就無從下手。這份學習筆記的核心理念是“以終為始場景驅動”。我們不孤立地學習命令而是圍繞“完成一篇標準數模論文”這個終極目標拆解出一個個具體的場景模塊。2.1 模塊化設計像搭積木一樣寫論文一篇標準的數模論文結構非常清晰摘要、問題重述、模型假設、符號說明、模型建立與求解、結果分析、模型評價與推廣、參考文獻、附錄。我們的學習路徑就圍繞這些模塊展開。為什么選擇模塊化在緊張的競賽中團隊通常分工協作有人負責建模有人負責編程有人負責寫作。如果大家都在同一個Word文檔里操作沖突、格式混亂幾乎是必然的。LaTeX的純文本特性使得我們可以將論文的不同部分拆分成獨立的.tex文件例如abstract.tex,model.tex,reference.bib最后通過一個主文件用\input{}或\include{}命令將它們組織起來。這樣隊友可以并行編輯自己負責的部分最后合并時格式自動統一互不干擾。這是Word難以企及的協作優勢。筆記如何體現模塊化筆記不會一上來就講\documentclass{article}。它會從一個最簡單的“Hello World”文檔開始立刻引入\input命令讓你先建立起“主文件-子文件”的工程概念。然后針對每個論文模塊提供對應的LaTeX實現方案。例如學到“符號說明”部分就集中講解如何用tabular環境或專門的glossaries宏包制作規范的三線表學到“參考文獻”就專門講解BibTeX的使用而不是把各種命令混在一起講。2.2 自動化思維讓機器處理瑣事你只管內容LaTeX最強大的地方在于自動化。我們的筆記會強力灌輸這一思想。公式、圖表、章節的自動編號與交叉引用這是基礎中的基礎。筆記會詳細對比手動編號和自動編號的優劣并強調永遠使用\label{}和\ref{}組合。例如給一個公式打上標簽\label{eq:model1}在文中任何地方用\ref{eq:model1}引用LaTeX會自動填入正確的編號。即使你在中間插入了新的公式所有編號和引用都會自動更新徹底杜絕手動更新的錯誤和繁瑣。參考文獻管理自動化這是提升效率的關鍵。筆記會花大篇幅教你告別手動在文末敲參考文獻條目的原始方式轉而使用BibTeX。你只需要維護一個純文本的.bib文件里面按固定格式存儲所有文獻信息。在文中用\cite{}引用LaTeX編譯時會自動按指定格式如國賽常用的GB/T 7714-2015生成參考文獻列表并正確排序。比賽時隊友可以共享一個.bib文件隨時添加新文獻極其高效。樣式與格式的集中管理通過定義自定義命令和環境實現“一次定義到處使用”。例如你可以定義\newcommand{\important}[1]{\textcolor{red}{\textbf{#1}}}來高亮關鍵結論。或者定義一個新的“定理”環境使其自動帶有特定的縮進、字體和編號樣式。這樣整篇論文的格式風格就集中在文檔前言區修改起來輕而易舉。注意自動化建立在正確使用的基礎上。一個常見的坑是LaTeX需要編譯兩到三次交叉引用和參考文獻的編號才能完全穩定。筆記會強調這個工作流程如使用pdflatex - bibtex - pdflatex - pdflatex并推薦使用能自動完成此流程的編輯器如TeXstudio, VS Code with LaTeX Workshop。3. 環境搭建與工具鏈選擇輕裝上陣穩定第一工欲善其事必先利其器。但對于數模競賽這種時間緊迫的任務工具鏈的選擇原則是主流、穩定、易用避免在環境配置上浪費寶貴時間。3.1 LaTeX發行版TeX Live 是唯一推薦對于Windows和Linux用戶TeX Live是事實上的標準。它包含了絕大多數你可能用到的宏包和字體一次安裝基本無需再操心依賴問題。筆記會提供清晰的安裝指引并特別提醒在安裝時勾選“安裝TeXworks前端”選項這是一個極簡的編輯器可作為備用。對于Mac用戶MacTeX是TeX Live的Mac版本同樣推薦。為什么不推薦CTeX套裝早期CTeX因其良好的中文支持而流行但其更新緩慢且集成了一些非標準的配置有時會導致與最新宏包的兼容性問題。現代TeX Live對中文的支持通過XeLaTeX/LuaLaTeX引擎配合ctex宏包已經非常完美和標準因此筆記會統一基于TeX Live ctex的方案進行講解確保路徑的通用性和可復現性。3.2 編輯器功能與簡潔的平衡編輯器是每天打交道的界面選擇因人而異但筆記會重點介紹兩款TeXstudio專為LaTeX設計的集成環境IDE。開箱即用功能全面語法高亮、代碼補全、內置PDF預覽、一鍵編譯、錯誤提示定位都非常直觀。它的界面布局傳統但高效非常適合LaTeX新手和中級用戶能讓你快速上手而不被復雜配置分心。VS Code LaTeX Workshop插件如果你已經是VS Code的用戶或者喜歡更現代、可定制性更強的編輯器這是絕佳選擇。LaTeX Workshop插件提供了不輸于專業IDE的功能并且能與VS Code強大的代碼管理、版本控制Git生態無縫集成。對于習慣用Markdown寫筆記、用Python做數值模擬的團隊所有工作可以在一個編輯器內完成切換成本低。我的實操心得在數模競賽中我更推薦TeXstudio。因為它更“純粹”所有功能都為LaTeX設計默認設置就很合理幾乎不需要調整就能投入戰斗。而VS Code方案需要一定的配置在爭分奪秒的競賽中穩定、免配置的工具更有優勢。當然你可以平時用VS Code學習和練習比賽時切換到TeXstudio確保萬無一失。3.3 編譯引擎與中文支持XeLaTeX 是首選這是處理中文的核心。筆記會明確建議放棄傳統的pdflatex直接使用XeLaTeX作為默認編譯引擎。為什么pdflatex對中文字體的支持需要額外配置且處理復雜字體時比較麻煩。XeLaTeX直接使用操作系統字體對中文包括各種標點符號的支持是天生的、無縫的。配合ctex宏包你只需要在文檔開頭使用\documentclass[UTF8]{ctexart}對于文章類就能直接輸入中文并獲得符合中文排版習慣的格式如首行縮進兩字符。操作流程示例 在TeXstudio中設置默認編譯器為XeLaTeX選項 - 設置TeXstudio - 構建 - 默認編譯器選擇XeLaTeX。然后一個支持中文的最小工作示例就如下所示\documentclass[UTF8]{ctexart} % 使用ctexart文檔類UTF8編碼 \usepackage{amsmath, amssymb} % 引入數學公式宏包 \usepackage{graphicx} % 引入圖形宏包 \title{數模競賽論文標題} \author{你的團隊} \date{\today} \begin{document} \maketitle \section{問題重述} 這里是中文內容可以直接輸入。數學公式如 $E mc^2$ 也能正常顯示。 \end{document}編譯后你將直接得到一個排版規范的中文PDF。4. 數模論文核心模塊實戰精解掌握了環境和基礎我們就進入實戰。筆記會按照論文結構逐一攻破每個模塊的實現難點。4.1 摘要與關鍵詞獨立頁與精煉排版數模論文摘要通常要求獨立一頁且字數嚴格限制。LaTeX實現非常簡單\begin{abstract} 這里是摘要內容。摘要應簡明扼要地闡述問題、方法、模型、算法、結論和亮點。\\ % 手動換行 \textbf{關鍵詞}關鍵詞一 關鍵詞二 關鍵詞三 \end{abstract}使用ctexart文檔類時abstract環境會自動將“摘要”二字居中顯示。如果需要英文摘要可以使用\begin{abstract}和\begin{abstract*}需\usepackage{abstract}或手動創建新的章節。4.2 公式編輯從基礎到復雜算法公式是數模論文的靈魂。LaTeX的數學模式強大到令人驚嘆。基礎與技巧行內公式$...$或\(...\)。行間公式\[...\]或equation環境可自動編號。強烈推薦使用amsmath宏包它提供了更多、更友好的數學環境如align用于多行公式對齊、gather多行居中公式。多行公式對齊align環境 這是描述模型推導過程最常用的環境。\begin{align} % 每行末尾的 \\ 表示換行每行都有一個編號 \min \quad Z \sum_{i1}^{n} c_i x_i \\ % 是對齊點 \text{s.t.} \quad \sum_{j1}^{m} a_{ij} x_j \leq b_i, \quad i 1,2,\ldots,m \label{eq:constraint1} \\ x_j \geq 0, \quad j 1,2,\ldots,n \nonumber % \nonumber 取消該行編號 \end{align}算法偽代碼排版 推薦使用algorithm2e或algorithmicx宏包。它們能生成專業美觀的算法描述框。\usepackage[ruled,vlined]{algorithm2e} % 引入算法宏包 \begin{algorithm}[H] % [H] 強制算法就在此處不浮動 \caption{我們的優化算法}\label{alg:myalgo} \KwIn{輸入參數} \KwOut{輸出結果} 初始化變量\; \While{未滿足終止條件}{ 執行步驟1\; \eIf{條件成立}{ 執行分支A\; }{ 執行分支B\; } } 返回結果\; \end{algorithm}注意事項在公式中文本字體如“s.t.”, “subject to”要用\text{}命令包裹否則會被當作斜體變量處理。對于較長的公式要善于利用split或multline環境進行折行確保公式不會超出頁面邊界。4.3 表格與圖片規范與自動控制表格數模論文中的表格如符號說明、結果對比推薦使用三線表顯得專業簡潔。booktabs宏包提供了\toprule,\midrule,\bottomrule命令來繪制高質量的三線表。\usepackage{booktabs} % 引入三線表宏包 \begin{table}[htbp] % 位置參數h(此處)t(頂部)b(底部)p(獨立頁) \centering \caption{模型符號說明}\label{tab:symbols} \begin{tabular}{ccc} % 三個居中對齊的列 \toprule 符號 含義 單位 \\ \midrule $v$ 速度 m/s \\ $t$ 時間 s \\ $S$ 距離 m \\ \bottomrule \end{tabular} \end{table}圖片使用graphicx宏包\includegraphics命令支持多種格式PDF, PNG, JPG等。關鍵技巧矢量圖優先盡可能使用PDF、EPS、SVG等矢量格式的圖片如Matlab導出的PDF或Visio、Draw.io繪制的圖表放大無限清晰不影響印刷質量。控制寬度使用相對寬度如\includegraphics[width0.8\textwidth]{fig1.png}讓圖片寬度為文本寬度的80%這樣在不同頁面設置下都能自適應。子圖排版當需要并排展示多張圖片時使用subcaption宏包注意不是過時的subfigure。\usepackage{graphicx, subcaption} \begin{figure}[htbp] \centering \begin{subfigure}[b]{0.48\textwidth} \centering \includegraphics[width\linewidth]{fig1a.png} \caption{情況A} \label{fig:sub1} \end{subfigure} \hfill % 填充水平空間使兩張子圖分開 \begin{subfigure}[b]{0.48\textwidth} \centering \includegraphics[width\linewidth]{fig1b.png} \caption{情況B} \label{fig:sub2} \end{subfigure} \caption{兩種不同情況下的結果對比} \label{fig:result} \end{figure}浮動體控制[htbp]是位置參數LaTeX會嘗試按此處(h)、頁頂(t)、頁底(b)、獨立頁(p)的順序放置圖表。有時圖表會“亂跑”可以嘗試使用[H]參數需要float宏包強制放置但這可能產生大片空白。更好的做法是確保圖表大小合適并相信LaTeX的排版算法在最終定稿前再微調。4.4 參考文獻管理BibTeX 高效工作流手動管理參考文獻是災難。BibTeX工作流是LaTeX的殺手級功能。第一步創建.bib文件。 新建一個文本文件如refs.bib。每條文獻的格式如下article{citekey2024, author {作者一 and 作者二}, title {文章標題}, journal {期刊名}, year {2024}, volume {10}, number {2}, pages {100-115} } book{lamport1994, author {Leslie Lamport}, title {LaTeX: A Document Preparation System}, publisher {Addison-Wesley}, year {1994}, edition {2nd} }citekey2024和lamport1994是你自定義的引用標簽在文中用\cite{citekey2024}來引用。第二步在LaTeX文檔中設置。\documentclass{ctexart} ... \usepackage{gbt7714} % 使用國標7714-2015參考文獻樣式宏包 \bibliographystyle{gbt7714-numerical} % 采用順序編碼制 ... \begin{document} ... 這里引用了某篇文獻 \cite{citekey2024}。 ... \bibliography{refs} % 導入同目錄下的 refs.bib 文件注意不要加 .bib 后綴 \end{document}第三步編譯流程。 由于涉及交叉引用需要按順序編譯XeLaTeX編譯主文件生成.aux文件記錄引用信息。BibTeX編譯讀取.aux從.bib生成.bbl文獻列表。XeLaTeX編譯兩次第一次讀入.bbl生成文獻列表第二次解析所有交叉引用。在TeXstudio中通常有“構建并查看(F5)”按鈕它默認會執行這個完整流程。在VS Code的LaTeX Workshop中也有對應的“構建LaTeX項目”命令。實操心得比賽期間讓一位隊員專門負責維護.bib文件。所有隊員在文中引用文獻時統一使用BibTeX的\cite{}命令。這樣無論文獻順序如何調整編號和列表都是自動、一致的。可以極大減少最后時刻的混亂。同時建議使用Zotero、JabRef等文獻管理軟件來生成BibTeX條目比手動輸入準確高效得多。5. 高級技巧與競賽專屬優化掌握了基礎模塊一些高級技巧能讓你的論文更出彩處理效率更高。5.1 自定義命令與環境打造團隊專屬模板這是體現專業性和提升效率的高級功能。你可以在文檔前言區\begin{document}之前定義一些快捷命令。自定義命令\newcommand{\R}{\mathbb{R}} % 定義 \R 為實數集符號 \newcommand{\diff}{\mathop{}\!\mathrmvvp75rlhf} % 定義微分算子 d確保前面有適當間距 \newcommand{\mat}[1]{\boldsymbol{#1}} % 定義向量或矩陣為粗體如 \mat{A}定義后在文中用$\R^n$表示n維實空間用$\int f(x) \diff x$得到美觀的微分符號用$\mat{A}^\top \mat{x}$表示矩陣轉置乘向量。自定義環境 例如定義一個“模型假設”環境使其自動編號并格式統一。\usepackage{amsthm} % 定理類環境支持 \newtheorem{assumption}{假設}[section] % 環境名{assumption}標題{假設}按節編號 ... \begin{document} \section{模型假設} \begin{assumption}\label{ass:1} 問題所涉及的數據是準確且完備的。 \end{assumption} \begin{assumption} 系統在短期內是穩定的不考慮突發性外部沖擊。 \end{assumption} \end{document}5.2 代碼高亮與清單展示你的程序如果附錄需要附上關鍵代碼如Python、MATLABlistings宏包可以漂亮地排版并高亮語法。\usepackage{listings} \usepackage{xcolor} \lstset{ languagePython, % 語言 basicstyle\ttfamily\small, % 基本字體 keywordstyle\color{blue}, % 關鍵字顏色 commentstyle\color{green!60!black}, % 注釋顏色 stringstyle\color{red}, % 字符串顏色 showstringspacesfalse, % 不顯示字符串中的空格 framesingle, % 邊框 rulecolor\color{gray}, % 邊框顏色 numbersleft, % 行號在左側 numberstyle\tiny\color{gray}, % 行號樣式 breaklinestrue, % 自動換行 captionposb % 標題在底部 } ... \begin{lstlisting}[caption{求解模型的Python代碼片段}, labelcode:solver] import numpy as np def solve_model(A, b): # 這是一個注釋使用最小二乘法求解 x np.linalg.lstsq(A, b, rcondNone)[0] return x \end{lstlisting}5.3 分文件編譯與團隊協作對于大型論文將不同章節放在不同子文件中是明智的。主文件main.tex結構如下\documentclass[UTF8]{ctexart} \usepackage{...} % 所有公共宏包 \begin{document} \include{title} % 標題頁單獨一個文件 title.tex \include{abstract} \include{problem_restatement} \include{model_assumption} ... % 其他章節 \include{reference} % 參考文獻部分 \include{appendix} % 附錄 \end{document}每個子文件如model_assumption.tex只需要包含該章節的具體內容不需要\documentclass和\begin{document}等。協作流程團隊使用Git等版本控制系統管理整個LaTeX項目目錄。每個隊員在自己的分支上編輯負責的子文件通過Pull Request合并。.gitignore文件應忽略所有中間生成文件如.aux,.log,.bbl,.blg,.out等只跟蹤源文件.tex,.bib,.sty, 圖片等。6. 常見問題與故障排查實錄即使流程清晰實操中仍會遇到各種報錯和奇怪現象。這里記錄一些典型問題的排查思路。6.1 編譯錯誤與警告“Undefined control sequence”最常見的錯誤意思是“未定義的命令”。原因拼寫錯誤或者未引入必要的宏包。排查檢查錯誤行附近的命令拼寫。如果命令正確如\includegraphics檢查文檔開頭是否添加了\usepackage{graphicx}。“Missing $ inserted”LaTeX提示你需要在數學模式中。原因在文本模式中使用了數學命令如下標_、上標^或者數學模式沒有正確閉合。排查找到錯誤行檢查是否把$Emc^2$寫成了Emc^2缺少美元符號或者公式中的花括號{}沒有配對。“LaTeX Warning: Float too large for page”浮動體圖表太大一頁放不下。原因圖片尺寸過大或者表格行數/列數過多。解決調整圖片的[width...]參數使其變小。對于大型表格考慮使用longtable宏包使其跨頁或者調整字體大小、列寬。參考文獻顯示為問號[?]原因沒有執行完整的編譯鏈XeLaTeX - BibTeX - XeLaTeX - XeLaTeX。解決在編輯器中選擇“構建并查看”或執行完整編譯流程。確保.bib文件中的citekey與文中\cite{}內的名稱完全一致區分大小寫。6.2 中文相關疑難雜癥中文標點全角在公式或代碼環境中顯示異常原因公式和代碼環境是“特殊區域”默認使用英文半角標點。解決在公式中的中文文本外使用\text{}命令。在listings環境中如果注釋是中文需要設置texcltrue選項并使用\lstset{escapeinside{}{}}允許在代碼片段中插入LaTeX命令來處理中文。字體警告或缺失原因ctex宏包默認會嘗試配置中文字體。如果系統缺少某些字體會發出警告但通常會回退到可用字體。解決警告一般不影響編譯和基本查看。如果對字體有嚴格要求可以在文檔前言區手動設置字體例如\setCJKmainfont{SimSun}設置宋體。6.3 性能與組織優化編譯速度慢原因文檔很長、圖片很多尤其是高分辨率位圖、使用了復雜的宏包如tikz繪制復雜圖形。優化將圖片轉換為PDF或EPS矢量格式或適當降低位圖分辨率。在調試階段可以使用\usepackage[draft]{graphicx}這樣圖片只會顯示一個邊框極大加快編譯速度定稿時再移除draft選項。使用\includeonly{}命令。例如在主文件中寫\includeonly{model_building, results}則只編譯這兩個章節適合集中精力修改某一部分。文件組織混亂建議目錄結構/your_project ├── main.tex # 主文件 ├── refs.bib # 參考文獻數據庫 ├── /chapters # 章節子文件目錄 │ ├── 01_abstract.tex │ ├── 02_model.tex │ └── ... ├── /figures # 圖片目錄 │ ├── fig1.pdf │ ├── fig2.png │ └── ... ├── /code # 代碼文件目錄如需 └── /style # 自定義樣式文件目錄可選 └── mycfg.sty在main.tex中可以用\graphicspath{{figures/}}命令設置圖片搜索路徑這樣\includegraphics就可以直接用文件名{fig1}而不需要寫{figures/fig1}。回顧整個從零到精通的過程LaTeX對于數模競賽的價值遠不止于“排版好看”。它強制你進行結構化的思考將內容與格式分離讓你和你的團隊能更專注于模型、算法和寫作本身。那份在最后時刻從容點擊“編譯”、生成一份完美PDF的自信和踏實感是Word永遠無法給予的。開始可能會覺得語法有些門檻但一旦跨過最初的適應期你就會發現它帶來的效率提升和心力節省是巨大的。這份筆記的目的就是幫你盡可能平滑地跨過那個門檻把LaTeX變成你在數模賽場上最得力的助手而不是負擔。