章节解析规则
TRNovel 在打开本地 .txt 小说时,会用一套目录规则集自动识别章节标题与分卷(卷/部/篇),生成可折叠的「卷 → 章」目录树。内置规则覆盖绝大多数常见格式;你也可以通过配置文件自定义规则以适配特殊排版。
内置识别能力
Section titled “内置识别能力”- 章节:
第N章/第N节/第N回/第N话,N 支持阿拉伯数字与中文数字(含〇 零 两及壹贰…仟)。 - 英文章节:
Chapter N/Section N/Part N/Episode N。 - 特殊章节:楔子、引子、序章、序言、前言、后记、尾声、终章、番外、外传、附录等。
- 分卷:
第N卷/第N部/第N篇、上/中/下卷等。 - 抗误报:标题需独占一行(顶格或仅 ASCII 缩进;全角空格
缩进视为正文段落)、长度受限、排除「第三部分 / 第三节课」等计数词歧义、忽略以句号结尾的行。
自定义规则文件
Section titled “自定义规则文件”在配置目录下新建 ~/.novel/toc_rules.json。该文件存在时,其规则会追加到内置默认规则之上;文件缺失或格式错误时,自动回退到内置默认(不影响阅读)。
字段对齐 Legado 的 TxtTocRule,正则采用 fancy-regex 语法(支持前后向断言,可直接粘贴 Legado 社区规则)。
{
"maxTitleLen": 35,
"rules": [
{
"name": "卷",
"rule": "^第[0-9一二三四五六七八九十百千]{1,8}卷",
"isVolume": true,
"enable": true,
"example": "第一卷 魔性不改"
},
{
"name": "章/节/回",
"rule": "^第[0-9〇零一二两三四五六七八九十百千万]{1,12}[章节回话](?:[ \\t、,,::..\\-—]).{0,30}$",
"isVolume": false,
"enable": true,
"example": "第1章 罗峰"
},
{
"name": "排除:计数词歧义",
"rule": "^第?[0-9一二三四五六七八九十百千]{1,8}(?:部门|部队|部分|节课|集合)",
"isExclude": true,
"enable": true
}
]
}| 字段 | 类型 | 说明 |
|---|---|---|
maxTitleLen | number | 标题最大字符数,超过视为正文(默认 35)。 |
rules[].name | string | 规则名称(仅展示/调试用)。 |
rules[].rule | string | 正则字符串(fancy-regex 语法)。 |
rules[].isVolume | bool | 是否为卷规则(卷优先于章匹配)。默认 false。 |
rules[].isExclude | bool | 是否为排除规则(命中即丢弃该行,优先级最高)。默认 false。 |
rules[].enable | bool | 是否启用。默认 true。 |
rules[].example | string | 示例标题(可选)。 |
rules[].serialNumber | number | 排序号(可选)。 |
- 当存在多条章节规则时,TRNovel 会按「有效命中数」自动择优,能自适应「章 / 节 / 回」等不同计数词的书。
- 写规则时建议锚定行首
^、限制标题长度、用显式数字字符类而非.+,以降低误报。 - 章节标题约定独占一行;正文段落若以全角空格
缩进,则不会被误判为标题。