打包的牌组

原 文:Packaged Decks - Anki Manual (ankiweb.net)

Anki 包文件(.apkg 文件)使你能够从其他用户处导入牌组、笔记、笔记模板和卡片。它们通常在 AnkiWeb 上分享。

计划安排

Anki 包文件也可能包含计划信息,这在你想在设备或个人资料之间转移牌组时非常有用。然而,当导入由他人分 享的牌组时,你通常不希望采用他们的卡片间隔或复习历史。

如果你遇到间隔异常大的导入卡片,牌组作者可能意外包含了他们的计划信息。你可以使用 设置到期日期功能来重置导入的卡片。在 Anki 23.10 及更高版本,你可以在导入过程 中取消选择「导入任何学习进度」选项,以移除任何计划信息。这也会移除导入卡片上的任何「不好」或「标记」 标签。

更新

当你导入 .apkg 文件时,Anki 会识别出由于先前的导入,文件中已存在于你的集合的任何笔记。如果文件中的笔 记比你的本地副本更新,默认情况下笔记将用文件的内容更新。

如果笔记模板发生了变化(例如,如果你或牌组作者对笔记模板做了额外字段的添加等操作),通常无法进行此更 新过程。你仍然可以从文件中导入任何缺失的笔记,但如果牌组作者进行了更改,则你之前导入的笔记将不会更 新。

Anki 23.10 及更高版本

Anki 23.10 引入了更大的灵活性:你可以选择无条件地更新笔记和笔记模板,总是覆盖你的修改,或者,另一种 方式,永远不更新现有的对象。

此外,如果你和牌组作者都修改了相同的笔记模板,你现在可以决定「合并」这两个版本。这将保留两个版本中的 所有模板和字段,但需要完全同步,并可能标记其他现有笔记为已修改。

对牌组作者的说明

合并依赖于模板和字段 id,这在 Anki 2.1.67 中引入。如果模板或字段缺少 id,因为它是在早期版本中创建 的,Anki 会尝试通过比较名称找到等效项。

请参阅这个插件,了解为何共享具有字段和模板 id 的笔记类 型是有利的,以及如何将它们添加到现有的笔记模板中。

适用于 Anki 2.1.66 及更早版本的解决方法

如果你知道牌组作者进行了更改,并希望获得这些更改,虽然可以更改回笔记模板,但相当困难。你需要执行以下 操作:

  • 创建一个新的配置文件,并将 .apkg 文件导入其中。
  • 在浏览界面中定位一个未能更新的笔记并选择它。
  • 使用「字段和卡片」按钮检查字段名称和卡片模板名称,并记下它们。
  • 使用调试控制台确定笔记模板 id。它将在最后一行 显示。
nt = bcard().note().note_type()
print("notetype", nt["name"], "has id", nt["id"])
  • 返回到你的正常配置文件,定位相同的卡片并选择它。在调试控制台中运行以下命令,将 xxx 替换为你上面 获得的 ID:
nt = bcard().note().note_type()
print("current:", nt["name"], "has id", nt["id"])
nt = mw.col.models.get(xxx)
print("desired:", nt["name"], "has id", nt["id"])
  • 如果它打印出两个不同的笔记模板名称,你需要使用「更改笔记模板」操作将现有笔记的笔记模板更改为所需的 模板。

  • 然后你需要使用「字段和卡片」按钮检查字段和模板名称是否与测试配置文件中的匹配。它们必须精确匹配——不 能多也不能少,且拼写应相同。