我的论文由两个相对独立的部分组成,我想在整篇文档的末尾分别包含每个部分的符号索引。这个nomencl
包可以做到这一点吗?
谢谢你!
答案1
目前nomencl
将索引写入文件\jobname.nlo
,因此如果您的文件是thesis.tex
,您将有thesis.nlo
。因此,如果您想要两个索引,则需要重写这部分nomencl
。即:
定义命令
\makenomenclatureA
和,\makenomenclatureB
写入两个索引,比如PartA.nlo
和PartB.nlo
。定义类似的命令
\printnomenclatureA
和\printnomenclatureB
。放入文档中
\makenomenclatureA TEXT \renewcommand{\nomname}{Nomenclature A} \printnomenclatureA \makenomenclatureB TEXT \renewcommand{\nomname}{Nomenclature B} \printnomenclatureB
运行
pdflatex
然后makeindex -o PartA.nls -s nomencl.ist PartA.nlo makeindex -o PartB.nls -s nomencl.ist PartB.nlo
再次运行
pdflatex
。
\makenomenclature
现在让我们来做 (1) 和 (2)。我们可以采用和的定义并修改它们。以下是快速破解方法(复制和\printnomenclature
之间的部分):\makeatletter
\makeatother
\documentclass{article}
\usepackage{nomencl}
\makeatletter
\newwrite\@nomenclaturefile
\def\makenomenclatureA{%
\closeout\@nomenclaturefile
\openout\@nomenclaturefile=PartA\@outputfileextension
\def\@nomenclature{%
\@bsphack
\begingroup
\@sanitize
\@ifnextchar[%
{\@@@nomenclature}{\@@@nomenclature[\nomprefix]}}%
\typeout{Writing nomenclature file PartA\@outputfileextension}%
\let\makenomenclature\@empty}
\def\makenomenclatureB{%
\closeout\@nomenclaturefile
\openout\@nomenclaturefile=PartB\@outputfileextension
\def\@nomlature{%push.relevant.stage.int
\@bsphack
\begingroup
\@sanitize
\@ifnextchar[%
{\@@@nomenclature}{\@@@nomenclature[\nomprefix]}}%
\typeout{Writing nomenclature file PartB\@outputfileextension}%
\let\makenomenclature\@empty}
\def\printnomenclatureA{%
\@ifnextchar[%
{\@printnomenclatureA}{\@printnomenclatureA[\nomlabelwidth]}}
\def\@printnomenclatureA[#1]{%
\nom@tempdim#1\relax
\@input@{PartA\@inputfileextension}}
\def\printnomenclatureB{%
\@ifnextchar[%
{\@printnomenclatureB}{\@printnomenclatureB[\nomlabelwidth]}}
\def\@printnomenclatureB[#1]{%
\nom@tempdim#1\relax
\@input@{PartB\@inputfileextension}}
\makeatother
\begin{document}
\section{First}
\makenomenclatureA
\nomenclature{a}{Definition of a}
\nomenclature{b}{Definition of b}
\nomenclature{c}{Definition of c}
\renewcommand\nomname{Nomenclature A}
\printnomenclatureA
\section{Second}
\makenomenclatureB
\nomenclature{a'}{Definition of a'}
\nomenclature{b'}{Definition of b'}
\nomenclature{c'}{Definition of c'}
\renewcommand\nomname{Nomenclature B}
\printnomenclatureB
\end{document}
结果如下: