进阶能力
本章介绍书砚的专业导出 / 导入能力,以及编辑器内置的 Markdown 快捷插入与预览——这些能力插件同样可以调用。
导出功能:TXT
书砚支持导出和导入功能,可提供专业的 TXT、Markdown 输出格式,并具备智能导入功能。
封面与统计
开头自动生成书名、描述、总字数和导出日期,例如:
目录页
按卷分组 + 章节序号,导出时可开关(add_index)。
正文首行缩进
每段自动加 2 个全角空格( ),符合中文网文排版习惯。
附加内容(可开关)
尾部可追加人物库、地点库、物品库。每个条目只导出已有内容,空字段自动跳过。
导出 API
db.export_project_txt(project_id, export_path,
include_chars=True, # 附加人物库
include_locations=True, # 附加地点库
include_items=True, # 附加物品库
add_index=True) # 生成目录页
导出功能:Markdown
Markdown 导出比 TXT 更丰富,适合发布到博客 / 知识星球 / GitHub。
YAML Front Matter
文件头自动生成元数据区,静态博客引擎可以直接消费:
---
title: "修仙录"
description: "一个小和尚下山的故事"
chapters: 3
words: 55
created: 2026-10-02 11:36:24
exported: 2026-10-02
---
自动目录(TOC)
生成锚点链接的目录,按卷分组。add_toc=False 可关闭。
附加部分
人物库 / 地点库 / 物品库使用 Markdown 无序列表 + 粗体字段名,例如:
导出 API
db.export_project_md(project_id, export_path,
include_chars=True,
include_locations=True,
include_items=True,
add_toc=True)
智能导入 TXT
从网文网站复制回来的 TXT,通常包含「第X章」这种章节关键字。书砚可以自动拆分:
- 检测文件中是否有 ≥ 2 处
第[一二三...\d]+[章节回卷部]关键字 - 有 → 弹确认框让用户选「拆分」或「单章」
- 拆分模式下,每个章节关键字变成独立章节;前言部分自动命名为「前言」
# 强制拆分
db.import_txt(project_id, file_path, smart_split=True)
# 关闭拆分(整文件塞成一章)
db.import_txt(project_id, file_path, smart_split=False)
vol_map = {v['id']: v['name'] ...},100 章导出从约 200ms 降到 < 10ms。导出界面在「文件 → 导出为 TXT / Markdown」,每次导出会先弹一个选项对话框,让你勾选附加内容和目录。Markdown 快捷插入(📝 MD 菜单)
码字时如果想插入 Markdown 语法,不用手动敲——工具栏最右侧有一个 📝 MD 下拉按钮。位置在 EditorPage 工具栏末尾(📝 MD 按钮,点一下展开菜单)。
| 分类 | 菜单项 | 语法 / 说明 |
|---|---|---|
| 📌 标题 | H1 一级 | # |
| H2 二级 | ## | |
| H3 三级 | ### | |
| H4 四级 | #### | |
| 行内样式 | **粗体** | 包裹选中文字 |
| *斜体* | 包裹选中文字 | |
| ~~删除线~~ | 包裹选中文字 | |
| `行内代码` | 包裹选中文字 | |
| 列表 & 引用 | - 无序列表 | 选多行时每行前都加 - |
| 1. 有序列表 | 同上,每行加序号 | |
| > 引用 | 同上 | |
| 链接 & 图片 | 🔗 链接 | [text](url) 并自动选中 url 待填 |
| 🖼 图片 |  | |
| 其他 | ``` 代码块 | 选中内容会被包进 ``` |
| | 表格 | | 插入 3×3 模板 | |
| --- 分割线 | 插入 --- |
智能行为
有选中文本时:
- 粗体 / 斜体 / 删除线 / 行内代码:用标记直接包裹选中内容
- 链接:
[选中的字](url),然后自动选中 url 让你填 - 无序列表 / 有序列表 / 引用:选中多行时每行前都加前缀
- 代码块:选中内容包进 ``` 里
没有选中文本时:
- 包裹型语法会插入占位符并自动选中,你直接打字就替换了
- 块级语法直接在当前行行首加前缀
- 链接 / 图片会生成模板并把光标定位到 url 部分
Editor 内置 API(插件可用)
所有 MD 方法都定义在 NovelEditor 类里,插件可以直接调用:
# 插件里拿到 editor 后
api.editor.md_h3() # 插入 ###
api.editor.md_bold() # 包裹粗体
api.editor.md_quote() # 行首加 >
api.editor.md_wrap('==', placeholder='高亮') # 自定义包裹语法
# 三个底层通用方法
editor.md_wrap(prefix, suffix=None, placeholder='')
editor.md_line_prefix(prefix) # 行首/多行加前缀
editor.md_insert_line(text) # 在行尾插入一行
默认没有绑定快捷键(避免与输入法冲突),可以在插件里用 api.add_menu('编辑', '插入 H3', lambda: api.editor.md_h3(), 'Ctrl+Shift+3') 绑定。
_html_to_plain_indent 转换成带缩进的纯文本。如果需要 HTML 渲染效果,建议用「导出 Markdown」功能生成最终稿。右键菜单汉化 + Markdown 预览
右键菜单全中文
书砚编辑器(NovelEditor)的右键菜单已完全汉化,不再出现默认的英文 Cut / Copy / Paste。菜单结构如下:
- ↶ 撤销 Ctrl+Z(无操作时自动禁用)
- ↷ 重做 Ctrl+Y(无操作时自动禁用)
- ✂ 剪切 Ctrl+X(未选中时禁用)
- 📋 复制 Ctrl+C(未选中时禁用)
- 📌 粘贴 Ctrl+V(剪贴板空时禁用)
- ☑ 全选 Ctrl+A
- 📝 Markdown 插入 ▸(子菜单)
- 👁 Markdown 预览
Markdown 预览
编辑器内置了一个极简的 Markdown预览功能,支持网文常用语法,可以:
- 工具栏 → 📝 MD → 👁 Markdown 预览
- 编辑器右键 → 👁 Markdown 预览
预览窗口支持「🔄 刷新」和「关闭」。
| 语法 | 示例 |
|---|---|
| 标题 | # / ## / ### / #### |
| 粗体 | **文字** 或 __文字__ |
| 斜体 | *文字* 或 _文字_ |
| 删除线 | ~~文字~~ |
| 行内代码 | `code` |
| 无序列表 | - / * / + |
| 有序列表 | 1. / 2. / 3. |
| 引用 | > 引用文字 |
| 分割线 | --- / *** / ___ |
| 链接 | [文字](url) |
| 图片 |  |
| 代码块 | ``` ... ``` |
| 表格 | | 列1 | 列2 | |
| 段落 | 普通文本 |
预览功能不依赖任何第三方库,仅用 Python 标准库 re 模块实现。如果你想要扩展新语法,请查阅