它不是一个自动写论文的AI Skill,而是一张科学写作工具地图。本文将从零带你完成文献管理、公式与图表引用、论文编写、多格式导出和版本管理。
写在前面
科研写作看起来是在"写文字",真正做起来却远不只是打开Word或者LaTeX输入内容。
一篇完整论文往往同时包含:
- 正文;
- 数学公式;
- 参考文献;
- 实验数据;
- 统计结果;
- 科研图表;
- 算法伪代码;
- 补充材料;
- 期刊格式;
- 合作者修改;
- 投稿版本;
- 返修版本。
如果这些内容分别保存在不同软件中,论文很容易出现一系列问题:
- 数据已经更新,正文中的数值却没有同步;
- 图表重新生成后,图号和正文引用错位;
- Zotero、EndNote和BibTeX中的文献字段不一致;
- 投稿时需要PDF,合作者却只接受Word;
- 更换期刊后,需要重新调整所有引用格式;
- 文件夹里出现"最终版""最终版2""绝对最终版"等大量副本;
- 不知道某一段文字是谁在什么时候修改的;
- 论文中的实验结果无法追溯到原始数据和代码。
因此,现代科研写作真正需要解决的问题,并不是"选择哪个文字处理软件",而是:
如何让文字、文献、代码、数据、图表和最终文档组成一条可以重复执行、可以检查、可以追溯的工作流?
GitHub项目awesome-scientific-writing正是理解这类工作流的一个好入口。
项目地址:
writing-resources/awesome-scientific-writing
一、先纠正一个常见误解:它不是Agent Skill
看到"Scientific Writing"这个名字,很多人会以为它是一个可以安装到Codex、Claude Code或其他AI智能体中的科研写作技能。
事实上并不是。
awesome-scientific-writing是一个"Awesome List",也就是经过整理的工具和资源清单。它没有SKILL.md,没有统一执行程序,也没有规定一个AI智能体应该怎样自动撰写论文。
它收录的是一组科学写作相关资源,包括:
- Markdown编辑器;
- 文献管理软件;
- BibTeX工具;
- 科研插图工具;
- 文档转换工具;
- 文本检查工具;
- 论文模板;
- 科研写作教程;
- 其他相关资源合集。
项目的核心理念是:
科学写作不必完全局限于传统LaTeX,还可以使用Markdown、reStructuredText、Jupyter Notebook等格式,并通过Pandoc、Quarto等工具生成不同类型的最终文档。
1. Awesome List和Agent Skill有什么区别?
| 对比项 | Awesome List | Agent Skill |
|---|---|---|
| 核心内容 | 工具、项目和教程链接 | AI执行规则和标准工作流 |
| 能否自动运行 | 不能 | 通常可以 |
是否需要SKILL.md |
不需要 | 通常需要 |
| 是否具有固定输入输出 | 没有 | 通常有 |
| 是否可以直接生成论文 | 不能 | 可在限定范围内协助 |
| 主要价值 | 帮助用户发现和选择工具 | 帮助AI稳定执行特定任务 |
| 使用方式 | 阅读、筛选、组合 | 安装后由智能体调用 |
因此,下面这种理解是错误的:
text
克隆awesome-scientific-writing
↓
安装完成
↓
AI自动帮助我写论文
正确理解应该是:
text
浏览awesome-scientific-writing
↓
认识不同科研写作工具
↓
根据自己的研究场景选择工具
↓
组合成个人科研写作工作流
2. 克隆仓库不等于安装工具
你当然可以把项目下载到本地:
bash
git clone https://github.com/writing-resources/awesome-scientific-writing.git
但这条命令只是把README和项目配置文件下载到本地,并不会自动安装Zotero、Quarto、Pandoc或其他软件。
如果你只是想浏览资源,直接打开GitHub网页就足够了。
二、这个项目到底收录了什么?
截至2026年7月21日,项目主要将资源分为八类。
1. Word Processors:写作与编辑环境
这一部分收录了用于撰写纯文本、Markdown、R Markdown和其他科研文档的编辑器,包括:
- MarkText;
- RStudio;
- bookdown;
- R Markdown;
- Vim;
- VS Code;
- Zettlr。
它们的主要区别并不是"哪个看起来更漂亮",而是:
- 是否支持Markdown;
- 是否支持文献引用;
- 是否支持图表和章节交叉引用;
- 是否支持执行Python或R代码;
- 是否适合Git版本管理;
- 是否适合非技术用户;
- 是否能够预览和导出最终文档。
2. Bibliography:文献管理
这一部分包括:
- Citation Style Language;
- JabRef;
- Zotero;
- Better BibTeX for Zotero;
- ZoteroBib。
需要区分四个概念:
文献管理器
例如Zotero和JabRef,用于存储作者、题名、期刊、年份、DOI和PDF等资料。
文献数据库文件
例如:
.bib.bibtex.ris.enw
这些是保存文献元数据的文件格式。
引用键
例如:
text
settles2009active
正文通过引用键指向文献数据库中的某一条记录。
引用样式
例如APA、IEEE、Vancouver或某个期刊的参考文献样式。CSL文件负责描述引用最终应当怎样显示。
3. Illustrations:科研插图
项目收录了:
- diagrams.net;
- Graphviz;
- Mermaid;
- Vega-Lite;
- PlantUML。
这些工具可以分成两类。
图形界面工具
例如diagrams.net,通过拖拽元素制作图形。
声明式工具
例如Mermaid、Graphviz和PlantUML。用户不直接拖拽每个元素,而是通过文本描述图形结构。
例如:
#mermaid-svg-tHsrRgnospPxxbwn{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-tHsrRgnospPxxbwn .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-tHsrRgnospPxxbwn .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-tHsrRgnospPxxbwn .error-icon{fill:#552222;}#mermaid-svg-tHsrRgnospPxxbwn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-tHsrRgnospPxxbwn .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-tHsrRgnospPxxbwn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-tHsrRgnospPxxbwn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-tHsrRgnospPxxbwn .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-tHsrRgnospPxxbwn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-tHsrRgnospPxxbwn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-tHsrRgnospPxxbwn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-tHsrRgnospPxxbwn .marker.cross{stroke:#333333;}#mermaid-svg-tHsrRgnospPxxbwn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-tHsrRgnospPxxbwn p{margin:0;}#mermaid-svg-tHsrRgnospPxxbwn .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-tHsrRgnospPxxbwn .cluster-label text{fill:#333;}#mermaid-svg-tHsrRgnospPxxbwn .cluster-label span{color:#333;}#mermaid-svg-tHsrRgnospPxxbwn .cluster-label span p{background-color:transparent;}#mermaid-svg-tHsrRgnospPxxbwn .label text,#mermaid-svg-tHsrRgnospPxxbwn span{fill:#333;color:#333;}#mermaid-svg-tHsrRgnospPxxbwn .node rect,#mermaid-svg-tHsrRgnospPxxbwn .node circle,#mermaid-svg-tHsrRgnospPxxbwn .node ellipse,#mermaid-svg-tHsrRgnospPxxbwn .node polygon,#mermaid-svg-tHsrRgnospPxxbwn .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-tHsrRgnospPxxbwn .rough-node .label text,#mermaid-svg-tHsrRgnospPxxbwn .node .label text,#mermaid-svg-tHsrRgnospPxxbwn .image-shape .label,#mermaid-svg-tHsrRgnospPxxbwn .icon-shape .label{text-anchor:middle;}#mermaid-svg-tHsrRgnospPxxbwn .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-tHsrRgnospPxxbwn .rough-node .label,#mermaid-svg-tHsrRgnospPxxbwn .node .label,#mermaid-svg-tHsrRgnospPxxbwn .image-shape .label,#mermaid-svg-tHsrRgnospPxxbwn .icon-shape .label{text-align:center;}#mermaid-svg-tHsrRgnospPxxbwn .node.clickable{cursor:pointer;}#mermaid-svg-tHsrRgnospPxxbwn .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-tHsrRgnospPxxbwn .arrowheadPath{fill:#333333;}#mermaid-svg-tHsrRgnospPxxbwn .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-tHsrRgnospPxxbwn .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-tHsrRgnospPxxbwn .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tHsrRgnospPxxbwn .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-tHsrRgnospPxxbwn .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tHsrRgnospPxxbwn .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-tHsrRgnospPxxbwn .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-tHsrRgnospPxxbwn .cluster text{fill:#333;}#mermaid-svg-tHsrRgnospPxxbwn .cluster span{color:#333;}#mermaid-svg-tHsrRgnospPxxbwn div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-tHsrRgnospPxxbwn .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-tHsrRgnospPxxbwn rect.text{fill:none;stroke-width:0;}#mermaid-svg-tHsrRgnospPxxbwn .icon-shape,#mermaid-svg-tHsrRgnospPxxbwn .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-tHsrRgnospPxxbwn .icon-shape p,#mermaid-svg-tHsrRgnospPxxbwn .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-tHsrRgnospPxxbwn .icon-shape .label rect,#mermaid-svg-tHsrRgnospPxxbwn .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-tHsrRgnospPxxbwn .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-tHsrRgnospPxxbwn .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-tHsrRgnospPxxbwn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 未标记数据
查询策略
选择样本或特征
获得新信息
更新模型
声明式图形的优势是:
- 源文件是纯文本;
- 适合Git管理;
- 修改结构比较容易;
- 可以重复生成;
- 更容易与论文源文件放在一起。
4. Converters and Filters:格式转换
这一部分包括:
- Pandoc;
- Quarto;
- Jupyter Book;
- MyST;
- nbconvert;
- docutils;
- Panflute;
- Pandoc Filters。
其中最重要的两个工具是Pandoc和Quarto。
Pandoc
Pandoc是通用文档转换工具,可以在Markdown、HTML、Word、LaTeX和其他格式之间进行转换。
Quarto
Quarto建立在Pandoc之上,进一步整合了Markdown写作、文献引用、交叉引用、代码执行、图表和多格式发布。
Quarto官方将其定位为开源科学与技术出版系统,并支持通过Jupyter、Knitr等机制嵌入Python、R、Julia和JavaScript计算内容。Quarto官方项目
5. Spell Checking and Linting:文本检查
项目收录了:
- GNU Aspell;
- Hunspell;
- LanguageTool;
- LanguageCheck;
- Markdownlint;
- proselint;
- remark-lint;
- restructuredtext-lint;
- textlint;
- textidote;
- Vale;
- write-good。
这些工具处理的问题不完全相同:
| 类型 | 主要检查内容 |
|---|---|
| 拼写检查 | 单词是否拼错 |
| 语法检查 | 主谓一致、冠词、时态等 |
| 风格检查 | 句子过长、表达含糊、冗余用词 |
| 标记语言检查 | Markdown、reStructuredText格式 |
| LaTeX文本检查 | LaTeX论文中的语言和格式问题 |
| 自定义规范检查 | 术语、禁用词、组织写作规范 |
6. Templates:模板
项目提供了论文、书籍和博士论文等模板入口。
模板能够帮助统一:
- 页面大小;
- 字体;
- 标题格式;
- 页眉页脚;
- 目录;
- 图表样式;
- 参考文献格式。
但需要注意:
模板只能解决排版问题,不能解决论文内容、论证和证据问题。
7. Tutorials:教程
这里提供了不同科研写作工作流的学习入口,例如:
- 使用纯文本和Pandoc进行可持续写作;
- 使用R Markdown撰写博士论文;
- 将Jupyter Notebook转换为论文或演示文稿;
- 使用RStudio、Zotero和其他工具组织论文。
8. Other Lists:其他资源合集
包括:
- Awesome Jupyter;
- Awesome LaTeX;
- Awesome Markdown;
- Delightful Open Science。
它们可以看作awesome-scientific-writing向相邻领域延伸的入口。
三、现代科研写作的六层结构
面对如此多的工具,新手最容易陷入一个误区:
先把所有软件都安装一遍,再看看哪个能用。
这种方式通常会得到一个混乱的电脑环境,却没有形成稳定工作流。
更好的做法是先理解科研写作的结构。
#mermaid-svg-LpeVgsvVFy6yXSnx{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LpeVgsvVFy6yXSnx .error-icon{fill:#552222;}#mermaid-svg-LpeVgsvVFy6yXSnx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LpeVgsvVFy6yXSnx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LpeVgsvVFy6yXSnx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LpeVgsvVFy6yXSnx .marker.cross{stroke:#333333;}#mermaid-svg-LpeVgsvVFy6yXSnx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LpeVgsvVFy6yXSnx p{margin:0;}#mermaid-svg-LpeVgsvVFy6yXSnx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster-label text{fill:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster-label span{color:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster-label span p{background-color:transparent;}#mermaid-svg-LpeVgsvVFy6yXSnx .label text,#mermaid-svg-LpeVgsvVFy6yXSnx span{fill:#333;color:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx .node rect,#mermaid-svg-LpeVgsvVFy6yXSnx .node circle,#mermaid-svg-LpeVgsvVFy6yXSnx .node ellipse,#mermaid-svg-LpeVgsvVFy6yXSnx .node polygon,#mermaid-svg-LpeVgsvVFy6yXSnx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LpeVgsvVFy6yXSnx .rough-node .label text,#mermaid-svg-LpeVgsvVFy6yXSnx .node .label text,#mermaid-svg-LpeVgsvVFy6yXSnx .image-shape .label,#mermaid-svg-LpeVgsvVFy6yXSnx .icon-shape .label{text-anchor:middle;}#mermaid-svg-LpeVgsvVFy6yXSnx .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-LpeVgsvVFy6yXSnx .rough-node .label,#mermaid-svg-LpeVgsvVFy6yXSnx .node .label,#mermaid-svg-LpeVgsvVFy6yXSnx .image-shape .label,#mermaid-svg-LpeVgsvVFy6yXSnx .icon-shape .label{text-align:center;}#mermaid-svg-LpeVgsvVFy6yXSnx .node.clickable{cursor:pointer;}#mermaid-svg-LpeVgsvVFy6yXSnx .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-LpeVgsvVFy6yXSnx .arrowheadPath{fill:#333333;}#mermaid-svg-LpeVgsvVFy6yXSnx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LpeVgsvVFy6yXSnx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LpeVgsvVFy6yXSnx .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LpeVgsvVFy6yXSnx .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-LpeVgsvVFy6yXSnx .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LpeVgsvVFy6yXSnx .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster text{fill:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx .cluster span{color:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LpeVgsvVFy6yXSnx .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-LpeVgsvVFy6yXSnx rect.text{fill:none;stroke-width:0;}#mermaid-svg-LpeVgsvVFy6yXSnx .icon-shape,#mermaid-svg-LpeVgsvVFy6yXSnx .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LpeVgsvVFy6yXSnx .icon-shape p,#mermaid-svg-LpeVgsvVFy6yXSnx .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-LpeVgsvVFy6yXSnx .icon-shape .label rect,#mermaid-svg-LpeVgsvVFy6yXSnx .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LpeVgsvVFy6yXSnx .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-LpeVgsvVFy6yXSnx .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-LpeVgsvVFy6yXSnx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 写作层
Markdown、Quarto、MyST
引用层
Zotero、BibTeX、CSL
计算层
Python、R、Julia、Jupyter
可视化层
Matplotlib、Mermaid、Graphviz
转换层
Quarto、Pandoc
输出层
HTML、PDF、DOCX
质量控制层
Vale、LanguageTool、Git
第一层:写作源文件
这是你真正维护的论文内容。
传统方式的源文件可能是:
- Word文档;
- LaTeX文件;
- Markdown文件;
- Quarto文件;
- Jupyter Notebook。
本文选择Quarto的.qmd文件作为主源文件。
第二层:文献与引用
文献不应当手工复制到论文末尾,而应通过结构化数据库管理。
本文采用:
text
Zotero
↓
Better BibTeX
↓
references.bib
↓
Quarto正文中的引用键
↓
自动生成参考文献列表
第三层:数据与计算
论文中的数值、统计和图表应尽量来自:
- CSV;
- Excel;
- 数据库;
- Python;
- R;
- Julia;
- Jupyter Notebook。
第四层:图表和可视化
图表可以来自:
- Python;
- R;
- Mermaid;
- Graphviz;
- diagrams.net;
- 其他科研绘图软件。
第五层:转换与渲染
Quarto和Pandoc负责把源文件转换为最终格式。
第六层:质量控制
包括:
- 拼写和语言检查;
- 引用核验;
- Git版本管理;
- 输出文件检查;
- 期刊规范检查;
- 人工科学审查。
理解这六层后,就不会再问:
Zotero和Quarto哪个更好?
因为二者解决的是不同问题。
四、三套推荐工具组合
路线一:零代码入门
推荐组合:
text
Zettlr + Zotero + Pandoc
适合:
- 不熟悉命令行;
- 主要撰写文字内容;
- 不需要嵌入Python或R;
- 希望获得接近传统编辑器的体验。
路线二:科研人员推荐路线
推荐组合:
text
VS Code + Quarto + Zotero + Better BibTeX + Git
按需增加:
- Python或R;
- Mermaid;
- LanguageTool或Vale。
适合:
- 硕士生和博士生;
- 机器学习研究者;
- 数据科学研究者;
- 需要公式、代码和实验图表;
- 希望输出PDF、Word和HTML;
- 希望进行版本管理。
本文将重点演示这条路线。
路线三:可复现科研进阶路线
推荐组合:
text
Quarto/Jupyter Book
+ Jupyter Notebook
+ Python/R/Julia
+ Zotero
+ Git/GitHub
+ 自动构建
适合:
- 计算科学;
- 数据分析论文;
- 在线教材;
- 技术报告;
- 需要定期更新的数据产品;
- 需要重新执行代码并生成论文的项目。
五、本文将完成什么?
我们将创建一个小型科研论文项目:
面向序分类的预算约束主动学习方法
最终项目包含:
text
active-learning-paper/
├── paper.qmd
├── _quarto.yml
├── references.bib
├── data/
│ └── results.csv
├── scripts/
│ └── plot_results.py
├── figures/
│ └── active-learning-workflow.svg
├── styles/
│ └── journal.csl
├── output/
├── README.md
└── .gitignore
最终能够输出:
text
output/
├── paper.html
├── paper.pdf
└── paper.docx
需要说明:本文中的研究题目和实验数据只用于演示写作工作流,不能作为真实论文结果使用。
六、安装写作环境
1. 安装VS Code
从VS Code官方网站下载适合自己系统的安装程序:
安装后打开扩展页面,建议安装:
- Quarto;
- Python;
- Markdown相关扩展;
- Git相关扩展。
Quarto官方的VS Code扩展提供:
- Quarto文档预览;
- Markdown语法高亮;
- YAML配置提示;
- 嵌入式代码补全;
- 代码块运行功能。
具体功能可以查看Quarto的VS Code入门教程。
2. 安装Quarto
从Quarto官方下载页面选择Windows、macOS或Linux版本:
安装后打开终端,输入:
bash
quarto --version
如果能够返回版本号,说明Quarto已经可以使用。
还可以检查安装状态:
bash
quarto check
3. 安装Zotero
从Zotero官方下载页面安装桌面端:
同时安装浏览器连接器。Zotero官方说明,桌面端配合Connector可以从Chrome、Firefox、Edge或Safari中保存文献和元数据。Zotero添加文献说明
安装后建议完成:
- 创建Zotero账户;
- 登录桌面端;
- 开启同步;
- 创建专门的论文Collection;
- 安装浏览器Connector;
- 测试能否从期刊网页保存论文。
4. 安装Better BibTeX
Better BibTeX是Zotero扩展,可以帮助生成稳定引用键和自动导出BibTeX文件。
安装步骤:
- 打开Better BibTeX安装页面;
- 下载最新
.xpi文件; - 打开Zotero;
- 进入"工具";
- 打开插件管理;
- 点击右上角齿轮;
- 选择"Install Plugin From File";
- 选择刚才下载的
.xpi文件; - 完成安装并按提示重启Zotero。
需要注意:
- Better BibTeX安装在Zotero中,不是安装到浏览器;
- 使用Firefox下载时,应保存
.xpi文件,不要让Firefox尝试把它作为浏览器插件安装。
5. 安装Git
前往Git官方网站:
安装后验证:
bash
git --version
6. 安装Python
如果论文需要运行Python代码,可以安装Python或Conda环境。
验证:
bash
python --version
部分系统使用:
bash
python3 --version
7. 安装PDF支持
Quarto生成PDF通常需要TeX环境。官方推荐使用TinyTeX,可执行:
bash
quarto install tinytex
安装后查看工具状态:
bash
quarto list tools
Quarto的PDF输出要求和TinyTeX安装方法可以参考PDF Basics。
七、创建第一个Quarto科研项目
1. 创建项目
打开终端,进入希望保存论文的目录,然后运行:
bash
quarto create project default active-learning-paper
也可以只运行:
bash
quarto create project
然后根据提示选择项目类型和名称。
Quarto项目本质上是一个包含共享配置和论文源文件的目录。项目可以统一管理输出目录、引用文件、渲染方式和代码执行设置。Quarto项目说明
进入项目目录:
bash
cd active-learning-paper
使用VS Code打开:
bash
code .
如果系统没有配置code命令,也可以在VS Code中手动选择"打开文件夹"。
2. 创建目录
在项目中建立:
text
data/
scripts/
figures/
styles/
output/
最终结构为:
text
active-learning-paper/
├── paper.qmd
├── _quarto.yml
├── data/
├── scripts/
├── figures/
├── styles/
└── output/
3. 编写项目配置
创建或修改_quarto.yml:
yaml
project:
type: default
output-dir: output
bibliography: references.bib
execute:
echo: false
warning: false
format:
html:
toc: true
number-sections: true
embed-resources: true
docx:
toc: true
number-sections: true
pdf:
toc: true
number-sections: true
keep-tex: true
配置含义:
| 配置 | 作用 |
|---|---|
output-dir |
将生成文件集中放到output |
bibliography |
指定参考文献数据库 |
echo: false |
默认不在论文中显示代码 |
warning: false |
不显示普通运行警告 |
toc |
生成目录 |
number-sections |
自动给章节编号 |
embed-resources |
将HTML资源嵌入单文件 |
keep-tex |
生成PDF时保留中间LaTeX文件 |
4. 创建论文源文件
建立paper.qmd:
markdown
---
title: "Budget-aware Active Learning for Ordinal Classification"
subtitle: "A Reproducible Scientific Writing Example"
author: "Your Name"
date: last-modified
abstract: |
本文使用一个面向序分类的预算约束主动学习问题,
演示如何在Quarto中组织正文、引用、公式、图表、
代码和多格式输出。所有实验数据均为教学示例,
不代表真实研究结果。
---
# Introduction
Active learning attempts to reduce data acquisition costs by
selectively querying informative information.
# Method
本节介绍示例方法。
# Experiments
本节展示教学用实验结果。
# Discussion
本节讨论结果与局限性。
# References
5. 第一次预览
运行:
bash
quarto preview paper.qmd
浏览器应当自动打开预览页面。
如果只想生成文件:
bash
quarto render paper.qmd
Quarto官方CLI支持:
bash
quarto render document.qmd
quarto render document.qmd --to html
quarto render document.qmd --to docx
quarto render document.qmd --to pdf
详细参数可参考Quarto Render命令。
八、使用Zotero建立论文文献库
1. 创建论文Collection
在Zotero左侧区域新建Collection,例如:
text
Active Learning Paper
不要直接把整个Zotero文献库全部导出到论文项目。更好的方式是:
每篇论文或每个项目对应一个Collection。
这样可以减少:
- 无关文献;
- 重复文献;
- 过大的BibTeX文件;
- 引用键冲突;
- 合作者难以理解的问题。
2. 从网页保存文献
打开论文的正式页面,例如:
- 出版商页面;
- Crossref;
- PubMed;
- arXiv;
- DBLP;
- IEEE Xplore;
- ACM Digital Library;
- 学校图书馆数据库。
点击浏览器中的Zotero Connector按钮。
保存后必须检查:
- Item Type;
- Title;
- Author;
- Year;
- Journal或Conference;
- Volume;
- Issue;
- Pages或Article Number;
- DOI;
- URL;
- 预印本和正式版本的关系。
自动导入不等于元数据一定正确。
3. 处理重复文献
Zotero左侧通常提供重复项目检查入口。合并前确认:
- 是否确实为同一篇文献;
- 是否一个是预印本、一个是正式发表版;
- 哪条记录的DOI更完整;
- 哪条记录包含PDF和笔记;
- 是否需要保留两个版本。
4. 理解引用键
Better BibTeX会为文献生成引用键,例如:
text
settlesActiveLearningLiterature2009
正文引用时不需要复制完整文献信息,只需要引用这个键。
引用键一旦已经用于论文,最好不要随意改变,否则正文中的引用会失效。
九、从Zotero自动导出references.bib
1. 导出Collection
在Zotero中:
- 右键论文Collection;
- 选择导出;
- 选择Better BibTeX或Better BibLaTeX;
- 将文件保存为:
text
active-learning-paper/references.bib
Better BibTeX支持为纯文本写作工作流自动导出文献,并允许配置引用键生成方式。Better BibTeX导出说明
2. 开启自动更新
导出时如果出现"Keep Updated"或类似选项,应将其启用。
这样以后在Zotero中:
- 新增文献;
- 修改作者;
- 修正标题;
- 添加DOI;
- 调整引用键;
references.bib可以自动更新。
3. 不要手工维护两个文献源
如果已经决定让Zotero作为文献主库,就不要同时:
- 在Zotero中修改一份;
- 又在
references.bib中手工维护另一份。
更合理的规则是:
text
Zotero = 权威文献源
references.bib = 自动导出的中间文件
手工修改自动导出的BibTeX文件,下一次自动导出时可能被覆盖。
十、在Quarto中插入引用
Quarto使用Pandoc生成引用和参考文献。至少需要:
- 包含引用语法的
.qmd文档; - 一个BibTeX或BibLaTeX文献文件;
- 可选的CSL引用样式。
官方说明见Quarto Citations。
1. 括号式引用
markdown
Active learning has been studied as a strategy for reducing
annotation costs [@settlesActiveLearningLiterature2009].
渲染后可能显示为:
text
Active learning has been studied as a strategy for reducing
annotation costs (Settles, 2009).
具体格式由CSL决定。
2. 叙述式引用
markdown
@settlesActiveLearningLiterature2009 provides a broad review
of active learning methods.
渲染后可能显示:
text
Settles (2009) provides a broad review...
3. 同时引用多篇文献
markdown
Several studies have examined related querying strategies
[@referenceA; @referenceB; @referenceC].
4. 引用特定页码
markdown
[@referenceA, pp. 10-12]
5. 不要在找不到文献时编造引用键
下面这种做法是不正确的:
markdown
[@smith2024novelmethod]
除非references.bib中确实存在这条记录。
如果尚未找到支撑文献,可以先写:
text
[CITATION NEEDED]
等检索和核验完成后再插入。
十一、使用CSL切换参考文献格式
CSL即Citation Style Language,用于控制:
- 文内引用;
- 作者显示;
- 年份;
- 题名;
- 期刊名称;
- 卷期页码;
- DOI;
- 参考文献排序。
1. 获取CSL
可以通过Zotero的样式管理器安装样式,也可以从CSL样式库下载文件。
Zotero官方说明,用户可以从Style Repository中搜索并安装样式,也可以从本地.csl文件安装。Zotero引用样式说明
将样式保存到:
text
styles/journal.csl
2. 在Quarto中配置
修改_quarto.yml:
yaml
bibliography: references.bib
csl: styles/journal.csl
重新渲染:
bash
quarto render paper.qmd
正文和参考文献格式会根据CSL变化。
3. 投稿前仍需检查
即使CSL名称与期刊相同,也应检查:
- 是否为最新版本;
- 作者数量截断规则;
- 期刊名是否缩写;
- DOI格式;
- 页码格式;
- 在线优先论文;
- 预印本;
- 会议论文;
- 数据集引用;
- 软件引用。
十二、插入数学公式
Quarto支持常见LaTeX数学语法。
1. 行内公式
markdown
The acquisition budget is denoted by $B$.
2. 独立公式
markdown
$$
x^\star =
\arg\max_{x \in \mathcal{U}}
\frac{\mathcal{I}(x;Y \mid \mathcal{D})}{c(x)} .
$$
3. 带编号公式
markdown
$$
x^\star =
\arg\max_{x \in \mathcal{U}}
\frac{\mathcal{I}(x;Y \mid \mathcal{D})}{c(x)} .
$$ {#eq-acquisition}
正文中引用:
markdown
The acquisition rule is defined in @eq-acquisition.
这样公式编号会自动维护。
4. 多格式输出时避免过度依赖原始LaTeX
如果目标只有PDF,原始LaTeX环境非常灵活。
但Quarto官方特别提醒,原始LaTeX内容在渲染HTML或Word时可能被忽略。Quarto PDF说明
因此,如果计划同时导出HTML、PDF和DOCX,应尽量使用:
- 标准Markdown;
- Quarto交叉引用;
- 标准数学语法;
- 原生表格;
- 通用图片格式。
十三、插入图片并自动编号
假设已有:
text
figures/active-learning-workflow.svg
在paper.qmd中写:
markdown
{#fig-workflow}
正文引用:
markdown
The overall procedure is illustrated in @fig-workflow.
Quarto要求可交叉引用的图片标签以fig-开头。官方示例和规则见Quarto Figures。
为什么不要手工写"图3"?
如果你手工写:
text
如图3所示......
后来在前面插入一张新图,原来的图3可能变成图4,但正文不会自动更新。
使用:
markdown
如@fig-workflow所示......
系统会自动维护编号。
十四、插入表格并自动引用
1. Markdown表格
markdown
| Method | Macro-F1 | Acquisition Cost |
|:--|--:|--:|
| Proposed | 0.82 | 25 |
| Baseline A | 0.78 | 31 |
| Baseline B | 0.75 | 20 |
: Teaching example only. {#tbl-main-results}
正文中:
markdown
The main teaching results are summarized in @tbl-main-results.
可交叉引用的表格标签应以tbl-开头。Quarto Tables
2. 表格中的数据必须可追溯
真实论文中需要知道:
- 结果来自哪个数据文件;
- 使用哪个脚本生成;
- 使用多少个随机种子;
- 报告均值、标准差还是置信区间;
- 最优结果是否使用粗体;
- 是否在相同数据划分上比较;
- 是否存在缺失实验。
十五、让图表由实验数据自动生成
这是可复现写作最有价值的部分之一。
1. 准备数据
建立:
text
data/results.csv
示例结构:
csv
method,budget,seed,macro_f1
Proposed,10,1,0.68
Proposed,10,2,0.70
Proposed,20,1,0.75
Proposed,20,2,0.77
Baseline,10,1,0.63
Baseline,10,2,0.64
Baseline,20,1,0.69
Baseline,20,2,0.70
再次强调:这些数值仅用于教学。
2. 安装Python依赖
bash
python -m pip install pandas matplotlib
如果使用虚拟环境,可以先创建:
bash
python -m venv .venv
macOS或Linux激活:
bash
source .venv/bin/activate
Windows PowerShell激活:
powershell
.venv\Scripts\Activate.ps1
然后安装依赖。
3. 在Quarto中直接生成图
在paper.qmd中加入:
markdown
```{python}
#| label: fig-budget-performance
#| fig-cap: "Macro-F1 under different acquisition budgets. Teaching data only."
#| echo: false
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data/results.csv")
summary = (
df.groupby(["method", "budget"], as_index=False)
.agg(
mean_macro_f1=("macro_f1", "mean"),
std_macro_f1=("macro_f1", "std")
)
)
for method, part in summary.groupby("method"):
plt.plot(
part["budget"],
part["mean_macro_f1"],
marker="o",
label=method
)
plt.xlabel("Acquisition budget")
plt.ylabel("Macro-F1")
plt.legend()
plt.tight_layout()
plt.show()
```
正文引用:
markdown
The teaching result is shown in @fig-budget-performance.
4. 数据变化后会发生什么?
当results.csv更新后:
- 重新渲染论文;
- Python代码重新读取数据;
- 图表重新生成;
- 新图自动进入论文;
- 图号和正文引用保持一致。
这比在Excel中手工复制数据、截图、再粘贴到Word更容易追踪。
5. 但自动生成不等于统计正确
上面的代码只演示自动化工作流,并没有完成严格统计分析。
真实论文还需要明确:
- 每个种子是否构成独立重复;
- 是否使用均值和标准差;
- 是否报告标准误;
- 置信区间如何计算;
- 多算法比较是否需要多重校正;
- 不同预算点是否来自相同实验运行;
- 是否适合使用配对检验;
- 数据集间的平均是否合理。
十六、使用Mermaid制作算法工作流
可以直接在Quarto中加入:
markdown
```{mermaid}
flowchart LR
A["Observed features"] --> B["Ordinal classifier"]
B --> C["Uncertainty estimation"]
C --> D["Feature utility evaluation"]
D --> E["Acquire one feature"]
E --> F["Update prediction"]
F --> C
```
Mermaid特别适合:
- 算法流程;
- 数据处理流程;
- 系统架构;
- 决策流程;
- 实验工作流。
对于需要高度自由排版的复杂论文示意图,diagrams.net、Illustrator、Inkscape或专业科研绘图工具可能更合适。
原则是:
流程图优先考虑结构是否清楚,科研示意图还需要考虑视觉层次和科学含义。
十七、一份源文件输出三种格式
1. 输出HTML
bash
quarto render paper.qmd --to html
HTML适合:
- 在线阅读;
- 交互式图表;
- 研究项目主页;
- 补充材料;
- 教学文档;
- 内部分享。
Quarto的HTML格式支持目录、章节锚点、公式、响应式图片和引用悬停等功能。HTML输出说明
2. 输出Word
bash
quarto render paper.qmd --to docx
Word适合:
- 与不使用Markdown的合作者沟通;
- 使用修订模式;
- 期刊要求DOCX投稿;
- 编辑部进行文字处理。
Quarto支持使用reference-doc指定Word参考样式文档。Quarto Word格式说明
例如:
yaml
format:
docx:
reference-doc: styles/reference.docx
3. 输出PDF
bash
quarto render paper.qmd --to pdf
PDF适合:
- 正式投稿;
- 打印;
- 存档;
- 固定版式阅读;
- 预投稿检查。
4. 一次生成全部格式
如果_quarto.yml已经配置三个格式:
bash
quarto render
Quarto会尝试生成所有目标格式。
5. 多格式输出不等于完全一致
三个格式可能存在差异:
| 内容 | HTML | DOCX | |
|---|---|---|---|
| 交互图 | 支持较好 | 通常静态化 | 通常静态化 |
| 字体控制 | CSS | TeX或Typst | Word样式 |
| 复杂LaTeX | 有限 | 强 | 可能不兼容 |
| 页面布局 | 流式 | 固定 | 可编辑 |
| SVG | 通常良好 | 依赖工具链 | 需检查 |
| 期刊模板 | 有限 | LaTeX模板较强 | Word模板较常见 |
因此,每一种最终输出都必须单独验收。
十八、定制Word输出
有些期刊或课题组要求:
- 特定标题字体;
- 特定正文行距;
- 指定图题和表题样式;
- 特定页边距;
- 指定参考文献格式。
可以先生成Word参考文档,再修改其样式。
Quarto官方给出了使用Word reference document控制DOCX外观的方法。Word Templates
典型思路:
- 生成默认参考文档;
- 用Word打开;
- 修改"标题1""标题2""正文""Caption"等样式;
- 保存为
reference.docx; - 在Quarto中指定该文件;
- 重新生成论文。
需要注意:
reference document适合控制Word样式,但不能保证自动复刻所有复杂期刊模板。
特别复杂的投稿模板可能仍需最后在Word中调整。
十九、文本检查:让工具发现低级问题
科研论文中的问题可以分为四层。
第一层:拼写
例如:
text
classfication
第二层:语法
例如:
text
The experimental results shows...
第三层:表达
例如:
text
It is very obvious that our method is extremely better.
第四层:科学论证
例如:
text
Our method is universally superior to all existing methods.
文本检查工具通常擅长前三层的一部分,却不能自动验证第四层。
一个示例
原句:
text
The results clearly proves that our method is very novel
and significantly better in all cases.
可能存在:
results与proves主谓不一致;clearly缺少必要性;very novel是自我评价;significantly可能暗示统计检验;in all cases范围过大;- "证明"可能超过实验能够支持的结论。
更保守的版本:
text
Across the evaluated datasets, the proposed method achieved
higher average Macro-F1 than the included baselines under
several acquisition budgets.
但即便这个版本,也需要核查:
- 是否真的所有已评估数据集都更高;
- 比较了哪些基线;
- 是否只在部分预算下更高;
- 报告的是平均值还是统计显著性。
推荐的检查顺序
text
拼写
→ 语法
→ 风格
→ 术语一致性
→ 引用检查
→ 数值检查
→ 科学论证检查
不要试图用一个语法工具完成所有审稿工作。
二十、使用Git管理论文版本
1. 初始化仓库
进入项目目录:
bash
git init
2. 创建.gitignore
例如:
gitignore
.venv/
__pycache__/
.ipynb_checkpoints/
.DS_Store
*.aux
*.log
*.out
*.synctex.gz
是否忽略output/取决于团队策略。
如果希望Git只管理源文件,可以忽略:
gitignore
output/
如果需要保存每个正式输出版本,则可以保留投稿节点的PDF或DOCX。
3. 第一次提交
bash
git add .
git commit -m "Initialize reproducible paper project"
4. 完成一项修改后提交
例如:
bash
git add paper.qmd references.bib
git commit -m "Add introduction and initial references"
加入实验结果:
bash
git add data scripts paper.qmd
git commit -m "Add budget-performance experiment"
修改Discussion:
bash
git add paper.qmd
git commit -m "Revise discussion and limitations"
5. 查看修改
bash
git diff
查看已经暂存的修改:
bash
git diff --staged
6. 为什么比"最终版2"更可靠?
传统方式:
text
论文初稿.docx
论文修改版.docx
论文最终版.docx
论文最终版2.docx
论文最终版2导师修改.docx
论文最终版2导师修改最终.docx
Git方式:
text
Commit 1:建立项目
Commit 2:完成引言
Commit 3:增加实验
Commit 4:重写讨论
Commit 5:提交前检查
Commit 6:Reviewer 1返修
每一个节点都有时间、修改内容和差异记录。
二十一、与合作者怎样协作?
工具选择不能只考虑主作者,还要考虑团队成员。
模式一:所有人都使用Git和Quarto
适合:
- 计算机;
- 机器学习;
- 数据科学;
- 软件工程;
- 计算生物学;
- 熟悉纯文本工具的团队。
优点:
- 版本清晰;
- 容易审查修改;
- 数据和论文可同步;
- 可以使用Pull Request。
缺点:
- 学习成本较高;
- 多人同时修改同一段文字可能发生冲突。
模式二:主作者使用Quarto,合作者使用Word
流程:
text
主作者维护paper.qmd
↓
导出paper.docx
↓
合作者使用Word修订
↓
主作者查看修改
↓
把确认内容回写paper.qmd
这是比较现实的折中方案。
缺点是Word修订无法自动无损回写到Markdown,需要主作者人工整合。
模式三:正文Word,数据和图表使用可复现项目
如果团队无法接受Markdown,可以只把以下部分纳入Git:
- 数据;
- 绘图脚本;
- 统计脚本;
- 图表;
- 补充材料;
- 分析记录。
正文继续使用Word。
可复现写作不是非黑即白的,部分采用也有价值。
二十二、三套可直接采用的工作流
方案A:零代码科研写作
text
Zotero
↓
Zettlr
↓
Pandoc
↓
Word/PDF
适合:
- 人文社科;
- 以文字为主的综述;
- 不使用Python或R;
- 不想接触大量命令。
方案B:机器学习科研写作
text
Zotero + Better BibTeX
↓
VS Code + Quarto
↓
Python实验和绘图
↓
自动引用、公式、图表
↓
PDF + DOCX + HTML
↓
Git版本管理
适合:
- 主动学习;
- 深度学习;
- 数据挖掘;
- 模式识别;
- 算法论文;
- 实验驱动论文。
方案C:R语言科研写作
text
Zotero
↓
RStudio + Quarto
↓
R代码和统计结果
↓
自动表格和图形
↓
HTML/PDF/DOCX
↓
Git
适合:
- 统计学;
- 医学研究;
- 生态学;
- 生物信息学;
- 社会科学定量研究。
二十三、常见故障排查
1. quarto命令不存在
可能原因:
- Quarto没有安装;
- 安装后终端没有重启;
- 系统PATH没有更新;
- 使用了错误的终端环境。
检查:
bash
quarto --version
如果失败,重新安装并重启终端或VS Code。
2. HTML可以生成,PDF失败
最常见原因是缺少TeX环境。
执行:
bash
quarto install tinytex
然后检查:
bash
quarto list tools
其他原因包括:
- LaTeX包缺失;
- 中文字体不可用;
- SVG转换失败;
- 原始LaTeX代码错误;
- 文件路径包含异常字符。
3. 找不到引用
典型错误:
text
citation not found
检查:
references.bib是否存在;_quarto.yml中的路径是否正确;- 引用键大小写是否一致;
- 引用键是否发生变化;
- Zotero是否完成自动导出;
- BibTeX文件是否包含该文献。
4. 文末没有参考文献
检查:
- 正文是否实际使用了引用;
bibliography配置是否正确;- 是否存在拼写错误;
- 文档是否成功完成渲染;
- 是否需要显式添加References章节。
5. 图表不显示
检查:
- 图片路径是否相对于
paper.qmd; - 文件是否真实存在;
- 大小写是否一致;
- SVG是否被目标格式支持;
- Python代码是否成功运行;
- 代码是否调用了
plt.show()。
6. 图号无法交叉引用
检查:
- 图片标签是否以
fig-开头; - 表格标签是否以
tbl-开头; - 公式标签是否以
eq-开头; - 正文是否使用
@fig-name; - 标签中是否使用了不推荐的下划线。
Quarto官方列出了交叉引用支持的图、表、公式、章节、定理和算法等标签。Cross References
7. Word排版与PDF差异很大
这是正常的。
解决方式:
- 使用
reference-doc控制Word样式; - 减少原始LaTeX;
- 使用标准Markdown表格;
- 检查图片格式;
- 分别验收PDF和DOCX;
- 最终投稿前允许少量格式调整。
8. Zotero更新后BibTeX没有变化
检查:
- 是否启用了自动导出;
- 导出的Collection是否正确;
- 文件路径是否改变;
- Better BibTeX插件是否正常;
- 是否需要手动刷新自动导出。
9. 更改Zotero引用键后论文报错
说明正文仍然使用旧引用键。
解决方法:
- 恢复原来的固定引用键;
- 或全局替换正文引用键;
- 在论文开始后尽量固定引用键;
- 不要随意修改Better BibTeX引用键规则。
10. Git显示大量无意义文件变化
检查.gitignore,排除:
- 临时文件;
- Python缓存;
- TeX中间文件;
- Notebook检查点;
- 系统隐藏文件;
- 不需要跟踪的输出目录。
二十四、这套工作流不能解决什么?
1. 不能自动提高研究创新性
工具能够改善:
- 文件组织;
- 引用管理;
- 格式一致性;
- 图表更新;
- 版本追踪。
但不能自动保证:
- 问题重要;
- 方法原创;
- 理论正确;
- 实验充分;
- 结论可信。
2. 不能替代文献核验
Zotero导入的文献也可能有错误。
仍需检查:
- 标题;
- 作者;
- 年份;
- DOI;
- 卷期页码;
- 预印本与正式版本;
- 文献是否支持具体论断。
3. 不能保证一键满足期刊模板
不同期刊可能要求:
- Word模板;
- LaTeX类文件;
- 特定图像格式;
- 单独上传图表;
- 指定参考文献样式;
- 独立的补充材料;
- 特定元数据。
Quarto可以提供统一源文件,但最终仍需根据投稿指南处理。
4. 不能替代统计审查
自动生成的图表可能在技术上正确,但统计意义仍可能错误。
5. 不能完全消除Word
如果导师、合作者和编辑只使用Word,DOCX仍然是重要交付格式。
二十五、怎样与Codex结合?
再次强调:
awesome-scientific-writing本身不是Codex Skill。
但Codex非常适合帮助建立和维护这套工作流。
1. 让Codex推荐工具组合
text
请阅读awesome-scientific-writing项目:
https://github.com/writing-resources/awesome-scientific-writing
我是机器学习研究者,主要使用Python、Zotero和Word。
请从项目收录的工具中,为我选择一套最小科研写作工具链。
要求:
1. 使用Quarto作为主源文件;
2. 支持BibTeX引用;
3. 支持Python自动生成图表;
4. 支持PDF、Word和HTML输出;
5. 使用Git管理版本;
6. 不要安装功能重复的软件;
7. 说明每个工具在工作流中的职责。
2. 让Codex创建论文项目
text
请为一篇机器学习论文创建Quarto项目。
需要包含:
paper.qmd
_quarto.yml
references.bib
data/
scripts/
figures/
styles/
output/
README.md
.gitignore
要求:
1. 支持HTML、PDF和DOCX;
2. 使用references.bib;
3. 支持图表、公式和交叉引用;
4. 不要生成虚构实验结果;
5. 创建完成后执行一次最小渲染验证。
3. 让Codex处理渲染错误
text
这个Quarto项目生成HTML成功,但生成PDF失败。
请先读取完整错误日志,定位根本原因。
只进行必要修改,不要删除论文内容,
也不要通过关闭PDF输出绕过问题。
修改后重新渲染并验证PDF能够打开。
4. 让Codex检查论文项目
text
请审查这个科研写作项目,检查:
1. 所有引用键是否存在;
2. 所有图片路径是否有效;
3. 所有交叉引用是否解析;
4. 表格和公式是否自动编号;
5. Python图表能否重新生成;
6. HTML、PDF和DOCX是否都能输出;
7. 是否存在不应提交到Git的临时文件;
8. 是否存在写死在正文中的实验数值;
9. 不要修改研究结论。
5. 将个人规范封装成Skill
如果长期使用同一套规则,可以创建个人科研写作Skill,例如:
text
scientific-writing-workflow/
├── SKILL.md
├── references/
│ ├── project-structure.md
│ ├── citation-policy.md
│ ├── figure-policy.md
│ └── submission-checklist.md
├── templates/
│ ├── paper.qmd
│ ├── _quarto.yml
│ └── .gitignore
└── scripts/
└── verify_project.py
这个Skill可以规定:
- 新论文采用什么目录;
- 文献如何导出;
- 引用键如何命名;
- 图表输出哪些格式;
- 如何生成Word和PDF;
- 哪些内容禁止AI推测;
- 投稿前必须执行哪些检查。
这是使用awesome-scientific-writing资源进一步构建的个人扩展,并不是原项目自带功能。
二十六、如何判断这套工作流是否适合自己?
非常适合
- 使用Python或R开展研究;
- 论文包含大量图表和公式;
- 经常更新实验数据;
- 需要生成多种格式;
- 希望使用Git管理论文;
- 希望论文和代码放在一起;
- 愿意学习少量Markdown和命令行。
部分适合
- 主要使用Word;
- 合作者不熟悉纯文本;
- 期刊只提供复杂DOCX模板;
- 论文代码和数据较少;
- 只写一次性短报告。
可能不适合
- 完全不愿接触纯文本;
- 团队规定所有内容必须在特定在线平台完成;
- 论文涉及大量只能在Word中维护的复杂修订;
- 没有时间学习和维护工具链;
- 研究材料存在不适合进入当前计算环境的保密要求。
二十七、给初学者的五天入门路线
第一天:只安装Quarto
目标:
- 创建一个
.qmd文件; - 写标题和两个章节;
- 生成HTML。
不要一开始就处理PDF、引用和Python。
第二天:接入Zotero
目标:
- 建立一个Collection;
- 保存三篇论文;
- 检查元数据;
- 导出
references.bib; - 在正文插入一条引用。
第三天:学习公式和交叉引用
目标:
- 插入一个公式;
- 插入一张图片;
- 插入一个表格;
- 在正文自动引用它们。
第四天:自动生成图表
目标:
- 从CSV读取数据;
- 用Python或R生成一张图;
- 将图嵌入论文;
- 修改数据后重新渲染。
第五天:多格式输出和Git
目标:
- 输出HTML;
- 输出Word;
- 输出PDF;
- 初始化Git;
- 完成第一次提交;
- 查看一次修改差异。
五天之后,再决定是否增加:
- CSL;
- Word参考模板;
- Vale;
- GitHub;
- 自动构建;
- 个人Codex Skill。
二十八、总结
awesome-scientific-writing不会替你写论文。
它不是一个AI Agent Skill,也不是安装后自动工作的科研平台。它更像是一张科学写作工具地图,帮助研究者认识:
- 除了Word和LaTeX,还有哪些写作方式;
- 如何管理参考文献;
- 如何让数据自动生成图表;
- 如何维护公式、图片和表格编号;
- 如何从同一份源文件生成多种格式;
- 如何检查文字质量;
- 如何使用Git管理论文版本;
- 如何把论文写作变成可以重复执行的流程。
真正值得学习的,不是清单中每一个工具,而是工具之间的分工:
text
Zotero负责文献
Quarto负责组织论文
Python或R负责计算和图表
Pandoc负责格式转换
CSL负责引用样式
Git负责版本管理
文本检查工具负责低级错误
研究者负责科学事实、论证和结论
对于机器学习、主动学习和数据科学研究者,一条实用路线是:
text
Zotero + Better BibTeX
↓
VS Code + Quarto
↓
Python实验和科研图表
↓
自动引用与交叉引用
↓
HTML + PDF + DOCX
↓
Git版本管理
↓
人工科学审查
这套工作流的价值不在于让论文写得更快,而在于让论文中的文字、引用、数据、图表和版本关系更加清楚。
最终目标不是"一键生成论文",而是:
让论文中的每一项关键内容都能够被找到、被检查、被更新和被追溯。
项目与官方文档
- Awesome Scientific Writing GitHub仓库
- Awesome Scientific Writing在线资源页
- 项目贡献规则
- Quarto官方下载
- Quarto入门教程
- Quarto文献引用
- Quarto交叉引用
- Quarto项目说明
- Zotero官方下载
- Zotero官方文档
- Better BibTeX安装说明
- Better BibTeX导出说明
- Pandoc安装说明
版本说明:本文依据2026年7月21日的公开项目与官方文档整理。工具版本、安装界面和配置选项可能继续变化,实际操作时请以对应项目的最新官方文档为准。