我使用的操作系统为 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

安装 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. CTEX社区:zhmakeindex: 中文索引排序工具
  2. GitHub: leo-liu/zhmakeindex
  3. GitHub: golang/text