使用Calibre轉換TXT電子書(含目錄)並傳送至Kindle Paperwhite操作全攻略

我在《由.txt自製電子書.epub並傳入iPad的步驟》這篇教學文裡介紹過使用epubBuilder來產生.epub電子書檔案,使用Kindle後必須再用別的工具把.txt或.epub等格式的檔案轉換為Kindle支援的.mobi或.azw3的檔案,這個工具便是多功能的電子書轉檔軟體:Calibre--eBook Management

Calibre有很多功能,本篇主要針對文字檔案轉換成.mobi或.azw3格式來分享心得,同時提及將檔案傳給Kindle的幾個方法。另外用到的軟體是文字編輯器EmEditor與MarkdownPad 2。轉換的策略是把.TXT做成Markdown格式,再轉換成Kindle接受的.mobi或.azw3格式。

用Calibre產生電子書並傳入Kindle的步驟

要把文字格式的檔案變成Kindle能使用的檔案,一般可以依照下列順序執行:

  1. 使用文字編輯器整理.TXT檔內容
  2. 使用Calibre:加入書籍
  3. 使用Calibre:編輯元數據,所謂的元數據就是電子書的基本資料
  4. 使用Calibre:轉換書籍,在此指定輸入與輸出格式,並設定各項轉換參數
  5. 使用Calibre:連線分享,將電子書傳入Kindle

1. 文字檔案整理

使用.TXT檔案的原因當然是因為.TXT檔是網路上最容易取得的電子書格式,尤其是網路小說。以下是下載了.TXT檔案後的後製處理步驟,使用的文字編輯器是EmEditor,如果你想要免費的編輯器的話,可以試看看NotePad++

  1. 將.TXT檔的編碼統一儲存為UTF-8不帶簽名(BOM)
  2. 用ConvertZ或MS-Word將簡體中文轉換為繁體中文,如果下載的是繁體版或習慣看簡體,自然就可以省略這個步驟
  3. 我不喜歡段落開頭的空白,以下列的規則運算式(Regular Expression,或譯為正規運算式)將開頭空白刪除:
    • 尋找:^(空白)
    • 取代為:(空字串)
    • 說明:^符號表示設定開頭的文字才符號尋找對象;
      (空白)是一或多個半形空白,若檔案裡是使用全形空白,則改為全形空白;
      (空字串)就是空的內容,不輸入任何文字
      emeditor replace
  4. 有些書籍段落間沒有多空一行,我習慣要空一行:
    • 尋找:\n
    • 取代為:\n\n
    • 說明:\n是換行符號,這個替換是把一個換行變成兩個換行。\n有時要用\r\n才行
  5. 有時書籍段落間的空行又過多,用下列方法刪除:
    • 尋找:\n\n
    • 取代為:\n
    • 說明:把兩個換行變成一個換行
  6. 把引號換成台灣慣用的引號:
    • 尋找: “
    • 取代為:「
    • 尋找:”
    • 取代為:」
    • 範例:把 “大王有令,停止前進!”改成「大王有令,停止前進!」
  7. 因為我們會優先使用文字的Markdown格式,再把書籍裡可能出現的一些Markdown特殊文字都改成全形:
    尋找 取代為 說明
    * 半形的星號換成全形星號
    - 半形的減號換成全形減號
    = 半形的等號換成全形等號
    # 半形的井號換成全形井號
  8. 目錄章節替換:電子書沒有目錄要搜尋或變更位置非常不便,因此在轉換格式時最好一併將目錄也產生出來,但由於每本書的章節編法都有不同,替換時若對正規運算式有較多認識則比較容易依不同狀況來變化,以下是幾個常見的替換(參考:EmEditor How to: Regular Expression Syntax),以Markdown的 # 來定義階層:

尋 找 取 代 為 說明
^卷(.*) # 卷\1 ^表示只對以「卷」開頭的段落有效;
把「卷三」取代為「# 卷三」,一個井號表示卷是第一階層
^第(.*)卷(.*) # 第\1卷\2 把「第三卷 標題」取代為「# 第三卷 標題」,
「第01卷 標題」取代為「# 第01卷 標題」
^第(.*)節(.*) ## 第\1卷\2 同上,卷變節。兩個井號表示第二階層
^([0-9]{1,3})(.*) ## \1\2 開頭是1到3個數字的加上兩個井號,
把「001 標題」取代為「## 001 標題」

以上這些替換經常要做,我們可以將之寫成EmEditor的巨集腳本,則有新書要轉換時只要執行巨集就可以了。
emeditor replace

腳本內容範例如下,可以將每次不同的替換逐步擴充,那麼日後需要手動再下正規運算式的機會就越少:

document.selection.Replace("“","「",eeFindNext | eeFindSaveHistory | eeReplaceAll);
document.selection.Replace("”","」",eeFindNext | eeFindSaveHistory | eeReplaceAll);
document.selection.Replace("^    ","",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace("*","*",eeFindNext | eeFindSaveHistory | eeReplaceAll);
document.selection.Replace("#","#",eeFindNext | eeFindSaveHistory | eeReplaceAll);
document.selection.Replace("=","=",eeFindNext | eeFindSaveHistory | eeReplaceAll);
document.selection.Replace("-","-",eeFindNext | eeFindSaveHistory | eeReplaceAll);

document.selection.Replace("^第(.*)集 (.*)第(.*)章 (.*)","# 第\\1集 \\2\\n## 第\\3章 \\4",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace("^第(.*)卷 (.*)第(.*)章 (.*)","# 第\\1卷 \\2\\n## 第\\3章 \\4",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("^([0-9]{1,3}) (.*)","## \\1 \\2",eeFindNext | eeFindSaveHistory | eeReplaceAll | eeFindReplaceRegExp);

2. 使用Calibre加入書籍

選擇整理好的檔案就能將之加入Calibre圖書館。

3. Calibre: 編輯元數據

元數據基本上可以不編輯,直接使用就可以,如果想要寫入更多資訊到輸出檔裡就可輸入需要的欄位,不過用下載元數據可以節省很多輸入時間,但網路小說很多都下載不到資料;如果是簡體書籍,建議由【偏好設定】→【元數據下載】把豆瓣網(Douban books)加進來,可以增加搜尋成功的機率。封面也可以Google找到圖片後,在【改變封面】→【瀏覽】選擇下載的圖片來當做封面。

meta data

4. Calibre轉換書籍

接著是轉檔的重點戲,以下是我的常用設置:

  • 外觀與感覺:在過濾樣式資訊裡把樣式都打勾,表示產生的電子書不受輸入的HTML內的樣式影響
    look & feel

  • 頁面設定:選擇輸入設備為Kindle Paperwhite
    device

  • 目錄頁是產生目錄的設定頁,分別把第1級目錄頁、第2級目錄頁與第3級目錄頁設定為 //h:h1、//h:h2與//h:h3,表示檔案裡有 #、##與###三個階層的標題。如果檔案裡只有##, 那麼把第1級目錄頁直接設成 //h:h2,第2與第3級目錄頁則清成空白。
    convert

  • 輸入格式選用TXT,格式化樣式變更為Markdown
    markdown

  • MOBI輸出頁籤的Kindle選項應選用old,both和new在Kindle裡的右邊界留白會變大,看起來版面不太舒服
    mobi output

  • Calibre在轉換Markdown格式的文字檔時經常會發生「轉換時發生錯誤」的問題,此時可以使用下列方法解決:

    • 用工具(我使用的是MarkdownPad2)或線上轉換網頁把Markdown轉成HTML格式
      markdownpad2
  • Calibre加入書籍時選用.html的檔案,Calibre會自動把.html包裝成.zip檔,再依上列要點轉換書籍為.mobi或.azw3

  • 寄信到Kindle雲端時不能用.azw3的檔案,因此需要在其他設備上同步閱讀的電子書只能寄出.mobi檔,但Kindle的.mobi檔案無法指定行距等參數,在Kindle上閱讀時行與行之間的高度較小,如果你看不習慣的話,就無法使用同步的功能了。.azw3的行距則比較大,看起來比較舒服,但只能傳到Kindle本機閱讀。

5. 傳送檔案到Kindle

要把檔案儲存到Kindle裡有下列幾個方法:

  1. 使用USB連接:使用USB線連接後,電腦會出現Kindle磁碟,用檔案複製就能把檔案存到Kindle了
  2. 把檔案寄給「你的註冊帳號@kindle.cn」就可以。使用Calibre轉換書籍後,可以使用【連線/分享】選擇寄信選項。
    send mail
  3. 由Calibre的【連線/分享】→【啟動內容伺服器】開啟Calibre的Web Server,接著我們就能由Kindle(或別的設備)瀏覽Web Server來下載需要的檔案
    web server

    ▼ 由工具列執行瀏覽器並瀏覽Calibre的網頁(以上面圖片為例,瀏覽網址是「http://192.168.0.102:8080/」)
    Kindle browser

    ▼ 瀏覽Calibre內容伺服器後可以下載Calibre圖書館裡的檔案
    kindle browser download

另外,【連線/分享】→【啟動無線裝置連線】目前只能配合Android App Calibre Companion使用。
wifi

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

6 個回應

  1. jade表示:

    不好意思,我看不太懂,請問是一樣用NotePad++程式,
    用尋找:\n\n 替換成 嗎?我這樣做了以後,反而目錄都無法成功了!再麻煩指教,謝謝!

      • jade表示:

        你好:我使用你的方法嘗試後變成這樣:
        書名:
        作者:
          
        文章
        出版
        【內容簡介】
          天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天
          一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個一個
        #第一卷
          
        ##第1章
        然後轉換後,目錄是空的
        不知道是哪裡錯呢?抱歉,再麻煩你指教,謝謝

        • 簡睿表示:
          1. 井號後面最好加一個空格
          2. 我後來都使用自己寫的m2m.exe來產生.mobi格式的檔 (有文章介紹)
          3. 因為.mobi 今年9月起就不能寄了,開始使用pandoc來產生成 .epub, 語法如下:
            pandoc mybook.md -f markdown –metadata title=”書名” –toc -o %_FN%.epub

          (–toc是兩個減號)

          還沒找到產生成Kindle目錄的作法. 以上供參考。

  2. Jade表示:

    您好:
    感謝你詳細的教學,我終於轉成功,並有兩層目錄,非常高興~~~
    但是,有個新問題,就是明明在word裡每段首行都有空兩字,在NotePad++裡看起來也是有空兩字,
    但轉完epup,打開檔案後,每段首行都沒有空兩字,不知道如果要設定空兩字,該如何設定呢?
    再麻煩您指教,非常感謝

    Jade

    • 簡睿表示:

      epub是壓縮檔,內容會存成HTML格式,HTML裡的空行,不管連續幾個空行,都只會形成一個空白。
      比較簡單的作法是是空行替換成 <br> 標籤。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *