最近新写了个在 Emacs 中制卡的包,个人觉得挺好用的,和大家分享一下。
仓库地址:GitHub - Elilif/emacs-anki-helper: Manage your Anki cards in Emacs.
Features (具体内容详见 为什么用 anki-helper )
- 同步速度快
以 以仓库中的 headings.org 为例, org-anki 和 anki-helper 同步和删除所有卡片( 422张)的时间对比如下:
| | (benchmark 1 '(xxx-sync-all)) | (benchmark 1 '(xxx-delete-all)) |
|-------------+-----------------------------------+-----------------------------------|
| org-anki | 123.855104s (35.423518s in 5 GCs) | 150.862886s (21.709634s in 8 GCs) |
| anki-helper | 0.410945s | 0.098308s |
- 制卡灵活
anki-helper 可以自定义获取卡片对应字段内容的函数,而不仅仅局限于 entry ,理论上支持任何形式的文本和任何自定义的卡片类型。
- 支持多媒体内容
anki-helper 会自动将链接形式的媒体文件复制到 Anki 的媒体目录下
- 不会破坏原始内容
对于 Cloze 类型的卡片来说,常规的做法是使用 {{cn:xxx}} 这种形式,但是这会破坏原有内容,不利于其他操作。这其实是一种变相的专有化。
Anki-helper 使用 org-mode 内置的富文本标记来作为完形填空的标志,假设有以下文本:
*Canberra* was founded in *1913*.
在制卡的过程中,它会变成如下格式:
{{c1::Canberra}} was founded in {{c2::1913}}.
我认为这样是符合直觉的,因为你强调的部分往往是你想要记住的部分。
- misc
Anki-helper 提供一些有用的函数和 API 来帮助您自定义制卡
5.1 交互式制卡
5.2 双向跳转