每个科研工作者都有自己的科研工作流程,我倾向于利用不同的软件组合来提高工作效率。我一开始舍本逐末尝试了许多软件,导致工作流程越来越模糊,效率低下。后来才意识到形成正确的工作流程才是最重要的,软件只是工具,越精简越好。我目前的工作流程是:
- 确定课题,在电脑上建立课题文件夹,并通过 Git 同步到 GitHub上的私人仓库,进行版本控制。
- 在 arXiv 和 inSPIRE 上查阅文献。
- 使用 Zotero 和 SumtraPDF 管理和阅读文献。
- 在 Slack(公式支持)上与课题组或合作者讨论问题。
- 使用 Typora 和 LyX(镜像)做笔记和推导公式。
- 使用 VS Code 扩展
Jupyter
和LaTeX Workshop
进行 Python 编程和论文写作。
以下具体展开我的工作流程。
确定课题
首先,强烈推荐使用同步云软件存储资料,以防电脑故障或者丢失。我的科研文件夹分成了以下几类:大纲、资源、笔记、工作、报告和教学。我在大纲中确立科研的目标和方向,一旦有想法就记录下来,由此确定课题。我收集的资源大概包括别人写的程序、演示文稿和教材讲义,文献也存放在这里。工作文件夹中的每一个课题都有对应的 GitHub 私人仓库,对该课题的笔记、论文、程序等进行版本控制。
管理和阅读文献
做科研首先是阅读文献,因此有效地管理文献至关重要。目前文献管理软件层出不穷,功能大同小异,基本包含了导入文献信息和导出引用格式这两个功能。由于 EndNote 太贵,Mendeley 太丑,Citavi 太强,我最终选择了免费开源、界面舒服、功能适中的 Zotero。它拥有丰富的插件,而且插件后缀 .xpi
与火狐浏览器的相同;也就是说,对火狐浏览器的插件稍加修改就可以直接应用到 Zotero 中。我的习惯是将所有文档放在同一个云盘目录中,这样不管在哪一个设备中都可以方便查询和编辑。但 Zotero 默认在 storage
文件夹中为每一个文档单独建立一个子文件夹,看起来非常凌乱。为此安装一个重要插件 ZotFile,用于管理附件和自动重命名等。安装插件的方式是点击 Tools - Add-ons
,将下载好的插件拖放进去。安装好之后,点击菜单栏 tools - ZotFile Preferences
对 ZotFile 进行如下设置:
在
Source Folder Attaching New Files
中选择文档的存储路径(位于云盘中)。在浏览器中查看论文,可以通过官方扩展添加 PDF 文件到 Zetero,此时 ZotFile 会自动对其重命名和保存到该路径中。若是通过本地添加文件,Zotero 依然会默认将其保存到
storage
文件夹中。可以在Location of Files - Custom Location
中选择了上述路径。平时在添加本地文件后,右键选取该条目,点击Manage Attachments - Rename and Move
,手动令 ZotFile 重命名附件并移动到上述路径。这个操作支持批量处理,即可以全选,右键批量重命名和移动。确保所有的文件都在同一个目录中,平时可以使用平板和手写板看论文和做笔记。
右键选取条目,点击
Manage Attachments - Send to Tablet
,会自动复制该文档到tablet
文件夹中。对tablet
中的文档做笔记、加批注等。阅读完一篇文献后, 在 Zotero 左侧的Tablet Files
选取,右键点击Manage Attachments - Get from Tablet
,附件会重命名为*_annotated
,并移动到原文献路径。具体如下图所示:在上述设置中,源文件与笔记互不影响。但需要注意的是,对同一个文档只能进行一次这样的操作,因为下次操作会覆盖之前的操作,令上次的笔记丢失!因此,要么不进行
Get from Tablet
操作,让笔记保留在tablet
文件夹中;要么在完全消化一篇文章后,再递回源目录。设置重命名规则
高级设置
其他常用的插件有:
- Markdown Here:将笔记替换成 Markdown 格式的文本。选中笔记,点击菜单栏
File -> Markdown Toggle
即可。 - Better BibTeX for Zotero:管理书目数据,自定义 BibTeX 导出规则。
- Jasminum:中文元数据支持。
- Zotero Storage Scanner:通过扫描存储来识别损坏和重复的附件。
- Zotero Citation Counts Manager:自动从 Crossref、inSPIRE 和 Semantic Scholar 抓取引用次数。
- 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 中安装 Python
和 Jupyter
扩展就可以工作了。
个人觉得 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 是很强大的一个记忆软件,拥有丰富的插件,我只用到其中的 AnkiConnect 和 GD2Anki。使用流程是:点击陌生词汇按 Ctrl + C + C
快捷键,GoldenDict 会自动在相应的词典中查询,同时会把该词汇同步到 Anki 的记忆卡片中,通过记忆卡片和记忆曲线背单词。
资料多了就需要聚合,有趣的网页也需要适时剪藏,以免变成 404。印象笔记就是一款很好的剪藏和建立个人知识库的软件,只是,它现在已经变成印象广告了。作为替代,Trilium Notes 不仅开源、无广告还可以剪藏网页,建立连接图(Link map),高度定制页面和功能,以及部署在服务器等。但功能强大也意味着更多的学习成本。如果只是需要剪藏和编辑网页内容,那更方便的是安装浏览器插件 MarkDownload - Markdown Web Clipper
,直接将网页转换成 Markdown 格式,并下载到本地。默认是通过网络链接显示图片,为了避免将来出现死链无法显示图片(这是常有的事!),可以在扩展选项中设置保存图片到本地,建议和 Typora 的图片设置保持一致。
在 2021 年 5 月底发布的 Win 11 预览版支持在资源管理器中直接查看 WSL 目录。 ↩︎