撰寫科技文件,一般最常使用的就是 TEX/LATEX 及 DocBook。當然,目前也有不少人使用 MS Office 或 OOo 來寫作,我們就來聊聊這些相關的議題。
由於,一般開發者寫文件,多數仍然採用的是 TEX/LATEX 及 DocBook 的方式,所以,這裡我們暫時先討論 TEX/LATEX 及 DocBook 為重點。畢竟這些工具容易程式化處理,對開發者而言,效率及處理上可能會比較吃香一點。例如 GNU/Linux kernel 的文件就是使用 DocBook 模式撰寫的。
近年來,XML(eXtensible Markup Language)語言有越過 SGML(Standard Generalized Markup Language)語言的趨勢。主要原因是 SGML 過於複雜、龐大,一般使用會有「殺雞用牛刀」的感覺。縱使是 XML,以整體來看也還是很複雜的。而 TEX 則是專注在平面排版這個範圍,所以他本身雖然複雜,但整體來說,就比起 XML/SGML 單純了。在這篇文章裡,個人將著重在 XML 及 TEX,而且重點是科技文件,而非一般的文字寫作。
我們就先來粗略的比較一下 XML 及 TEX 這兩種語言、格式、規格的概觀差異性:
TEX 的時代網路還不發達,而且 TEX 本來就是著重在平面排版,縱使後來有一些轉換程式的出現,但他的原稿(*.tex)仍然是不很適合於資料交換及網路應用。
TEX 的發展比較集中,尤其 TUG(TEX User Group)的向心力很強,所以一些成果容易統整被再利用。反觀 XML 就有點像「兄弟登山,各自努力」,形成統整不容易的情形。W3C(World Wide Web Consortium)本身並沒有發揮像 TUG 一樣的效果出來,這當然是因為他的定位不一樣,而 XML 並沒有像 TUG 一樣的有強向心力且集中的組織或團體出現。
這是延續前面而來的,各家有各家的做法,沒有出現一個主流的 XML 應用軟體,使用者只好自行去選擇、湊合「套件」來使用。
本來 W3C 製訂 XML Schema 是想取代 DTD(Document Type Definition),但是由於延續以前留下來的做法,所以,還是大量使用以前留下來的 solution。可能也因此綁住了 XML 自己的發展方向。
當然,這樣的比較不是很公平,因為 TEX 已耕耘了二十幾個年頭,XML 和他差了差不多十歲。所以,暫時要完全脫離 TEX,完全使用 XML 的 solution 用於專業排版的話,恐怕在某些領域,一般使用上會有困難。但漸漸的往純 XML solution 的方向走,個人倒是覺得很樂觀,甚至最終會和 DTD 分手(?),但這還得經過時間的考驗。
我們談到科技文件,不得不就要觸及數理式子的排版。這當然是 TEX 的拿手把戲,但 XML/MathML(Mathmatics Markup Language,是 XML 規格製定的一種標記語言)也不甘示弱,那麼我們在這篇文章內,也會稍微做一個簡單的比較,看看這兩種工具在數學式子上的表現。
TEX 的文稿雖然是純文字的 *.tex 檔,但是一般的表現都是轉成 ps/pdf/html 的方式來流傳,尤其是 pdf 的方式。html 的方式的話,通常數學式子是轉換成圖檔來表現的,這在網頁上的呈現失真在所難免。而且,如果是以語意網路來看待將來的網路的話,這方面就比較弱了。
XML 也是同樣的情形,文稿是純文字的 *.xml,但最後都會轉成其他格式,供流通及閱覽用。目前尚沒有完備的 XML 閱覽器,事實上 XML 文稿本身是定位在利於儲存及交換的地位。
Web browser 是目前最方便、最普遍的 browser。但是對於這些科技性的文件,他的腳步始終是比較慢,也就是說 XML/MathML 文件,如果以目前的 web browser 來看的話,支援並不完整,不相信的話,可試試以下的網頁:
http://edt1023.sayya.org/db/article.xml
和 TEX/LATEX 排版出來的 pdf 比較一下:
http://edt1023.sayya.org/db/article.pdf
閱覽這個網頁時,要等一下下,讓 mozilla/firefox 去解讀一下,而且,失真了!對吧!其實 mozilla/firefox 已經具備閱覽這種網頁的能力了喔!只差在必要的字型及設定。現在,讓我們替 mozilla/firefox 小小加工一下。請先取得以下的字型:
http://www.mozilla.org/projects/mathml/fonts/bakoma/texcm-ttf.zip
解開後丟到 /usr/share/fonts 下的任一個子目錄,執行一下 fc-cache。關閉 mozilla/firefox,並在家目錄下 mozilla/firefox 子目錄的 prefs.js 加上以下一行:
user_pref("font.mathfont-family", "CMSY10, CMEX10");
重新啟動 mozilla/firefox。然再來閱覽 article.xml 看是否有什麼不同?Mandrake Linux 的使用者,只要安裝 fonts-ttf-latex-0.1-1mdk 的 rpm 就可以了,不必安裝 texcm-ttf.zip。
MS Windows IE 的話要加裝 MathPlayer 的 plug-in:
http://www.dessci.com/en/products/mathplayer/
如果你沒看到像以下圖檔,這個樣子的數學式子,那表示字型沒有安裝、設定成功喔!
http://edt1023.sayya.org/db/article.png
大家看出來了嗎?要在 web browser 製作、閱覽含數理式子的科技性文件,目前還不是那麼的普遍與方便,而且 render 也有點慢。但 XML/MathML 文件的確是值得我們去努力的一個方向,這個 article.xml 已經符合語意網路的部份基本要件了喔!這和一般使用圖檔顯示數理式子的 html 網頁是不一樣的。
上面曾談到,純 XML 的 solution 目前還不是很成熟。其實,TEX/XML 互相合作,反而是目前的一個很好的方式(甚至以後也還是)。就像這篇文章中的 article.xml 一樣,他正是 TEX/XML 合作下的產物。他的原始文稿其實是 TEX 文稿,經由 Hermes 轉換後才得到 XHTML/MathML 的語意網頁內容,這個文稿其實就是 Hermes 裡頭所附的一個例子。
談到這裡,大家不知道有沒有發現,好像冷落了 DocBook!上面所談到的 solution 和 DocBook 一點關係也沒有。DocBook 原本是設計給 SGML 使用的,後來才加上 XML 的部份,而且主要的仍然是以 DTD 為主的文件模型,雖然,最近也有加入一些 XLST 的轉換語言。
但 DocBook 目前是使用量非常大的科技文件模型,由於目前 XML Schema/MathML 的發展還跟不太上腳步(指一般性的使用),因此 DocBook 也是有相當重要的地位。中文方面,也由於 Chen Chi-Hung 的幫忙下,使得 jade/jdatex 可以處理中文,請參考 CLE CLDP forum 的文章:
http://cle.linux.org.tw/forum/viewtopic.php?t=89
http://cle.linux.org.tw/forum/viewtopic.php?t=96
那麼,有沒有可能 TEX/MathML/DocBook 共同合作呢?有的,例如 DB2LATEX 就是一個這樣子的工具。他的原稿是以 DocBook 的模式撰寫的,但可以轉換成 LATEX/MathML,甚至連化學式也可以轉換:
http://db2latex.sourceforge.net/
談到這裡,不免心酸,因為看到了這些好用的工具,但一碰到中文就發生問題了,這不完全是 Big5/UTF-8 的問題,而是實際上處理多字元語系細節的問題,例如斷行、分頁
等等,這還有待我們的努力。
這兩個都是在規範 XML 文件表現的模型,地位及作用是一樣的,但 DTD 使用的並不是 XML 本身的語法規格,他早在 XML 規格製定前就已經存在了。由於 DTD 年紀比 XML 大得多,因此已經有許多的朋友在這個領域下了功夫,那麼互相轉換使用,可行嗎?答案是肯定的,後下就是 DTD 轉 XML Schema 的工具:
http://www.w3.org/2000/04/schema_hack/
當然,不是把他轉換過來就可以使用了,而要考慮到相關的其他的工具配合。以目前多數開發者使用 DocBook 的情形,那當然 DocBook 的相關工具會比較成熟,所以這樣子的轉換實益,還有待時間的考驗。
那麼我們應該怎麼選擇工具呢?老實說,不管是 TEX/LATEX/DocBook/MathML,他們的原始文稿要用一般純文字編輯器來寫的話,大概會嚇壞不少初接觸的朋友,而我們並沒有一個 free 好用的 WYSIWYG 專門編輯器。這個部份,還得請有這方面使用經驗的朋友來補充,因為我個人是使用 vi 行遍天下的。:D 因此就沒有在專用的 GUI 編輯器上認真了。
個人是認為,選哪一個文件系統都沒關係,TEX 也好,DocBook 也罷,用得順手,合乎需求就行了,反正都可以在某種程度內做轉換。以專業排版而言,當然 TEX 目前是略勝一籌,但在前面也提到過,他本來的訴求就是這個樣子啊!以資料交換、網路應用,那麼 DocBook/XML 可能會比較好,但同樣的,他的順手的工具就不如 TEX 那麼充裕,而且中文處理還有待加強。
所以,就選一篇短文,親自去試試看這兩種的 solution,那麼答案就會呈現出來了。:D
個人在這兩種文件中都曾有寫作的經驗,但實際上 TEX/LATEX 使用的比較多,這是因為成熟的工具比較多(尤其是中文處理),而且有許多文件需要用到特殊領域的排版,所以,使用 TEX/LATEX 的機會比較多。也因此,這篇文章可能會有偏頗之處,而且個人對於 DocBook/XML/SGML 的認識還很粗淺,所做的比較不免有失客觀及深入,這就有待熟悉的朋友補充及指正了!
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
本文 PDF 格式檔:sciencedoc.pdf
本文 TeX 原始文稿:sciencedoc-041119.tar.gz