Kindle要停用MOBI與AZW格式,轉用更通用的ePub格式了。如果你跟我一樣經常自製電子書的話,可以參考我的製作步驟,以簡化產生ePub電子書的操作流程:
- 用EmEditor將下載的文字檔(.txt)轉換為Markdown格式
- 用pandoc命令將Markdown文字檔轉換成.epub格式
- 用blat命令將.epub檔寄至Kindle的電子信箱 (可使用如Outlook/Thunderbird等郵件軟件取代)
先手動執行,等有空時再寫個程式簡化整個操作流程吧。
1. 準備
1.1. 安裝要使用的命令行工具
- 下載並安裝EmEditor,你也可以使用自己慣用的文字編輯器,用來將章節標題加上Markdown的標題井號
- 下載並安裝Pandoc– a universal document converter
- 下載並安裝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格式
- 將文字檔另存成==UTF-8不帶BOM==格式
- 全選後點擊【簡轉繁】或【繁轉簡】按鈕
- 執行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 手機及裝置資訊?下載【香港矽谷】Android應用