---
name: markji-cards
description: 墨墨记忆卡（Markji）卡片文本的标记语法与排版样式说明。涵盖答案线、挖空、选择题、行内/段落样式、KaTeX 公式、发音、卡片引用、图片遮罩等标签的写法与限制，并附制卡质量原则。当用户询问墨墨卡片语法、标记写法、排版样式，或需要按规范撰写、检查墨墨卡片文本时使用。本技能只提供文本语法依据，上传素材、创建/导入卡片等实际操作需搭配墨墨 API、浏览器或其他相应技能完成。
metadata: {"author":"tianfangyetan1"}
---

# 墨墨记忆卡 · 卡片文本语法与样式说明

「墨墨记忆卡」是一款使用间隔重复（SRS）的卡片记忆软件，卡片内容用「纯文本 + 标记标签」书写。本文档是这套卡片文本的**标记语法与排版样式规范**：说明每种标签的写法、限制与排版建议，并附制卡质量原则。

> **搭配使用**：本文档只解决「卡片文本怎么写」，本身不完成任何实际操作。涉及具体动作时需搭配其他 agent 工具/技能——图片、音频、遮罩的上传与取 id 需调用墨墨 API 类工具；卡片的实际创建、导入、牌组管理需借助墨墨 API、浏览器自动化或其他相应技能。本文仅提供这些操作中文本部分的语法依据（如 `[Pic#ID/…#]`、`[Audio#ID/…#]`、`[Card#ID/…#]` 的写法与占位符约定）。

---

## 一、复习时的呈现机制（决定排版顺序，务必理解）

复习一张卡片时，用户**点击任意位置**逐步揭示答案。系统从上到下，每次揭示**下一个可交互元素**的答案。可交互元素有四类，各算一个：

- 一个挖空 `[F#…#…]`
- 一个选择题 `[Choice#…#…]`
- 一条答案线 `---` 下方的答案
- 一张带遮罩的图片 `[Pic#…,MID/…#]`（整张图的遮罩算**一个**，见 §二第 9 小节）

全部元素揭示完后，提示用户选择记忆状态（**认识 / 模糊 / 忘记**），然后进入下一张卡片。

含义：**元素出现的先后顺序 = 揭示顺序**。设计卡片时要让"先看到的提示 → 后揭示的答案"这一顺序符合记忆逻辑（先给线索，再给答案）。同一张卡片放太多互相独立的元素会让揭示过程冗长，违背"最小信息原则"（见制卡原则）。

注意：行内样式 `[T#…]`、段落 `[P#…]`、公式 `[E##…]`、发音 `[Audio#…]`、引用 `[Card#…]`、以及**无遮罩**的图片 `[Pic#…]` 只负责显示，**不是可交互元素**，不会触发揭示步骤，从一开始就直接可见（发音可设置为自动播放、引用可点击跳转，但都不占用揭示顺序）。

**每张卡片必须自洽**：卡片是随机抽取、逐张复习的——复习时只看得到当前这一张卡片，看不到原本牌组中的其他卡片。因此每张卡片都必须自带理解和作答所需的全部背景信息。

---

## 二、元素语法速查

### 1. 答案线（题目 / 答案）

题目和答案用单独一行的 `---` 分隔：

```
共同进化的定义是什么？
---
不同物种之间、生物与无机环境之间在相互影响中进化发展。
```

复习时先显示题目，点击后揭示 `---` 下方的答案。

### 2. 文字挖空 `[F#分组#文字]`

- 基础写法：`[F##文字]`，被挖掉的文字复习时隐藏，点击揭示。
- 在两个 `#` 之间填**整数**作为分组：点击其中一个挖空时，**同分组的所有挖空一起揭示**。
- 分组在**每张卡片内独立**计算；新建时默认从 `1` 开始编号（虽支持负数，但为了好理解一般用正整数）。

```
光合作用的场所是[F#1#叶绿体]，呼吸作用的主要场所是[F#2#线粒体]，二者都属于[F#1#双层膜]细胞器。
```

上例中"叶绿体"和"双层膜"同属分组 `1`，点击任意一个会同时揭示这两处；"线粒体"属分组 `2`，单独揭示。

**重要：分组数字不代表复习时的揭示顺序。** 复习时永远按挖空在文本中**从上到下的位置顺序**逐个揭示，分组只决定"哪些空一起亮"。分组编号纯粹是为了书写和维护方便，习惯上按出现先后从小到大填，但你完全可以让分组 `2` 排在分组 `1` 前面而不影响揭示顺序。

