我每天在平板电脑上阅读很多书籍。虽然我也买了一些电子书,但我更喜欢在古腾堡计划上寻找免费资源;这重新燃起了我对在图书馆书架上浏览,寻找能引起我兴趣的东西的美好回忆。有很多方法可以通过标题或作者搜索 PG 网站,但这假定您已经知道自己在寻找什么。
我曾经使用过魔法目录,但我似乎已经看过或读过那里列出的所有我感兴趣的书,而且据我所知,该目录大约有十年历史了。仅在 2017 年,PG 就向其目录添加了 2,423 本书,因此在过去十年中可能添加了 20,000 本书。
从古腾堡计划网站,您可以链接到离线目录并下载所有免费书籍的纯文本列表,但该文件为 6.6 MB——有点笨重。即使仅 2017 年的列表也让人觉得扫描起来很乏味。所以我决定从这个列表中创建我自己的网页,包括指向每本书的链接(类似于魔法目录),并将其转换为电子书。事实证明,这比您想象的要容易。诀窍是使用 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 条评论