使用Pandoc转Markdown为ePub:实现无编号Part与连续编号Chapter
解决方案
步骤1:调整标题元数据
将书籍标题放在独立的YAML元数据块中(title.txt),避免它被识别为章节:
--- title: "Book Title" toc-depth: 2 # 确保目录显示到二级标题层级 ---
步骤2:保留现有文件格式
- Part文件(如
part1/part1.md):保持# First Part {-},{-}标记用于取消该标题的编号。 - Chapter文件(如
part1/chap1.md):保持## First chapter title,无需额外标记,后续会自动连续编号。
步骤3:执行Pandoc转换命令
使用以下命令实现需求的目录结构和编号规则:
pandoc -o draft.epub title.txt part1/*.md part2/*.md part3/*.md \ --table-of-contents \ --number-sections \ --top-level-division=part \ --number-offset=0,1
参数说明:
--table-of-contents:生成书籍目录。--number-sections:开启标题编号功能,Part的{-}标记会跳过自身编号。--top-level-division=part:将一级标题(Part)识别为ePub的Part结构,保证目录层级正确。--number-offset=0,1:控制编号逻辑:- 第一个值
0:让一级标题(Part)的编号起始为0,结合{-}实现无编号效果。 - 第二个值
1:让二级标题(Chapter)从1开始编号,且编号不随Part重置,保持全局连续递增。
- 第一个值
备选方案(自定义CSS强化效果)
如果默认参数仍存在编号异常,可创建custom.css文件强制修正编号规则:
/* 隐藏Part的编号(若存在) */ .part .title-number { display: none; } /* 全局连续递增的章节编号 */ body { counter-reset: chapter; } .chapter { counter-increment: chapter; } .chapter .title-number::before { content: counter(chapter) ". "; counter-reset: section; }
然后在命令中添加--css=custom.css参数即可。
内容的提问来源于stack exchange,提问作者wouldnotliketo
相关产品推荐
相关产品推荐

