<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse
% File nomencl.dtx
% Copyright 1996-2021 Boris Veytsman, Bernd Shandl, Lee Netherton, CV
% Radhakrishnan, Brian Elmegaard
% 
%
% Documentation and documented source code for the nomencl package.
%
% See the README file for instructions.
%
% This file can be redistributed and/or modified under the terms
% of the LaTeX Project Public License distributed from CTAN
% archives in the directory macros/latex/base/lppl.txt; either
% version 1.2 of the license, or (at your option) any later version.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Boris Veytsman,
% &lt;borisv@lk.net&gt;
% 
%
%
%&lt;*dtx&gt;
          \ProvidesFile{nomencl.dtx}%
%&lt;/dtx&gt;
%&lt;package&gt;\ProvidesPackage{nomencl}%
%&lt;driver&gt;\ProvidesFile{nomencl.drv}%
%&lt;*package|driver&gt;
% \fi
%         \ProvidesFile{nomencl.dtx}%
          [2021/11/10 v5.6 Nomenclature package]
%
% \iffalse
%&lt;/package|driver&gt;
%&lt;*driver&gt;
\documentclass[11pt]{ltxdoc}%
\RequirePackage{fancyvrb}%
\RequirePackage{hypdoc}%
\RequirePackage[nocfg]{nomencl}%

\hypersetup{%
    hyperindex=true,
    colorlinks=true,
    linkcolor=blue,
    anchorcolor=blue,
    citecolor=blue,
    filecolor=blue,
    menucolor=blue,
    pagecolor=blue,
    urlcolor=blue,
    bookmarksnumbered=true,
    pdftitle={Documentation for the nomencl Package},
    pdfauthor={Boris Veytsman, Bernd Schandl, Lee Netherton, CV
    Radhakrishnan},
    pdfsubject={Provides nomenclature automation in LaTeX},
    pdfkeywords={nomenclature latex generation symbol list}
}%

%% Comment out the next line if you want the documentation for the source code.
%%\OnlyDescription

\AtBeginDocument{\RecordChanges}
\AtEndDocument{\addcontentsline{toc}{section}{Change Log}\PrintChanges}

%% Uncomment the next two lines for a command index.
%% See also the instructions above (in nomencl.drv).
\AtBeginDocument{\CodelineIndex}
\AtEndDocument{\setcounter{IndexColumns}{2}\addcontentsline{toc}{section}{Index}\PrintIndex}

\begin{document}
  \DocInput{nomencl.dtx}
\end{document}
%&lt;/driver&gt;
% \fi
%
%
% \changes{v2.2 (1996/11/25)}{1996/11/25}{Last version released by
%   Boris Veytsman}
% \changes{v2.5 (1999/03/13)}{1999/03/02}{Complete rewrite of the
%   package and the documentation}
% \changes{v2.6 (1999/04/02)}{1999/04/01}{Use \cs{GetFileInfo}}
% \changes{v2.7a (1999/07/07)}{1999/07/07}{Merged \texttt{licence.txt}
%   into \texttt{README}}
% \changes{v2.8 (1999/09/09)}{1999/09/09}{Email changed}
% \changes{v3.0 (2000/03/05)}{2000/03/05}{WWW address changed}
% \changes{v3.1 (2000/09/15)}{2000/09/15}{Do not read cfg file in
%   documentation}
% \changes{v3.1 (2000/09/15)}{2000/09/15}{WWW address changed (again)}
% \changes{v3.1b (2001/09/30)}{2001/09/30}{WWW address changed (again)}
% \changes{v3.1c (2001/10/02)}{2001/10/02}{Minor documentation changes}
% \changes{v4.0 (2005/03/31)}{2005/03/31}{Improved compatibility with other
% Glossary/MakeIndex packages. Added option to insert Nomenclature into toc.
% Amended documentation accordingly.}
% \changes{v4.1 (2005/04/27)}{2005/04/27}{Improvements to the documentation,
% including hyperref support}
% \changes{v5.0}{2018/12/28}{Rewrote documentation}
% \changes{v5.2}{2019/05/05}{New options: tocbasic, notocbasic}
%
% \GetFileInfo{nomencl.dtx}
%
%
% \MakeShortVerb{\|}
% \setlength{\hfuzz}{8pt}
% \newcommand{\MakeIndex}{\textsl{MakeIndex}}
% \newcommand{\xindy}{\mbox{\normalfont\textbf{\textsf{x\kern-0.7pt%
%         \shortstack{{\scriptsize$\circ$}\\[-2pt]\i}\kern-1pt ndy}}}}
% \let\package\textsf
% \let\tab\indent
% \let\example=\figure
% \let\endexample=\endfigure
%
% \title{\package{nomencl}:
%   A Package to Create a Nomenclature}
% \author{Boris Veytsman\and
%       Bernd Schandl\and
%       Lee Netherton\and CV Radhakrishnan\and
%       Brian Elmegaard\end{tabular}\\
%       \begin{center}with contributions by\end{center}\begin{tabular}[t]{c}  
%       Stefan Pinnow\and
%       Patrick Egan\and
%       Rasmus Solmer Eriksen\and
%       Andrea Kern\and
%       Christian Faulhammer}
% \date{Package version \fileversion\ of \filedate}
% \maketitle
% \tableofcontents
% \listoffigures
% \clearpage
%
% 
%
% \section{Introduction}
% How often did you try to understand a theorem in a book, but just
% couldn't figure out what all those strange symbols were all about? The
% \package{nomencl} package should help authors format a nomenclature.
% It uses the powerful capabilities of the \MakeIndex\ program to generate
% such a list automatically using information provided by the author
% throughout the text.
%
%
%\subsection{History}
%\label{sec:history}
%
% This package was written by Boris Veytsman for his paper in AiCHE in
% 1996.  It was improved by Bernd Schandl,
% Lee Netherton, CV Radhakrishnan, and
% Brian Elmegaard up to 2006.  In 2006 a version of \package{nomencl}
% for table-like nomenclature lists was released by Brian Elmegaard as
% \package{nomentbl}. 
%
% In 2018 Boris Veytsman took over the package, and merged the
% \package{nomentbl} fork back.  He also changed some code, trying to
% keep the compatibility with the older \package{nomencl} and
% \package{nomentbl}.
%
% \subsection{Important Notes for Users of Previous Versions}
%
% An update to the \package{nomencl} package has included some major
% changes to some of the commands. In particular, the |\makeglossary|
% and |\printglossary| commands have now been renamed to
% |\makenomenclature| and |\printnomenclature| respectively. The
% reason for this change is to increase the package's compatibility
% with other MakeIndex using packages. With this increased
% compatibility, users will be able to have nomenclatures, glossaries
% and indexes all in one document.
%
% There is a compatibility option that will allow you to still use
% your |\makeglossary| and |\printglossary| commands (see section
% \ref{sec:options}), but it is advised that you change your
% |\|\ldots|glossary| commands to the new |\|\ldots|nomenclature|
% commands in your \LaTeX\ files. For more information
% on the compatibility mode see section \ref{sec:compatibility}.
%
% \section{Usage}
%
% \subsection{The Basics}
%
% The creation of the nomenclature list is very similar to the creation of
% an index~\cite[App.~A]{lamp:late:1994}. You need to:
% \begin{itemize}
% \item Put |\usepackage[|\meta{options}|]{nomencl}| in the preamble of
%   your document.
% \item \DescribeMacro{\makenomenclature}
%   Put |\makenomenclature| in the preamble of your document.
% \item \DescribeMacro{\nomenclature}
%   Issue the |\nomenclature| command (see Section~\ref{sec:Main-Command})
%   for each symbol you want to have included in the nomenclature list.
%   The best place for this command is immediately after you introduce
%   the symbol for the first time.
% \item \DescribeMacro{\printnomenclature}
%   Put |\printnomenclature| at the place you want to have your
%   nomenclature list.
% \end{itemize}
%
% Now put your file through \LaTeX. The command |\makenomenclature| will
% instruct \LaTeX\ to open the nomenclature file \meta{filename}|.nlo|
% corresponding to your \LaTeX\ file \meta{filename}|.tex| and to
% write the information from your |\nomenclature| commands to this file.
%
% \changes{v2.7 (1999/05/14)}{1999/05/11}{Mention need to change quote
%   character for German users}
% The next step is to invoke \MakeIndex. You should instruct
% \MakeIndex\ to use \meta{filename}|.nlo| as your input file,
% use |nomencl.ist| as your style
% file
% and write output to the file \meta{filename}|.nls|.
% How to do this depends on your implementation of \MakeIndex. For
% most UNIX implementations you should write something like
% \begin{center}
% |makeindex| \meta{filename}|.nlo -s nomencl.ist -o|
%   \meta{filename}|.nls|  
% \end{center}
% 
% 
%
% Now you have the file \meta{filename}|.nls| that contains your
% nomenclature list properly ordered. The last step is to invoke
% \LaTeX\ on your master file \meta{filename}|.tex| once more. It will
% input your |.nls| file and process it accordingly to the current
% options. That's all!
%
%
% \subsection{The Main Command}
% \label{sec:Main-Command}
%
% \DescribeMacro{\nomenclature}
% The main command of the \package{nomencl} package has the following
% syntax:
% \begin{center}
%   |\nomenclature[|\meta{prefix}|]{|\meta{symbol}|}{|\meta{description}|}|
% \end{center}
% where \meta{prefix} is used for fine tuning the sort order,
% \meta{symbol} is the symbol you want to describe and \meta{description}
% is the actual description. The sortkey will be \meta{prefix}\meta{symbol},
% where \meta{prefix} is either the one from the optional argument or, if no
% optional argument was given, the default \meta{prefix} which may be empty.
% See Section~\ref{sec:sort} to make sense of this.
%
% Put this command immediately after the equation or text that
% introduces \meta{symbol}. Usually it is a good idea to avoid a space
% or an unquoted newline just in front of the |\nomenclature| command.
% Put a |%| at the end of the preceding line if necessary.
% Don't forget to enclose math in \meta{symbol} in |$| signs.
%
% Let's have a look at a simple example. If your input file looks like
% the one in Figure~\ref{fig:simple} then your nomenclature should
% look like Figure~\ref{fig:simple.out}.
%
% \begin{example}
%    \begin{macrocode}
%&lt;*sample01.tex&gt;
\documentclass{article}
\usepackage[nocfg]{nomencl}
\makenomenclature
\begin{document}
\section*{Main equations}
\begin{equation}
  a=\frac{N}{A}
