跳转到正文
2022-10-28 zh

用 VS Code、LaTeX、BibTeX 与 Git 构建可复现论文写作流

论文不只是一份排好版的 PDF。研究证据如何支撑结论,图表和引用从哪里来,源文件怎样生成最终文档,这些都属于论文的一部分,也应当经得起合作者和未来的自己检查。VS Code 与 LaTeX 的作用,是把这条过程整理清楚,而不是不断堆叠编辑器配置。

先把结论和证据对应起来

动手润色之前,先列一张“结论—证据”表。对每项准备写入论文的贡献,注明支撑它的分析、图表、实验、定理、数据集或一手文献,并区分哪些是直接观测到的结果、哪些属于解释、哪些是已知局限。这样往往能在文字加工之前,就发现证据不足的表述。

阅读优秀论文,是为了熟悉本领域怎样提出问题、组织论证和呈现结果;真正落笔时,仍应从自己的证据表和研究笔记出发。不要照搬他人的句子顺序,也不要通过替换同义词来改写原文。凡是逐字摘录的笔记,都应明确加上引号并保留出处,直到它被规范引用或彻底删除。这样既能避免不当复用,也保留了回查证据的路径。

把论文当作能够自动构建的项目

把正文、文献库、图表和构建说明放进一个简洁、固定的目录结构:

paper/
├── main.tex
├── sections/
├── figures/
├── references.bib
├── README.md
├── .gitignore
└── .vscode/

应优先使用 LaTeX 提供的语义结构,例如章节、标签、交叉引用、文献引用命令和可复用宏,而不是手工拼出相似的视觉效果。需要确认写法时,LaTeX Project 官方文档比网上复制来的零散排版片段可靠得多。

README 至少要写明所需的 TeX 发行版、编译引擎、参考文献后端、入口文件、字体或外部工具,以及一条标准构建命令。如果出版社模板规定了特殊流程,应把要求明确记录下来,不要让它只存在于某台电脑的编辑器设置中。

用自动化工具完成构建

LaTeX Workshop 的构建文档使用构建方案(recipe)组织命令,默认采用 latexmk。这通常比手工维护一长串 LaTeX 和参考文献编译步骤更可靠:latexmk会检查依赖,并按需反复调用相关工具,直到所有输出都已更新。

编辑器最好只是构建命令的图形入口;离开 VS Code 后,同一条命令也应当可以直接运行:

latexmk -pdf -interaction=nonstopmode -file-line-error main.tex

命令以成功状态退出,只能说明流程没有中断。还要查看日志中是否存在未定义的交叉引用、缺失文献、字体替代、越界盒子,以及过期或缺失的图表。任何可能改变内容含义或页面布局的警告,都应当按构建失败处理。

让文献库经得起核查

维护一份经过核对的 references.bib,并把它作为唯一的正式文献库。BibTeX 条目虽然可以方便地导入,但元数据未必准确。正式引用前,应对照出版社页面或其他权威记录,检查作者顺序、标题、期刊或会议名称、年份、页码和 DOI。

引用键应当稳定、易读,同一工作也不要同时保留预印本和正式发表版本的重复条目。能够找到 DOI 或正式出版链接时,应一并保存。更重要的是,文献应紧跟它真正支撑的表述;在长段落末尾堆上一串关系松散的引用,并不能说明证据来自哪里。

用 Git 记录决策

忽略临时构建产物,而不是论文证据:

*.aux
*.blg
*.fls
*.fdb_latexmk
*.log
*.out
*.synctex.gz

有些投稿系统要求同时提交生成后的参考文献文件等产物。遇到这种情况,应单独保存完整投稿包,或明确把所需文件纳入版本记录;不要让一条宽泛的忽略规则替你决定哪些内容属于正式材料。

提交之前,既要看工作区状态,也要阅读真正准备提交的差异。Git status 文档说明了工作区、暂存区和已提交版本之间的区别。

git status --short
git diff --check
git diff --cached

每次提交应尽量聚焦,并说明具体的研究改动,例如“修改评估方案”“修正图表来源”或“根据新证据调整论证”,而不是只写一句“更新论文”。每次投稿都应打标签或另行归档,确保当时的 PDF、源文件、文献库和实验结果能够一起恢复。

明确可复现目标

在日常合作中,“可复现”至少意味着:从一份全新检出的项目副本开始,按照文档中的一条命令,就能基于明确标识的输入重建论文中的结论、表格和图表;任何仍需手工完成的步骤,都必须逐项写清楚。

逐字节一致是更严格的目标,通常需要固定 TeX 发行版或容器、锁定软件包和字体版本、控制时间戳,并确保图表生成过程具有确定性。只有归档或合规要求确实需要时,才值得承担这些额外成本;一个没有锁定版本的本地环境,不能声称实现了精确复现。

发布前检查

投稿或公开发布之前:

  1. 从全新检出的项目副本构建,不要依赖长期使用的工作目录。
  2. 解决缺失引用、文献、图片以及重要版面警告。
  3. 确认每项重要的事实性表述都能追溯到数据、分析或一手文献。
  4. 确认每张图片均可重新生成,或具有完整的来源说明。
  5. 审阅完整 Git 差异,确认没有私密笔记、凭据或临时数据进入版本。
  6. 归档实际提交的源文件包与 PDF。

这套流程减少了依赖个人电脑和临时操作的隐藏状态,因此也能提高写作效率。更重要的是,最终论文会更经得起核查:每项结论都有依据,每个版本都有记录,每次构建都有清楚的路径。