原本在 Windows 下一直試不成功的 LaTeX ,剛才終於把它搞定。其中的步驟頗為繁瑣,包含檢查 LaTeX 是否有缺套件,以及改寫 linuxtexsb.php 檔案。

首先要做的事,就是在電腦安裝 MikTeX ,讓電腦能順利執行 latex.exe 來產生文件。MikTeX 在安裝完成後,應該會把其路徑加到系統中,讓我們在任何地方都可以下達 latex 的指令。在進行下一步之前,先了解 linuxtexsb.php 產生 TeX 檔的流程。基本上任何一條數學式,都以下面的 TeX 格式完成:

\documentclass[12pt]{article}
\usepackage{amssymb,amsmath,amscd,concmath}
\newcommand{\nothing}{}
\pagestyle{empty}
\begin{document}
\begin{align*}$tex\end{align*}
\end{document}";

其中 $tex 變數就是你的數學式,先自己手動產生一個 TeX 檔,裡頭包含上面的指令,$tex 變數改成任意一條數學式,假設檔案取名為 test.tex,然後用 latex test.tex 來跑一遍,安裝 MikTeX 的好處在於,如果產生 dvi 檔的過程缺少什麼套件,它會自動安裝,所以當 dvi 檔順利產生出來,就表示 MikTeX 執行接下來的動作不會碰到問題。一般而言,當初如果選擇 MikTeX 最小安裝(安裝檔大約25MB),有些數學字型跟套件不會裝上去,因此在 \usepackage{amssymb,amsmath,amscd,concmath} 這裡會暫停下來,問你要不要安裝相關的套件,選擇 yes 讓 MikTeX 自動到伺服器上抓套件來安裝。MikTeX 搞定之後,接著弄 PmWiki 的部份。

  1. http://www.pmwiki.org/wiki/Cookbook/LinuxTex 下載 linuxtexsb.php 這個檔案,把它放到 /pmwiki/cookbook 目錄下。就如網頁跟檔名所示,它是專為 Linux 所設計的。
  2. 打開 /local/config.php,在最後面加入下列設定來啟動這個功能
    include_once('cookbook/linuxtexsb.php');
  3. 改寫 linuxtexsb.php

    • 第40行的 $useMethod = "dvips-convert"; 改成 $useMethod = "dvipng";

    • 第151行 touch("$ImgCacheDir/work.tex"); 註解掉

    • 第154行下面加上 copy("$ImgCacheDir/work.tex", "work.tex");

    • 第157行的 exec("cd $ImgCacheDir && $latexPath work.tex"); 改成 exec("latex work.tex");

    • 第170行的 exec("cd $ImgCacheDir && $dvipngPath -T tight -bg Transparent -D 100 -o $imgname work.dvi"); 改成 exec("dvipng -T tight -bg Transparent -D 100 -o $imgname work.dvi");

    • 第175行的 //clean up 部份加上以下三行程式碼

    copy($imgname, "pub/cache/".$imgname);
    cleanUp("work.*");
    cleanUp($imgname);


修改後的 linuxtexsb.php 應該可以正常在 Windows 平台上的 PmWiki 工作!原本的套件產生數學圖形的流程應該是:

1. 在 /pmwiki/pub/cache 產生 work.tex
2. 執行 cd pub/cache && latex work.tex 產生 work.dvi
3. 執行 cd pub/cache && dvipng -T tight -bg Transparent -D 100 -o $imgname.png work.dvi 來產生 $imgname.png 圖檔,$imgname 是數學式經過 md5() 產生出來的檔名
4. 清除 work.* 等檔案,只留下 $imgname.png

在 windows 的環境下,第2和3步無法順利產生,這部份我很訥悶,如果是在提示命令字元底下,這些指令都是正常的,但這個套件呼叫起來就是會有問題,後來發現,若把 work.tex 搬到網頁的根目錄下(即pmwiki.php所在的目錄),就沒有問題,也因此我加了幾行程式碼,把 work.tex 從 /pmwiki/pub/cache 搬到 /pmwiki/ 目錄,再執行產生 png 圖檔的流程,圖檔產生出來之後再把它丟回 /pmwiki/pub/cache 目錄下,然後把留在 /pmwiki/ 目錄下的相關檔案全部殺掉。

banco 發表在 痞客邦 PIXNET 留言(0) 人氣()