**挖空内容只支持纯文本**：`[F#…#…]` 里**不能再嵌入任何行内样式（如 `[T#…]`）或公式（`[E##…]`，行内、块级都不行）**，写了也不会生效。需要被挖的若是公式或带样式的内容，改用别的方式处理（例如把公式整体作为答案线 `---` 的答案，而非挖空）。

**挖空的复习外观**：未揭示时挖空处显示为**绿色下划线**（文字隐藏），揭示后显示为**绿色文字＋下划线**。因此排版时**避免对其他文本使用「绿字＋下划线」样式**（如 `[T#U,!36b59d#…]`），否则复习时容易被误认为已揭示的挖空，造成困扰。想强调文字可改用绿色高亮、其他颜色或加粗。

挖空是把课本句子快速转成卡片最高效的方式（见制卡原则第 5 条）。

### 3. 选择题 `[Choice#参数#…]`

`*` 开头是**正确选项**，`-` 开头是**错误选项**：

```
下列哪项是细胞膜的主要成分？
[Choice##
* 磷脂
- 纤维素
- 几丁质
- 淀粉
]
```

参数（写在两个 `#` 之间，逗号分隔）：

- 默认会**随机打乱**选项顺序。
- `fixed`：关闭乱序，按书写顺序显示。
- `multi`：多选（标记多个 `*`）。
- 二者可同时用：`[Choice#fixed,multi#ELEMENTS]`。

```
[Choice#fixed,multi#
* 正确选项
* 正确选项
- 错误选项
- 错误选项
]
```

选项顺序固定有意义（如时间/大小排序）时用 `fixed`；答案不止一个时用 `multi`。

**`ans` 参数（主要给自动化脚本用）**：`ans/字母` 用按书写顺序排列的选项字母（`A`/`B`/`C`…）直接指定答案。**提供 `ans` 时以它为准，会覆盖选项里的 `*` 标记**（此时选项一般全写成 `-`）。多选连写多个字母，如 `ans/ABC`。

```
下午茶是什么？
[Choice#ans/A#
- 墨墨记忆卡 CEO
- 应急食品
- 宠物而已
- 一种传统活动
]
```

由于默认会随机打乱选项顺序，所以**手写卡片时一般不用 `ans`**，仍用 `*`/`-` 标记；`ans` 是为批量生成脚本提供的便捷写法。

### 4. 行内样式 `[T#参数#文字]`（字形 / 颜色 / 高亮 / 链接）

`T#` 是统一的**行内**样式标签，参数写在两个 `#` 之间，可用逗号任意叠加：

- `B`：加粗，如 `[T#B#加粗]`
- `U`：下划线，如 `[T#U#下划线]`
- `I`：倾斜，如 `[T#I#倾斜]`
- `D`：删除线，如 `[T#D#删除线]`
- `up`：上标，如 `[T#up#上标]`
- `down`：下标，如 `[T#down#下标]`
- `!十六进制`：字体颜色（单 `!`）
- `!!十六进制`：高亮背景色（双 `!!`）
- `link/"网址"`：网页链接，网址用英文双引号包住，如 `[T#link/"https://example.com"#链接文本]`，点击文字可打开链接

单 `!` 是字体颜色，双 `!!` 是高亮，别混淆。以上开关可任意组合，例如绿字＋浅绿高亮 `[T#!36b59d,!!c5f1c0#重点]`，再加粗就是 `[T#B,!36b59d,!!c5f1c0#重点]`；又如加粗下划线 `[T#B,U#关键术语]`。

**优先使用这 7 种系统内置色**（颜色值直接写 6 位十六进制；字体用左列深色，高亮用右列浅色）：

| 颜色 | 字体色（`!`） | 高亮色（`!!`） |
|------|--------------|----------------|
| 红 | d16056 | fbc0bc |
| 橙 | dc7705 | fedcb6 |
| 黄 | eb9e27 | fff895 |
| 绿 | 36b59d | c5f1c0 |
| 蓝 | 275bd1 | cfdeff |
| 紫 | 5c2fa6 | dbc9fb |
| 灰 | 90959b | e5e6ea |

写法示例：`[T#!d16056#红字]`、`[T#!!fff895#黄底]`。

**两条关键限制（务必遵守）：**

