使用 nomencl 在单个文档中创建多个符号索引

使用 nomencl 在单个文档中创建多个符号索引

我的论文由两个相对独立的部分组成,我想在整篇文档的末尾分别包含每个部分的符号索引。这个nomencl包可以做到这一点吗?

谢谢你!

答案1

目前nomencl将索引写入文件\jobname.nlo,因此如果您的文件是thesis.tex,您将有thesis.nlo。因此,如果您想要两个索引,则需要重写这部分nomencl。即:

  1. 定义命令\makenomenclatureA和,\makenomenclatureB写入两个索引,比如PartA.nloPartB.nlo

  2. 定义类似的命令\printnomenclatureA\printnomenclatureB

  3. 放入文档中

    \makenomenclatureA
    TEXT
    \renewcommand{\nomname}{Nomenclature A}
    \printnomenclatureA
    
    \makenomenclatureB
    TEXT
    \renewcommand{\nomname}{Nomenclature B}
    \printnomenclatureB
    
  4. 运行pdflatex然后

    makeindex -o PartA.nls -s nomencl.ist PartA.nlo
    makeindex -o PartB.nls -s nomencl.ist PartB.nlo
    
  5. 再次运行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}

结果如下:

在此处输入图片描述

相关内容