笔记的字段(Fields)和模板(Templates)—— Anki 的"数据 + 视图"架构
字段 = 存什么
字段(Fields) 是笔记的"列"——每条笔记的字段数和字段名由笔记类型固定。
"基础"笔记类型有两个字段:正面、反面。每条笔记在这两个字段里填内容,就是一条完整记录。
可以做的字段操作
在 管理笔记类型 界面(活动栏更多菜单 → 管理笔记类型),每个笔记类型的字段区域支持:
| 操作 | 作用 | 影响 |
|---|---|---|
| 新增字段 | 加一列新的空字段 | 所有现有笔记会多一个空列,可以后续填内容 |
| 删除字段 | 删一列 | 字段里的内容从所有笔记中消失,不可逆 |
| 重命名字段 | 改字段名 | 数据不丢,但模板里引用旧名的地方需要同步修改 |
| 调整顺序 | 改变字段的上下排列 | 只影响添加笔记界面的显示顺序,不影响模板渲染 |
⚠️ 删字段前务必导出备份。Anki 不会二次确认,删了就是删了。
字段内容支持什么
字段里能放的内容:
- 纯文本
- HTML(部分标签)
- LaTeX / MathJax 数学公式(用
$$...$$包裹) - 图片标记
<img src="xxx.jpg"> - 音频标记
[sound:xxx.mp3] - Cloze 挖空标记
{{c1::内容}}
模板 = 怎么展示
模板(Templates) 定义了卡片正面和反面分别显示什么。它引用字段内容,拼合成一张卡片的正面和反面。
模板的基本语法
模板里用 {{字段名}} 来表示"这里填充这个字段的内容"。比如"基础"笔记类型的模板大概长这样:
卡片正面模板:
{{正面}}
卡片反面模板:
{{FrontSide}}
<hr id=answer>
{{反面}}
{{正面}}= 插入"正面"字段的内容{{FrontSide}}= 插入这张卡的正面渲染结果(内置变量)<hr id=answer>= 一条分隔线(Anki 约定的分隔符)
常见模板内置变量
| 变量 | 含义 |
|---|---|
{{字段名}} | 插入指定字段内容 |
{{FrontSide}} | 插入卡片正面(用于反面) |
{{BackSide}} | 插入卡片反面(用于正面,较少用) |
{{Tags}} | 插入笔记的所有标签 |
{{NoteType}} | 插入笔记类型名称 |
{{Deck}} | 插入所属牌组名称 |
条件语法
模板支持条件语法:
{{#字段名}}
只有当字段不为空时才显示这段内容
{{/字段名}}
{{^字段名}}
只有当字段为空时才显示这段内容
{{/字段名}}
AnkiDroid 里改模板 vs 桌面版
AnkiDroid 里可以在卡片模板预览对话框里编辑模板源代码,但:
- 没有实时预览(改完要点保存才能看到效果)
- 没有语法高亮
- 不能在手机上舒服地写 HTML
强烈建议模板编辑都在桌面版 Anki 上做——桌面版有实时预览面板、语法高亮、字段选择器。改完后同步到手机,AnkiDroid 会自动用新模板渲染所有卡片。
什么时候需要自定义模板
- 想加一个"自定义反面"(比如在卡片反面多显示一个例句)
- 想调整卡片的布局(两栏、居中、添加 CSS 样式)
- 想在卡片上显示标签 / 牌组名等元信息
- 想嵌入 JavaScript 做动态效果(比如点击隐藏答案)
简单的模板改动(比如在反面多加一个字段引用)在 AnkiDroid 里就能完成;复杂的布局和样式建议桌面版上做。