我每天在平板电脑上阅读很多书籍。虽然我买了一些电子书,但我很喜欢在 古腾堡计划 上找到免费的东西;这重新燃起了我在图书馆书架上浏览寻找感兴趣书籍的美好回忆。可以通过标题或作者在 PG 网站上进行各种搜索,但这假定您对要查找的内容有所了解。
我使用过 Magic Catalog,但我似乎已经看过或读过那里列出的所有我感兴趣的书籍,而且据我所知,该目录大约有十年历史了。仅在 2017 年,PG 就向其目录中添加了 2,423 本书,因此在过去十年中可能添加了 20,000 本书。
从古腾堡计划网站,您可以链接到 离线目录 并下载所有免费书籍的纯文本列表,但该文件为 6.6 MB——有点笨重。即使仅 2017 年的列表也扫描起来有点乏味。因此,我决定从该列表中制作自己的网页,包括指向每本书的链接(类似于 Magic Catalog),并将其转换为电子书。事实证明这比您想象的要容易。诀窍是使用 regex
;特别是 Kwrite 中使用的 regex
。
首先,删除序言文本,其中解释了有关古腾堡计划的各种详细信息。列表从那之后开始
~ ~ ~ ~ Posting Dates for the below eBooks: 1 Dec 2017 to 31 Dec 2017 ~ ~ ~ ~
TITLE and AUTHOR ETEXT NO.
The Origin and Development of Christian Dogma, by Charles A. H. Tuthill 56279
[Subtitle: An essay in the science of history]
Frank Merriwell's Endurance, by Burt L. Standish 56278
[Subtitle: or A Square Shooter]
Derelicts, by James Sprunt 56277
[Subtitle: An Account of Ships Lost at Sea in General Commercial
Traffic and a Brief History of Blockade Runners Stranded Along
the North Carolina Coast 1861-1865]
Comical Pilgrim; or, Travels of a Cynick Philosopher..., by Anonymous 56276
[Subtitle: Thro' the most Wicked Parts of the World, Namely,
England, Wales, Scotland, Ireland, and Holland]
I'r Aifft Ac Yn Ol, by D. Rhagfyr Jones 56275
[Language: Welsh]
这显示了文本文件的结构。5 位数字是每本书的搜索词——例如,第一本书可以在这里找到:http://www.gutenberg.org/ebooks/56279。每本书之间用一个空行分隔。
首先,下载文件 GUTINDEX.2017
,将其加载到 Kwrite 中,删除序言,然后另存为 GUTINDEX.2017.xhtml
,以便原始文件保持未编辑状态以防万一。您不妨放入 xhtml
序言
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>GutIndex 2017</title>
</head>
<body>
然后在文件底部
</body>
</html>
我不喜欢 ~ ~ ~ ~
(四个波浪号用三个空格分隔),因此在 Kwrite 中选择 编辑 > 替换 以调出底部的替换对话框。您无需选择正则表达式作为模式,但稍后您将需要它,因此请继续执行此操作。
在查找中,输入 ~ ~ ~ ~
,在替换中不输入任何内容。单击全部替换,它们全部消失,并显示消息:24 个替换。
现在让我们制作链接。在查找中,输入:(\d\d\d\d\d)
。(您必须包含括号。)
在替换中,输入:<a href=”http://www.gutenberg.org/ebooks/\1”>\1</a>
这会搜索 5 位数字的序列,并将其替换为链接信息,其中包含特定的 5 位数字两次,用 \1
表示。现在鼓起勇气单击全部替换(请记住,如果您犯了错误,可以撤消此操作),奇迹发生了:2423 个替换。这是一个片段
The Origin and Development of Christian Dogma, by Charles A. H. Tuthill <a href="http://www.gutenberg.org/ebooks/56279">56279</a>
[Subtitle: An essay in the science of history]
Frank Merriwell's Endurance, by Burt L. Standish <a href="http://www.gutenberg.org/ebooks/56278">56278</a>
[Subtitle: or A Square Shooter]
Derelicts, by James Sprunt <a href="http://www.gutenberg.org/ebooks/56277">56277</a>
[Subtitle: An Account of Ships Lost at Sea in General Commercial
Traffic and a Brief History of Blockade Runners Stranded Along
the North Carolina Coast 1861-1865]
见证 regex
的力量!现在让我们创建段落来分隔这些单独的书籍,因为空格和换行符对 HTML 没有意义。在这里我们使用书籍之间的空行。但在我们这样做之前,让我们消除包含标题的行
TITLE and AUTHOR ETEXT NO.
我们这样做是因为它们是不必要的,并且第二个标题无论如何都不会与电子书编号对齐。我想删除这一行和额外的换行符,并且由于只有 12 个,我手动浏览了文件——但您可以通过使用 编辑 > 查找,搜索 ETEXT 来促进这一点。
现在更多 regex
。在查找中,输入: \n\n
在替换中,输入: </p>\n\n<p>
然后全部替换。我保留了两个换行符,以便文本文件更易于阅读。您需要在列表末尾手动添加 </p>
。在开头,您会看到这个
Posting Dates for the below eBooks: 1 Dec 2017 to 31 Dec 2017 </p>
<p>The Origin and Development of Christian Dogma, by Charles A. H. Tuthill <a href="http://www.gutenberg.org/ebooks/56279">56279</a>
我想将发布日期设为标题,但我也想删除 Posting Dates for the below eBooks:
,因为仅显示日期就足够了。在查找中,输入:Posting Dates for the below eBooks:
,在替换中,输入:<h3>
(或 <h4>
)。
现在让我们修复每个标题的尾随 </p>
。您可以手动执行此操作,但如果您感到懒惰,请在查找空间中输入 2017 </p>
,在替换中输入 </h3>
。对于这些中的每一个,都有做过多的轻微风险,但反馈会告诉您有多少替换(应该有 12 个)。并且您始终可以撤消。
现在进行一些手动清理。由于您添加了 <p>
和 </p>
标签,并且由于新的 <h3>
标签,在这些标题区域中将会有额外的段落标签和不匹配。您可以简单地扫描这些点的文件,或通过在查找空间中输入 <h3>
,单击全部查找以突出显示它们,然后向下滚动文件以删除任何不需要的标签来获得一些帮助。
我发现 XHTML 的另一个问题是散布在各处的与号。由于 XHTML 比 HTML 更严格,请将 &
替换为 &
。您可能需要使用替换而不是全部替换来单独替换这些。
文本文件中的某些行具有某种控制字符,其作用类似于
(不间断空格)。要修复此问题,请在 Kwrite 中突出显示一个——它们显示为带有垂直凸起的微弱基线——将其粘贴到查找中,并在替换中输入一个空格。这保持了视觉间距作为文本,但作为 HTML 被忽略(顺便说一句,文档中有 12,586 个)。
这是在缩小的浏览器窗口中的外观

单击链接会将您带到该书的古腾堡计划页面,您可以在其中查看或下载它。
我使用 Sigil 将其转换为电子书,这可能是整个过程中最简单的部分。启动 Sigil,然后从工具栏中选择“添加现有文件”,然后选择您的 XHTML 或 HTML 文件。要为每个月创建一个章节,请向下滚动到每月标题行,将光标放在行首,然后按光标处分割 (Ctrl + Return) 以创建 12 个章节。您还可以使用标题创建目录;编辑元数据以给它一个标题,该标题将显示在您的电子书阅读器中也是一个好主意(您可以使自己成为作者)。最后,保存文件,您就完成了。
祝您阅读愉快!
8 条评论