zhmakeindex 中文索引處理程式

黃志斌發表於2015-11-17

我使用的作業系統為 Arch Linux 64-bit,桌面環境為 xfce4 。

安裝並配置 Go 語言環境

$ sudo pacman -S go
$ go version
go version go1.5.1 linux/amd64
$ mkdir ~/go
$ vim ~/.bashrc

export GOPATH=$HOME/go  
export PATH=$HOME/bin:$PATH:$GOPATH/bin  

$ exit

安裝 Go 語言的文字處理支援庫

重新開啟 Xfce 終端:

$ go get github.com/golang/text
$ mkdir -p ~/go/src/golang.org/x
$ cd ~/go/src/golang.org/x
$ ln -s ~/go/src/github.com/golang/text .

如果你能夠翻牆的話,上面 4 行也可以用下面 1 行代替:

$ go get golang.org/x/text

安裝紅黑樹元件

$ go get github.com/yasushi-saito/rbtree

安裝 zhmakeindex

$ mkdir -p ~/go/src/github.com/leo-liu
$ cd ~/go/src/github.com/leo-liu
$ git clone https://github.com/leo-liu/zhmakeindex.git
$ cd zhmakeindex
$ ./install.sh
$ zhmakeindex
用法:
zhmakeindex [-c] [-i] [-o ] [-q] [-r] [-s ] [-t ]
...
版本:devel-4c8c5d6(2015-06-29) 作者:劉海洋

生成 zhmakeindex 文件

$ cd ~/go/src/github.com/leo-liu/zhmakeindex/doc/
$ ls
make.cmd     zhmakeindex.bib     zhmakeindex.mst     zhmakeindex.tex
$ vim zhmakeindex.tex (修改開頭幾行,注意使用fc-list命令確認字型)

\setCJKmainfont[BoldFont=FZHei-B01,ItalicFont=FZKai-Z03]{FZNewShuSong-Z10}  
\setCJKsansfont[Ligatures=TeX]{Source Han Sans CN}  
\setCJKmonofont[Mapping=]{WenQuanYi Micro Hei Mono Light}  
\newfontfamily\libertine{FZFangSong-Z02}  

$ vim make.sh (將 make.cmd 翻譯為 make.sh)

echo \\def\\zhmVersion{%> zhm-version.tex
if [ -e "../VERSION" ]
then
  cat ../VERSION>> zhm-version.tex
else
  echo devel%>> zhm-version.tex
fi
echo }>> zhm-version.tex
echo \\def\\zhmRevision{%>> zhm-version.tex
git rev-parse --short HEAD >> zhm-version.tex
echo }>> zhm-version.tex
xelatex -interaction=batchmode zhmakeindex.tex
bibtex zhmakeindex
zhmakeindex zhmakeindex
xelatex -interaction=batchmode zhmakeindex.tex
xelatex -interaction=batchmode zhmakeindex.tex

上述檔案最後 5 行是 LaTeX 處理的標準流程。可以看出,在此處使用zhmakeindex代替makeindex以使得中文索引能夠正確排序。

$ chmod +x make.sh
$ vim Makefile

all:
    ./make.sh && mv zhmakeindex.pdf ~/go/doc/

clean:
    rm -f zhm-version.tex *.aux *.bbl *.blg *.idx *.ilg *.ind *.log *.out

$ mkdir ~/go/doc
$ make
$ make clean
$ xdg-open ~/go/doc/zhmakeindex.pdf

參考資料

  1. CTAN: Package zhmakeindex
  2. GitHub: leo-liu/zhmakeindex
  3. GitHub: golang/text

相關文章