1. **行内样式里不能包含挖空** `[F#…#…]`（段落样式 `[P#…]` 则可以）。若要给一段带样式的文本挖空，把挖空**前后**的文本各自拆成独立的 `[T#…]`，挖空夹在中间。例如想让整句染绿、但只挖"叶绿体"：

   ```
   [T#!36b59d#光合作用的场所是][F##叶绿体][T#!36b59d#，需要光照]
   ```

2. **行内样式不能自嵌套**——一个 `[T#…]` 里不能再套另一个 `[T#…]`。若想在已有样式的局部再叠加样式，拆成**三个**独立的 `[T#…]`：前段、要叠加样式的中段、后段，中段把所有样式一次写全。例如整句绿字，其中"叶绿体"再加粗：

   ```
   [T#!36b59d#光合作用的场所是][T#B,!36b59d#叶绿体][T#!36b59d#，需要光照]
   ```

   中段 `[T#B,!36b59d#…]` 把"加粗＋绿字"一次写全，而不是嵌套。

### 5. 段落样式 `[P#参数#整行内容]`（块级，必须整行使用）

`P#` 是**块级**段落标签，**必须独占一整行**，不能嵌在句子中间。参数可逗号组合：

- `H1`：标题
- `center`：居中
- `L`：无序列表的一项（每个 `[P#L#…]` 渲染成一个项目符号）

```
[P#H1#本章标题]
[P#center#居中的一句话]
[P#L#无序列表第一项]
[P#L#无序列表第二项]
```

**系统不内置有序列表语法**，需手动写序号。墨墨主题色是绿色 `#36b59d`，因此**优先用绿色作为序号文字的颜色**：

```
[T#!36b59d#1.] 有序列表第一项
[T#!36b59d#2.] 有序列表第二项
```

**嵌套规则**：段落标签 `[P#…]` 里可以再放行内标签 `[T#…]`，也可以放挖空 `[F#…]`；但行内标签之间不能互嵌，行内标签里也不能放挖空（见上一节的两条限制）。例如：

```
[P#H1,center,L#前缀[T#B,!36b59d,!!c5f1c0#重点片段]后缀]
```

表示一个"标题＋居中＋列表项"的段落，其中"重点片段"被加粗、染绿字、加浅绿高亮，前后为普通文本。

### 6. 公式 `[E##公式]`（KaTeX，非 LaTeX）

```
[E##(\sin x)'=\cos x]
```

公式用 **KaTeX** 渲染（不是完整的 LaTeX），只能使用 KaTeX 支持的函数与符号，支持范围见 <https://katex.org/docs/supported.html>。数学/物理/化学的公式、希腊字母、上下标等用它，避免用纯文本拼凑导致歧义；不确定某个命令是否可用时，以该支持列表为准。

**公式分块级和行内两种用法，语法相同**：

- **块级公式**：`[E##…]` 单独成行、行首无缩进时渲染为整行的块级公式。
- **行内公式**：写在句子中间时随文字流式排版，例如：

  ```
  这是一条 [E##1+1=2] 行内公式
  ```

行内公式适合短小、随句阅读的式子；**占用空间较大的公式（分段函数、矩阵、多行推导等）仍建议用块级公式**，方便在手机上阅读。

### 7. 发音 `[Audio#参数#显示文本]`（行内）

```
[Audio#ID/3636,A#我爱北京天安门]
```

- `ID/` 后接发音文件的 id（需先通过墨墨 API 上传音频取得）。
- 两个 `#` 之间是参数（逗号分隔），右侧 `#…]` 是卡面上显示的文本。
- `A`：**遇到即自动播放**——复习到该卡时碰到此元素会立即发音；不加 `A` 则需点击显示文本才播放。
- 发音的显示文本**内部和外部都不能嵌套行内样式 `[T#…]`、挖空 `[F#…]` 或公式 `[E##…]`**。

**音频须先通过墨墨的 API 单独上传**拿到发音 id 后，才能在文本里用 `[Audio#ID/…#]` 引用（与图片同理，不能把音频文件直接写进文本）。若材料依赖发音（单词、古诗朗读等），先在文本里留下占位符，待通过 API 上传取得 id 后再补全。

### 8. 引用 `[Card#参数#显示文本]`（行内）

```
[Card#ID/7e01-7e02-7e01#查拉图斯特拉如是说]
```

