LaTeX技巧936:zhmakeindex定制生成中文索引样式一例

zhmakeindex 是一个通用的中文多级索引处理程序,它从一个或多个输入文件读入索引 项,将其内容按指定的方式分组、排序,然后按格式将整理好的索引输出到文件。索引项可 以有 3 个级别(0, 1, 2)的嵌套。zhmakeindex 主要用于 LaTeX 索引的处理,其功能和用法与 makeindex 相似,并支持中文的分组与排序。

zhmakeindex命令的简单用法如下:

$ zhmakeindex
  用法:
  zhmakeindex [-c] [-i] [-o <ind>] [-q] [-r] [-s <sty>] [-t <log>]
              [-enc <enc>] [-senc <senc>] [-strict] [-z <sort>]
              [<输入文件1> <输入文件2> ...]
  中文索引处理程序
    选项    默认值   说明
    -c      false    忽略条目首尾空格
    -enc    utf-8    读写索引文件的编码
    -i      false    从标准输入读取
    -o      无       输出文件
    -q      false    静默模式,不输出错误信息
    -r      false    禁用自动生成页码区间
    -s      无       格式文件名
    -senc   utf-8    格式文件的编码
    -strict false    严格区分不同 encapsulated 命令的页码
    -t      无       日志文件名
    -z      pinyin   中文分组排序方式,可以使用 pinyin (reading)、bihua (stroke) 或 bushou (radical)

那么具体使用如下:

$ zhmakeindex youridxfile.idx %%using default .ist file
$ zhmakeindex -s youistfile.ist youridxfile.idx %%using your personal style file
$ zhmakeindex -s youistfile.ist -z bushou youridxfile.idx %%sorting index entries by chinese characters stroke order

下面我用宏包定制一下索引的显示样式:

\usepackage[noautomatic]{imakeidx}
\makeindex[name=ec,title=英漢索引,intoc,columns=5,columnseprule=true,columnsep=5pt,options={-s ec.ist}]
\makeindex[name=th,title=類詞索引,intoc,columns=5,columnseprule=true,columnsep=5pt,options={-s th.ist}]
\makeindex[name=zb,title=字辨索引,intoc,columns=5,columnseprule=true,columnsep=5pt,options={-s zb.ist}]
\makeindex[name=gy,title=國音索引,intoc,columns=5,columnseprule=true,columnsep=5pt,options={-s gy.ist}]
\makeindex[name=yy,title=粵音索引,intoc,columns=5,columnseprule=true,columnsep=5pt,options={-s yy.ist}]
\makeindex[name=bh,title=總畫索引,intoc,columns=6,columnseprule=true,columnsep=5pt,options={-M bh.xdy}]
\makeindex[name=cj,title=倉頡索引,intoc,columns=6,columnseprule=true,columnsep=5pt,options={-M cj.xdy}]

导言区可以修正一下间隔

\makeatletter
%%define index items layout
\def\@idxitem{\par\addvspace{7\p@ \@plus 3\p@ \@minus 3\p@}\hangindent 17\p@}
%%define index subitems layout
\def\subitem{\par\hangindent 0\p@ \hspace*{0\p@}}
%%define index subsubitems layout
\def\subsubitem{\par\hangindent 0\p@ \hspace*{0\p@}}
%%define vspace above lettergroup name
\def\indexspace{\par\addvspace{12\p@ \@plus 2\p@ \@minus 2\p@}} 
\patchcmd\theindex{\indexname}{\indexname\vspace{5pt}}{}{}
\makeatother

那么打印索引如下:

......
\phantomsection
\addcontentsline{toc}{part}{辭典檢索}
\backmatter
\onecolumn
\pagestyle{mipage}
\printindex[zb] % zhmakeindex -s zb.ist -z pinyin ec.idx
\printindex[ec] % zhmakeindex -s ec.ist -z pinyin ec.idx 
\printindex[th] % zhmakeindex -s th.ist -z pinyin th.idx 
\printindex[bh] % texindy -M bh.xdy bh.idx
\printindex[cj] % texindy -M cj.xdy cj.idx 
\printindex[yy] % zhmakeindex -s yy.ist -z bihua yy.idx
\printindex[gy] % zhmakeindex -s gy.ist -z bihua gy.idx 
\end{document}

使用titleps宏包定义扩展页眉样式:

\newcommand{\indexmark}[1]{\sectionmark{#1}#1}
\newpagestyle{mipage}{ %%index chapter
	\setheadrule{0.7pt}
	\sethead[{\toptitlemarks\sectiontitle}---{\bottitlemarks\sectiontitle}]
                [\linfontb\thepage]
                [{\profonta Appendices—\chaptertitle}]%even head
	        {{\profonta Appendices—\chaptertitle}}
                {\linfontb\thepage}
                {{\toptitlemarks\sectiontitle}---{\bottitlemarks\sectiontitle}}%odd head
	\setfoot[][][] %even foot
	        {}{}{} %odd foot
}

效果如图:

58022a9ca574f.jpg

那么我们也可以扩展:

%人名地名書名索引
\printindex[isn] % zhmakeindex -s isn.ist isn.idx
%作者索引
\printindex[ian] % zhmakeindex -s ian.ist ian.idx 
%篇目索引
\printindex[ibn] % zhmakeindex -s ibn.ist ibn.idx

效果如下:

584d686b08735.png

选自:http://mengxianjun.org/2016/12/11/TangPoem/ 

http://mengxianjun.org/2016/10/15/zhmakeindex/   

扩展阅读:https://www.ctan.org/pkg/zhmakeindex (宏包下载安装)

分享到:
未经允许不得转载:LaTeX技巧936:zhmakeindex定制生成中文索引样式一例
已有 条意见

    最新文章

    加载中...
      本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


      全国首个精品的LaTeX视频教程,大牛带着你入门,让LaTeX学习不再纠结,请点击下图咨询详情

      热门评论

        联系我们

        交流QQ群:91940767
        本站QQ号:343083553
        邮箱联系latexstudio@qq.com
        淘宝店铺latexstudio.taobao.com 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

        关注微信公众号: latex2015

        如果您投稿或者希望加入我们团队,请发送您的简历到latexstudio@qq.com。

        科技艺术的完美融合,专业精致的排版体验

        联系我们联系我们