引言:为什么需要系统化的工作流
在数学建模竞赛、课程论文、毕业设计等场景中,LaTeX 排版已成为学术写作的标准选择。然而,LaTeX 的学习曲线陡峭,从环境配置到语法调试往往消耗大量时间。
现代 IDE(如 VS Code + 插件、Trae、Cursor 等)集成了 AI 智能助手,可以大幅降低 LaTeX 的使用门槛。但”会用 AI”和”用好 AI”之间存在显著差异:无序的提问会导致反复修改、格式混乱甚至编译失败;而建立系统化的工作流,则可以让 AI 成为高效的协作者而非简单的”代码生成器”。
本文档基于一个真实的数学建模竞赛项目(煤矿巷道锚杆支护问题)的完整开发过程,提炼出一套可复制的 AI 辅助 LaTeX 写作方法论。该项目最终产出了:
- 主论文(完整 LaTeX 排版)
- 问题 3/4 独立报告
- 12 幅矢量图(Python matplotlib → PDF/SVG)
- 配套数据文件与求解代码
第一阶段:环境准备——一次配置,长期受益
必要组件
| 组件 | 推荐选择 | 用途 |
|---|---|---|
| TeX 发行版 | MiKTeX / TeX Live | 编译引擎(含 XeLaTeX) |
| 编辑器 / IDE | Trae / VS Code + LaTeX Workshop | 代码编写 + 实时预览 |
| Python | Anaconda / 官方 Python 3.10+ | 数据处理 + 绘图生成 PDF |
| 字体 | SimSun / SimHei / Times New Roman | 中文显示与学术排版 |
验证安装
打开终端,依次执行以下命令确认各组件就绪:
# 检查 XeLaTeX 编译器
xelatex --version
# 检查 Python 与关键库
python --version
pip show numpy scipy matplotlib
关键提示:首次运行 XeLaTeX 时,MiKTeX 会自动下载缺失的宏包。请保持网络畅通,并允许自动安装。这一步只需忍受一次,后续所有编译都会非常快。
第二阶段:建立标准模板——让 AI 有章可循
模板的重要性
AI 生成 LaTeX 的质量高度依赖于你提供的上下文。如果你只说”帮我写一篇论文”,AI 会输出一个通用的、可能不符合你需求的模板。但如果你提供一个结构化的模板框架,AI 就能在正确的骨架上填充内容。
以下是本项目使用的标准模板前缀:
\documentclass[12pt,a4paper]{article}
% 中文支持
\usepackage[UTF8]{ctex}
% 数学公式
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{mattools}
% 图表与排版
\usepackage{graphicx}
\usepackage{booktabs} % 三线表
\usepackage{tabularx} % 自适应宽度表格
\usepackage{longtable} % 跨页长表
\usepackage{tikz} % 绘图
\usepackage{tcolorbox} % 彩色文本框
% 页面设置
\usepackage{geometry}
\geometry{left=2cm,right=2cm,top=2.5cm,bottom=2.5cm}
% 行距与缩进
\setlength{\parindent}{2em}
\linespread{1.25}
% 超链接
\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=blue!70!black}
\begin{document}
% === 正文从这里开始 ===
\end{document}
建议将上述 preamble 保存为一个独立文件(如 template_preamble.tex),每次新开文档时直接引用。这样全局样式一致、减少沟通成本、修改一处即可全局生效。
第三阶段:与 AI 协作的核心策略
这是本文档的核心部分。以下策略均来自实战经验总结。
策略一:分块生成,逐节推进
- 错误做法:一次性要求 AI 生成整篇 30 页论文。
- 正确做法:按章节/问题拆分任务,每次聚焦一个模块。
按逻辑顺序分块推进:封面+摘要 → 问题1内容 → 问题2内容 → 问题3-4 → 参考文献 → 附录。
理由很简单:
- 单次生成的 token 有限制,长文档会被截断或丢失细节
- 分块便于逐段校对,发现问题时只需重写该块
- 可以针对不同章节使用不同的提示词侧重点
策略二:提供充分的上下文信息
AI 无法读心术。你需要主动提供:
| 信息类型 | 示例 |
|---|---|
| 论文主题与背景 | ”这是一篇关于锚杆预紧力矩建模的数学建模论文” |
| 目标读者与风格 | ”学术论文风格,使用’本文”本研究’等正式表述” |
| 已有数据/公式 | ”扭矩系数 K 通过最小二乘法回归得到,公式为 T = K P d” |
| 图表清单 | ”需要插入图1(变量关系图)和表3(工况参数对比)“ |
| 格式约束 | ”使用三线表(booktabs),图片宽度为 90% 文本宽” |
| 编译引擎 | ”使用 XeLaTeX 编译,支持中文 ctex 宏包” |
策略三:先出大纲,再填充细节
推荐的两阶段对话模式:
阶段 A — 大纲确认(不写任何 LaTeX 代码):
“我需要写一篇关于 XXX 的论文,包含以下内容……请先给出详细的大纲,包括每节的标题和要点。”
阶段 B — 逐节生成(基于确认后的大纲):
“好的大纲,现在请帮我写第一章绪论的完整 LaTeX 代码,包括背景介绍和研究现状两个小节。”
这样做的好处是避免写到一半发现结构不合理而推倒重来。
策略四:图文分离,各自最优
本项目采用的工作流是图形由 Python 生成,LaTeX 只负责引用:
Python (matplotlib/seaborn) → PDF/SVG 矢量图 → \includegraphics → 编译 → 最终 PDF
为什么不用 LaTeX 直接画图?
- PGF/TikZ 适合画示意图(流程图、架构图),但画数据可视化图效率远不如 matplotlib
- Python 绘图可以复用数据处理管道,确保图与数的一致性
- PDF 格式的矢量图嵌入 LaTeX 后在任何缩放比例下都清晰
Python 绘图并导出 PDF 的标准模式:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimSun', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
fig, ax = plt.subplots(figsize=(10, 6.5))
# ===== 绘图逻辑 =====
ax.plot(x_data, y_data, 'o-', linewidth=1.5)
ax.set_xlabel('预紧力矩 $T$ (N$\cdot$m)')
ax.set_ylabel('预紧力 $P$ (kN)')
ax.set_title('图X: xxx关系曲线')
ax.grid(True, alpha=0.3)
# ===== 导出为矢量 PDF =====
plt.savefig('output/图X_xxx.pdf', format='pdf', bbox_inches='tight', dpi=300)
plt.savefig('output/图X_xxx.svg', format='svg', bbox_inches='tight')
plt.close()
第四阶段:高效 Prompt 模板库
以下是经过实战检验的 prompt 模板,可直接套用或微调。
Prompt 模板 A:生成特定章节
请为我的 LaTeX 论文写 [章节名称] 部分。
- 背景:[一句话说明研究主题]
- 本节要点:[列出 3–5 个要覆盖的关键点]
- 包含元素:[公式编号、表格引用、图注位置等要求]
- 格式要求:中文撰写,学术正式语气,使用 booktabs 三线表,公式使用 equation 环境,图使用 figure+includegraphics
Prompt 模板 B:生成三线表
请用 LaTeX 的 booktabs 宏包生成如下表格:
- 表标题:[标题文字]
- 列定义:[列名及数量,是否需要自适应宽度 tabularx]
- 数据行:[直接贴入数据,或描述数据特征让 AI 填充]
- 特殊需求:[是否需要合并单元格 multirow、跨页 longtable 等]
Prompt 模板 C:生成带推导的公式组
请在 LaTeX 中实现以下公式的推导与排版:
- 起始条件:[已知的基本方程或物理定律]
- 推导步骤:[逐步变换过程,每步一行 equation]
- 最终形式:[目标公式的样子]
- 附加要求:[是否需要对关键项做文字解释、是否需要编号交叉引用]
Prompt 模板 D:报错修复
我的 LaTeX 文件编译报错,请帮我定位原因并修复:
- 编译命令:xelatex -interaction=nonstopmode file.tex
- 报错信息:[粘贴完整的 error 日志片段,特别是带 ! 的行]
- 相关代码:[粘贴报错位置附近的源码(前后各 5–10 行)]
- 尝试过的方案:[如果有的话,避免 AI 重复建议]
常见错误速查
| 错误信息 | 常见原因与解决方法 |
|---|---|
Missing $ inserted | 数学符号未放入数学模式,加 $...$ 或 equation 环境 |
Undefined control sequence | 使用了未加载的宏包命令,检查 \usepackage 是否齐全 |
Overfull \hbox | 表格超出页面宽度,改用 tabularx 或缩小字号 (\small) |
| 大括号不匹配 | 用编辑器的括号匹配功能检查 {} 配对 |
| 中文显示为方框 | 未加载 ctex 宏包或字体缺失,确认 \usepackage[UTF8]{ctex} 存在 |
第五阶段:编译与迭代工作流
标准编译流程
编辑 .tex → XeLaTeX 编译 → 检查日志 → 查看 PDF → 有错误?
↓ 是 ↓
修正源码 → 再次编译
↓ 否 ↓
完成 ✓
一键编译脚本
为了避免每次手动输入编译命令,建议创建批处理脚本 compile.bat:
@echo off
chcp 65001 >nul
set TEXFILE=%~n1
echo ========================================
echo 编译 %TEXFILE%.tex ...
echo ========================================
:: 第一遍:生成目录和交叉引用
xelatex -interaction=nonstopmode "%TEXFILE%.tex"
:: 第二遍:解析所有引用
xelatex -interaction=nonstopmode "%TEXFILE%.tex"
echo.
echo ========================================
echo 编译完成!输出文件:%TEXFILE%.pdf
echo ========================================
:: 自动打开 PDF
start "" "%TEXFILE%.pdf"
使用方式:将 .bat 文件拖到 .tex 文件上即可一键编译并打开 PDF。
推荐的迭代节奏
| 频率 | 操作 | 目的 |
|---|---|---|
| 每写完一个小节 | 编译一次 | 及时发现格式问题 |
| 每完成一个大章 | 通读 PDF 全文 | 检查逻辑连贯性和图表质量 |
| 定稿前 | 连续编译两遍 | 确保所有交叉引用和目录正确 |
| 提交前 | 更换电脑/干净环境测试 | 确保无本地路径依赖 |
第六阶段:项目管理最佳实践
推荐目录结构
项目根目录/
├── 论文终稿.tex % 主论文 LaTeX 源文件
├── 论文终稿.pdf % 编译产物
├── compile.bat % 一键编译脚本
│
├── 问题1_2/ % 问题 1&2 相关素材
│ ├── 图1_xxx.pdf % Python 生成的矢量图
│ ├── 图1_xxx.svg % SVG 备份(可编辑)
│ └── ...
│
├── 问题3_4_偏心受力与围岩分类/
│ ├── 问题3_4_完整报告.tex
│ ├── 代码/
│ │ ├── problem_3_4_solver.py
│ │ └── transformer_solver.py
│ ├── 图表/
│ └── 数据/
│
└── 暂存/ % 草稿和临时文件
版本控制习惯
即使不使用 Git,也应遵循以下简单规则:
- 保留历史版本:每次大改动前复制一份
.tex为.tex.bak或加日期后缀 - 图文件命名规范化:
图序号_简短描述.pdf,如图3_扭矩系数对比柱状图.pdf - 路径不要硬编码:LaTeX 中使用相对路径,不要用绝对路径
- 清理编译副产品:提交前删除
.aux、.log、.toc、.out等临时文件
常见陷阱与规避方法
| 陷阱 | 症状 | 规避方法 |
|---|---|---|
| AI 产生幻觉公式 | 编造了不存在的定理或错误的推导链 | 要求 AI 明确标注每个公式的来源/依据 |
| 表格溢出页面 | Overfull hbox 警告,内容被截断 | 使用 tabularx 替代 tabular,或缩小字体 |
| 编码混乱 | 中文乱码、特殊字符丢失 | 统一 UTF-8 编码,XeLaTeX + ctex |
| 图片路径错误 | 编译成功但图片显示为空白框 | 使用相对路径,编译前确认文件存在 |
| 交叉引用失效 | ”??” 显示代替编号 | 编译至少两遍;检查 label/ref 配对 |
| 宏包冲突 | 两个宏包重定义同一命令 | 逐一排查最近添加的 usepackage |
总结:核心原则清单
与 AI 协作写 LaTeX 的六大原则:
- 模板先行:准备好固定的 preamble 和文档结构,减少重复沟通成本
- 分块生成:每次只让 AI 写一个章节或一个组件,控制粒度
- 上下文充分:主动提供背景、数据和格式要求,不要假设 AI 能猜到
- 图文分离:Python 负责画图,LaTeX 负责排版,各司其职
- 频繁编译:每完成一块就编译一次,小问题及时修,别攒到最后
- 精确反馈:修改时描述具体位置和期望效果
一句话总结:AI 是你的 LaTeX 加速器,不是替代品。你负责结构和决策,AI 负责语法和排版。 建立好工作流之后,一篇 20+ 页的论文可以在数小时内从零到定稿。