From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/nomencl/Makefile | 65 ++ macros/latex/contrib/nomencl/README | 39 + macros/latex/contrib/nomencl/nomencl.dtx | 1688 +++++++++++++++++++++++++++++ macros/latex/contrib/nomencl/nomencl.ins | 75 ++ macros/latex/contrib/nomencl/nomencl.pdf | Bin 0 -> 332808 bytes macros/latex/contrib/nomencl/sample01.pdf | Bin 0 -> 34412 bytes macros/latex/contrib/nomencl/sample02.pdf | Bin 0 -> 80166 bytes macros/latex/contrib/nomencl/sample03.pdf | Bin 0 -> 81763 bytes macros/latex/contrib/nomencl/sample04.pdf | Bin 0 -> 48310 bytes macros/latex/contrib/nomencl/sample05.pdf | Bin 0 -> 34041 bytes 10 files changed, 1867 insertions(+) create mode 100644 macros/latex/contrib/nomencl/Makefile create mode 100644 macros/latex/contrib/nomencl/README create mode 100644 macros/latex/contrib/nomencl/nomencl.dtx create mode 100644 macros/latex/contrib/nomencl/nomencl.ins create mode 100644 macros/latex/contrib/nomencl/nomencl.pdf create mode 100644 macros/latex/contrib/nomencl/sample01.pdf create mode 100644 macros/latex/contrib/nomencl/sample02.pdf create mode 100644 macros/latex/contrib/nomencl/sample03.pdf create mode 100644 macros/latex/contrib/nomencl/sample04.pdf create mode 100644 macros/latex/contrib/nomencl/sample05.pdf (limited to 'macros/latex/contrib/nomencl') diff --git a/macros/latex/contrib/nomencl/Makefile b/macros/latex/contrib/nomencl/Makefile new file mode 100644 index 0000000000..74c49a80b1 --- /dev/null +++ b/macros/latex/contrib/nomencl/Makefile @@ -0,0 +1,65 @@ + +PACKAGE=nomencl + +SAMPLES = sample01.tex sample02.tex sample03.tex sample04.tex sample05.tex + +CFG = sample04.cfg sample05.cfg sample06.cfg + + +SAMPLEPDF = ${SAMPLES:%.tex=%.pdf} + +PDF = $(PACKAGE).pdf ${SAMPLEPDF} + +all: ${PDF} ${SAMPLES} ${CFG} ${PACKAGE}.sty + + +%.sty: %.ins %.dtx + pdflatex $*.ins + +sample%.tex: nomencl.ins nomencl.sty + pdflatex nomencl.ins + +sample%.cfg: nomencl.ins nomencl.dtx + pdflatex nomencl.ins + + +%.pdf: %.dtx ${PACKAGE}.sty + pdflatex $< + - bibtex $* + pdflatex $< + - makeindex -s gind.ist -o $*.ind $*.idx + - makeindex -s gglo.ist -o $*.gls $*.glo + pdflatex $< + while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \ + do pdflatex $<; done + + +sample%.pdf: sample%.tex ${CFG} ${PACKAGE}.sty + pdflatex sample$*.tex + makeindex sample$*.nlo -s nomencl.ist -o sample$*.nls + pdflatex sample$*.tex + pdflatex sample$*.tex + + + +clean: + $(RM) ${PACKAGE}.sty *.log *.aux \ + *.cfg *.glo *.idx *.toc \ + *.ilg *.ind *.out *.lof \ + *.lot *.bbl *.blg *.gls *.cut *.hd \ + *.dvi *.ps *.thm *.tgz *.zip *.rpi *.drv *.ist \ + *.nlo *.nls ${SAMPLES} ${CFG} + +distclean: clean + $(RM) $(PDF) + +# +# Archive for the distribution. Includes typeset documentation +# +archive: all clean + COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE); mv ../$(PACKAGE).tgz . + +zip: all clean + zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*' + +.PRECIOUS: ${SAMPLES} ${CFG} diff --git a/macros/latex/contrib/nomencl/README b/macros/latex/contrib/nomencl/README new file mode 100644 index 0000000000..741bfa1b75 --- /dev/null +++ b/macros/latex/contrib/nomencl/README @@ -0,0 +1,39 @@ + NOMENCL PACKAGE + + +PURPOSE + +The nomenclature package can be used to generate and format a +nomenclature using MakeIndex. + + + +COPYING AND MODIFICATION + +Copyright 1996-2018 Boris Veytsman, Bernd Shandl, Lee Netherton, CV +Radhakrishnan, Brian Elmegaard + + +This package 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. + +You might like to keep nomencl.ins and nomencl.dtx somewhere safe as a +backup, or in case you want to pass the nomencl package on to someone +else. + + +VERSION HISTORY + + v5.0 2018/12/29 New maintainer: Boris Veytsman + Cleaned code and documentation + Incorporated nomentbl code + New options: stdsubgroups, nomentbl, + user selectable configuratuon file + + v5.1 2019/02/08 Compatibility changes for KOMA-Script + Bugs fixes + + v5.2 2019/05/05 More compatibility changes: tocbasic call + is now optional \ No newline at end of file diff --git a/macros/latex/contrib/nomencl/nomencl.dtx b/macros/latex/contrib/nomencl/nomencl.dtx new file mode 100644 index 0000000000..97ab1588d8 --- /dev/null +++ b/macros/latex/contrib/nomencl/nomencl.dtx @@ -0,0 +1,1688 @@ +% \iffalse +% File nomencl.dtx +% Copyright 1996-2019 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}% + [2019/05/05 v5.2 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{croatian, danish, english, french, german, italian, polish, +% portuguese, russian, 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}sp{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. The |s| column is used +% for units in the \package{siunitx} format. +% +% 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}{R}}{\item[\textbf{Variables}]}{% +% \ifthenelse{\equal{#1}{G}}{\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 Branka Lon\v{c}arevi\'{c} (Croatian), +% Brian Elmegaard (Danish), Denis B.~Roegel (French), Sani Egisto +% (Italian), Artur Gorka (Polish), Pedro Areal (Portuguese), 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://www.ctan.org/tex-archive/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://www.ctan.org/tex-archive/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.} +% If you can help out with translations for some other languages, let me know. +% \begin{macrocode} +\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{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{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} +% 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 &\begingroup#4\endgroup&% + \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} +% 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}sp{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 diff --git a/macros/latex/contrib/nomencl/nomencl.ins b/macros/latex/contrib/nomencl/nomencl.ins new file mode 100644 index 0000000000..238dbb7a8d --- /dev/null +++ b/macros/latex/contrib/nomencl/nomencl.ins @@ -0,0 +1,75 @@ +% File nomencl.ins +% Copyright 1996-2019 Boris Veytsman, Bernd Shandl, Lee Netherton, CV +% Radhakrishnan, Brian Elmegaard +% +% +% +% Installation file 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. +% +\input docstrip +\keepsilent +\askforoverwritefalse + + +% preamble for sty and drv file +\preamble + +Copyright 1996-2019 Boris Veytsman, Bernd Shandl, Lee Netherton, CV +Radhakrishnan, Brian Elmegaard + + +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. + +\endpreamble + +% preamble for ist file +\catcode`\%=12 +\declarepreamble\istpreamble + +Copyright 1996-2019 Boris Veytsman, Bernd Shandl, Lee Netherton, CV +Radhakrishnan, Brian Elmegaard + + +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. + + +Nomenclature style file for MAKEINDEX. +For nomencl v2.5 (and later) + +Formats glossary entries to show, e.g. nomenclature of equations. + +\endpreamble +\catcode`\%=14 + + +\generate{% + \file{nomencl.sty}{\from{nomencl.dtx}{package}}% + \file{sample04.cfg}{\from{nomencl.dtx}{sample04.cfg}}% + \file{sample05.cfg}{\from{nomencl.dtx}{sample05.cfg}}% + \file{sample06.cfg}{\from{nomencl.dtx}{sample06.cfg}}% + \usepostamble\empty + \file{nomencl.drv}{\from{nomencl.dtx}{driver}}% + \usepreamble\istpreamble + \file{nomencl.ist}{\from{nomencl.dtx}{idxstyle}}% + \nopreamble\nopostamble + \file{sample01.tex}{\from{nomencl.dtx}{sample01.tex}}% + \file{sample02.tex}{\from{nomencl.dtx}{sample02.tex}}% + \file{sample03.tex}{\from{nomencl.dtx}{sample03.tex}}% + \file{sample04.tex}{\from{nomencl.dtx}{sample04.tex}}% + \file{sample05.tex}{\from{nomencl.dtx}{sample05.tex}}% + } + +\endbatchfile diff --git a/macros/latex/contrib/nomencl/nomencl.pdf b/macros/latex/contrib/nomencl/nomencl.pdf new file mode 100644 index 0000000000..46861da40a Binary files /dev/null and b/macros/latex/contrib/nomencl/nomencl.pdf differ diff --git a/macros/latex/contrib/nomencl/sample01.pdf b/macros/latex/contrib/nomencl/sample01.pdf new file mode 100644 index 0000000000..00fb04cf99 Binary files /dev/null and b/macros/latex/contrib/nomencl/sample01.pdf differ diff --git a/macros/latex/contrib/nomencl/sample02.pdf b/macros/latex/contrib/nomencl/sample02.pdf new file mode 100644 index 0000000000..15b9672a6c Binary files /dev/null and b/macros/latex/contrib/nomencl/sample02.pdf differ diff --git a/macros/latex/contrib/nomencl/sample03.pdf b/macros/latex/contrib/nomencl/sample03.pdf new file mode 100644 index 0000000000..770f22e34d Binary files /dev/null and b/macros/latex/contrib/nomencl/sample03.pdf differ diff --git a/macros/latex/contrib/nomencl/sample04.pdf b/macros/latex/contrib/nomencl/sample04.pdf new file mode 100644 index 0000000000..b3721f1120 Binary files /dev/null and b/macros/latex/contrib/nomencl/sample04.pdf differ diff --git a/macros/latex/contrib/nomencl/sample05.pdf b/macros/latex/contrib/nomencl/sample05.pdf new file mode 100644 index 0000000000..a87bfe1036 Binary files /dev/null and b/macros/latex/contrib/nomencl/sample05.pdf differ -- cgit v1.2.3