\end{equation}%
\nomenclature{$a$}{The number of angels per unit area\nomrefeq}%
\nomenclature{$N$}{The number of angels per needle point\nomrefpage}%
\nomenclature{$A$}{The area of the needle point}%
The equation $\sigma = m a$%
\nomenclature{$\sigma$}{The total mass of angels per unit area\nomrefeqpage}%
\nomenclature{$m$}{The mass of one angel}
follows easily.
\eqdeclaration{32}
\printnomenclature
\end{document}
%&lt;/sample01.tex&gt;
%    \end{macrocode}
% \caption{Input for the simple example}
% \label{fig:simple}
% \end{example}
% \begin{example}
%\begin{thenomenclature} 
%\nomgroup{A}
%  \item [{$\sigma$}]\begingroup The total mass of angels per unit area\nomrefeqpage\nomeqref {1}\nompageref{1}
%  \item [{$A$}]\begingroup The area of the needle point\nomeqref {1}\nompageref{1}
%  \item [{$a$}]\begingroup The number of angels per unit area\nomrefeq\nomeqref {1}\nompageref{1}
%  \item [{$m$}]\begingroup The mass of one angel\nomeqref {1}\nompageref{1}
%  \item [{$N$}]\begingroup The number of angels per needle point\nomrefpage\nomeqref {1}\nompageref{1}
%\end{thenomenclature}
% \caption{The typeset output for the simple example}
% \label{fig:simple.out}
% \end{example}
%
% Note the necessary quoting of newlines to suppress spurious spaces.  
%
% \changes{v2.6b (1999/04/10)}{1999/04/08}{Documentation change concerning line
%   breaks between arguments}
% Due to the way \cs{nomenclature} scans its arguments you don't need to
% \cs{protect} any macros, but you also must not have any character in front
% of the first or between the
% first and the second argument, especially no line break (even with a |%|). So
%\begin{verbatim}
%   \nomenclature{$x$}%
%     {Description}
%\end{verbatim}
% does \emph{not} work. You can have have line breaks in the argument, but
% also no |%|.
%
% Note that |nomentbl| option described in Section~\ref{sec:nomentbl}
% changes the syntax of this command.
%
% \subsection{Package Options}
% \label{sec:options}
%
% The \package{nomencl} package has the following options:
% \begin{description}
% \item[refeq] The phrase ``, see equation (\meta{eq})'' is appended to
%   every entry in the nomenclature where \meta{eq} is the number of the
%   last equation in front of the corresponding command |\nomenclature|.
% \item[norefeq] No equation reference is printed. (default)
% \item[refpage] The phrase ``, page \meta{page}'' is appended to
%   every entry in the nomenclature where \meta{page} is the number of the
%   page on which the corresponding command |\nomenclature| appeared.
% \item[norefpage] No page reference is printed. (default)
% \item[prefix] Every sort key is preceded by the letter ``a'' (changeable);
%   see Sections~\ref{sec:sort} and Section~\ref{sec:grouping} to
%   learn why this might make sense. (default) 
% \item[noprefix] No prefix is used.
% \changes{v5.0}{2018/12/28}{New options |stdsubgroups| and |nostdsubgroups|}
% \item[stdsubgroups] Use standard subgroups in nomenclature, see
% Section~\ref{sec:grouping}. 
% \item[nostdsubgroups] Do not use standard subgroups in nomenclature, see
% Section~\ref{sec:grouping} (default).
% \changes{v3.0 (2000/03/05)}{2000/03/05}{New options
% \texttt{cfg}/\texttt{nocfg}}
% \item[cfg] A configuration file, by default, |nomencl.cfg| is
% loaded, if it exists (default).  The variant |cfg=FILENAME| uses the
% configuration |FILENAME| instead of |nomencl.cfg|.  This is used in
% the examples in the package documentation.  
% \item[nocfg] The configuration file is not loaded.
% \item[intoc] Inserts the nomenclature in the Table of Contents.
% \item[notintoc] No entry for the nomenclature in the Table of Contents. (default)
% \item[tocbasic] Use \textsl{tocbasic} package from KOMA script
% bundle for TOC handling (default)
% \item[notocbasic] Do not use \textsl{tocbasic} package from KOMA
% script.  You may need this option if \textsl{tocbasic} conflicts
% with other packages like \textsl{pgfopts}.  
% \item[compatible] Run in compatibility mode. Older tex files may
%   need this option selected to be able to compile. In the latest
%   version of \package{nomencl} the commands |\makeglossary| and
%   |\printglossary| were replaced with |\makenomenclature| and
%   |\printnomenclature|.  Selecting this option will redefine the old
%   commands, but will lose the compatibility with other glossary
%   packages.
% \item[noncompatible] Do not run in compatibility mode. (default)
% \item[nomentbl] Print nomenclature in the |nomentbl| style, see
% Section~\ref{sec:nomentbl}. 
% \item[nonomentbl] Do not print nomenclature in the |nomentbl| style, see
% Section~\ref{sec:nomentbl} (default).
% \item[\hspace{-\labelsep}]
%   \textbf{catalan, croatian, danish, english, french, german, italian,
%     norwegian-bokmaal, norwegian-nynorsk, polish,
%     portuguese, russian, slovene, spanish, ukrainian}
%   The reference texts and the nomenclature title will appear in the
%   corresponding language. Note that in order to use Russian or Ukrainian,
%   you have to have Cyrillic fonts installed and you might need a replacement
%   for \MakeIndex, e.\,g.~\xindy. Please help me out with other
%   languages. (default: english)
% \end{description}
%
%
% \subsection{Referencing}
%
% \DescribeMacro{\nomrefeq}\DescribeMacro{\nomrefpage}%
% \DescribeMacro{\nomrefeqpage}%
% \DescribeMacro{\nomnorefeq}\DescribeMacro{\nomnorefpage}%
% \DescribeMacro{\nomnorefeqpage}%
% As explained in Section~\ref{sec:options}, you can turn referencing to
% equations and pages on/off globally using the package options. But sometimes
% you might want to change the referencing behavior for single entries. The
% following six macros can be used inside a |\nomenclature| macro:
% |\nomrefeq|, |\nomnorefeq|, |\nomrefpage|, |\nomnorefpage|, |\nomrefeqpage|,
% |\nomnorefeqpage|.
% The first four work similarly to the package options, only local to the
% entry; the last two are shortcuts, so saying |\nomrefeqpage| is equivalent
% to |\nomrefeq\nomrefpage|.
%
% If we changed the relevant parts of the last example as shown in
% Figure~\ref{fig:reference} then the nomenclature should look like
% Figure~\ref{fig:reference.out}.
%
% \begin{example}
%\begin{verbatim}
% \begin{equation}
%   a=\frac{N}{A}
% \end{equation}%
% \nomenclature{$a$}{The number of angels per unit area\nomrefeqpage}%
% \nomenclature{$N$}{The number of angels per needle point\nomrefeq}%
% \nomenclature{$A$}{The area of the needle point\nomrefeq\nomrefpage}%
% The equation $\sigma = m a$%
% \nomenclature{$\sigma$}{The total mass of angels per unit area}%
% \nomenclature{$m$}{The mass of one angel\nomrefpage}
% follows easily.
% \printnomenclature
% \end{document}
%\end{verbatim}
% \caption{Explicit references}
% \label{fig:reference}
% \end{example}
% \begin{example}
% \begin{thenomenclature}
% \nomgroup{A}
%  \item [$\sigma$]\begingroup The total mass of angels per unit area\nomeqref {1}
%                \nompageref{1}
%  \item [$A$]\begingroup The area of the needle point\nomrefeq\nomrefpage\nomeqref {1}
%                \nompageref{1}
%  \item [$a$]\begingroup The number of angels per unit area\nomrefeqpage\nomeqref {1}
%                \nompageref{1}
%  \item [$m$]\begingroup The mass of one angel\nomrefpage\nomeqref {1}
%                \nompageref{1}
%  \item [$N$]\begingroup The number of angels per needle point\nomrefeq\nomeqref {1}
%                \nompageref{1}
% \end{thenomenclature}
% \caption{Typeset output for Figure~\ref{fig:reference}}
% \label{fig:reference.out}
% \end{example}
%
% While these macros do not have to be at the end of the entries, it's
% probably the most sensible place to put them. Note that such local request
% always supersede the package options.
%
%
% \subsection{Sorting}
% \label{sec:sort}
%
% The Greek letter $\sigma$ turned out to be first in the nomenclature
% list in the examples above because the backslash in |\sigma|
% precedes any alphabetical character. Sometimes this is not what you
% want.  Then you can use \meta{prefix} to fine tune the sort order.
%
% Before we describe the usage of \meta{prefix}, we have to explain how
% \MakeIndex\ sorts entries, see~\cite{chen:auto:1987}. \MakeIndex\
% distinguishes three kinds of sort keys:
% \begin{description}
% \item[Strings] Everything that starts with a alphabetic letter (A\dots Z,
%   a\dots z).
% \item[Numbers] Everything that starts and only contains digits (0\dots 9).
% \item[Symbols] Everything else.
% \end{description}
% Each group is sorted separately (and differently), then the groups are
% sorted in the order symbols, numbers, strings\footnote{With the |-g| switch
% of \MakeIndex, they are sorted in the order symbols, strings, numbers.}. For
% the groups the following algorithm is used:
% \begin{description}
% \item[Strings] If two letters are compared, the usual ordering is used
%   (|a|\textless|C|\textless|q|), but if two words are the
%   same except for the capitalization, then an upper case letter
%   precedes the lower case letter (|Tea|\textless|tea|).
%   If a letter is compared with a non-letter (digit,
%   symbol), ASCII code is used (|1|\textless |A|\textless |~|).\footnote{An
%   exception seems to be that the non-letters between upper and lower case
%   letters (code 91--96) are put just before the capital letters (between
%   code 64 and 65) while the non-letters after the lower case letters (code
%   123--127) are left there.} If two
%   non-letters are compared (which can not happen at the first position of a
%   string), ASCII code is used (|+|\textless |1|\textless |:|\textless
%   |\|). Additionally there is the issue of word ordering (treat spaces as
%   letters with ASCII code smaller than every printable symbol) and letter
%   ordering (ignore spaces). \MakeIndex\ uses word ordering by default, but
%   you can change it with some command line option (|-l| on my UNIX).
% \item[Numbers] The natural ordering is used
%   (|8|\textless |34|\textless |111|).
% \item[Symbols] ASCII code is used
%   (|+|\textless|1|\textless|:|\textless|A|\textless|\|\textless|a|).
% \end{description}
%
% Let's consider the following eight nomenclature entries
% (without the optional argument): |$~Ab$|, |$~aa$|, |$\Ab$|, |$\aa$|, |$Ab$|,
% |$aa$|, |Ab|, |aa|. Try to understand the following example with the help
% of the explanation above and an ASCII table.
%
% If you use \package{nomencl} with its default settings (i.\,e.~``a'' is
% added to every sort key, so every sort key is considered as a string), you
% will get the sort order |$\aa$|, |$\Ab$|, |$aa$|, |$Ab$|, |$~aa$|, |$~Ab$|,
% |aa|, |Ab|. Note that |aa| is in front of |Ab| in all four pairs; note
% also the order |$\Ab$|, |$Ab$|, |$~Ab$| which does not agree with the
% ASCII code.
%
% If you specify the option \package{noprefix}, then you will get |$Ab$|,
% |$\Ab$|, |$\aa$|, |$aa$|, |$~Ab$|, |$~aa$|, |aa|, |Ab|. The first six
% entries are considered as symbols and sorted according to the ASCII code
% (this time correctly). Note that |$\Ab$| is in front of |$\aa$| because
% |A| has the smaller ASCII code. The two strings follow at the end.
%
%
%\subsection{Subgroups}
%\label{sec:grouping}
%
% It often makes sense to separate index entries into several groups
% according to their meaning.  The prefix parameter for the
% \cs{nomenclature} command provides a way to do it.  The algorithm is:
% \begin{enumerate}
% \item Start prefixes with different letters for different
% subgroups. 
% \item Define \cs{nomgroup} command (see Section~\ref{sec:format}
% below) to typeset group names.
% \end{enumerate}
%
% One of the popular choices, suggested by Brian Elmegaard in
% \package{nomentbl} is the following (the corresponding prefixes are
% in bold):
% \begin{description}
% \item[A] Latin letters
% \item[G] Greek letters
% \item[X] Superscripts
% \item[Z] Subscripts
% \end{description}
%
% This choice is implemented in the |stsubgroups| option of the
% package, see Figure~\ref{fig:stdsubgroups}.  A further customization
% is discussed in Section~\ref{sec:custom}.  
%
% \begin{example}
%    \begin{macrocode}
%&lt;*sample02.tex&gt;
% Example provided by Stefan Pinnow (SP) 
\documentclass{article}
\usepackage[stdsubgroups,nocfg]{nomencl}
\usepackage{setspace}
    \makenomenclature
