科研工作流程

陈华 ⋅ 2021-04-23

每个科研工作者都有自己的科研工作流程,我倾向于利用不同的软件组合来提高工作效率。我一开始舍本逐末尝试了许多软件,导致工作流程越来越模糊,效率低下。后来才意识到形成正确的工作流程才是最重要的,软件只是工具,越精简越好。我目前的工作流程是:

  1. 确定课题,在电脑上建立课题文件夹,并通过 Git 同步到 GitHub上的私人仓库,进行版本控制。
  2. arXivinSPIRE 上查阅文献。
  3. 使用 ZoteroSumtraPDF 管理和阅读文献。
  4. Slack公式支持)上与课题组或合作者讨论问题。
  5. 使用 TyporaLyX镜像)做笔记和推导公式。
  6. 使用 VS Code 扩展 JupyterLaTeX Workshop 进行 Python 编程和论文写作。

以下具体展开我的工作流程。

确定课题

首先,强烈推荐使用同步云软件存储资料,以防电脑故障或者丢失。我的科研文件夹分成了以下几类:大纲、资源、笔记、工作、报告和教学。我在大纲中确立科研的目标和方向,一旦有想法就记录下来,由此确定课题。我收集的资源大概包括别人写的程序、演示文稿和教材讲义,文献也存放在这里。工作文件夹中的每一个课题都有对应的 GitHub 私人仓库,对该课题的笔记、论文、程序等进行版本控制。

管理和阅读文献

做科研首先是阅读文献,因此有效地管理文献至关重要。目前文献管理软件层出不穷,功能大同小异,基本包含了导入文献信息和导出引用格式这两个功能。由于 EndNote 太贵,Mendeley 太丑,Citavi 太强,我最终选择了免费开源、界面舒服、功能适中的 Zotero。它拥有丰富的插件,而且插件后缀 .xpi 与火狐浏览器的相同;也就是说,对火狐浏览器的插件稍加修改就可以直接应用到 Zotero 中。我的习惯是将所有文档放在同一个云盘目录中,这样不管在哪一个设备中都可以方便查询和编辑。但 Zotero 默认在 storage 文件夹中为每一个文档单独建立一个子文件夹,看起来非常凌乱。为此安装一个重要插件 ZotFile,用于管理附件和自动重命名等。安装插件的方式是点击 Tools - Add-ons,将下载好的插件拖放进去。安装好之后,点击菜单栏 tools - ZotFile Preferences 对 ZotFile 进行如下设置:

其他常用的插件有:

  1. Markdown Here:将笔记替换成 Markdown 格式的文本。选中笔记,点击菜单栏 File -> Markdown Toggle 即可。
  2. Better BibTeX for Zotero:管理书目数据,自定义 BibTeX 导出规则。
  3. Jasminum:中文元数据支持。
  4. Zotero Storage Scanner:通过扫描存储来识别损坏和重复的附件。
  5. Zotero Citation Counts Manager:自动从 CrossrefinSPIRESemantic Scholar 抓取引用次数。
  6. PDF 预览

Zorero 支持 WebDAV 同步数据,所以配合坚果云相当方便。但我本身就在使用 OneDrive 同步云软件,而且它也不支持 WebDAV,因此我把附件的路径设置在前面所提到的 Resources 中。在 Zotero 的 Edit - Preferences - Advanced Files and Folders 中设置附件和数据路径,保证 Tools - ZotFile Preferences - General Settings 中的附件路径一致,并设置好文件夹和文件命名规则。

Zotero 中重复的文献条目会出现在 Duplicate Items 标签中,未分类的在 Unfiled Items 标签中,但同一文献条目可以同时出现在不同的分类文件夹中,不算作重复。我基本上把文献分成了四类,即待读、(技术)文档、紧急和工作,其中在工作分类中为每一个课题分别建立一个子分类。需要注意的是,如果想要删除某个条目,右键选择 Move Item to Trash...;若只是从某个分类中移除,则选择 Remove Item from Collection

此外,浏览器插件 Zotero Connector 是必须安装的,用于从网络上保存 PDF 文档。只需保持 Zotero 软件开启,点击插件,选择保存目录即可。阅读文献时,直接点击对应的条目就可以通过默认的 PDF 阅读器打开文档。我使用 SumtraPDF 这个轻量级的阅读器来阅读,它的优点是启动速度很快,而且拥有实用的快捷键

笔记和写作

无论是做笔记还是写论文,\(\LaTeX\) 都是必备的。虽然现在流行通过 Overleaf 在线协作写论文,但我个人还是倾向于本地环境,因此安装了 TeX Live镜像)软件发行套装,并通过 VS Code 的扩展 LaTeX Workshop 写论文。具体的设置可以参考知乎一篇的教程。若只有少量的公式输入,我一般使用 Markdown 格式做笔记,尤其推荐 Typora,它不仅支持实时预览,而且主题丰富、操作简单而优雅。而对于大量的公式输入,特别是公式推导时,我更多地使用 LyX镜像)。它是据我所知最强大的所见即所得软件以及 \(\LaTeX\) 编辑器,尤其是对于数学公式的输入和显示堪称完美。此外,有时候需要复制粘贴文献里的公式,这就需要用到 Mathpix Snip。使用快捷键 Ctrl + M 截图,会自动生成和复制对应的 \(\LaTeX\) 代码。对于英文论文,可以安装 grammarly 免费检查拼写和语病。

编程

我一般使用 Mathematica 做科学计算,简单而优雅,但对于偏数值的情况,则更多地使用 Python。安装好 Python 之后,将 pip 源设置为清华镜像,然后安装需要的扩展程序库,例如:pip install jupyterlab numpy sympy matplotlib scipy pandas import-ipynb。稳妥起见,最好通过 Conda 对 Python 的程序库进行版本控制。接下来在 VS Code 中安装 PythonJupyter 扩展就可以工作了。

个人觉得 Linux 对于 Python 的支持比 Windows 更好,因此也常常切换到 Linux 中工作。Win 10 系统的一个黑科技就是 WSL,即适用于 Linux 的 Windows 子系统。如今完全不再需要安装消耗资源的虚拟机,或者只能同时运行一个系统的双系统了。WSL 使我们可以一边在 Win 10 系统中愉快地进行日常工作和社交,一边运行 Linux 终端跑程序。这时不得不提到 VS Code 的一个大杀器,Remote - WSL 扩展。通过它,我们可以方便地切换到 Linux 环境下编程,而丝毫不影响 Win 10 的运行。WSL 的另一个好处是,Win 10 和 Linux 系统的文件目录可以直接互相访问和运行,真正做到了“我泥中有你,你泥中有我。”1

科研活动

Slack 是目前比较火的协作平台,我们课题组就是使用这个软件来管理日常的科研活动。GitHub 绝对是项目协作的一个利器,只是在科研社区中的受众还是太少了。

作报告常常需要制作幻灯片。Beamer 使用 \(\LaTeX\) 编译,无须担心格式错乱。但 PowerPoint 还是更有灵活性,缺点是它对于公式的支持太弱了。我一般从 LyX 或 Typora 中复制 \(\LaTeX\) 代码,粘贴到网页 TeXclip,生成透明背景的可缩放矢量图片(.svg),再拖曳到 PowerPoint 中,一气呵成。

其他

阅读英文文献时难免会遇到陌生词汇,网易有道词典是比较简单的查询和背诵单词的方式,而我选择另一种更自主的方法:GoldenDict 词典和 Anki 抽认卡。比较麻烦的是,GoldenDict 本身不具有词典,需要自己去下载 .mdd.mdx 后缀的词典文件。Anki 是很强大的一个记忆软件,拥有丰富的插件,我只用到其中的 AnkiConnectGD2Anki。使用流程是:点击陌生词汇按 Ctrl + C + C 快捷键,GoldenDict 会自动在相应的词典中查询,同时会把该词汇同步到 Anki 的记忆卡片中,通过记忆卡片和记忆曲线背单词。

资料多了就需要聚合,有趣的网页也需要适时剪藏,以免变成 404。印象笔记就是一款很好的剪藏和建立个人知识库的软件,只是,它现在已经变成印象广告了。作为替代,Trilium Notes 不仅开源、无广告还可以剪藏网页,建立连接图(Link map),高度定制页面和功能,以及部署在服务器等。但功能强大也意味着更多的学习成本。如果只是需要剪藏和编辑网页内容,那更方便的是安装浏览器插件 MarkDownload - Markdown Web Clipper,直接将网页转换成 Markdown 格式,并下载到本地。默认是通过网络链接显示图片,为了避免将来出现死链无法显示图片(这是常有的事!),可以在扩展选项中设置保存图片到本地,建议和 Typora 的图片设置保持一致。


  1. 在 2021 年 5 月底发布的 Win 11 预览版支持在资源管理器中直接查看 WSL 目录。↩︎