自制ePub电子书技巧分享;亚马逊Kindle的辅助工具

Kindle要停用MOBI与AZW格式,转用更通用的ePub格式了。如果你跟我一样经常自制电子书的话,可以参考我的制作步骤,以简化产生ePub电子书的操作流程:

  1. 用EmEditor将下载的文字档(.txt)转换为Markdown格式
  2. 用pandoc命令将Markdown文字档转换成.epub格式
  3. 用blat命令将.epub档寄至Kindle的电子信箱 (可使用如Outlook/Thunderbird等邮件软件取代)


先手动执行,等有空时再写个程式简化整个操作流程吧。

1. 准备

1.1. 安装要使用的命令行工具

  1. 下载并安装EmEditor,你也可以使用自己惯用的文字编辑器,用来将章节标题加上Markdown的标题井号
    1. 下载并安装简转繁外挂
    2. 下载并安装繁转简外挂
  2. 下载并安装Pandoc– a universal document converter
  3. 下载并安装Blat – Windows Command Line SMTP Mailer Files (可使用如Outlook/Thunderbird等邮件软件取代)

1.2. Blat设定 (Optional)

用下列命令设定blat指令要连线的SMTP主机与登入帐号、密码:

[!TIP] 命令
blat -install SMTP主机 电子信箱 5 -u 登入帐号 -pw 登入密码

  • 例如:blat -install mycompany.com myname@mycompany.com 5 -u myname -pw mypassword
  • 5是重试次数

2. 文字档转换成Markdown格式

  1. 将文字档另存成==UTF-8不带BOM==格式
  2. 全选后点击【简转繁】或【繁转简】按钮
  3. 执行EmEditor的宏,透过正则运算式转换将章节标题加上井号

范例如下:

document.selection.Replace("^第(.*)章(.*)", "第$1章 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章(.*),(.*)", "第$1章 $2·$3",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章(.*),(.*)集", "第$1章 $2·$3",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)卷 (.*) 第(.*)章 (.*)","## 第$1卷 $2 第$3章 $4",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)卷(.*)第(.*)章(.*)","## 第$1卷 $2 第$3章 $4",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)卷 (.*)","# 第$1卷 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^卷(.*) (.*) (.*)章 (.*)", "## 第$1卷 $2 第$3章 $4",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^正文 第(.*)章 (.*)","## 第$1章 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章 (.*),(.*)","## 第$1章 $2·$3",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章 (.*),(.*)","## 第$1章 $2·$3",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章 (.*)","## 第$1章 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)章:(.*)","## 第$1章 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)集 (.*)","## 第$1集 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^正文 第(.*)节 (.*)","## 第$1节 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^正文 第(.*)章(.*)","## 第$1章 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^第(.*)节 (.*)","## 第$1节 $2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); document.selection.Replace("^===第(.*)===","## 第$1",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp); 

3. 用Pandoc将Markdown转换成.epub

[!TIP] 命令
pandoc 书名.txt -f markdown –toc –metadata title=”书名” –metadata author=”作者名” –metadata lang=”zh-Hant” –css style.css -o 书名.epub

3.1. 选项说明

  • –toc:(可省略) 产生目录,有此参数时会在正文前面多出章节的超链接页面,Kindle的【前往】才有资料可跳到特定章节
  • –metadata lang:(可省略) 无此参数时默认是”en-US”,指定”zh-hant”(繁体中文)或”zh-hans”(简体中文)时,Kindle字型选单才会出现【黑体】、【圆体】、【宋体】、【楷体】等中文字型选项
  • –css style.css:(可省略) 指定样式档,可自行定义Kindle里内容的呈现样式

3.2. style.css范例

html {     font-size: 100%;          -ms-text-size-adjust: 100%; }  body {     font-family: "黑体", "圆体",  "Helvetica Neue", Helvetica, Arial, "Lucida Grande", serif;     margin: auto;     text-align: justify;     ;     line-height: 1.0; }  h1 { text-align: left; } h2 { text-align: left; } h3 { text-align: left; } h4 { text-align: left; } h5 { text-align: left; } h6 { text-align: left; }  h1.title {     margin-top: 150px;     ;     text-align: center; }  p.author {     text-align: center;     ; }  ol.toc {          margin: 1em 0;      0 0 2em; }  ul.toc ul, ol.toc ol {     margin: .3em 0; }  li { margin: 0;  5px; }  code {     font-family: monospace;     background-color: rgb(247, 247, 247); }  pre {     font-family: monospace;;     padding: 16px;     overflow: auto;     font-size: 80%;     line-height: 1.45;     border-radius: 3px;     background-color: rgb(247, 247, 247); } 

3.3. 观察.epub档

.epub是压缩档,可以用7-Zip等压缩工具查看其内容。

4. 用blat传送档案

因为GMail等网站都有传送信件最大25MB的限制,因此blat设定时最好使用平常使用的公司SMTP主机。

[!TIP] 命令
blat – -to Kindle电子信箱 -s “主旨” -body “内文” -log blat.log -force8bit -charset utf-8 -unicode -attach “书名.epub”
type blat.log

4.1. 选项说明

  • -log:执行时blat显示的中文书名变问号,但导向到档案再输出则正常
  • -force8bit:无此参数时,amazon.com无法产生文件;若书名没有中文时可不加此参数

5. 相关链接

6. 教学影片

##


想在手机阅读更多电脑与科技资讯?下载【香港硅谷】Android应用
分享到Facebook
技术平台: Nasthon Systems