\begin{document}
\section*{Main equations}
Here an equation
    \begin{equation}\label{eq:heatflux}
        \dot{Q} = k \cdot A \cdot \Delta T
    \end{equation}%
    \nomenclature[aQ]{$\dot{Q}$}{heat flux}%
    \nomenclature[ak]{$k$}{overall heat transfer
      coefficient}%
    \nomenclature[aA]{$A$}{area}%
    \nomenclature[aL]{$L$}{length}%
    \nomenclature[aT]{$T$}{temperature}%
    \nomenclature[aT]{$\Delta T$}{temperature difference}%
or another one
    \begin{equation}\label{eq:ohtc}
        \frac{1}{k} = \left[\frac{1}{\alpha _{\mathrm{i}}\,r_{\mathrm{i}}} +
        \sum^n_{j=1}\frac{1}{\lambda _j}\,
        \ln \frac{r_{\mathrm{a},j}}{r_{\mathrm{i},j}} +
        \frac{1}{\alpha _{\mathrm{a}}\,
          r_{\mathrm{a}}}\right] \cdot r_{\mathrm{reference}}
    \end{equation}%
    \nomenclature[ga]{$\alpha$}{convection heat transfer coefficient}%
    \nomenclature[zi]{i}{in}%
    \nomenclature[gl]{$\lambda$}{thermal conductivity}%
    \nomenclature[za]{a}{out}%
    \nomenclature[zn]{$n$}{number of walls}%
    \nomenclature[zj]{$j$}{running parameter}%
\onehalfspacing
\printnomenclature
\end{document}
%&lt;/sample02.tex&gt;
%    \end{macrocode}
%   \caption{The \texttt{stdsubgroups} option}
%   \label{fig:stdsubgroups}
% \end{example}
%
%
%\subsection{Tabular nomenclature (\texttt{nomentbl} style)}
%\label{sec:nomentbl}
%
% The option |nomentbl| changes the behavior of nomenclature.
%
% \DescribeMacro{\nomenclature}%
% The command \cs{nomenclature} now has four, rather than two,
% mandatory arguments:
% \begin{center}
%   \cs{nomenclature}\oarg{prefix}\marg{symbol}\marg{description}\marg{units}\marg{note} 
% \end{center}
% Here \oarg{prefix}, \marg{symbol}, and \marg{description} have the
% same meaning as for the usual \cs{nomenclature} command.  The
% additional arguments are \marg{units}, which is internally enclosed
% in the \cs{si} command from |siunitx| package, and \cs{note}, which
% is an arbitrary note added to the description.
%
% \DescribeMacro{\setnomtableformat}
% The list is wrapped in a |longtable| with the default format
% \begin{center}
% |lp{0.4\textwidth}cp{0.3\textwidth}@{}l|  
% \end{center}
% The command
% \cs{setnomtableformat}\marg{format} can be used to change it, for
% example,
% \begin{verbatim}
% \setnomtableformat{lllll}
% \end{verbatim}
%
% Note that the table has five columns: symbol, description, units,
% note, and reference.  If you do not use references, you may suppress
% the last column using |@{}l| declaration.  
%
% Figure~\ref{fig:nomentbl} provides an example of this option.
%
% \begin{example}
%    \begin{macrocode}
%&lt;*sample03.tex&gt;
% Example provided by Stefan Pinnow (SP) 
\documentclass{article}
\usepackage[nomentbl,stdsubgroups]{nomencl}
\usepackage{setspace}
\makenomenclature
\begin{document}
\section*{Main equations}
%
Here an equation
    \begin{equation}\label{eq:heatflux}
        \dot{Q} = k \cdot A \cdot \Delta T
    \end{equation}%
    \nomenclature[aQ]{$\dot{Q}$}{heat flux}{W}{}%
    \nomenclature[ak]{$k$}{overall heat transfer
      coefficient}{\watt\per(\square\meter\kelvin)}{see
      eq.~(\ref{eq:ohtc})}% 
    \nomenclature[aA]{$A$}{area}{\square\meter}{}%
    \nomenclature[aL]{$L$}{length}{\meter}{SI base quantity}%
    \nomenclature[aT]{$T$}{temperature}{\kelvin}{SI base quantity}%
    \nomenclature[aT]{$\Delta T$}{temperature difference}{\kelvin}{SI base quantity}%
or another one
    \begin{equation}\label{eq:ohtc}
        \frac{1}{k} = \left[\frac{1}{\alpha _{\mathrm{i}}\,r_{\mathrm{i}}} +
        \sum^n_{j=1}\frac{1}{\lambda _j}\,
        \ln \frac{r_{\mathrm{a},j}}{r_{\mathrm{i},j}} +
        \frac{1}{\alpha _{\mathrm{a}}\,
          r_{\mathrm{a}}}\right] \cdot r_{\mathrm{reference}}
    \end{equation}%
    \nomenclature[ga]{$\alpha$}{convection heat transfer
      coefficient}{\watt\per(\square\meter\kelvin)}{}% 
    \nomenclature[zi]{i}{in}{}{}%
    \nomenclature[gl]{$\lambda$}{thermal conductivity}{\watt\per\kelvin}{}%
    \nomenclature[za]{a}{out}{}{}%
    \nomenclature[zn]{$n$}{number of walls}{}{}%
    \nomenclature[zj]{$j$}{running parameter}{}{}%
    
