KOReader目录功能教程:三步打开电子书目录,页码乱了它还能自己修
【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader
几百页的扫描版 PDF 或老 EPUB 里根本没有目录,想回看某一章只能一页页翻,或者用搜索碰运气。KOReader 的目录模块(Table of contents)解决的正是这件事:它能读取文档自带的导航结构,页码乱了会自动修正,EPUB 没目录时还能从文档标题直接重建一份。本文带你三步打开目录,并讲清楚背后做了什么。
三步打开并跳转章节
- 第一步:在阅读页点一下屏幕上方(即触屏的顶部菜单区),调出主菜单;
- 第二步:点第一项「目录」(Table of contents),目录视图立即铺开,默认每页显示 14 条;
- 第三步:点任意条目直接跳到对应页。目录左侧的展开/折叠图标可以收放多层结构,标题栏的搜索图标支持输入关键词快速定位条目。
如果你习惯键盘,直接按T键也能唤起目录。这套逻辑写在目录模块源码里,全部 1400 多行 Lua 都集中在这一个文件。
功能拆解
没有目录的 EPUB,用替代目录重建
部分格式(如 EPUB、DjVu)支持「替代目录」:主菜单里的Alternative table of contents选项开启后,KOReader 会扫描文档中 H1 到 H6 级别的标题自动生成章节;连标题都没有时,退而求其次,按每个 HTML 文件的起始位置建条目。目录标题旁出现一个双文件夹小图标,说明当前用的就是这份替代结构,再点一次可切回原目录。
目录页码乱了,自动校验修复
不少老文档的目录条目页码是乱的(条目 3 指向第 57 页,条目 4 却指向第 6 页)。每次填充目录时,validateAndFixToc()都会先做一遍快速扫描,发现乱序就挑出改动最小的那批条目,把页码吸附到相邻正常条目上,并保留原页码用于显示,方便你核对。修完之后跳转不会再"跳飞"。
每章多少页,一目了然
在主菜单的「设置」(navi settings)里勾选显示章节长度后,每个目录条目后面会带一个括号页数字,比如「第三章 (12)」,意思是这一章还有 12 页。进度条刻度太多太挤时,同一区域也能按目录层级把某些层级的刻度整个隐藏。
前后章节切换与当前章节提示
页脚会实时显示当前所在章节,配合上一章/下一章的快捷键(热键插件默认绑了 Shift+Up 等),不用每次都回目录翻找。
背后发生了什么
- 打开目录时,KOReader 先向文档引擎要 TOC;如果该文档启用了替代目录且还没建过,就先从标题重建并缓存起来,下次打开直接复用;
- 拿到条目后做排序校验和页码修复(就是上一条说的修复逻辑),同时算出目录最大层级;
- 按你的偏好生成列表:每页条数、字号、是否显示章节长度、是否带引导点,都从全局设置读取;
- 你点条目时,如果文档带 xpointer(精确定位指针)就走 xpointer 跳转,否则退回普通页码跳转,位置会压入历史栈,方便回退。
适合什么场景
- 学术论文与技术手册:章节层级多,展开/折叠加章节长度能帮你判断还剩多少篇幅;
- 无导航的 EPUB 老书:开启替代目录,从正文标题里"长"出一份目录;
- 目录损坏的 PDF:页码错乱导致跳转会跑偏时,修复逻辑会在你打开目录前悄悄纠正。
避坑提醒
- 别指望它凭空编章节:KOReader 主要依赖文档自带的导航结构,纯扫描件且无 OCR 的 PDF 它拿不到任何标题,这种情况下先用 OCR 工具处理文件更靠谱;
- 替代目录不是万能的:它靠识别 H1–H6 标题,正文里滥用大号字体的文档可能把普通段落误当章节,此时关掉替代目录、回到原目录即可;
- 目录条目偏多时:调低每页显示条数(设置里的 toc_items_per_page),比不停翻页找条目更舒服。
一句话收尾:目录是 KOReader 里被低估的老功能,打开一本书先瞄一眼目录、顺手开一次替代目录测试效果,这两个动作就能覆盖绝大多数"找不到章节"的尴尬。
【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考