其他分享
首页 > 其他分享> > 制作自己的 Kindle 电子书

制作自己的 Kindle 电子书

作者:互联网

想象以下场景:你刚收到一台新的 Kindle Paperwhite,心中已然响起了轰轰烈烈的 “我今年(或这个冬天)一定要阅读 100 本书!”。结果发现,想看的书 Amazon 上找不到,或者排版很糟糕。

如何解决?自己动手做呗!

准备工作

我使用的是 macOS,因此本教程应该可以在 *nix 系统上完美复现。理论上移植到 Windows 也应该是无痛的。

首先,显然,我们需要源文件(通常是 .txt 格式),对于软件,需要安装 calibre。尽管我相信 calibre 很可能早就装好在你电脑上了吧~

在编辑源文件时,我通常使用 VS Code,因为它支持正则表达式搜索。 Sublime Text 也支持这一点,所以如果习惯的话也可以用它。

简单场景

本教程的精髓就是通过正则匹配为 txt 文件中的章节名称加入 markdown 样式的 header 标记(即’#‘, ’##‘, etc.)。这样在 calibre 转换 txt 为 mobi 时它就可以识别并自动按照 markdown header 划分整体的 txt 文件为 mobi 中的各个章节。

VS Code 如何进行正则匹配搜索可以看微软的这篇教程:here

简单粗暴,直接上我常用的正则匹配:

有时候小说结尾还有后记,这个就匹配不到了,所以我一般还会再拉到结尾去检查一下,看小说作者在结尾还写了什么番外或者后记然后手动为其添加 markdown 标记。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved

修改后效果如下:
请添加图片描述
在这里插入图片描述

再例如,我有一个示例文件,其章节名称如下所示,第一行为课程编号,第二行为英文,第三行为中文:

在这里插入图片描述

则我们可以使用如下的正则去匹配它:

^(\s+|)lesson(\s+)(\d+)(\s+|\n)(.*)(\s+|\n)(\s+)(.*)(\s+|\n)

其中,

使用如下的替换来达到下图的效果:

\n\n##Lesson $3 - $5 / $8\n\n

在这里插入图片描述

那有点复杂的场景?

在本节中,我将假设一个有点复杂的场景,假如我们有多个 .txt 文件。相当于按章将小说分成几部分。Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved假设我们有 4 个文件夹,每个文件夹中都有一堆 .txt 文件,并且全部使用数字文件名:

在这里插入图片描述

在这种情况下,通常意味着我们的书有 4 卷(因为有 4 个文件夹)。我们可以使用以下 shell 程序在每个文件夹中分别将其中所有文件(章节)合并为一个卷:

for file in `ls | sort -n`; do cat ${file} >> volume_ONE.txt; done
# repeat for TWO THREE and FOUR

在这里插入图片描述

然后,我们需要合并这 4 个卷。我们首先创建一个 YourBookTitle.txt 并打开它。在其开头输入 “# 卷一 title”,然后硬回车到新的一行,保存。

例如,YourBookTitle.txt 内容可以长这样:

#卷一 如何制作自己的手机电子书?

Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
然后运行:

cat volume_ONE.txt <(echo'#卷二 这是一个卷名')volume_TWO.txt <(echo'#卷三 这是另一个卷名')volume_THREE.txt <(echo'#卷四 这还是一个卷名')volume_FOUR.txt>> YourBookTitle.txt

现在,4 个卷都在一个 .txt 文件中了,且每卷的开头带有 “#卷x 标题”。

之后,重复简单场景中的匹配即可。更复杂的匹配,可以试试去参考资料【3】中找。

calibre 中的操作

现在,修改好 txt 后,我们可以启动 calibre,将 txt 转换为 mobi。

  1. 我们首先编辑 metadata,并为该书生成漂亮的封面:

    在这里插入图片描述

    • 对于中文小说的制作,导入 txt 时就应在 edit metadata 时选择语言为 Chinese,否则会遇到在阅读时不能选宋体等中文字只能选英文字体(如 Helvetica)的情况
    • (其它可选操作):将字体系列更改为 Times New Roman

    在这里插入图片描述

  2. 将字符编码更改为 gb2312 / gb18030
    Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved
    在这里插入图片描述

  3. 添加 header 的样式(自己设计的,感觉还不错,Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    在这里插入图片描述

    h1 {
        color:black;
        text-align:center;
        font-weight:bold;
    }
    h2, h3, h4, h5, h6 {
        background-color: rgb(202, 202, 202);
        border-left: 10px solid rgb(138, 136, 136);
        display:block;
        margin: 1.5em 10px;
        padding: 0.5em 10px;
        color:black;
        text-align:left;
    }
    
  4. (可选操作)如果在 txt 中未使用任何 “h1”,而使用了“h2” 和“h3”,则需要更改 “insert pagebreak before” 项。

在这里插入图片描述

  1. Table of contents 设置:在其中添加 “h1” 和“h2”。同理,若没使用 “h1”,则此处应使用“h2” 和“h3“分别进行更改。

在这里插入图片描述

  1. Mobi output:我习惯选择 “both”。

在这里插入图片描述

  1. (可选)有的时候未删除缩进会导致输出的 mobi 格式诡异,所以发现问题后可通过删除缩进来尝试修复。

在这里插入图片描述
(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

成果

看起来很不错吧:

在这里插入图片描述

参考资料

在这里插入图片描述
(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker


标签:Reserved,电子书,gy,csdn,https,Kindle,net,txt,制作
来源: https://blog.csdn.net/S_gy_Zetrov/article/details/112024413