从纯文本文件自动创建分章符和标题?

时间:2012-11-26 19:27:46

标签: xml epub kindle nook calibre

我有一个大文件,分为每个类别名称下面都有下划线的类别。该文件不断变化,有80个类别。这是一个纯文本文件。我想这样做,以便每个类别名称是epub文件中的单独章节。我还想确保每章的名称都是本章的标题。有没有办法用Calibre自动执行此操作?也许一些正则表达式的魔法?例如,我希望以下类别的章节标题为:水果,蔬菜,草药。我希望它能自动解析(一种方法可能涉及识别正则表达式中的下划线)。我怎么能这样做?

Fruit
________
Apples
Bananas

Vegetables
____________
Cucumbers 
Zucchini

Herbs
_____
thyme
cayenne

2 个答案:

答案 0 :(得分:2)

因此,您的文本文件基本上是一个markdown文件(read more)。我会使用类似htmlsee here的内容将其转换为pandoc,并注意pandoc支持一些扩展的markdown功能,并且功能非常强大(甚至可以生成epub,但我还没有测试过))。

这样你的标题(带下划线的行)就会被翻译成<h*>个标签。

然后您可以使用Calibre的电子书转换CLI工具(或gui)将其转换为mobiepub,并指定分章(感谢开发人员,Calibre {{ 3}})。 (我只是注意到,Calibre / ebook-convert可以直接将markdown转换为epub / mobi!)

像:

ebook-convert input.html output.epub --chapter 'YOUR XPATH TO DETECT CHAPTERS' --chapter-mark pagebreak

答案 1 :(得分:0)

这很容易。你的档案就像降价了;您需要做的就是将扩展名更改为.md(但您没有 - 请参阅下文)。

所以下划线的第一个标题是第一级,下一个具有相同类型下划线的后续标题也将是第一级。当你第一次开始使用不同的行时,那将是第二级等等。

我个人更喜欢用##等等##2开始标题1。

使用.epub生成pandoc需要一秒钟;示例命令如下:

pandoc myTextFile.md --latex-engine=xelatex -o myEpubFile.epub

我使用xelatex引擎是因为文本中需要一些unicode字符,但如果它是普通英语(ASCII) - 你不需要。就像那样,您也可以在几秒钟内生成.PDF.docx格式。

如果您希望保留输入文件扩展名.txt不是问题;只需在命令行中指定--from markdown,无论文件扩展名是什么,输入都将被标记为markdown。当然 - 像.docx这样的二进制格式无法以这种方式读取,但之后哟会收到错误消息。

我喜欢这种方法,它是闪电般快速,可调节的,不需要我打开口径。

Pandoc默认值也会开始每个级别1标题的新章节。您可以通过参数--epub-chapter-level进行调整。