漫談科技性文件的寫作

李果正 Edward G.J. Lee


目錄

1 前言

撰寫科技文件,一般最常使用的就是 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,而且重點是科技文件,而非一般的文字寫作。

2TEX 遇到 XML

我們就先來粗略的比較一下 XML 及 TEX 這兩種語言、格式、規格的概觀差異性:

當然,這樣的比較不是很公平,因為 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 文稿本身是定位在利於儲存及交換的地位。

3 那麼 XML/MathML 呢?

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 裡頭所附的一個例子。

4 別冷落了 DocBook

談到這裡,大家不知道有沒有發現,好像冷落了 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

4.1 TEX/MathML/DocBook 大和解

那麼,有沒有可能 TEX/MathML/DocBook 共同合作呢?有的,例如 DB2LATEX 就是一個這樣子的工具。他的原稿是以 DocBook 的模式撰寫的,但可以轉換成 LATEX/MathML,甚至連化學式也可以轉換:

http://db2latex.sourceforge.net/

談到這裡,不免心酸,因為看到了這些好用的工具,但一碰到中文就發生問題了,這不完全是 Big5/UTF-8 的問題,而是實際上處理多字元語系細節的問題,例如斷行、分頁$\cdots\cdots$等等,這還有待我們的努力。

4.2 DTD 和 XML Schema 的和解

這兩個都是在規範 XML 文件表現的模型,地位及作用是一樣的,但 DTD 使用的並不是 XML 本身的語法規格,他早在 XML 規格製定前就已經存在了。由於 DTD 年紀比 XML 大得多,因此已經有許多的朋友在這個領域下了功夫,那麼互相轉換使用,可行嗎?答案是肯定的,後下就是 DTD 轉 XML Schema 的工具:

http://www.w3.org/2000/04/schema_hack/

當然,不是把他轉換過來就可以使用了,而要考慮到相關的其他的工具配合。以目前多數開發者使用 DocBook 的情形,那當然 DocBook 的相關工具會比較成熟,所以這樣子的轉換實益,還有待時間的考驗。

5 我該選誰呢?

那麼我們應該怎麼選擇工具呢?老實說,不管是 TEX/LATEX/DocBook/MathML,他們的原始文稿要用一般純文字編輯器來寫的話,大概會嚇壞不少初接觸的朋友,而我們並沒有一個 free 好用的 WYSIWYG 專門編輯器。這個部份,還得請有這方面使用經驗的朋友來補充,因為我個人是使用 vi 行遍天下的。:D 因此就沒有在專用的 GUI 編輯器上認真了。

個人是認為,選哪一個文件系統都沒關係,TEX 也好,DocBook 也罷,用得順手,合乎需求就行了,反正都可以在某種程度內做轉換。以專業排版而言,當然 TEX 目前是略勝一籌,但在前面也提到過,他本來的訴求就是這個樣子啊!以資料交換、網路應用,那麼 DocBook/XML 可能會比較好,但同樣的,他的順手的工具就不如 TEX 那麼充裕,而且中文處理還有待加強。

所以,就選一篇短文,親自去試試看這兩種的 solution,那麼答案就會呈現出來了。:D

個人在這兩種文件中都曾有寫作的經驗,但實際上 TEX/LATEX 使用的比較多,這是因為成熟的工具比較多(尤其是中文處理),而且有許多文件需要用到特殊領域的排版,所以,使用 TEX/LATEX 的機會比較多。也因此,這篇文章可能會有偏頗之處,而且個人對於 DocBook/XML/SGML 的認識還很粗淺,所做的比較不免有失客觀及深入,這就有待熟悉的朋友補充及指正了!

6 參考網頁

TUG(TEX User Group)
http://www.tug.org/
W3C Home Page
http://www.w3.org/
轉換 DTD 為 XML Schema
http://www.w3.org/2000/04/schema_hack/
DSSSL(Document Style Semantics and Specification Language)
http://www.jclark.com/dsssl/
Opejade
http://openjade.sourceforge.net/
JadeTEX
http://jadetex.sourceforge.net/
DocBook
http://www.oasis-open.org/docbook/
W3C MathML Home
http://www.w3.org/Math/
MathML Software 列表
http://www.w3.org/Math/implementations.html
XML(Extensible Markup Language)
http://www.w3.org/XML/
XML Schema
http://www.w3.org/XML/Schema
DTD Tutorial
http://www.w3schools.com/dtd/default.asp
語意網頁(Semantic Web)
http://www.w3.org/2001/sw/
DB2LATEX(DocBook to LATEX 的工具)
http://db2latex.sourceforge.net/
Hermes(LATEX to MathML 的工具)
http://www.aei.mpg.de/hermes/

關於這份文件……

漫談科技性文件的寫作

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

本文 PDF 格式檔:sciencedoc.pdf
本文 TeX 原始文稿:sciencedoc-041119.tar.gz


Compiled by Edward G.J. Lee (2004-11-19)