HTML 格式目前還是網頁的主流,LaTeX2HTML 就是為此而寫的一組 macro 及 perl script 程式碼,功能很強大,也代表他的處理程序很複雜,值得一提的是,他支援 CJK pacakge。但由於兩種格式的差異性,在使用上不免有削足適履的感覺,一些複雜的 LaTeX macro 還是無法處理(每個 macro/pacakge 都需要相對應的 perl 程式碼來處理),但一般使用應該是相當好用了,有必要的話,可以去修改 CSS 檔,來變更網頁的外觀,而且可以使用條件式的方式來寫 LaTeX 文稿,達到一稿兩用,甚至多用的目的。
LaTeX2HTML 轉數學式為圖檔的能力很不錯,一般情形下,數學式子的表現要在目前的網頁運作下充分表現會比較困難,縱使做到了,大部分的瀏覽器也是會無法閱覽,因此做成圖檔或許是目前比較通用又不會失真太嚴重的方法。
當然,這裡只是很簡單的介紹,實際深入的運用要詳讀 LaTeX2HTML 的使用手冊。
如果是自行編譯 LaTeX2HTML,一定要記得 docs 子目錄下把 manual 編譯出來參考。雖然資料並不是很新,但主要的架構說明都在裡頭。另外,他的程式碼,有時也要參考一下,才能達到微調的功能。
使用 LaTeX2HTML 的第一步,當然就是在 preamble 區引入6.1:
... \usepackage{html} ...
請盡量引在最後面,就是在其他的 package 引入之後再來引入 html。
如果,有些 package,LaTeX2HTML 並不支援6.2,那得使用條件式的引入方法,以 fancyhdr package 為例,LaTeX2HTML 目前並沒有支援,在 preamble 區可以這樣設:
... ﹪begin{latexonly} \usepackage{fancyhdr} ﹪end{latexonly} ...這樣,LaTeX2HTML 就會忽略被 latexonly 包起來的部份。一些無法被 LaTeX2HTML 接受的自行定義的部份也是可以包在這個環境內,因為 LaTeX2HTML 目前並不完全支援自行定義指令,有些可以,有些則不行。請注意,起頭的是百分號 %,而不是一般的倒斜線6.3,這在 LaTeX 會被認為是注解,但在 LaTeX2HTML 則會忽略被這個環境包起來的 LaTeX 指令或環境。
\latexhtml{latex 敘述}{l2h 敘述}
\htmlrule
\latextohtml
\tableofchildlinks
\chapter*
及 \section*
指令時因不會加入目錄中,可以使用這個指令強迫加入目錄,當然,這只對 HTML 格式的網頁有效。
...
\begin{rawhtml}...\end{rawhtml}
至於更複雜的條件式判斷,可使用 ifthen package,詳細請參考該 package 所附文件。
LaTeX2HTML 的一些設定,可以設在 $HOME/.latex2html-init
這個設定檔內。例如,我個人的設定檔:
$ADDRESS = "<I>Compiled by Edward G.J. Lee ($address_data[1])</I>"; $charset = "big5"; $NO_NAVIGATION = 0; $BOTTOM_NAVIGATION = 1; $LOCAL_ICONS = 1; $WHITE_BACKGROUND = 1; $TRANSPARENT_FIGURES = 1; 1;
更複雜的設定方式,可參考 LaTeX2HTML 的 manual 或 latex2html --help
或 perldoc latex2html 來得知。
在 TeX/LaTeX 的數學模式,LaTeX2HTML 預設就是會把其中內容轉成圖檔,這對數學式子很方便,但對一些特殊符號可能就不是自己想要的了,例如 $<$,$>$,$\backslash$
...等等,這時可以使用 LaTeX 的 \textless,\textgreater,\textbackslash
來取代,或進入 \verb
環境內,這樣 LaTeX2HTML 就不會去轉成圖檔。
我們一般在 LaTeX 使用 \includegraphics
所引用的圖檔都可以順利的由 LaTeX2HTML 來處理,但他是經由外部程式在轉換處理的,有時候會處理失誤,這時就只好做另外的處理了。
如果我們引用的是向量圖檔,包括 MetaPost 製作出來的 mps/eps 圖檔,LaTeX2HTML 可以轉換成 png(預設)或 gif(要另行指定)點陣圖,但有時圖檔的彩色較複雜時,如果想轉成透明圖,偶爾可能會失敗,這時只好手動使用 ImageMagick 的 convert 工具來事先轉好,而 LaTeX 文稿中引用圖檔時不使用延伸檔名,這樣一來 LaTeX 會去取用 eps 向量圖檔,而 LaTeX2HTML 則會取用點陣圖檔(png 優先),這樣就可以各取所需了。
如果講求精確性,那麼可以使用 \htmladdimg
這個指令來插入預先製作好的點陣圖檔,這時可以加入 HTML 引入圖檔時的一些控制選項參數,這樣就可以很精確的控制圖檔在 HTML 時的顯示方式。我們來看一下實際的例子:
... ﹪begin{latexonly} \includegraphics{yourimg} % 這是給 latex 使用的 ﹪end{latexonly} \htmladdimg[WIDTH="297" HEIGHT="297" ALIGN="LEFT" VSPACE="10" HSPACE="30" ALT="Image yourimg"]{yourimg.png} ...
在使用 latex 指令編譯文稿時,latex 會忽略 \htmladdimg
這個指令的所有敘述,這些敘述只會在 HTML 格式出現。當然,這些可能需要手動測試調整一下才會就緒。
如果想使用中文式的網頁說明,請下載以下的 style 檔:
http://info.sayya.org/edt1023/tex/taiwan.perl
然後,置於 $YOURPATH/latex2html/lib/style
目錄下即可。並在同一個目錄下製作一個 taiwan.sty 的空檔案,請注意不要把這個空檔案刪除,否則轉換格式時會出錯。由於這個 package 是專為 LaTeX2HTML 而設的,所以引入時要由 htmlonly 環境包住。
\usepackage{taiwan}
這樣,網頁上所呈現的一些文字按鈕說明會是中文的,但圖形按鈕則仍然是英文。這個 taiwan.perl 只完成一半,偶爾有可能會影響圖檔的產生。
由於網頁的中文斷行會發生和 TeX 文稿一樣的情形,所以要注意按 Enter 鍵斷行所造成的英文單字間空白。
要讓中文字成圖檔,例如在 \mbox{}
及 \fbox{}
的時機,由於 CJK 的編碼方式,LaTeX2HTML 會找不到原字型的實際對應位置,這時可以利用 TeX 的指令去指定字型對應,讓 LaTeX2HTML 找得到對應,就可以經由 dvips/gs 來取字轉成圖檔了。例如,本文造字的部份,由於並不在 Big-5 及 CJK 字碼裡頭,所以必需另行定義,LaTeX2HTML 當然會無法顯示,只能轉成圖檔來顯示。以下是定義的方法:
\font\newf=newfont01 scaled 1200 \def\uchr{\newf\char} \def\Fwu{{\uchr149}} \def\Shiuan{{\uchr150}} \def\Kuen{{\uchr151}}
這樣一來,\Kuen
就會取 newfont01 這個字型的第 151 位置的字,不管是 LaTeX 或 LaTeX2HTML 都可以找得到字,只不過,網頁的部份是轉成圖檔而已。請注意,這裡 scale 成 1200 是配合文稿使用 12pt 的字,至於造字及其相關的議題,請參考第 9 章的說明。
但目前 LaTeX2HTML 對於字型轉成圖檔,由於面對的字型很多,很難取得統一的判斷方式,有時候會把字的上下多留了些空白,這樣在網頁上的顯示會和同一行的文字不協調,這可能還要更深入的去 hack,取得更通用的方式才行。但如果都是英文文件的話,就較不會發生這種情況。
當然,這個方法有點笨拙,像 cwTeX 的字碼轉換,就直接轉成取字的定義碼,這樣可以完全不必另行定義,LaTeX2HTML 也是取得到字轉成圖檔了。是不是有更理想的方式?應該是有吧!大家一起來努力。:-)
Compiled by Edward G.J. Lee (2004-05-18)