5writing
All-time installs
1,488
数学建模竞赛论文撰写阶段,支持 Typst 和 LaTeX 双引擎。根据 ANALYSIS_MODELING_REPORT.md、RESULTS_REPORT.md 和 figures/*.pdf 选择比赛模板、排版引擎、组织章节,并在论文正文中按章节直接插入图表。
Other options
Summary
数学建模竞赛论文撰写阶段,支持 Typst 和 LaTeX 双引擎。根据 ANALYSIS_MODELING_REPORT.md、RESULTS_REPORT.md 和 figures/*.pdf 选择比赛模板、排版引擎、组织章节,并在论文正文中按章节直接插入图表。
Raw SKILL.md
12.4K bytes---
name: 5writing
description: "数学建模竞赛论文撰写阶段,支持 Typst 和 LaTeX 双引擎。根据 ANALYSIS_MODELING_REPORT.md、RESULTS_REPORT.md 和 figures/*.pdf 选择比赛模板、排版引擎、组织章节,并在论文正文中按章节直接插入图表。"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch
---
# 竞赛论文撰写(Typst / LaTeX)
本 skill 承接 `3coding-visual` 和 `4drawio`。前序阶段只提供真实数据、图表 PDF 和记录文件;本阶段负责选择比赛模板和排版引擎、组织论文结构,并决定每张图表放入哪个章节。
**Typst 引擎**下可调用 typst-author skill 学习 typst 写法;**LaTeX 引擎**参考本文件末尾的"LaTeX 写作要点"小节。
## 数学建模规范参考
如需领域判断,读取 `../_references/math_modeling_norms.md` 中的“论文写作”“图表与可视化”和“非数据图工具选择”小节。该文件只作为规范知识库,论文结构仍按比赛模板和当前赛题内容决定。
## 模板族
本技能内捆绑的模板位于:
```text
templates/zh/<竞赛>/main.typ # Typst 模板
templates/zh/<竞赛>-latex/main.tex # LaTeX 模板
templates/en/<竞赛>/main.typ # Typst 模板
templates/en/<竞赛>-latex/main.tex # LaTeX 模板
```
**LaTeX 模板覆盖范围**:所有中文模板和英文模板均已提供 LaTeX 版本(`-latex` 后缀),使用 xelatex 编译。
支持的中文模板(Typst + LaTeX 双版本):
```text
apmcm, changsanjiao, cumcm, default, diangongbei, dongsansheng,
huashubei, huaweibei, huazhongbei, mathorcup, mcm, shuweibei, stats, wuyibei
```
华为杯、华中杯、五一杯统一使用 `huaweibei`、`huazhongbei`、`wuyibei` 作为模板。
支持的英文模板(Typst + LaTeX 双版本):
```text
apmcm, default, mcm
```
论文中的所有数值图表结论必须来自 `reports/RESULTS_REPORT.md` 或 `figures/*`。不得编造、估算或使用不同的四舍五入方式。
## 工作流
### 步骤 0:确定排版引擎
**撰写论文前必须让用户选择排版引擎。** 引擎决定后续所有步骤(模板路径、章节文件扩展名、图片插入语法、编译命令),选错会导致整篇论文格式错误。
使用 AskUserQuestion 工具向用户询问:"撰写论文使用哪种排版引擎?"
- 选项 1:LaTeX(xelatex 编译,数学建模竞赛主流,模板已全部就绪)— 推荐选项放第一位
- 选项 2:Typst(typst 编译,调用 typst-author skill 辅助写作)
询问前先读取 `plan.md` 的"用户偏好 → 排版引擎"字段作为预选项:
- 若 plan.md 已记录引擎选择,向用户确认:"检测到之前选择的引擎是 <LaTeX/Typst>,是否沿用?"
- 若 plan.md 不存在或未记录引擎选择,直接询问用户选择。
- 若用户未明确指定或跳过,**默认使用 LaTeX**。
根据确定的引擎选择对应模板族:
- **Typst 引擎**:使用 `templates/<lang>/<竞赛>/main.typ`,调用 typst-author skill。编译命令 `typst compile main.typ`。
- **LaTeX 引擎**:使用 `templates/<lang>/<竞赛>-latex/main.tex`,xelatex 编译(中文和英文均需跑两遍解决交叉引用)。编译命令 `xelatex -interaction=nonstopmode main.tex`(执行两次)。
**后续步骤中的所有代码示例、文件扩展名、图片插入语法都必须按所选引擎选择对应版本,不要混用。**
### 步骤 1:选择语言和模板
除非用户明确要求中文,否则 MCM/ICM/COMAP 一律使用英文。所有中文竞赛名称使用中文。
模板键示例(Typst 引擎):
```text
长三角 -> zh/changsanjiao
APMCM 英文版 -> en/apmcm
全国赛/国赛/CUMCM -> zh/cumcm
统计建模 -> zh/stats
MCM/ICM/COMAP -> en/mcm
```
模板键示例(LaTeX 引擎):
```text
全国赛/国赛/CUMCM -> zh/cumcm-latex
MCM/ICM/COMAP -> en/mcm-latex
```
### 步骤 2:准备模板
用以下命令检查捆绑模板是否可访问(`SKILL_DIR` 为本 skill 所在目录):
**Typst 模板**:
```bash
ls "$SKILL_DIR/templates/zh/<竞赛>/main.typ" 2>/dev/null && echo "OK" || echo "MISSING"
```
- **文件存在(OK)**:直接将 `templates/zh/<竞赛>/` 整目录复制到 `paper/`。这些模板是自包含入口文件,不依赖额外共享样式文件。
- **文件不存在(MISSING)**:说明 skill 未完整安装或在沙箱中,此时依照本 SKILL.md 步骤 3 列出的对应节文件结构,从零重建最小可编译 Typst 框架,并在 `paper/` 内注明"重建自 default 结构"。
存在匹配模板时,绝不从零开始写论文。
**LaTeX 模板**:
```bash
ls "$SKILL_DIR/templates/zh/<竞赛>-latex/main.tex" 2>/dev/null && echo "OK" || echo "MISSING"
```
- **文件存在(OK)**:将 `templates/zh/<竞赛>-latex/` 整目录复制到 `paper/`。
- **文件不存在(MISSING)**:说明 skill 未完整安装或在沙箱中,此时依照本 SKILL.md 步骤 3 列出的对应节文件结构,从零重建最小可编译 LaTeX 框架,并在 `paper/` 内注明"重建自 default-latex 结构"。
### 步骤 3:构建图表规划
在写正文各节之前,根据 `figures/*.pdf`、`reports/RESULTS_REPORT.md`,以及 `reports/DRAWIO_REPORT.md`(如果存在)构建图表规划:
```text
图表规划
fig_roadmap.pdf -> 引言/问题重述
fig_flow_q1.pdf -> 问题一模型构建
fig_flow_q2.pdf -> 问题二模型构建
fig_pipeline.pdf -> 数据预处理/方法节
结果图 -> 对应的结果节
```
图片路径相对于写入该图片的文件:写在 `paper/main.typ` 或 `paper/main.tex` 中通常用 `../figures/xxx.pdf`,写在 `paper/sections/*.typ` 或 `paper/sections/*.tex` 中通常用 `../../figures/xxx.pdf`。
**Typst 引擎**图片插入:
```typst
#figure(
image("../../figures/fig_q1_error_dist.pdf", width: 85%),
caption: [问题一预测误差分布],
)
```
**LaTeX 引擎**图片插入:
```latex
\begin{figure}[H]
\centering
\includegraphics[width=0.85\textwidth]{../../figures/fig_q1_error_dist.pdf}
\caption{问题一预测误差分布}
\label{fig:q1_error}
\end{figure}
```
英文论文使用英文图注。
### 步骤 4:撰写各节
**以下章节文件名按所选引擎使用 `.typ`(Typst)或 `.tex`(LaTeX)扩展名。** 例如 Typst 引擎用 `1_restatement.typ`,LaTeX 引擎用 `1_restatement.tex`。文件名主体保持一致。
中文数学建模通用模板各节文件(`changsanjiao`、`diangongbei`、`huashubei`、`mathorcup`、`wuyibei`):
```text
1_restatement.typ - 问题重述与分析
2_analysis.typ - 数据理解与总体思路
3_assumptions.typ - 模型假设
4_symbols.typ - 符号说明
5_problem1.typ - 问题一建模与求解
6_problem2.typ - 问题二建模与求解
7_problem3.typ - 问题三建模与求解
... - 根据题目调整问题数量
8_evaluation.typ - 灵敏度分析、模型评价与推广
A_code.typ - 附录代码
```
国赛/华中杯/华为杯(`cumcm`、`huazhongbei`、`huaweibei`)按以下章节结构:
```text
1_restatement.typ
2_analysis.typ
3_assumptions.typ
4_symbols.typ
5_problem1.typ
6_problem2.typ
7_problem3.typ
... - 根据题目调整问题数量
8_sensitivity.typ
9_evaluation.typ
A_code.typ
```
东三省模板(`dongsansheng`)额外使用单独摘要文件:
```text
abstract.typ
1_restatement.typ
2_analysis.typ
3_assumptions.typ
4_symbols.typ
5_problem1.typ
6_problem2.typ
7_problem3.typ
... - 根据题目调整问题数量
8_evaluation.typ
A_code.typ
```
数维杯模板(`shuweibei`)保留原 LaTeX 的示例入口命名:
```text
Abstract.typ
Introduction.typ
2_analysis.typ
3_assumptions.typ
4_symbols.typ
5_problem1.typ
6_problem2.typ
7_problem3.typ
... - 根据题目调整问题数量
8_evaluation.typ
Appendices1.typ
A_code.typ
```
中文默认模板(`default`):
```text
1_restatement.typ
2_assumptions.typ
3_symbols.typ
4_problem1.typ
5_problem2.typ
6_problem3.typ
... - 根据题目调整问题数量
7_sensitivity.typ
8_evaluation.typ
A_code.typ
```
中文统计建模各节文件:
```text
1_introduction.typ
2_method.typ
3_data.typ
4_analysis.typ
5_results.typ
6_conclusion.typ
A_code.typ
```
英文 MCM/APMCM 各节文件(`en/mcm`、`en/apmcm`、`zh/mcm`、`zh/apmcm`):
```text
1_introduction.typ
2_assumptions.typ
3_model_design.typ
4_solution.typ
5_sensitivity.typ
6_strengths_weaknesses.typ
7_conclusions.typ
A_code.typ
```
**LaTeX 模板章节文件**(对应 `-latex` 后缀模板,结构与 Typst 版本一一对应):
国赛 LaTeX 模板(`zh/cumcm-latex`,对应 `cumcm` Typst 版本):
```text
1_restatement.tex
2_analysis.tex
3_assumptions.tex
4_symbols.tex
5_problem1.tex
6_problem2.tex
7_problem3.tex
8_sensitivity.tex
9_evaluation.tex
A_code.tex
```
MCM/ICM LaTeX 模板(`en/mcm-latex`):
```text
1_introduction.tex
2_assumptions.tex
3_model_design.tex
4_solution.tex
5_sensitivity.tex
6_strengths_weaknesses.tex
7_conclusions.tex
A_code.tex
```
其余 LaTeX 模板(`changsanjiao-latex`、`default-latex`、`huashubei-latex`、`mathorcup-latex`、`wuyibei-latex`、`huazhongbei-latex`、`huaweibei-latex`、`diangongbei-latex`、`dongsansheng-latex`、`shuweibei-latex`、`stats-latex`、`apmcm-latex`、`mcm-latex`、`en/apmcm-latex`、`en/default-latex`)的章节文件命名与上述结构类似,以 `main.tex` 中 `\input{}` 引用的文件名为准。
英文默认模板(`en/default`):
```text
1_introduction.typ
2_assumptions.typ
3_notations.typ
4_model.typ
5_sensitivity.typ
6_evaluation.typ
7_conclusions.typ
A_code.typ
```
**正文写作应使用连贯的学术段落。避免在最终论文中出现工作流内部名称,如 `reports/`、`figures/` 或 `CLAUDE.md`。**
### 步骤 5:参考文献
只使用真实存在的参考文献。文件名按引擎选择:Typst 用 `paper/references.typ`,LaTeX 用 `paper/references.tex`。
**Typst 引擎**:
```typst
#set enum(numbering: "[1]")
#enum[
作者. 题名[J]. 期刊名, 年份, 卷(期): 页码.
Author. "Title." Journal or Conference, year.
]
```
正文上标引用:`相关研究已用于物流网络优化#super("[1]")。`
**LaTeX 引擎**:
```latex
\begin{thebibliography}{99}
\bibitem{ref1} 作者. 题名[J]. 期刊名, 年份, 卷(期): 页码.
\bibitem{ref2} Author. "Title." Journal, year.
\end{thebibliography}
```
正文引用用 `\cite{ref1}` 或 `\cite{ref1,ref2}`。
### 步骤 6:最后撰写摘要或总结
在所有章节完成后撰写中文摘要或英文 Summary Sheet。必须包含每个子问题的方法和精确的数值结果。
## LaTeX 写作要点
以下要点供 **LaTeX 引擎**使用。Typst 引擎请调用 typst-author skill 获取语法帮助。
### 编译命令
```bash
# 中文模板(xelatex,跑两遍解决交叉引用)
xelatex main.tex && xelatex main.tex
# 英文模板(xelatex,同样跑两遍)
xelatex main.tex && xelatex main.tex
```
### 文档结构
```latex
\documentclass[a4paper,12pt]{article} % 英文
\documentclass[a4paper,12pt]{ctexart} % 中文
\usepackage{...} % 宏包加载
\usepackage{graphicx} % 图片支持
\usepackage{booktabs} % 三线表
\usepackage{amsmath,amssymb} % 数学公式
\usepackage{hyperref} % 交叉引用(需两遍编译)
```
### 图表插入
```latex
\begin{figure}[H]
\centering
\includegraphics[width=0.85\textwidth]{../../figures/fig_q1.pdf}
\caption{图注}
\label{fig:q1}
\end{figure}
% 三线表
\begin{table}[htbp]
\centering
\caption{表注}
\begin{tabular}{ccc}
\toprule
\textbf{列1} & \textbf{列2} & \textbf{列3} \\
\midrule
数据 & 数据 & 数据 \\
\bottomrule
\end{tabular}
\end{table}
```
### 交叉引用
```latex
如图~\ref{fig:q1}所示,... % 图片引用
式~(\ref{eq:objective}) 给出... % 公式引用
见第~\pageref{fig:q1} 页 % 页码引用
```
### 数学公式
```latex
行内公式:$f(x) = \sum_{i=1}^n \theta_i \phi_i(x)$
行间公式:
\begin{equation}
\mathcal{L}(\theta) = \frac{1}{N}\sum_{i=1}^N (y_i - \hat{y}_i)^2
\label{eq:objective}
\end{equation}
```
### 章节和强调
```latex
\section{问题重述}
\subsection{问题背景}
\textbf{问题一:} xxx % 对应 Typst 的 #strong
```
Security audits
SnykPASS
SocketWARN
Gen Agent Trust HubPASS