\onehalfspacing
\printnomenclature
\end{document}
%&lt;/sample03.tex&gt;
%    \end{macrocode}
%   \caption{Use of \texttt{nomentbl} option}
%   \label{fig:nomentbl}
% \end{example}
% 
% \subsection{Customization}
% \label{sec:custom}
%
% Besides the things you can customize by using the package options, there are
% a few more commands that you might want to redefine. If you make the same
% changes in every file, it's probably easier to put all those in a file
% |nomencl.cfg| which is automatically read by the \package{nomencl} package
% whenever it exists in the search path (unless you specified the |nocfg|
% option).  You can experiment with loading alternative configuration
% files using |cfg=FILENAME| version of this option.
%
%
% \subsubsection{Formatting the Nomenclature}
% \label{sec:format}
%
% \DescribeMacro{\printnomenclature}%
% \DescribeMacro{\nomlabelwidth}%
% Probably the most common change to the nomenclature is a different
% amount of space for the symbols. By default, the nomenclature is
% formatted as a list with the label width equal to |\nomlabelwidth|
% which is initialized to 1\,cm. You can change this dimension in the
% |cfg| file or you can use the optional argument of
% |\printnomenclature|. If you want to have a little more space for
% the labels (and you don't live in a metric world) you can use
% |\printnomenclature[0.5in]| instead of the simple
% |\printnomenclature|.
%
% \DescribeEnv{thenomenclature}%
% If you don't like the format of the nomenclature at all, you will have
% to redefine the |thenomenclature| environment. Maybe a look at the
% documented code of \package{nomencl} will help.
%
% \DescribeMacro{\nomname}%
% In case you don't like the name of the nomenclature, just redefine
% the |\nomname| macro, e.\,g.
% \begin{center}
% |\renewcommand{\nomname}{List of Symbols}|  
% \end{center}
% 
%
% \changes{v3.1b (2001/09/30)}{2001/03/12}{Explain how to get toc entry}
% \changes{v4.0 (2005/03/31)}{2005/03/31}{TOC entries now added with package option}
% Putting an entry for the nomenclature in the table of contents can
% be done by adding an \textbf{intoc} to the package options.
%
% \DescribeMacro{\nomgroup}%
% Usually, \MakeIndex\ inserts the macro |\indexspace| between every
% character group, i.\,e.~between symbols and numbers, numbers and
% letters and between every two letter groups. The \package{nomencl}
% package inserts the macro |\nomgroup{|\meta{arg}|}| \emph{instead},
% where \meta{arg} is either the string ``Symbols'' or the string
% ``Numbers'' or the capital letter of the group that is about to
% start. You can redefine |\nomgroup| to insert some white space
% |\renewcommand{\nomgroup}[1]{\medskip}|, or to print a fancy divider
%\begin{verbatim}
%   \renewcommand{\nomgroup}[1]{%
%     \item[]\hspace*{-\leftmargin}%
%     \rule[2pt]{0.45\linewidth}{1pt}%
%     \hfill #1\hfill
%     \rule[2pt]{0.45\linewidth}{1pt}}
%\end{verbatim}
% Note that |\nomgroup| is executed in a list environment, so you need
% to have an |\item| first and then jump back to the beginning of the
% line with the |\hspace| command.
%
% \DescribeMacro{\nompreamble}\DescribeMacro{\nompostamble}%
% Maybe you want to explain something just between the title of the
% nomenclature and the start of the list or at the very end of the
% list. Just redefine the macros |\nompreamble| and |\nompostamble|
% which do nothing by default. Note that they are executed \emph{outside}
% of the list environment.
%
% \DescribeMacro{\nomitemsep}%
% The skip between two entries in the nomenclature can be adjusted using
% \cs{nomitemsep}. This should be done in the preamble or the file
% |nomencl.cfg|. Note that if you want no extra skip between entries
% you have to use
% |\setlength{\nomitemsep}{-\parsep}|
%
% \DescribeMacro{\nomprefix}%
% If you want, you can redefine the default prefix that is used for the
% sortkeys. By default, |\nomprefix| is set to ``a''; redefining it
% supersedes the package options \package{prefix} and \package{noprefix}.
%
%
% \subsubsection{Formatting the Entries}
%
% \DescribeMacro{\nomlabel}%
% By default, the labels are just shifted to the left within their
% allocated box. If you want to change this, redefine |\nomlabel|
% which should get one argument, e.\,g.
% |\renewcommand{\nomlabel}[1]{\hfil #1\hfil}| to center the symbols.
%
% \DescribeMacro{\nomentryend}%
% Maybe you would like to have a period at the end of every entry.
% Just say |\renewcommand{\nomentryend}{.}|, and there it
% is. Section~\ref{sec:tips:units} explains another nice application
% of this macro.
%
% \DescribeMacro{\eqdeclaration}\DescribeMacro{\pagedeclaration}%
% If you don't like the text that is used for the references to
% equations and pages, you can define |\eqdeclaration| and
% |\pagedeclaration|. Both should accept one argument, namely the
% equation and page number, respectively. An example is
% \begin{center}
% |\renewcommand{\eqdeclaration}[1]{, first used in eq.~(#1)}|.  
% \end{center}
% 
% 
%
%
% \subsection{Tips and Tricks}
% \label{sec:tips}
%
% \changes{v3.1 (2000/09/15)}{2000/09/15}{Sample cfg files for most examples}
%
% \subsubsection{Advanced subgroups}
% \label{sec:tips:subgroups}
%
% The standard subgroups described in Section~\ref{sec:grouping} is
% just one of the possible ways to separate your index.  You can do
% much more if you play with the \cs{nomgroup} command.  Note that all
% entries sharing the first letter of prefix as grouped together and
% preceded by the \cs{nomgroup}\oarg{Uppercased first leter} command.
% So, for example, if you want to separate constants and variables,
% you may use prefixes |c...| for constants and |v...| for variables,
% and then write down (package \package{ifthen} being loaded by
% \package{nomencl})
% \begin{verbatim} 
% \renewcommand{\nomgroup}[1]{%
% \ifthenelse{\equal{#1}{V}}{\item[\textbf{Variables}]}{%
% \ifthenelse{\equal{#1}{C}}{\item[\textbf{Constants}]}{}}}
% \end{verbatim}
%
%
% \subsubsection{Units}
% \label{sec:tips:units}
%
% Besides the obvious possibility of adding units for symbols in the
% description string, you can also use |\nomentryend| to shift the unit
% to the right margin. With package \package{siunitx} you can define
%    \begin{macrocode}
%&lt;*sample04.cfg&gt;
\newcommand{\nomunit}[1]{%
  \renewcommand{\nomentryend}{\hspace*{\fill}\si{#1}}}
%&lt;/sample04.cfg&gt;
%    \end{macrocode}
% and then define nomenclature as
% \begin{center}
% |\nomenclature{$l$}{Length\nomunit{\meter}}|  
% \end{center}
%
% See Figure~\ref{fig:units} for the example of the input file.
%
% Option |nomentbl| allows an alternative way to add units to the
% nomenclature (Section~\ref{sec:nomentbl}).  
%
% \begin{example}
%    \begin{macrocode}
%&lt;*sample04.tex&gt;
\documentclass{article}
\usepackage[cfg=sample04.cfg]{nomencl}
\usepackage{siunitx}
\makenomenclature
\begin{document}
\section*{Main equations}
\begin{equation}
  a=\frac{N}{A}
\end{equation}%
\nomenclature{$a$}{The number of angels per unit
  area\nomunit{\per\square\meter}}% 
\nomenclature{$N$}{The number of angels per needle point}% 
\nomenclature{$A$}{The area of the needle
  point\nomunit{\square\meter}}% 
The equation $\sigma = m a$%
\nomenclature{$\sigma$}{The total mass of angels per unit
  area\nomunit{\kilogram\per\square\meter}}% 
\nomenclature{$m$}{The mass of one angel\nomunit{\kilogram}}
follows easily.
\printnomenclature
\end{document}
%&lt;/sample04.tex&gt;      
%    \end{macrocode} 
%   \caption{A simple example with units}
%   \label{fig:units}
% \end{example}
%
%
% \subsubsection{Expansion}
%
% \changes{v3.1 (2000/09/15)}{2000/09/01}{Expansion example added}
% The \package{nomencl} package tries hard to write the arguments of the
% |\nomenclature| macro verbatim to the glossary file. This is usually the
% right thing to do because some macros do not like to be expanded at the
% wrong moment or give weird results if they are. On the other hand, there are
% occasions where it is good to have the meaning (or expansion) of a macro in
% the glossary file instead of its name. There are quite some occasions
% where you will get in trouble with this expansion, for example, if the
% expansion of a macro contains~|@| (|\mathcal| expands to |\@mathcal|)
% because |@| is a special character for \MakeIndex\ and thus \MakeIndex\ will
% either fail or give unexpected results. You can avoid the expansion on a
% case by case basis by using |\protect| in front of the macro that should
% not be expanded.
%
% In order to get macro expansion, the redefinition of the |\@nomenclature|
% macro within the |\makenomenclature| macro has to be changed.
%    \begin{macrocode}
%&lt;*sample05.cfg&gt;
\def\makenomenclature{%
  \newwrite\@nomenclaturefile
  \immediate\openout\@nomenclaturefile=\jobname\@outputfileextension
  \def\@nomenclature{%
    \@ifnextchar[%
      {\@@@@nomenclature}{\@@@@nomenclature[\nomprefix]}}%
  \PackageInfo{nomencl}{Writing nomenclature file \jobname\@outputfileextension}%
  \let\makenomenclature\@empty}
%    \end{macrocode}
% The new macro to be called by |\@nomenclature| just writes its arguments to
% the glossary file without further ado, so they will be expanded.
%    \begin{macrocode}
\def\@@@@nomenclature[#1]#2#3{%
 \protected@write\@nomenclaturefile{}%
  {\string\nomenclatureentry{#1#2@[{#2}]%
      \begingroup#3\protect\nomeqref{\theequation}%
        |nompageref}{\thepage}}}%
%&lt;/sample05.cfg&gt;
%    \end{macrocode}
%
% The following file has completely different result when using
% expanded and non-expanded versions
%    \begin{macrocode}
%&lt;*sample05.tex&gt;
\documentclass{article}
\usepackage[cfg=sample05.cfg]{nomencl}
\makenomenclature
\begin{document}
\section*{Main equations}
\begin{equation}
  a=\frac{N}{A}
\end{equation}%
\newcommand{\magritte}{Not the number }
\nomenclature{$a$}{\magritte of angels per unit area}%
\nomenclature{$N$}{\magritte of angels per needle point}%
\nomenclature{$A$}{The area of the needle point}%
The equation $\sigma = m a$%
\nomenclature{$\sigma$}{The total mass of angels per unit area}%
\nomenclature{$m$}{The mass of one angel}
follows easily.

% We renew the command before printing nomenclature.  However, since
% our nomencl.cfg uses expansion, it does not affect the result.
% Cf. nocfg option
\renewcommand{\magritte}{The number }
\printnomenclature
\end{document}
%&lt;/sample05.tex&gt;
%    \end{macrocode}
% 
%
% \subsubsection{Glossary in ``Kopka Style''}
%
% \changes{v3.1 (2000/09/15)}{2000/09/16}{Kopka example added}
% I was told that the glossary in the \LaTeX\ book by Kopka looks roughly like
% in Figure~\ref{fig:kopka}. In order to get a glossary like this, there are
% quite some configurations to do.
%
% \begin{example}
% \textbf{Symbol}\dotfill\nopagebreak page number \\
% \hspace*{5mm}Explanation.
% \caption{Glossary entry in ``Kopka Style''}
% \label{fig:kopka}
% \end{example}
%
% First we have to change the macro |\@@@nomenclature| which takes care of
% writing the glossary entry to the glossary file. The only difference to the
% original definition is that we hand over the explanation of a symbol (\#3)
% and the equation number to |\nompageref| instead of writing it directly
% after the symbol (\#2). This is necessary because the explanation should
% appear after (actually below) the page number.
%    \begin{macrocode}
%&lt;*sample06.cfg&gt;
\@printpagereftrue
\def\@@@nomenclature[#1]#2#3{%
 \def\@tempa{#2}\def\@tempb{#3}%
 \protected@write\@nomenclaturefile{}%
  {\string\nomenclatureentry{#1\nom@verb\@tempa @[{\nom@verb\@tempa}]%
    |nompageref{\begingroup\nom@verb\@tempb\protect\nomeqref{\theequation}}}%
    {\thepage}}%
 \endgroup
 \@esphack}
%    \end{macrocode}
% Now we change the definition of |\nompageref| so that it accepts two
% arguments, the explanation (\#1) and the page number (\#2). The page number
% is only printed if required, otherwise  |\null| is used to avoid an error
% because of the following |\linebreak|. Note that it is \emph{not} possible
% to turn off the page number locally, because the explanation appears after
% the page number. 
%    \begin{macrocode}
\def\nompageref#1#2{%
  \if@printpageref\pagedeclaration{#2}\else\leavevmode\fi
  \linebreak#1\nomentryend\endgroup}
%    \end{macrocode}
% And a few little things. We want dots and a space before the page number
% appears at the right margin; the explanation should end with a period; and
% the symbol should be printed in bold face (this only works for regular text,
% not for formulas).
%    \begin{macrocode}
\def\pagedeclaration#1{\dotfill\nobreakspace#1}
\def\nomentryend{.}
\def\nomlabel#1{\textbf{#1}\hfil}
%&lt;/sample06.cfg&gt;
%    \end{macrocode}
%
%
% \subsection{Compatibility Mode}
% \label{sec:compatibility}
%
% With previous versions of the \package{nomencl}, the commands |\makeglossary|
% and |\pringlossary| were used to generate and display the nomenclature.
% These commands have now been depreciated, and replaced with the |\makenomenclature|
% and |\printnomenclature| commands. The new commands do exactly the same
% as the old commands, but because of the name changes, the package is
% now compatible with other packages which use the |\makeglossary| commands.
% The previous versions of \package{nomencl} also used the file extensions
% |.glo| and |.gls| for the generated output and input files. These extensions
% have now been changed to |.nlo| and |.nls| respectively---again, for increased
% compatibility.
%
% For all of the legacy \LaTeX\ files out there which use the old commands
% there is a compatibility option available so that the old commands will still
% work without having to change any of the existing code. To enable the
% compatibility mode simply supply the \textbf{compatible} option
% when using the package. For example:
% \begin{verbatim}
%   \usepackage[compatible]{nomencl}
% \end{verbatim}
% Under compatibility mode, the package will generate and use files
% with the old-style file extensions (i.e. |.glo| and |.gls|).
%
% It is worth noting that even though the compatibility mode is available,
% it is highly recommended to update your \LaTeX\ files to use the new
% nomenclature commands.
%
%
%
% \subsection{Acknowledgements}
%
% Since version 5.0 the package incorporates the code from
% |nomentbl.dtx| by Brian Elmegaard.  
%
% The authors  want to thank Stefan
% B\"ohm and Karl Heinz Marbaise who helped testing this package.
%
% The translations were done by Joan Queralt (Catalan), Branka
% Lon\v{c}arevi\'{c} (Croatian), Brian Elmegaard (Danish), Denis
% B.~Roegel (French), Sani Egisto (Italian), wishfort36 (Norwegian),
% Artur Gorka (Polish), Pedro Areal (Portuguese), joder (Slovene),
% Alejandro Lopez-Valencia (Spanish), and Boris Veytsman (Russian and
% Ukrainian).
%
%
% \subsection{Releases and Legal Issues}
% \label{sec:legal}
%
% This package can be redistributed and/or modified under the terms
% of the \LaTeX\ Project Public License distributed from CTAN
% archives in the directory \url{macros/latex/base/lppl.txt}, see
% e.\,g.~\cite{ctan}; either
% version 1.2 of the license, or (at your option) any later version.
%
%
% \StopEventually{%
% \begin{thebibliography}{5}
% \bibitem[1]{braa:ltid:1996}
% Braams, Johannes; Carlisle, David; Jeffrey, Alan; Lamport, Leslie;
% Mittelbach, Frank; Rowley, Chris; Sch\"opf, Rainer (1996).
% \newblock\texttt{ltidxglo.dtx} -- 1996/01/20 v1.1e LaTeX Kernel
% (Index and Glossary).
% \newblock \href{http://mirror.ctan.org/macros/latex/base/ltidxglo.dtx}{CTAN/macros/latex/base/ltidxglo.dtx}.
% \bibitem[2]{chen:auto:1987}
% Chen, Pehong; Harrison, Michael~A. (1987).
% \newblock Automating Index Preparation.
% \newblock Report UCB/CSD 87/347, Computer Science Division, University of
%   California, Berkeley, CA.
% \bibitem[3]{ctan}
% Comprehensive {\TeX} Archive Network CTAN.
% \newblock \url{ftp://ctan.tug.org/tex-archive/}.
% \bibitem[4]{jone:anew:1995}
% Jones, David M. (1995).
% \newblock A new implementation of \LaTeX's indexing commands,
%   Version v4.1beta of 1995/09/28.
% \newblock \href{http://mirror.ctan.org/macros/latex/contrib/camel/index.dtx}{CTAN/macros/latex/contrib/supported/camel/index.dtx}.
% \bibitem[5]{knut:thet:1984}
% Knuth, Donald E. (1984).
% \newblock \emph{The \TeX book}.
% \newblock Addison-Wesley Publishing Company, Reading, MA.
% \bibitem[6]{lamp:late:1994}
% Lamport, Leslie (1994).
% \newblock \emph{{\LaTeX}: A Document Preparation System}.
% \newblock Addison-Wesley Publishing Company, Reading, MA.
% \bibitem[7]{veyt:pack:1996}
% Veytsman, Boris (1996).
% \newblock Package nomencl, Version 4.0.
% \newblock \url{http://sarovar.org/projects/nomencl} (2000/09/15).
% \end{thebibliography}}
%
%
% \section{Implementation}
%
% \subsection{The \LaTeX\ Package File}
%
% At the beginning of this file, the |\ProvidesPackage| macro was executed. So
% we only need to to state that we need \LaTeXe.
%    \begin{macrocode}
%&lt;*package&gt;
\NeedsTeXFormat{LaTeX2e}
%    \end{macrocode}
%
% \changes{v5.0}{2018/12/28}{Moved to xkeyval}
% \changes{v5.0}{2018/12/28}{Added ifthen package}
% We need \textsl{xkeyval} package for some options and \textsl{ifthen}
% for grouping and \textsl{tocbasic} for TOC
%    \begin{macrocode}
\RequirePackage{xkeyval}
\RequirePackage{ifthen}
%    \end{macrocode}
%
%
% \begin{macro}{\if@printeqref}
% \begin{macro}{\if@printpageref}
% We need two switches to decide whether references to equations and pages
% should be printed.
%    \begin{macrocode}
\newif\if@printeqref
\newif\if@printpageref
%    \end{macrocode}
% \end{macro} \end{macro}
% \begin{macro}{\if@intoc}
% Another switch to decide whether to add an entry to the TOC.
%    \begin{macrocode}
\newif\if@intoc
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\if@compatibilitymode}
% Another switch to decide whether to run in compatibility mode.
%    \begin{macrocode}
\newif\if@compatibilitymode
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@nomencl@tocbasic}
% \changes{v5.2}{2019/05/05}{Reintroduced macro}
% Whether we are to use tocbasic
%    \begin{macrocode}
\newif\if@nomencl@tocbasic
\@nomencl@tocbasictrue
%    \end{macrocode}
% 
% \end{macro}
%
% And the options to set these switches globally.
%    \begin{macrocode}
\DeclareOptionX{refeq}{\@printeqreftrue}
\DeclareOptionX{norefeq}{\@printeqreffalse}
\DeclareOptionX{refpage}{\@printpagereftrue}
\DeclareOptionX{norefpage}{\@printpagereffalse}
\DeclareOptionX{intoc}{\@intoctrue}
\DeclareOptionX{notintoc}{\@intocfalse}
\DeclareOptionX{compatible}{\@compatibilitymodetrue}
\DeclareOptionX{noncompatible}{\@compatibilitymodefalse}
\DeclareOptionX{tocbasic}{\@nomencl@tocbasictrue}
\DeclareOptionX{notocbasic}{\@nomencl@tocbasicfalse}
%    \end{macrocode}
% \begin{macro}{\nomprefix}
% It might make sense to add the prefix ``a'' to every sortkey, see
% Section~\ref{sec:sort}.
%    \begin{macrocode}
\DeclareOptionX{prefix}{\def\nomprefix{a}}
\DeclareOptionX{noprefix}{\def\nomprefix{}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@nomentbl}
%   \changes{v5.0}{2018/12/28}{New macro}
%   Whether to use nomentbl format
%    \begin{macrocode}
\newif\if@nomentbl
\DeclareOptionX{nomentbl}{\@nomentbltrue}
\DeclareOptionX{norefeq}{\@nomentblfalse}
%    \end{macrocode}
%   
% \end{macro}
%
% \begin{macro}{\if@loadcfg}
% \changes{v5.0}{2018/12/28}{Added settable cfg file}
% Another switch and the corresponding options to decide whether we
% should look for a configuration file.
%    \begin{macrocode}
\newif\if@loadcfg
\DeclareOptionX{cfg}[nomencl.cfg]{\@loadcfgtrue\gdef\@cfgfile{#1}}
\DeclareOptionX{nocfg}{\@loadcfgfalse}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@stdsubgroups}
% \changes{v5.0}{2018/12/28}{New macro}
%   Whether we use standard subgroups
%    \begin{macrocode}
\newif\if@stdsubgroups
\DeclareOptionX{stdsubgroups}{\@stdsubgroupstrue}
\DeclareOptionX{nostdsubgroups}{\@stdsubgroupsfalse}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\eqdeclaration}
% \begin{macro}{\pagedeclaration}
% \begin{macro}{\nomname}
% \begin{macro}{\nomAname}
% \begin{macro}{\nomGname}
% \begin{macro}{\nomXname}
% \begin{macro}{\nomZname}
% \changes{v2.5a (1999/03/22)}{1999/03/17}{Added Danish}
% \changes{v2.6 (1999/04/02)}{1999/03/23}{Added French}
% \changes{v2.6 (1999/04/02)}{1999/04/01}{Use \cs{nobreakspace} instead of
%   \texttt{\textasciitilde} in package options}
% \changes{v2.6a (1999/04/06)}{1999/04/02}{Added Russian, Spanish, Ukrainian}
% \changes{v2.6b (1999/04/10)}{1999/04/06}{Added Polish}
% \changes{v2.7a (1999/07/07)}{1999/07/07}{Added Italian}
% \changes{v4.0 (2005/04/07)}{2005/04/07}{Updated Italian option (thanks to Lapo Mori)}
% \changes{v3.1 (2000/09/15)}{2000/08/30}{Added Croatian}
% \changes{v3.1a (2000/12/03)}{2000/12/03}{Added Portuguese}
% \changes{v5.0}{2018/12/28}{Added defaults}
% \changes{v5.1}{2019/02/08}{Changed \# to \#\# in options.}
% \changes{v5.3}{2019/11/23}{Added Slovene (joder)}
% \changes{v5.4}{2020/03/01}{Added Norwegian (wishfort36)}
% \changes{v5.4}{2020/12/29}{Added Catalan (Joan Queralt)}
% If you can help out with translations for some other languages, let me know.
%    \begin{macrocode}
\DeclareOptionX{catalan}{%
\def\eqdeclaration##1{, vegeu l'equaci\窶冩\nobreakspace(##1)}%
\def\pagedeclaration##1{, p\`agina\nobreakspace##1}
\def\nomname{Nomenclatura}
\def\nomAname{Lletres llatines}%
\def\nomGname{Lletres gregues}
\def\nomXname{Super{\窶兔i}ndexs}%
\def\nomZname{Sub{\窶兔i}ndexs}}
\DeclareOptionX{croatian}{%
  \def\eqdeclaration##1{, vidi jednad\v{z}bu\nobreakspace(##1)}%
  \def\pagedeclaration##1{, stranica\nobreakspace##1}%
  \def\nomname{Popis simbola}%
  \def\nomAname{Latini\v{c}na slova}%
  \def\nomGname{Gr\v{c}ka slova}%
  \def\nomXname{Exponenats}%
  \def\nomZname{Indeksi}}
\DeclareOptionX{danish}{%
  \def\eqdeclaration##1{, se ligning\nobreakspace(##1)}%
  \def\pagedeclaration##1{, side\nobreakspace##1}%
  \def\nomname{Symbolliste}%
  \def\nomAname{Romerske bogstaver}%
  \def\nomGname{Gr{\ae}ske bogstaver}%
  \def\nomXname{(H{\o}jtstillede) indices}%
  \def\nomZname{Indices}}
\DeclareOptionX{english}{%
  \def\eqdeclaration##1{, see equation\nobreakspace(##1)}%
  \def\pagedeclaration##1{, page\nobreakspace##1}%
  \def\nomname{Nomenclature}%
  \def\nomAname{Latin Letters}%
  \def\nomGname{Greek Letters}%
  \def\nomXname{Superscripts}%
  \def\nomZname{Subscripts}}
\DeclareOptionX{french}{%
  \def\eqdeclaration##1{, voir \'equation\nobreakspace(##1)}%
  \def\pagedeclaration##1{, page\nobreakspace##1}%
  \def\nomname{Liste des symboles}%
  \def\nomAname{Lettres latines}%
  \def\nomGname{Lettres grecques}%
  \def\nomXname{Indices sup{\'e}rieurs}%
  \def\nomZname{Indices}}
\DeclareOptionX{german}{%
  \def\eqdeclaration##1{, siehe Gleichung\nobreakspace(##1)}%
  \def\pagedeclaration##1{, Seite\nobreakspace##1}%
  \def\nomname{Symbolverzeichnis}%
   \def\nomAname{Lateinische Buchstaben}%
   \def\nomGname{Griechische Buchstaben}%
   \def\nomXname{(hochgestellte) Indizes}%
   \def\nomZname{Indizes}}
\DeclareOptionX{italian}{%
  \def\eqdeclaration##1{, vedi equazione\nobreakspace(##1)}%
  \def\pagedeclaration##1{, pagina\nobreakspace##1}%
  \def\nomname{Elenco dei simboli}%
   \def\nomAname{Lettere latine}%
   \def\nomGname{Lettere greche}%
   \def\nomXname{Apici}%
   \def\nomZname{Indici}}
\DeclareOptionX{norwegian-bokmaal}{%
  \def\eqdeclaration##1{, se ligning\nobreakspace(##1)}%
  \def\pagedeclaration##1{, side\nobreakspace##1}%
  \def\nomname{Nomenklatur}%
  \def\nomAname{Romerske bokstaver}%
  \def\nomGname{Greske bokstaver}%
  \def\nomXname{Hevet skrift}%
  \def\nomZname{Senket skrift}}
\DeclareOptionX{norwegian-nynorsk}{%
  \def\eqdeclaration##1{, se likning\nobreakspace(##1)}%
  \def\pagedeclaration##1{, side\nobreakspace##1}%
  \def\nomname{Nomenklatur}%
  \def\nomAname{Romarske bokstavar}%
  \def\nomGname{Greske bokstavar}%
  \def\nomXname{Hevd skrift}%
  \def\nomZname{Senka skrift}}
\DeclareOptionX{polish}{%
  \def\eqdeclaration##1{, porownaj rownanie\nobreakspace(##1)}%
  \def\pagedeclaration##1{, strona\nobreakspace##1}%
  \def\nomname{Lista symboli}%
   \def\nomAname{Litery {\l}aci\'nskie}%
   \def\nomGname{Litery greckie}%
   \def\nomXname{Indeksy g\'orny}%
   \def\nomZname{Indeksy dolne}}
\DeclareOptionX{portuguese}{%
  \def\eqdeclaration##1{, veja equa\c{c}\~ao\nobreakspace(##1)}%
  \def\pagedeclaration##1{, p\'agina\nobreakspace##1}%
  \def\nomname{Nomenclatura}%
  \def\nomAname{Letras latinas}%
  \def\nomGname{Letras gregas}%
  \def\nomXname{Sobrescritos}%
  \def\nomZname{Subscritos}}
\DeclareOptionX{russian}{%
  \def\eqdeclaration##1{, \cyrs\cyrm.\nobreakspace(##1)}%
  \def\pagedeclaration##1{, \cyrs\cyrt\cyrr.\nobreakspace##1}%
  \def\nomname{\CYRS\cyrp\cyri\cyrs\cyro\cyrk%
    \ \cyro\cyrb\cyro\cyrz\cyrn\cyra\cyrch\cyre\cyrn\cyri%
    \cyrishrt}%
   \def\nomAname{\CYRL\cyra\cyrt\cyri\cyrn\cyrs\cyrk\cyri\cyre\
     \cyrb\cyru\cyrk\cyrv\cyrery}% 
   \def\nomGname{\CYRG\cyrr\cyre\cyrch\cyre\cyrs\cyrk\cyri\cyre\
     \cyrb\cyru\cyrk\cyrv\cyrery}% 
   \def\nomXname{\CYRN\cyra\cyrd\cyrs\cyrt\cyrr\cyro\cyrch\cyrn\cyrery\cyre\
     \cyri\cyrn\cyrd\cyre\cyrk\cyrs\cyrery}% 
   \def\nomZname{\CYRP\cyro\cyrd\cyrs\cyrt\cyrr\cyro\cyrch\cyrn\cyrery\cyre\
     \cyri\cyrn\cyrd\cyre\cyrk\cyrs\cyrery}} 
\DeclareOptionX{slovene}{%
  \def\eqdeclaration##1{, glej ena\v{c}bo\nobreakspace(##1)}%
  \def\pagedeclaration##1{, stran\nobreakspace##1}%
  \def\nomname{Seznam simbolov}%
  \def\nomAname{Latinske \v{c}rke}%
  \def\nomGname{Gr\v{s}ke \v{c}rke}%
  \def\nomXname{Eksponenti}%
  \def\nomZname{Indeksi}}
\DeclareOptionX{spanish}{%
  \def\eqdeclaration##1{, v\'ease la ecuaci\'on\nobreakspace(##1)}%
  \def\pagedeclaration##1{, p\'agina\nobreakspace##1}%
  \def\nomname{Nomenclatura}%
   \def\nomAname{Letras latinas}%
   \def\nomGname{Letras griegas}%
   \def\nomXname{Super{\'\i}ndices}%
   \def\nomZname{Sub{\'\i}ndices}}
\DeclareOptionX{ukrainian}{%
  \def\eqdeclaration##1{, \cyrd\cyri\cyrv.\nobreakspace(##1)}%
  \def\pagedeclaration##1{, \cyrs\cyrt\cyro\cyrr.\nobreakspace##1}%
  \def\nomname{\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk%
    \ \cyrp\cyro\cyrz\cyrn\cyra\cyrch\cyre\cyrn\cyrsftsn}%
   \def\nomAname{\CYRL\cyra\cyrt\cyri\cyrn\cyrs\cyrsftsn\cyrk\cyrii\
     \cyrl\cyrii\cyrt\cyre\cyrr\cyri}% 
   \def\nomGname{\CYRG\cyrr\cyre\cyrc\cyrsftsn\cyrk\cyrii\
     \cyrl\cyrii\cyrt\cyre\cyrr\cyri}% 
   \def\nomXname{\CYRV\cyre\cyrr\cyrh\cyrn\cyrii\
     \cyrii\cyrn\cyrd\cyre\cyrk\cyrs\cyri}% 
   \def\nomZname{\CYRII\cyrn\cyrd\cyre\cyrk\cyrs\cyri}}
%    \end{macrocode}
% \end{macro}\end{macro}\end{macro}
% \end{macro}\end{macro}\end{macro}\end{macro}
% Finally set the default options and process everything.
%    \begin{macrocode}
\ExecuteOptionsX{noncompatible,notintoc,norefeq,norefpage,prefix,cfg,english,nostdsubgroups,tocbasic}
\ProcessOptionsX\relax
%    \end{macrocode}
%
% In the |nomentbl| mode we need a couple more packages
%    \begin{macrocode}
\if@nomentbl
\RequirePackage{array,longtable, siunitx}
\fi
%    \end{macrocode}
%
% In |tocbasic| mode we need to load \textsl{tocbasic}
%    \begin{macrocode}
\if@nomencl@tocbasic
  \RequirePackage{tocbasic}
  \addtotoclist[nomencl]{nlo}
  \addtotoclist[nomencl]{nls}
\fi
%    \end{macrocode}
% 
%
% Checking whether we need nomenclature in toc
%    \begin{macrocode}
\if@intoc
  \if@nomencl@tocbasic
    \setuptoc{nls}{totoc}
  \fi
\fi
%    \end{macrocode}
% 
%
% \begin{macro}{\@outputfileextension}
% \begin{macro}{\@inputfileextension}
% The default file extension for the output and input nomenclature files are
% |.nlo| and |.nls| respectively. In compatibility mode, these are changes to |.glo|
% and |.gls|.
%    \begin{macrocode}
\if@compatibilitymode%
    \def\@outputfileextension{.glo}%
    \def\@inputfileextension{.gls}%
\else%
    \def\@outputfileextension{.nlo}%
    \def\@inputfileextension{.nls}%
\fi%
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\makenomenclature}
% The definition of \cs{makenomenclature} is pretty much the same as in the \LaTeX\
% kernel for \cs{makeglossary}, we only use \cs{@nomenclature} instead of \cs{glossary}.
%    \begin{macrocode}
\def\makenomenclature{%
  \newwrite\@nomenclaturefile
  \immediate\openout\@nomenclaturefile=\jobname\@outputfileextension
  \def\@nomenclature{%
    \@bsphack
    \begingroup
    \@sanitize
    \@ifnextchar[%
      {\@@@nomenclature}{\@@@nomenclature[\nomprefix]}}%
  \PackageInfo{nomencl}{Writing nomenclature file \jobname\@outputfileextension}%
  \let\makenomenclature\@empty}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\makeglossary}
% The |\makeglossary| command has been depreciated, and is only available in compatibility mode.
%    \begin{macrocode}
\if@compatibilitymode\let\makeglossary\makenomenclature\fi%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nom@verb}
% \changes{v2.7 (1999/05/14)}{1999/05/11}{Added macro}
% The macro \cs{nom@verb}, which is copied from~\cite{jone:anew:1995}
% and~\cite[p.~382]{knut:thet:1984}, makes it possible to use
% \cs{nomenclature} in another macro.
%    \begin{macrocode}
\def\nom@verb{\expandafter\strip@prefix\meaning}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nomenclature}
% \changes{v2.7 (1999/05/14)}{1999/05/11}{Protected}
% This macro just protects the ``real'' \cs{@nomenclature} macro. I am not
% sure whether this makes sense because you shouldn't use \cs{nomenclature}
% in something like \cs{section} anyway, but it doesn't hurt.
%    \begin{macrocode}
\def\nomenclature{\protect\@nomenclature}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@nomenclature}
% \begin{macro}{\@@nomenclature}
% \changes{v5.0}{2018/12/28}{Nomentbl option}
% Without an executed \cs{makenomenclature}, \cs{@nomenclature} will only
% change some catcodes and call the macro \cs{@@nomenclature}
% to gobble its arguments.
%    \begin{macrocode}
\def\@nomenclature{%
  \@bsphack
  \begingroup
  \@sanitize
  \@ifnextchar[%
  {\@@nomenclature}{\@@nomenclature[\nomprefix]}}
\if@nomentbl
  \def\@@nomenclature[#1]#2#3#4#5{\endgroup\@esphack}
\else
  \def\@@nomenclature[#1]#2#3{\endgroup\@esphack}
\fi
%    \end{macrocode}
% \end{macro} \end{macro}
% \begin{macro}{\@@@nomenclature}
% \changes{v2.7 (1999/05/14)}{1999/05/11}{More robust by using \cs{nom@verb}}
% \changes{v5.0}{2018/12/28}{Nomentbl option}
% \changes{v5.6}{2021/11/10}{Nomentbl option now does not use the
% deprecated |s| columnstyle}
% If \cs{makenomenclature} was already executed, then \cs{@nomenclature}
% calls the macro \cs{@@@nomenclature} which writes to the nomenclature file.
% It puts the prefix in front of the entry, adds brackets |[]| around the
% entry (because it will be the argument of an \cs{item}) and adds
% possible references at the end of the entry description. A group
% is started to keep changes to the reference switches local.
% The arguments are written using \cs{nom@verb} so they will not be
% expanded, even when \cs{nomenclature} is used within another macro.
% By the way, \cs{@bsphack} and \cs{@esphack} makes \cs{nomenclature}
% disappear between two spaces; unfortunately this doesn't work if
% \cs{nomenclature} is the first thing in a line.
%    \begin{macrocode}
\if@nomentbl
  \def\@@@nomenclature[#1]#2#3#4#5{%
    \def\@tempa{#2}\def\@tempb{#3}%
    \protected@write\@nomenclaturefile{}%
    {\string\nomenclatureentry{#1\nom@verb\@tempa @&amp;{\nom@verb\@tempa}&amp;%
        \begingroup\nom@verb\@tempb\endgroup &amp;\unit{#4}&amp;%
        \begingroup#5\endgroup&amp;\begingroup\protect\nomeqref{\theequation}%
        |nompageref}{\thepage}}%
    \endgroup
    \@esphack}
\else
  \def\@@@nomenclature[#1]#2#3{%
    \def\@tempa{#2}\def\@tempb{#3}%
    \protected@write\@nomenclaturefile{}%
    {\string\nomenclatureentry{#1\nom@verb\@tempa @[{\nom@verb\@tempa}]%
        \begingroup\nom@verb\@tempb\protect\nomeqref{\theequation}%
        |nompageref}{\thepage}}%
    \endgroup
    \@esphack}
\fi
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nomgroup}
% \changes{v5.0}{2018/12/28}{Rewrote}
% The next macro is executed between each character group in the
% nomenclature.  The argument is the first character of the group.
%    \begin{macrocode}
\if@stdsubgroups
  \if@nomentbl
  \def\nomgroup#1{%
    \ifthenelse{\equal{#1}{A}}{%
      \item&amp;\multicolumn{5}{@{}l}{\textbf{\nomAname}}}{%
        \ifthenelse{\equal{#1}{G}}{%
        \item&amp;\multicolumn{5}{@{}l}{\textbf{\nomGname}}}{%
          \ifthenelse{\equal{#1}{X}}{%
          \item&amp;\multicolumn{5}{@{}l}{\textbf{\nomXname}}}{%
            \ifthenelse{\equal{#1}{Z}}{%
            \item&amp;\multicolumn{5}{@{}l}{\textbf{\nomZname}}}{%
              {}}}}}}
  \else
    \def\nomgroup#1{%
      \ifthenelse{\equal{#1}{A}}{%
      \item[\textbf{\nomAname}]}{%
        \ifthenelse{\equal{#1}{G}}{%
        \item[\textbf{\nomGname}]}{%
          \ifthenelse{\equal{#1}{X}}{%
          \item[\textbf{\nomXname}]}{%
            \ifthenelse{\equal{#1}{Z}}{%
            \item[\textbf{\nomZname}]}{%
              {}}}}}}
    \fi
\else
  \def\nomgroup#1{}
\fi
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nomlabelwidth}
% This is the default label width for the nomenclature. It can be changed
% e.\,g.~in the |cfg| file.
%    \begin{macrocode}
\newdimen\nomlabelwidth
\nomlabelwidth1cm\relax
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nom@tempdim}
% \changes{v2.9 (1999/11/23)}{1999/11/23}{New temporary dimension}
% \begin{macro}{\printnomenclature}
% \begin{macro}{\@printnomenclature}
% The optional argument is read and assigned to \cs{nom@tempdim}. Then
% the |gls| file is read.
%    \begin{macrocode}
\newdimen\nom@tempdim
\def\printnomenclature{%
  \@ifnextchar[%
    {\@printnomenclature}{\@printnomenclature[\nomlabelwidth]}}
\def\@printnomenclature[#1]{%
  \nom@tempdim#1\relax
  \@input@{\jobname\@inputfileextension}}
%    \end{macrocode}
% \end{macro} \end{macro} \end{macro}
% \begin{macro}{\printglossary}
% The |\printglossary| command has been depreciated, and is only available in compatibility mode.
%    \begin{macrocode}
\if@compatibilitymode\let\printglossary\printnomenclature\fi%
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nomlabel}
% \begin{macro}{\nompreamble}
% \begin{macro}{\nompostamble}
% \begin{macro}{\nomentryend}
% Now some bells and whistles to format the nomenclature:
% the definition of the label, the preamble, the postamble and the
% symbol that is added at the end of an entry. The last three are
% defined to do nothing by default.
%    \begin{macrocode}
\def\nomlabel#1{#1\hfil}
\def\nompreamble{}
\def\nompostamble{}
\def\nomentryend{}
%    \end{macrocode}
% \end{macro} \end{macro} \end{macro} \end{macro}
% \begin{macro}{\nomitemsep}
% \changes{v2.8 (1999/09/09)}{1999/09/09}{New skip \cs{nomitemsep}}
% The skip between two items is adjustable by changing \cs{nomitemsep}.
% It defaults to \cs{itemsep}.
%    \begin{macrocode}
\newskip\nomitemsep
\nomitemsep\itemsep
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\setnomtableformat}
%   \changes{v5.0}{2018/12/28}{Added macro}
%   \changes{v5.6}{2021/11/10}{Switched to |c| column for units}
% The format of the nomenclature table.  We insert an empty left
% column due to the way \TeX\ sees \cs{multicolumn} in \cs{nomgroup}
% command.  
%    \begin{macrocode}
\def\setnomtableformat#1{\def\@nomtableformat{l@{}#1}}
\setnomtableformat{lp{0.45\textwidth}cp{0.3\textwidth}@{}l}
%    \end{macrocode}
% 
% \end{macro}
%
%
% \begin{environment}{thenomenclature}
%\changes{v5.1}{2019/01/27}{Changed \cs{markboth} to \cs{@mkboth} for
% chapters}
% \changes{v5.1}{2019/02/08}{Added tocbasic}
% \changes{v5.2}{2019/05/05}{Made tocbasic optional}
% The |thenomenclature| environment formats its title and optionally
% inserts an item in the TOC, both are dependant on
% whether the \cs{chapter} command is available or not. After
% printing the preamble, a list is started with the \cs{labelwidth}
% being set to the value defined in the optional argument of
% \cs{printnomenclature}, unless |nomentbl| is chosen.  In the latter
% case we start a longtable.  Note that each row of the table starts
% with \cs{item}, so we need to make the first \cs{item} noop, and all
% the subsequent ones to produce \cs{cr}.  We also add \cs{cr} at the
% end of the table.
%    \begin{macrocode}
\def\thenomenclature{%
  \providecommand*{\listofnlsname}{\nomname}%
  \if@nomencl@tocbasic
    \let\list@fname\listofnlsname
    \def\@currext{nls}%
    \tocbasic@listhead{\list@fname}%
   \else
    \@ifundefined{chapter}%
    {
      \section*{\nomname}
      \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
    }%
    {
      \chapter*{\nomname}
      \@mkboth{\nomname}{\nomname}%
      \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
    }%
  \fi
  \nompreamble
  \if@nomentbl
    \let\itemOrig=\item
    \def\item{\gdef\item{\\}}%
    \expandafter\longtable\expandafter{\@nomtableformat}
  \else
    \list{}{%
      \labelwidth\nom@tempdim
      \leftmargin\labelwidth
      \advance\leftmargin\labelsep
      \itemsep\nomitemsep
      \let\makelabel\nomlabel}%
  \fi
}
\def\endthenomenclature{%
  \if@nomentbl
    \item\endlongtable
    \global\let\item=\itemOrig
  \else
    \endlist
  \fi
  \nompostamble}
%    \end{macrocode}
% \end{environment}
% \begin{macro}{\nomrefeq}
% \begin{macro}{\refpage}
% \begin{macro}{\refeqpage}
% \begin{macro}{\norefeq}
% \begin{macro}{\norefpage}
% \begin{macro}{\norefeqpage}
% These are the switches to turn referencing on or off locally for a
% single entry.
%    \begin{macrocode}
\def\nomrefeq{\@printeqreftrue}
\def\nomrefpage{\@printpagereftrue}
\def\nomrefeqpage{\@printeqreftrue\@printpagereftrue}
\def\nomnorefeq{\@printeqreffalse}
\def\nomnorefpage{\@printpagereffalse}
\def\nomnorefeqpage{\@printeqreffalse\@printpagereffalse}
%    \end{macrocode}
% \end{macro} \end{macro} \end{macro} \end{macro} \end{macro} \end{macro}
% \begin{macro}{\nomeqref}
% The equation is only referenced if the corresponding switch is
% true. Since \MakeIndex\ tends to insert a line break just before
% the page number, we have to add \cs{ignorespaces} at the end.
%    \begin{macrocode}
\def\nomeqref#1{\if@printeqref\eqdeclaration{#1}\fi\ignorespaces}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\nompageref}
% The page is also only referenced if requested. Then the end symbol is
% added and finally the group started in \cs{@@@nomenclature} is closed.
%    \begin{macrocode}
\def\nompageref#1{\if@printpageref\pagedeclaration{#1}\fi%
  \nomentryend\endgroup}
%    \end{macrocode}
% \end{macro}
%
% The commands defined in the \texttt{.ist} file
%
% Read the config file if it exists and the corresponding option was given.
%    \begin{macrocode}
\if@loadcfg
  \InputIfFileExists{\@cfgfile}{%
    \PackageInfo{nomencl}{Using the configuration file \@cfgfile}}{}
\fi
%    \end{macrocode}
%
% 
% 
%
% The end.
%    \begin{macrocode}
%&lt;/package&gt;
%    \end{macrocode}
%
%
% \subsection{The \MakeIndex\ Style File}
% \label{sec:ist}
%
% The ``magic word'' for \MakeIndex\ in the input file is
% \cs{nomenclatureentry}. 
%    \begin{macrocode}
%&lt;*idxstyle&gt;
%% ---- for input file ----
keyword    "\\nomenclatureentry"
% We use % as a quote character since " is active in some languages
quote '%'
%    \end{macrocode}
% Define what is printed at the beginning and the end of the file and
% the skip between groups. Since we already write \cs{nomgroup} between
% groups, we define |group_skip| to just input an empty line.
%    \begin{macrocode}
%% ---- for output file ----
preamble   "\n\\begin{thenomenclature} \n"%
postamble  "\n\n\\end{thenomenclature}\n" group_skip "\n"
%    \end{macrocode}
% Since we can't handle multiple pages for an entry anyway, we also
% don't need any delimiters.
%    \begin{macrocode}
delim_0    ""
delim_1    ""
delim_2    ""
%    \end{macrocode}
% Now the macro between the groups. Since the flag is positive, the
% character will be inserted as a capital letter. As the comment
% states, this will cause some warnings. If someone has a better
% solution, let me know.
%    \begin{macrocode}
%% The next lines will produce some warnings when
%% running Makeindex as they try to cover two different
%% versions of the program:
lethead_prefix "\\nomgroup{"
lethead_suffix "}"
lethead_flag   1
heading_prefix "\\nomgroup{"
heading_suffix "}"
headings_flag  1
line_max 1000
%&lt;/idxstyle&gt;
%    \end{macrocode}
%
%
%
% \Finale
</pre></body></html>