星期二, 5月 24, 2005

用 subversion 作版本控制

  • 前言
      因為我時常在PC及Mac或 是其它公用電腦上進行開發的工作,常常是要面對同一份 code ,原本都是用 FTP 或隨身碟來保有最新版本的 code,不過這樣的作法實在不 make sense,於是開始想利用一些版本控制的工具來幫忙我做這些瑣事,這樣即便我換到不同的電腦上工作,都可以輕易取得最新版本的 code。

  • 環境
      我自己有一臺 FreeBSD 的 server,我打算在上面安裝 svn server 來存放最新版本的 code,而工作用的 PC 或 Mac 則使用 svn client 來取得最新版本。svn server 我是使用 subversion 這套軟體,而 PC 上我用 TortoiseSVNsvk, Mac 上則是用 svk。

  • SVN Server 的安裝
    1. 在 FreeBSD 的 ports 中就已經有 subversion 了,所以只需要安裝 /usr/ports/devel/subversion 就可以了。

    2. 安裝好 subversion 之後,便可以使用 svnadmin 指令來建立 Repository。比方說我要在自己的目錄下建立一個新的 Repository,就可以輸入下列指令:

      svnadmin create /home/eric/project/foo

      於是它就會在 /home/eric/project/foo 下建立好 Repository 了。

    3. 接著就是要設定一下權限,打開 foo/conf/svnserve.conf 這個檔案,加入下面三行設定(或是 demark 原本註解掉的設定),在這裡我不希望匿名使用者能存取 repository,所以我 anon-access 設成 none。

      [general]
      anon-access = none
      auth-access = write

    4. 這樣就可以使用這簡單的 repository 了。

  • SVN Client
       在這部分我主要是用在 Mac 或 Linux/FreeBSD 上用 svk 的方式來介紹(當然要安裝 svk 軟體,它並不是內建的),如果在 PC 上(Win32作業系統)使用 TortoiseSVN,其實步驟是一模一樣,只不過它整合到「檔案總管」,按右鍵就能操作了。

    1. 第一次建立 project 時,要先作 check out 的動作,svk 的用法就是:

      svk checkout svn+ssh://eric@servername/home/eric/project/foo

      從指令中我們可以看得出來這種作法是使用 SSH 作認證的機制,如果 svn server 有別的認證方式,就要看一下文件囉。

      輸入完指令,它會問你 URI 及 project 目錄,URI可以不用更改,目錄的話則看你要把 project 的檔案放在哪裡就輸入路徑吧。

    2. 等到 check out 作完後,如果你要新增檔案進 project 中(比方說 bar.c),則可以使用

      svk add foo/bar.c

      從 project 中移除檔案的話,則是用

      svk rm foo/bar.c

    3. 當你要對 project 作修改時,最好先檢查一下 repository 上是不是有新的版本,所以要作 update 的動作,而 svk 的用法是

      svk update foo/

      它就會將你的 project 相關檔案更新至 repository 上最新版本。

    4. 如果修改完某個檔案,要作 commit 動作時,則用

      svk ci foo/

      來 commit 你修改的結果到 repository 上。

  • 後記
      這只是一份簡單的 tutorial,如果你想對 subversion 有更進一步的了解及研究的話,可以參考它的文件,這裡提供一個中文翻譯的連結

星期五, 5月 13, 2005

在 Mac OS X 使用 TeX

目前要在 Mac OS X 下使用 TeX 相當方便,通常是建議使用 i-Installer 來安裝,詳細過程請見這裡

安裝好之後,英文的 LaTeX 環境就完成了,可是如果要使用中文的話,那麼還得另外安裝其他的東西。

目前要讓 LaTeX 可以處理中文的解決方案有兩種,一種是使用 XeTeX,另一種是安裝 CJK 和 ucs 套件。使用 XeTeX 的好處是,它是以 Unicode 來處理的,所以只要稍微設定一下,就可以像使用英文般地寫作,不用去考慮其他的問題。但是 XeTeX 的文件就只能給 xetex 和 xelatex 來編譯,我不知道目前有多少平台可以執行 XeTeX,看起來似乎只有 Mac OS X 10.2 以上才有辦法。而 CJK 應該是可以在大部份的平台上執行,但是它在處理中文上比較麻煩,稍後在使用 CJK 的部份我會再說明。

XeTeX 也可以利用 i-Installer 來安裝,只要在 i-Directories 的部份選擇 Jonathan Kew's i-Directory @ SIL,就可以看見 XeTeX 了。
裝好之後,抓這個檔案下來,解壓縮之後,把 fontspec 這個目錄放到 ~/Library/texmf/xetex/ 下,這樣就可以指定字型了。首先要使用前先 \usepackage{fontspec},再呼叫 \setromanfont{Apple LiSung Light},就會設定 Apple LiSung Light 為文件字型。另外還要設定中文的斷行:\XeTeXlinebreaklocale "zh",否則斷行會不正常。

至此,XeTeX 的設定就完成了,如果要搭配 TeXShop 之類的編輯軟體,在 XeTeX 的網頁有設定的說明。

XeTeX 和 CJK 是可以並存的,安裝 CJK 可以參考這個網頁的說明,但是要注意的是,在 b 的 iii 這步,原本它是說把 *.enc 放到 /usr/local/teTeX/share/texmf.local/pdftex/enc/,如果遇到找不到字型的問題,請把 *.enc 放到 /usr/local/teTeX/share/texmf.local/fonts/enc/pdftex 裡。

在 LaTeX with CJK 中使用中文還得去定義一個 macro,再把中文包起來。

像是這樣
\newcommand{\cjk}[1]{\begin{CJK}{UTF8}{cyberbit}#1\end{CJK}}
然後再用
\cjk{這是中文}

只要抓這個檔,並放到 /usr/local/teTeX/share/texmf.local/tex/latex/ucs
這樣就可以把中文當英文一樣直接使用了,但是斷行會發生問題,我還不知道如何解決。

CJK 還有個問題,就是 section, chapter 這些會放到目錄裡的字不能使用中文,在李果正的網頁提到了一個過渡性的解法

參考資料裡的網頁分別有 XeTeX 和 LaTeX with CJK 的中文使用範例。

參考資料:
http://www.oikos.com.tw/v4/viewtopic.php?pid=21803
http://www.ece.uci.edu/~chou/unicode-tex.html