文字檔轉換為Kindle MOBI檔的工具:m2m的Step-by-step操作步驟 (更新:直排功能)

最近利用閑暇時間把2015年寫的m2m.exe(參考:KindleGen與Markdown轉換為Mobi的Kindle電子書工具:m2m.exe)用Delphi XE 10.2.3改寫,把文字格式自動轉換為Markdown格式的功能也加進去,對於不熟悉正規運算式轉換語法的朋友們應該會覺得簡單很多。以下是m2m的簡單使用說明。

m2m.exe的用途

m2m.exe代表的是「Markdown To MOBI」的意思,不是物聯網的Machine-to-machine,主要用來把文字格式的電子書轉換成Kindle使用的.MOBI格式。

我們搜尋到的電子書通常是文字格式(.txt),為了更好的閱讀體驗便可以利用m2m.exe將之轉換為.MOBI格式,除了章節標題字體變大,也能有Kindle的目錄巡航等增強功能,產生出.MOBI檔後會複製到網路磁碟機資料夾(我用的是Dropbox)並上傳到網路磁碟,再用IFTTT.com的郵寄操作(由Dropbox傳送到Kindle的接檔信箱),最後Kindle就能收到電子書。

以下是逐步執行的操作步驟。

1. 準備好電子書

首先準備好要轉換的電子書文字檔(範例中使用的三國演義.txt可由此處下載)。

如果文字檔第一行是書名,第二行是作者,則讀檔時會自動填入輸入欄位。
01

2. 點選電子書檔案

執行m2m.exe,按書名輸入欄位右方的開啟按鈕並點選三國演義.txt,點選後書名輸入欄位會出現電子書的檔名路徑。

02

3. 開始讀檔

如果要轉換為Markdown格式則勾選【讀檔時轉換為Markdown格式】,若選用檔案已經轉換過則不勾選。按〔1.讀檔〕開始讀檔,有勾選轉換者一併轉換格式。

03

轉換章節標題的設定在安裝資料夾的m2m.ini,可以按右上方的齒輪按鈕用記事本開啟m2m.ini,找到 [RegularExpressions]:

[RegularExpressions]
^正文 (.*)=$1
^第(.*)章 (.*)=## 第$1章 $2
^第(.*)章(.*),(.*)=## 第$1章 $2·$3
^第(.*)章(.*),(.*)集=第$1章 $2·$3
^第(.*)卷 (.*) 第(.*)章 (.*)=## 第$1卷 $2 第$3章 $4
^第(.*)卷(.*)第(.*)章(.*)=## 第$1卷 $2 第$3章 $4
^第(.*)卷 (.*)=# 第$1卷 $2
^卷(.*) (.*) (.*)章 (.*)$=# 第$1卷 $2\n## 第$3章 $4
^第(.*)章 (.*),(.*)=## 第$1章 $2·$3
^第(.*)章 (.*),(.*)=## 第$1章 $2·$3
^第(.*)章 (.*)=## 第$1章 $2
^第(.*)章:(.*)=## 第$1章 $2
^第(.*)集 (.*)=## 第$1集 $2
^第(.*)節 (.*)=## 第$1節 $2
^第(.*)回 (.*)=## 第$1回 $2
^第(.*)回:(.*)=## 第$1回 $2
^楔子 (.*)=## 楔子 $1
(.*)本帖最後由(.*)編輯(.*)=
^更新時間(.*) 字數:(.*)$=

設定中使用到的運算式符號說明:

  1. ^表示每行開頭
  2. (.*)表示數目不定的任意文字,「第(.*回)」運算式則「第一回」、「第四十八回」等都符合
  3. 等號右邊的\$1、\$2表示等號左邊符合的第一個與第二個內容,例如「第一回」的「一」、「第四十八回」的「四十八」就是\$1
  4. ^第(.*)回:(.*)=## 第$1回 $2的意思是把符合等號左邊的運算式轉換成等號右邊的內容,例如文字內容「第四十八回:宴長江曹操賦詩,鎖戰船北軍用武」符合這個運算式,則「四十八」就是右邊的\$1,「宴長江曹操賦詩,鎖戰船北軍用武」就是\$2,轉換後就變成「## 第四十八回 宴長江曹操賦詩,鎖戰船北軍用武」;轉換後的兩個半形井號表示標題二,字體會變大

標題有個奇怪的問題,文字中有半形或全形逗點時,在.MOBI的內容會被截斷,例如「宴長江曹操賦詩,鎖戰船北軍用武」會變成「宴長江曹操賦詩,」或「宴長江曹操賦詩?」,因此m2m.exe會把標題中的逗點變成黑點以避開這個問題。

如果電子書的標題樣式不在現有的設定中,請自行依格式添加在後。

3.1. 轉直排與空兩格

0.03版增加了段落開頭插入兩個全形空白與直排功能,只要勾選就會產生對應的結果。

