# 页面引用（双向链接）

> 来源：https://www.wolai.com/wolai/... (页面引用)
>
> 实现状态：**数据层已实现，UI 层未完成**  ✅ `[[` 引用和双向链接的块类型存在  ❌ 用户端创建交互未实现

## 核心概念

两种页面组织方式：**层级**（父子关系）和**引用**（双向链接）。

页面引用是双向链接（bi-directional link）：A 引用了 B，则 B 页面下方会显示"引用的页面"列表。

## 创建方式

| 方式 | 操作 |
|------|------|
| `[[` 快捷输入 | 输入 `[[` 紧跟搜索词，定位到页面并创建引用 |
| `#` 快捷输入 | 空格后输入 `#` + 搜索词（类似标签）|
| 文本样式工具条 | 选中文本 → 工具条中 `[[` 图标 |
| 快捷键 | 选中文本 → `Ctrl/Cmd + Shift + R` |

## 预引用 & 创建新页面

使用工具条或快捷键时：
1. 匹配已有页面 → 直接引用
2. 无匹配 → 弹出选项：
   - **创建新页面"xxx"**：直接创建
   - **预引用**：创建"准备状态"引用，标题后显示 "(创建)"，点击后弹出"创建页面"或"取消引用"

## 引用预览和别名

- 鼠标悬浮行内页面引用可预览
- 预览小窗顶部可设置别名（最长 100 字），别名后显示小箭头

---

## mnote 实现状态

### ✅ 已实现
| 功能 | 证据 |
|------|------|
| 页面引用块类型 | `EditorBlockType::PageReference`（`editor/model.rs:20`）|
| 块引用块类型 | `EditorBlockType::BlockReference`（`editor/model.rs:21`）|
| 引用标记策略 | `ReferenceTokenStrategy::{DoubleBracket, DoubleParen, InlineChip}`（`editor/model.rs:26-30`）|
| AI 工具中的引用创建 | `mnote.block.insert_after` 等 Herem 工具可操作引用块 |

### ❌ 未实现
| 功能 | 说明 |
|------|------|
| `[[` 快捷输入创造引用 | 用户端 `[[` → 搜索 → 引用流程未实现 |
| `#` 快捷输入 | 未实现 |
| 选中文本 → 工具条 → 创建引用 | 文本工具条无引用按钮 |
| 预引用 & 创建新页面 | 无 "预引用"行为 |
| 引用预览/别名 | 无 |
| 被引用页面的"反向引用"列表 | 无页面底部的引用列表 |
