rayman老大發(fā)明的mdx格式,不僅是一種詞典格式,用來做手機(jī)上的電子書同樣很有優(yōu)勢。它有以下幾個優(yōu)點(diǎn),一是壓縮率高,一般只有純文本文件的一半或更?。欢侵С?/font>html的標(biāo)簽,可以實(shí)現(xiàn)字體樣式、圖片、鏈接等效果;三是即使文件很大,打開的速度仍然很快,它并不是把整個文件都加入到內(nèi)存里,可以節(jié)省內(nèi)存。另外,他自帶的收藏功能當(dāng)作書簽用,也很方便。 我之前將幾本電子書轉(zhuǎn)成了mdx格式,下面將我的一些方法分享一下,希望沒有制作過mdx的人可以從中學(xué)會,把自己喜歡的電子書轉(zhuǎn)成mdx,與大家分享。
這里說的電子書主指基于html即網(wǎng)頁的電子書,一般是chm或exe格式。 首先第一步是把電子書反編譯,就是還原出其中的網(wǎng)頁、圖片等內(nèi)容。建議盡量從chm格式的電子書來轉(zhuǎn),因?yàn)檫@種電子書反編譯比較容易,用一個chmFBY就可以了,很快,而且反編譯出來的內(nèi)容很完整(其他反編譯chm的軟件還有很多,比如老馬的unEBook,制作chm的軟件往往也自帶反編譯的功能,如easychm,htm2chm)。exe格式的電子書由各種不同的軟件做成,要找專門的反編譯工具,老馬的minikillbook雖然可以從所有基于網(wǎng)頁的電子書轉(zhuǎn)出網(wǎng)頁或文本,但速度要慢很多,文件很大的時候還可能不太穩(wěn)定,可以作為備用。 轉(zhuǎn)出來的內(nèi)容一般包括網(wǎng)頁(htm、html)、圖片(gif、jpg、png、ico等格式)、css樣式表、js(javascript)文件等。圖片很多時候是都是背景或是效果,可以將它們?nèi)縿h掉。如果反編譯出來的文件有多個子文件夾,可以使用windows的搜索,比如輸入*.gif將所有的gif圖片搜索出來,然后全選、刪除。如果轉(zhuǎn)出來的文件很多,有數(shù)千甚至上萬個文件的話,可以將下面幾行: @echo off rem 正在搜索...6 I' q0 x8 Y8 J% f rem 刪除文件 for /f "delims=" %%i in ('dir /b /a-d /s "*.gif"') do del %%i rem 刪除完畢6 ^$ q/ U5 ~* U A pause. y' q5 b, g- b 復(fù)制到一個新建的文本文件,另存為.bat(批處理文件)格式,然后把這個bat文件放到要處理的文件夾中雙擊運(yùn)行即可,它可以刪除該文件夾及子文件夾中所有的gif文件。jpg、png、ico、css、js文件可以用同樣的方法刪除。如果是網(wǎng)頁制作高手的話,可以把css留著,做些改編運(yùn)用,mdict是支持css的。我不是高手,所以沒這方面的經(jīng)驗(yàn)。 如果圖片是書中的內(nèi)容,而你想留著的話,可以把這些圖片保存到一個文件夾里。后來編輯mdx源文件的時候,要注意圖片路徑與實(shí)際位置的一致。如果圖片分散在很多的子文件夾,而且又有重名的話,處理起來會很麻煩。
接下來是處理網(wǎng)頁文件,如果網(wǎng)頁都在同一個文件夾,我一般是將目錄(一般是index.htm或000.htm)單獨(dú)編輯,留下其中的鏈接,其他的全部用老馬TextForever中的html>txt轉(zhuǎn)為文本文件。這樣做網(wǎng)頁中的鏈接、表格、圖片都會丟失,如果想保留這些東西的話,可以在用TextForever之前,用Ultrareplace5.02(支持正則、多項(xiàng)同時、批量替換)將其中的<a href="…">、</a>、<img src="…">、<table …>、<tr>、<td>、</td>、</table>全都轉(zhuǎn)成諸如####a href="…"&&&&的樣子,用TextForever將網(wǎng)頁轉(zhuǎn)成文本之后,再把其中的####替換成<、&&&&替換成>。 網(wǎng)頁全部轉(zhuǎn)成文本之后,接著用TextForevr的文件合并功能,將轉(zhuǎn)出的文本文件合并成一個文件,注意要選中“在文件內(nèi)容前加注文件名”這個選項(xiàng)。 接下來是編輯mdx源文本。源文件的格式很簡單,就是形如:
條目 內(nèi)容…… …… …… </>" 條目 內(nèi)容…… ……" ……" </> 其中的條目就是顯示在索引里的名字,不會顯示在正文中。內(nèi)容里支持支持html標(biāo)簽(具體支持到什么程度我不清楚,我都是用最簡單的),比如 “<br>”是換行; “<a href="entry://鏈接到的條目">顯示的內(nèi)容</a> ”是鏈接; “<h1>…</h1>”之類是標(biāo)題,一共有六級標(biāo)題,<h1>最大; “<font color=blue size=5>…</font>”是字體樣式; “<p align=center>…</p>”是定義段落的顯示位置。 有一點(diǎn)要說明的是連續(xù)的半角空格在顯示時只會顯示一個,文本中的換行在顯示時也是一個半角空格,所以要注意加<br>。 不要用記事本或word,因?yàn)槲募源簏c(diǎn)它們就會罷工,更重要的是它們不支持正則表達(dá)式。你可以用UltraEdit、Notepad++、Editplus、EmEditor(我常用這個),還有一個專注于查找替換的文本工具EditPad Pro,與PowerGrep(windows下最強(qiáng)大的文本查找處理工具)是同一家公司出品。關(guān)于正則表達(dá)式,你可看一篇名為《正則表達(dá)式30分鐘入門教程》的文章,說是入門,其實(shí)所有的功能基本都在里面了,入門指的是熟悉規(guī)則,提高則需要熟用生巧。需要注意的是,各個文本編輯工具中的正則表達(dá)式版本并不相同(UltraEdit自身就提供了三種版本),使用的時候要留心,在這些工具中,如果你在查找替換對話框里選中了“正則表達(dá)式”這個選項(xiàng)的話,查找框的后面有一個向下的小箭頭,點(diǎn)一下,就會列出正則表達(dá)式的元字符。EmEditor中的正則表達(dá)式與30分鐘教程里介紹的基本是一致的。以上提到的這些文本編輯工具,都支持較大的文件,200M應(yīng)該都是沒有問題的,如果很大的話,可以使用終極工具PowerGrep,它不光可以替換,還可以收集數(shù)據(jù)、分割文件,據(jù)說支持上G的文件,雖然我沒試過,但我信。它的價值還體現(xiàn)的它的價格上,要200多美元,注意是美元!不過網(wǎng)上有破解的,你可以搜“PowerGREP.v4.2.0.retail-iOTA”,下載后解壓,直接運(yùn)行里面的安裝程序就行,它本身就是破解的,你不用再輸序列號,或是運(yùn)行keygen之類的東西。它是全英文的,目前還沒有漢化版,我是用靈格斯摸索著用的。 合并后的文件中會有很多空行,在EmEditor中你可以用“^\s*(<br>)?\n”替換為“”(替換框里什么都不填)將空行去掉,你可用“\n”替換為“<br>\n”在所有的段落結(jié)尾加<br>,這兩個步驟不分先后。然后,你可用“\n\s*”替換為“\n ”把所有段落替換為首行縮進(jìn)兩個中文字符(這兩個中文空格一般輸不出來,你可以找個地方復(fù)制過來)。然后你可以把合并文件時插入的文件名,比如“ D:\chm\001.txt<br>”(經(jīng)過前兩步多了段前空格和<br>)之類用“ D:\\chm\\(.+?)\.txt<br>”替換為“</>\n史記\1”,替換出來的結(jié)果是: </> 史記001 以上提到的那些編輯工具都支持錄制宏,就是把步驟錄下來,以后直接使用??梢园焉厦鎺讉€步驟錄下來,編輯另外一本書的時候直接調(diào)用。(步驟必須是一模一樣的才行,比如上面的替換名字,必須名字一樣,這個宏才有用。)
替換后將第一個</>刪掉,然后在最后一行加一個</>,</>要在獨(dú)立的一行,前后不能有其他東西。把單獨(dú)編輯好的目錄復(fù)制到這個文本里(你可以找一個有目錄的mdx,在電腦上用mdict查看,右鍵查看源代碼就能看到它的源文件),一般粘貼在最前面,它的最后也要有一個</>。這樣一個mdx源文本就編輯好了,保存之后,用mdxbuilder編譯就行了。這個過程很快,1M、2M的源文本就是一貶眼的事,200M的源文本也只要1-2分鐘。注意要在mdxbuilder中選擇對應(yīng)的編碼類型,否則編譯出來的會是亂碼,源文本的編碼類型在文本編輯器最下面的狀態(tài)欄里可以看到,一般是GB2312或UTF-8無簽名,在mdxbuilder中分別選GBK或UTF-8。
如果反編譯出來的網(wǎng)頁在很多個子文夾中,并且都是001.htm,002.htm……這樣的樣子,可以用批量重命名的工具,在這些文件名前面加上其文件夾的名字。推薦使用靈者更名(RenGod)5.03,這個工具漂亮、直觀、功能強(qiáng)大,比論壇里介紹的菲菲更名要好用。(這是一個年紀(jì)不大的男孩寫的軟件,到5.03的時候,源代碼丟了,他正在重寫。) 批量命名之后,因?yàn)?/font>Textforever的合并不支持子文件夾,可以把 md htm for /r %%i in (*.htm*) do move "%%i" "htm\%%~nxi" 另存為bat批處理文件,放在文件夾下運(yùn)行,可以把文件夾及其子文件夾中所有的htm文件,轉(zhuǎn)移到一個名為htm的文件夾中。然后用TextForever轉(zhuǎn)化成文本,合并,再用文本編輯器編輯。
對于己有的mdx文件,如果想要修改的,可以用GetDict轉(zhuǎn)出源文本,編輯之后,用mdxbuilder重新編譯。
|