LyX 1.5.0 beta1 + MiKTeX + CJKutf8

Posted by tjwei on 星期三, 3月 28, 2007

LyX 1.5 將會支援 utf8 code 的編輯,這也意味著可以直接在上面編輯中文文件了。其實我目沒有需要用到這個功能,但是有可能會用到,所以測試並且解決了一些問題。
  1. 首先先說明 MiKTeX 的安裝,我使用 LyX 內含的 MiKTeX 2.5 版,安裝後使用 MiKTeX 設定程式,增加語言裡面的 CJK 套件。
  2. 但是 CJK 套件的版本不夠新,沒有 utf8 的支援,所以請下載 CJK Latex 4.7 以後的版本。下載後解開檔案,然後把 texinput 目錄下的檔案放到適當的位置。我是直接覆蓋到c:\Program Files 下 MiKTeX 程式目錄下面舊版 cjk 相關的位置。
  3. 然後再安裝中文字型。我是抓 CWT1 的 cwfs 字型。在 windows 下面當然無法直接安裝,但是可以閱讀 install.sh 檔,然後手動 copy 檔案。我是用 cygwin 來執行這個檔案。先 ln -s MiKTeX 的目錄到 /tex,把 HOME 設成 /tex。但是這樣還是不能執行,因為 MiKTeX 是 windows 的程式,傳回值跟 install.sh 預期的不同。所以直接修改 install.sh,把終止 install 的部份直接 remark 掉就行了。這樣,就能成功的 copy 檔案到適當位置。
  4. 最後,你還要修改一下 updmap.cfg 這個檔案,這有很多方法可以弄,我是直接修改 MiKTeX 的檔案,反正電腦只有我在用。在裡面加上
    Map cwfsu.map
    這一行。當然不同的字型就會有不同的 map。然後執行一下 updmap, refresh 一下你的系統。
  5. 原則上這時應該就能使用 CJK,可以先測試一下。
  6. 接下來是 LyX 的部份。到官網下載 1.5 之後的版本。原則上,只要把 document -> setting -> language -> encoding 改成 utf8 就可以了。這時理論上來說,存檔時就會把 utf8 的編碼存進去。
  7. 所以在 Preamable 放入
    \usepackage{CJKutf8}
    內文使用用 Ctrl-L 插入 TeX 指令
    \begin{CJK}{UTF8}{cwfsb}
    以及
    \end{CJK}
    然後在這兩個中間就能使用中文了。
  8. 可惜我的 LyX 1.5 beta 1 雖然能夠正確 export latex 檔,但是只要 preview 或者 export dvi/pdf 等等檔案都會 crash,這個應該是因為某些 dll 不相容的問題。所以我做了一個 workaround。先設定快速鍵到 buffer-preview latex 上,這個在 tools->preferences -> look and feel -> user interface 裡面的 binding 檔案中。我是直接把 buffer-preview dvi 的 dvi 改成 latex。
  9. 然後,寫一個程式來翻譯 latex 成為 dvi 並且檢視。並且把 tools->preferences -> file format 中 latex (plain) 的 viewer 設定成這個程式就行了。我是用 python 寫的,程式碼如下:
    import os, win32api, sys
    basepath=sys.argv[1][:sys.argv[1].rfind("/")]
    output=sys.argv[1][:-4]+".dvi"
    os.system('latex -output-directory="'+basepath+'" "'+sys.argv[1]+'"')
    win32api.ShellExecute(0,"open",output,"","",1)

    這樣看起來可能有一點複雜,不過不用花太多時間去深入 hack。我相信如果把 LyX 重新 compile 一次應該就可以了。
Categories: