😤 你是否遇到这些问题?
- 点击目录项没有任何反应
- 阅读器显示"目录为空"
- 扫描版 PDF 转换后根本没有目录
- 目录显示但跳转到错误位置
这是电子书转换中第二常见的问题(第一是封面丢失)。好消息是,它完全可以修复!
为什么 EPUB 目录会失效?
情况一:目录存在但点击无效
这是最常见的情况。原因通常是:
- 链接目标不存在:目录指向的锚点 ID 被删除或修改
- 文件名变化:转换时内部 HTML 文件被重命名
- NCX 文件损坏:导航控制文件格式错误
情况二:根本没有目录
常见于以下来源的文件:
- 扫描版 PDF 转换:OCR 只识别文字,不识别结构
- Word/TXT 直接转换:没有使用标题样式
- 老旧或非标准 EPUB:制作时没有添加目录
情况三:目录跳转位置不准确
点击后跳转到章节附近但不是准确位置:
- 锚点位置错误:目录链接指向的位置不准确
- 分页差异:不同阅读器的渲染方式不同
📖 EPUB 目录的工作原理
EPUB 实际上有两套目录系统:
- NCX 目录(toc.ncx):EPUB 2 标准,兼容性最好
- NAV 目录(nav.xhtml):EPUB 3 标准,功能更强
理想情况下两者都应该存在,以确保在所有阅读器上正常显示。
方法一:使用 Sigil 修复目录(推荐)
Sigil 是最强大的 EPUB 编辑工具,可以精确修复目录问题:
1打开 EPUB 文件
文件 → 打开,选择你的 EPUB
2检查现有目录
工具 → 目录 → 编辑目录,查看当前目录状态
3自动生成新目录
工具 → 目录 → 从标题生成目录
Sigil 会扫描所有 <h1>、<h2>、<h3> 标签自动创建目录
4手动调整(如需)
在目录编辑器中调整层级、删除不需要的项目
5保存文件
Ctrl+S 保存,Sigil 会同时更新 NCX 和 NAV
✅ Sigil 的优势
- 可视化编辑目录结构
- 自动同步两套目录系统
- 可以手动添加任意锚点
- 完全免费开源
方法二:使用 Calibre 重建目录
如果你已经在用 Calibre 管理电子书,可以通过转换来重建目录:
1导入 EPUB 到 Calibre
2右键 → 转换书籍 → 逐个转换
3设置目录选项
在"目录"标签页中:
- 勾选"强制使用自动生成的目录"
- 设置"一级目录"XPath:
//h:h1 - 设置"二级目录"XPath:
//h:h2
4输出格式选择 EPUB
点击确定开始转换
⚠️ Calibre 方法的限制
- 需要源文件有正确的标题标签
- 可能改变原有格式
- XPath 语法有学习成本
方法三:为扫描版 PDF 创建目录
扫描版 PDF 转换后通常没有目录,需要手动创建:
步骤 1:识别章节位置
浏览整本书,记录每个章节的起始位置(页码或百分比)
步骤 2:在 Sigil 中添加锚点
对于每个章节起始位置:
- 找到章节标题文字
- 选中标题,点击"插入 → ID"
- 输入唯一的 ID,如
chapter1
步骤 3:创建目录文件
工具 → 目录 → 编辑目录,手动添加每个章节:
- 填写章节名称
- 选择对应的 HTML 文件和锚点 ID
💡 省时技巧
如果原 PDF 有书签,可以尝试使用 PDF 编辑工具先导出书签列表,再根据列表快速创建 EPUB 目录。
常见目录问题及解决方案
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 目录显示但点击无反应 | 链接目标丢失 | 用 Sigil 重新生成目录 |
| 某些阅读器不显示目录 | 缺少 NCX 文件 | 用 Sigil 生成 NCX |
| 目录层级混乱 | 标题级别使用不当 | 在 Sigil 中手动调整层级 |
| 目录项太多/太少 | 生成规则不合适 | 调整 Calibre XPath 或手动编辑 |
| 跳转位置不准确 | 锚点位置偏移 | 手动检查并调整锚点 |
不同阅读器的目录显示对比
同一份目录在不同阅读器上可能表现不同:
| 阅读器 | NCX 支持 | NAV 支持 | 目录位置 |
|---|---|---|---|
| Apple Books | ✅ | ✅ | 顶部菜单 |
| 微信读书 | ✅ | ✅ | 底部目录按钮 |
| Kindle | ✅ | 部分 | "前往"菜单 |
| Kobo | ✅ | ✅ | 侧边栏 |
| 多看阅读 | ✅ | ✅ | 左滑菜单 |
预防目录问题:制作 EPUB 的最佳实践
如果你经常需要制作电子书,遵循以下建议可以避免目录问题:
- 使用正确的标题层级:书名用 H1,章节用 H2,小节用 H3
- 保持标题标签一致:全书使用相同的标题样式
- 测试目录功能:转换后在多个阅读器上测试
- 同时生成 NCX 和 NAV:确保最大兼容性
常见问题解答
Q: 为什么 Kindle 上目录正常,但其他阅读器不显示?
Kindle 主要使用 NCX 目录,而某些 EPUB 3 阅读器优先使用 NAV 目录。确保你的 EPUB 同时包含两种目录文件。
Q: 手动创建目录太麻烦,有没有更快的方法?
如果源文件有规律可循(如每章都以"第X章"开头),可以使用正则表达式在 Calibre 中批量识别章节。
Q: 修复后目录仍然不工作怎么办?
尝试用 epubcheck 工具验证 EPUB 文件是否有其他错误。有时目录问题是更大结构问题的表现。