因為直排時有些標點符號無法正確的轉直,因此m2m.ini增加了轉換標點符號的設定,其中[SymbolReplace_Horizental]是轉換橫排的標點符號,包括半形逗點轉成全形逗點等,[SymbolReplace_Vertical]則是直排時的標點符號轉換,其中冒號必須換成橫的冒號,但宋體位置不太美觀,但黑體卻又正常...。

vertical

vertical2

4. 讀檔後

讀檔後在下方的訊息框會顯示執行訊息,若有勾選自動轉換Markdown,則會額外產生同名的.markdown檔案,按下勾選欄位右方的按鈕會以記事本開啟三國演義.markdown。

如果檢查.markdown後手動做了調整,那麼要重新選取檔案,選取三國演義.markdown,不勾選自動轉換,再按〔1.讀檔〕以重新讀入修改後的Markdown檔。

04

5. 產生設定檔

讀檔後按〔2.產生設定檔〕以產生需要的各式檔案,此時右下方會出現檢視設定檔的多個按鈕。

05

產生的檔案說明如下:

檔案 檔案範例 說明
書籍內容的HTML檔 mybook.html HTML是書籍本文的內容。一本書可以使用多個HTML檔,但為方便我只使用一個HTML檔
HTML使用的樣式表 style.css HTML檔若有使用CSS樣式就需要本檔
目錄的HTML檔 toc.html 形成目錄(Table of Contents, toc)的網頁內容
目錄的索引檔 toc.ncx Kindle 「前往」出現的選單(ncx是Navigation Control file for XML applications)
封面圖片 mybook.jpg 封面圖片可不使用,但缺少時KindleGen較不穩定
控制組合的OPF檔 mybook.opf OPF是Open Packaging Format,負責將上述檔案組合起來以形成最終的Mobi檔
執行的批次檔 mybook.bat 用來產生MOBI檔的批次檔,叫用kindlegen.exe並拷貝到輸出目錄

真正執行產生.MOBI的是mybook.bat,若有需要做其他操作的話,可以編輯安裝目錄裡的template.bat,自行修改內容,則重新產生的mybook.bat就會是修改後的內容。

6. 檢視產生的檔案

為確認需要的檔案都有正常產生,可點擊右下方的按鈕來檢視其內容,尤其是 toc.ncx 必須正確產生目錄標題,否則無法產生.MOBI檔。

06

7. 產生MOBI檔

最後按〔3.產生MOBI檔〕則會開啟命令提示字元(DOS視窗)執行mybook.bat,再以下列命令產生MOBI檔:

[安裝目錄]\kindlegen.exe mybook.opf -c1 -dont_append_source

kindlegen產生出的檔名固定為「mybook.mobi」,在mybook.bat裡複製到輸出目錄\書名_作者.mobi。

07

8. 檢視.MOBI檔

最後按右下角的預覽MOBI檔可以用設定的預覽程式來開啟輸出目錄裡的「書名_作者.mobi」。預覽程式必須另行安裝,可以用Kindle for PC或Kindle Previewer,透過m2m.ini設定好執行檔路徑。

08

9. 上傳到Kindle接收信箱

Kindle的【設置】→【我的帳戶】→【發送至Kindle 電子郵件地址】可以查到信箱,或由下列網址查詢:

  • 美國亞馬遜:https://www.amazon.com/myk
    amazon

  • 中國亞馬遜:https://z.cn/myk
    z.cn

瀏覽ifttt.com並登入後,搜尋「Send files from Dropbox to your Kindle」再設定成自己的Dropbox資料夾與接收信箱,日後只要把.MOBI輸出到Dropbox指定的資料夾,IFTTT.com就會自己寄信到Kindle接檔信箱。

  1. m2m.ini設定
    m2m.ini可以設定下列選項,以符合個別環境:

settings

設定參數 說明
KINDLEGEN 要指定其他位置的kindlegen.exe時使用,預設直接使用安裝目錄裡的檔
LEVEL2_MAX_COUNT 標題二章節的最多數目
OPTIONS 預設的壓縮等級
MOBI_FOLDER MOBI檔的輸出目錄
TEXT_FOLDER 電子書文字檔的存放目錄
HTML 讀mybok.html的編輯器
TEXT 讀文字檔的編輯器
MOBI 讀.MOBI檔的編輯器

如何由橫排改為直排

要產生成由上到下的直排

相關連結

版本 釋出日期 更新說明 下載連結
0.02 2018/09/29 由Lazarus改寫為Delphi XE 下載
0.03 2018/10/02 段落空兩格與直排 下載

##

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

簡睿

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

您可能也會喜歡…