- `ID/` 后接被引用卡片的 id；一个引用可**挂载多张卡片**，多个 id 之间用减号 `-` 连接（上例挂了三张）。
- 右侧 `#…]` 是显示文本，点击可跳转到被引用的卡片。
- 同发音一样，引用的显示文本**内部和外部都不能嵌套行内样式、挖空或公式**。

**被引用卡片的 id 需先实际创建出那张卡片才能取得**，无法在文本里凭空写出（与图片、音频同理）。若需要卡片间互链，先建好目标卡片拿到 id，再用 `[Card#ID/…#]` 引用；否则先留占位符，待卡片创建后补全。

### 9. 图片 `[Pic#参数#说明文本]`（块级）

图片需先通过墨墨的 **API 单独上传**拿到图片 id 后，才能在文本里用 `[Pic#…#]` 引用（不能直接把图片文件写进文本）：

```
[Pic#ID/3636,MID/2828#]
```

- `ID/` 后接图片 id。
- `MID/`（可选）后接图片**遮罩**文件的 id，用于遮挡图片的部分内容。
- 右侧 `#…]` 可填写一句简短的图片文字描述（类似 HTML `<img>` 的 `alt` 属性），如 `[Pic#ID/3636#细胞膜结构示意图]`；不需要时留空。
- 一行可并排多张图片：`[Pic#ID/3636#][Pic#ID/3637#]`。

**遮罩说明**：一张图片的遮罩可遮挡多个区域、点击分别显示；但在揭示机制里，整张图的遮罩算**一整个**可交互元素（见 §一）。若用默认的"点击任意处揭示"，会一次性揭示**所有**遮罩区域，因此复习时通常**手动逐个点击图片上的遮罩**来揭示。

### 其他说明

**块级元素（选择题 `[Choice#…#…]`、段落 `[P#…]`、图片 `[Pic#…#]`）必须独占一行，且行首不能有任何缩进（空格 / 制表符）**：一旦前面有缩进，墨墨就不会把它识别为块级元素，**不会渲染**，会原样当作纯文本显示。写这些元素时务必让标记顶格；**行内公式则不受此限**，可直接写在句子中间。**唯一例外是多张图片**：多张 `[Pic#…#]` 允许并排写在同一行（如 `[Pic#ID/3636#][Pic#ID/3637#]`）。

---

## 三、制卡质量原则（核心，决定卡片好不好用）

把材料切成卡片时，**不要简单地照抄"大段问→大段答"**。要遵循一套经实践检验的制卡原则，让卡片简短、好记、抗干扰。完整版见 `references/制卡20条原则.md`，**首次为用户做卡片、或材料较复杂时务必先通读它**。这里给出最常用的几条要点：

- **先理解再记**：不理解的材料不要做成卡片硬背；先建立整体框架，再拆成独立问答。
- **最小信息原则（最重要）**：一次复习只考一个最小知识点，问题短、答案更短。把一段复杂描述拆成多张极简卡片，而不是一张大卡。
- **多用挖空**：用 `[F##…]` 把课本原句直接转成卡，是最快且效果好的方式。
- **避免集合与枚举**：不要让一张卡要求"列出全部 X 项"。拆成多个带语义提示的小问，或用重叠式挖空逐段记忆（古诗文尤其适用）。
- **抗干扰**：相似内容容易混淆，措辞要清晰，必要时加上下文提示/标签消除歧义。
- **优化措辞**：删掉与答案无关的冗词，让大脑更快"点亮"目标。
- **善用例子与联想**：把内容和已知事物、个人经历、生动场景挂钩，显著缩短记忆时间。
- **标注来源与时效**：易变信息（统计数据、版本）加时间戳；但时间戳本身一般不作为要背的内容。

**参考文档示例的写法 → 墨墨语法**（`references/制卡20条原则.md` 里的例子用"问/答"和省略号占位表述，转成墨墨时照此映射）：

| 参考文档中的写法 | 墨墨写法 |
|------------------|----------|
| 用省略号 `[...]` 标记的单个挖空 | `[F##文字]` |
| 多处需要一起揭示的挖空 | 同分组 `[F#1#A]…[F#1#B]` |
| 问 / 答 两段 | 题目 + `---` + 答案 |

> 注意：墨墨的挖空只用 `[F#分组#文字]` 这一种写法。不要写成其他记忆软件的挖空格式，墨墨不识别，会原样显示。

---

## 四、完整示例

把下面这段课本内容转成墨墨卡片：

> 罗伯特森用电子显微镜观察到细胞膜暗-亮-暗的三层结构，提出细胞膜"蛋白质-脂质-蛋白质"三层结构模型。

**坏做法**（一张大卡，违背最小信息原则）：

```
罗伯特森的主要贡献是什么？
---
用电子显微镜观察到细胞膜暗-亮-暗的三层结构，提出蛋白质-脂质-蛋白质三层结构模型。
```

**好做法**（拆成四张挖空卡，每张独立成卡，问短答更短）：

```
[F##罗伯特森]用电子显微镜观察到细胞膜暗-亮-暗的三层结构，提出蛋白质-脂质-蛋白质三层结构。
```

```
罗伯特森用[F##电子显微镜]观察到细胞膜暗-亮-暗的三层结构，提出蛋白质-脂质-蛋白质三层结构。
```

```
罗伯特森用电子显微镜观察到细胞膜[F##暗-亮-暗]的三层结构，提出蛋白质-脂质-蛋白质三层结构。
```

```
罗伯特森用电子显微镜观察到细胞膜暗-亮-暗的三层结构，提出细胞膜[F##蛋白质-脂质-蛋白质]三层结构。
```

**古诗文（重叠式挖空，避免整段枚举；两句各成一张卡）**：

```
环滁皆山也。[F#1#其西南诸峰，林壑尤美，望之蔚然而深秀者，琅琊也。]
```

```
[F#1#环滁皆山也。]其西南诸峰，林壑尤美，望之蔚然而深秀者，琅琊也。
```

---

## 五、自检清单

撰写卡片文本后，逐项核对：

1. **标签闭合**：每个 `[F#…#…]` / `[Choice#…#…]` / `[T#…#…]` / `[P#…#…]` / `[E##…]` / `[Audio#…#…]` / `[Card#…#…]` / `[Pic#…#]` 都正确闭合，方括号成对（含嵌套时的内外两层）。
2. **选择题**：用 `*` 标记答案时至少一个 `*`（多选才有多个 `*`）；提供 `ans/字母` 时以 `ans` 为准、会覆盖 `*`（一般选项全写 `-`）；需要固定顺序加 `fixed`。`ans` 一般只在自动化脚本里用。
3. **最小信息**：没有"列出全部 N 项"式的大卡；长答案已拆分或改成挖空。
4. **每张卡片自洽**：复习时随机抽取、只看得到当前这一张，看不到原先牌组中的其他卡片；确保作答所需的背景信息（前提、限定条件、所属主题）都已写进卡片本身，没有依赖前后卡片或材料顺序。
5. **挖空纯文本且不在行内样式内**：`[F#…#…]` 内没有嵌 `[T#…]`/`[E##…]`；挖空也没有被写进 `[T#…]` 里（需要时拆成"前段 T ＋ 挖空 ＋ 后段 T"）。
6. **嵌套合法**：只有段落 `[P#…]` 能包住行内 `[T#…]` 或挖空 `[F#…]`；行内 `[T#…]` 之间没有互相嵌套（叠加样式时拆成三段、中段写全样式）。
7. **块级元素顶格独占整行**：`[Choice#…#…]`、`[P#…#…]`、`[Pic#…#]` 都单独成行、行首无缩进（有缩进会被当纯文本不渲染），没有写在句子中间；唯一例外是多张图片 `[Pic#…#]` 可并排在同一行。
8. **有序列表序号染色**：手动序号优先用绿色 `[T#!36b59d#1.]`。
9. **颜色取值**：尽量用 7 种内置色；单 `!`（字体）与双 `!!`（高亮）没搞反；没有对普通文字使用「绿字＋下划线」（会与未揭示挖空的绿色下划线外观混淆）。
10. **图片走引用**：图片只用 `[Pic#ID/…#]` 引用已上传的 id，不能直接插入文件；带遮罩的图片记得它在揭示里算一个可交互元素，图片与遮罩都需走 API 上传取得 id。
11. **公式用 `[E##…]`**而非纯文本拼凑。
12. **发音 / 引用不嵌套**：`[Audio#…]`、`[Card#…]` 的显示文本内外都没有套行内样式、挖空或公式；引用多卡时 id 用 `-` 连接。
13. **音频 / 卡片链接走引用**：和图片一样，音频与卡片链接不能直接写进文本——音频 id 需先走 API 上传、卡片 id 需先实际建卡取得；文本里只能用 `[Audio#ID/…#]` / `[Card#ID/…#]` 引用已有 id，否则留占位符提醒后续补全。
