% \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, % % % % %<*dtx> \ProvidesFile{nomencl.dtx}% % %\ProvidesPackage{nomencl}% %\ProvidesFile{nomencl.drv}% %<*package|driver> % \fi % \ProvidesFile{nomencl.dtx}% [2021/11/10 v5.6 Nomenclature package] % % \iffalse % %<*driver> \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} % % \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} %<*sample01.tex> \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} % % \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} %<*sample02.tex> % 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} % % \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} %<*sample03.tex> % 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} % % \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} %<*sample04.cfg> \newcommand{\nomunit}[1]{% \renewcommand{\nomentryend}{\hspace*{\fill}\si{#1}}} % % \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} %<*sample04.tex> \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} % % \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} %<*sample05.cfg> \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}}}% % % \end{macrocode} % % The following file has completely different result when using % expanded and non-expanded versions % \begin{macrocode} %<*sample05.tex> \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} % % \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} %<*sample06.cfg> \@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} % % \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} %<*package> \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\’o\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 @&{\nom@verb\@tempa}&% \begingroup\nom@verb\@tempb\endgroup &\unit{#4}&% \begingroup#5\endgroup&\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&\multicolumn{5}{@{}l}{\textbf{\nomAname}}}{% \ifthenelse{\equal{#1}{G}}{% \item&\multicolumn{5}{@{}l}{\textbf{\nomGname}}}{% \ifthenelse{\equal{#1}{X}}{% \item&\multicolumn{5}{@{}l}{\textbf{\nomXname}}}{% \ifthenelse{\equal{#1}{Z}}{% \item&\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} % % \end{macrocode} % % % \subsection{The \MakeIndex\ Style File} % \label{sec:ist} % % The ``magic word'' for \MakeIndex\ in the input file is % \cs{nomenclatureentry}. % \begin{macrocode} %<*idxstyle> %% ---- 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 % % \end{macrocode} % % % % \Finale