12 個回應

  1. ANDY表示:

    您好,我在使用m2m轉檔時,一直無法成功轉成.mobi檔,之前曾經用2015年的程式是可以的,不知道這個部分我哪裡有錯,請指導我修正。
    P.S : 我確定toc.ncx有確實產生

    Amazon kindlegen(Windows) V2.9 build 1029-0897292
    命令行电子书制作软件
    Copyright Amazon.com and its Affiliates 2014

    信息:I9006:选项:-c1:标准 DOC 压缩
    信息:I9018:选项:-donotaddsource:不会添加源文件
    信息(prcgen):I1047: 已添加的元数据dc:Title “星移記:羊毛記起源真相(前傳)”
    信息(prcgen):I1047: 已添加的元数据dc:Date “2019/6/9”
    信息(prcgen):I1047: 已添加的元数据ISBN “123456789Y”
    信息(prcgen):I1047: 已添加的元数据dc:Creator “張子漠_譯”
    信息(prcgen):I1047: 已添加的元数据dc:Publisher “Andy”
    信息(prcgen):I1047: 已添加的元数据dc:Subject “星移記:羊毛記起源真相(前傳)”
    信息(prcgen):I1047: 已添加的元数据dc:Description “星移記:羊毛記起源真相(前傳)”
    信息(prcgen):I1002: 解析文件 0000002
    信息(prcgen):I1015: 创建 PRC 文件
    信息(prcgen):I1006: 分析超链接
    警告(prcgen):W14001: 超链接出现问题,尚未解决: D:\Applications\m2mportable\win64\mybook.html#SECTION_1
    警告(prcgen):W14002: 一些超链接中的问题无法解决。
    信息(prcgen):I1008: 分析读取起始位置
    错误(prcgen):E24010:无法解析目录中的超链接(一个可能的原因是此链接指向带“样式显示:无 (style display:none)”的标签):D:\Applications\m2mportable\win64\mybook.html#SECTION_1
    错误(prcgen):E24001: 无法创建目录。
    信息(prcgen):I1049: 创建目录 网址: D:\Applications\m2mportable\win64\toc.ncx
    信息(prcgen):I1016: 创建改进的 PRC 文件
    信息(prcgen):I1007: 分析媒体链接
    信息(prcgen):I1011: 写入媒体链接
    信息(prcgen):I1009: 分析指导项
    信息(prcgen):I1038: 由于出现错误,无法生成 MOBI 域名文件!

    D:\Applications\m2mportable\win64>echo 16:58:13.95
    16:58:13.95

    D:\Applications\m2mportable\win64>copy mybook.mobi “K:\小說\Mobi\星移記:羊毛記起源真相(前傳)張子漠譯.mobi” /y
    The system cannot find the file specified.

    D:\Applications\m2mportable\win64>pause
    Press any key to continue . . .

    • 簡睿表示:

      可能是沒有章節符號,可檢查 toc.ncx:

      是否沒有第一章的內容。

      可以在電子書文字檔中點加一行 ## BEGIN, 兩個井號在第一個位置。
      再讀檔重新執行。

  2. 凱西表示:

    請問若是TXT檔的章節標題是特殊符號,應如何設定,EX☆、Chapter 1, 建入☆、Chapter (.)=## ☆、Chapter (.)一直查無#標題,顯示失敗。
    另外,請問是否有打算寫成可與Mac OS相容的版本呢?發現Mac版要找到怎麼可直書轉Mobi轉換很難100% 完美(自己怎麼轉直書,Mobi檔的標點符號怎麼轉都失敗),而天火藏書只要超過300章,章節的功能就失敗了,只好回到PC作業下執行。

    • 凱西表示:

      更正是^☆、Chapter 1, 建入☆、Chapter (.)=## ☆、Chapter (.)一直失敗

    • 簡睿表示:

      事實上m2m 0.04有產生MacOS 32-bit的程式,但一直沒時間仔細測試,因此並未釋出。

      另外,新版效能不佳,若不介意橫排,使用舊版會比較快。請參考新錄的介紹操作影片:https://youtu.be/dovPtBQN_8E。

      • 凱西表示:

          感謝回覆,晚一點試試設定看看,是否可以轉出目錄。
          所謂的Mac版仔細測試是使用者測試還是程式的測試,若是前者,我可以自願測試並反饋問題,若是後者就幫不上忙了。
          新版效能不佳指的是?其實個人習慣就是覺得小說或者是文學類的書籍應該要直排,所以才一直在想辦法轉成直排。
          另外,若是PC版新版轉出來有問題,是否也可以反應呢??

        • 簡睿表示:
          1. MacOS版等我有空檔時再進行,敬請期待。
          2. 0.04的轉換花的時間很久,需要再調整。
          3. 歡迎回饋問題。
          • 凱西表示:

            有幾個問題
            1. 為什麼直式的版本,翻頁並不像是其他家的直式,是由左側翻頁,m2m轉出來的是右側翻頁?
            2. 發現在Kindle PW3左右兩邊常常會很擠,請問左右兩側是否有辦法留點白?

          • 簡睿表示:
            1. 更新安裝目錄裡的template.opf即可,我會在文末加上下載連結。
            2. 應該是可以調整style.css的樣式,Kindle設置裡的左右控制有用過但仍不理想嗎?
          • 凱西表示:

            左右翻頁的問題解了,至於左右留白的問題,最近還沒時間專注的使用Kindle 待有問題再反應,感謝!!

          • 簡睿表示:

            @凱西: 請更新 style_vertical.css, 或直接修改style_vertical.css,最後一組 0 0 2em 2em改成 0 2em 2em 2em (分別是上右下左的邊界值)

發佈留言

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