科研工作流程

陈华 ⋅ 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 multiprocess。稳妥起见,最好通过 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 目录。 ↩︎