Printing a list of abbreviations or symbols is one of these things (like so many) LaTeX provides a very simple and elegant solution for. The nomencl package implements a few basic commands to do that.
First load the package in the preamble. The makenomenclature command is required for the generation of the nomenclature file (.nlo). Commenting it out is a convenient way to “switch it off”.
\usepackage{nomencl}
\makenomenclature
Next, add abbreviations together with their description or long form to your document. Ideally, this is done immediately after an abbreviation is mentioned for the first time.
\nomenclature{Fig.}{Figure}
\nomenclature{$A_i$}{Area of the $i^{th}$ component}
This command has an optional argument which provides control over the order of the entries. Consider the following example:
I want $\beta$\nomenclature{$\beta$}{The second letter of the greek alphabet} to be listed after $\alpha$\nomenclature{$\alpha$}{The first letter of the greek alphabet}
Makeindex, the command that generates the list of abbreviations (see below), will automatically sort the entries. Therefore, and
will appear in an “alphabetic” order. To change this order manually, one can use a sorting prefix (optional argument), the simplest would just be consecutive numbers, and the symbols will be sorted accordingly.
I want $\beta$
\nomenclature[2]{$\beta$}{The second letter of the greek alphabet}
to be listed after $\alpha$
\nomenclature[1]{$\alpha$}{The first letter of the greek alphabet}
Linebreaks were added for presentation purposes only.
The following command prints the abbreviation/symbol list at the corresponding position of the document.
\printnomenclature
To control the distance between the symbol or abbreviation and the explaining text use the optional distance argument.
\printnomenclature[5em]
To change the name of the list use
\renewcommand{\nomname}{List of Symbols}
Similar to a glossary or bibliography, the document is typesetted once (latex). Next, the nomenclature is generated using makeindex. Finally, the document is typesetted again, adding the nomenclature to it.
latex filename.tex makeindex filename.nlo -s nomencl.ist -o filename.nls latex filename.tex
The makeindex command takes the nomenclature file (.nlo), the style file (nomencl.ist) and the name of the output file (.nls) as input arguments.
Complete code of a working example and its output
\documentclass{article}
\usepackage{nomencl}
\makenomenclature
\renewcommand{\nomname}{Time Zones}
\begin{document}
UTC\nomenclature{UTC}{Coordinated Universal Time} is 3 hours behind ADT\nomenclature{ADT}{Atlantic Daylight Time} and 10 hours ahead of EST\nomenclature{EST}{Eastern Standard Time}.
\printnomenclature
\small\hfill Created by http://texblog.org
\end{document}
Note, to save some typing, you can define your own nomenclature command that prints the symbol/abbreviation and generates a list entry at the same time.
\newcommand*{\nom}[2]{#1\nomenclature{#1}{#2}}
...
\nom{EST}{Eastern Standard Time}
Refer to the nomencl package documentation for more details.



May 14th, 2012 at 1:48 pm
Maybe worth adding that one should add
# for nomenclature
add_cus_dep(“nlo”, “nls”, 0, “nlo2nls”);
sub nlo2nls {
system(“makeindex $_[0].nlo -s nomencl.ist -o $_[0].nls -t $_[0].nlg”);
}
to the .latexmkrc file for this method to work hand in hand with latexmk.
May 14th, 2012 at 3:11 pm
Thanks for your comment!
For those not familiar with
latexmk, see here.Best, Tom.
May 14th, 2012 at 5:51 pm
Nice read.
Recently I also posted about adding a nomenclature to LaTeX documents, without making use of either xindy or makeindex (as many TeXers find that rather difficult). Read it here: http://www.howtotex.com/packages/create-a-simple-nomenclature-with-the-longtable-package/
At the bottom of that post some alternatives are also given, one of which the way described here.
May 15th, 2012 at 6:37 am
Hi Frits,
Thanks for the link. The drawback is, you point it out in your post, you have to collect and type everything out manually.
Nice site by the way!
Best, Tom.
October 29th, 2012 at 4:25 pm
How can I have List of Symbols and List of Abbreviations in the thesis using nomenclature??
October 30th, 2012 at 3:18 am
Hi Sailesh,
The documentation describes how to create subgroups and I put together their example below. If you require two separate lists, I suggest using the glossaries package, which is more flexible.
Best, Tom.
\documentclass[11pt]{article} \usepackage{nomencl} \usepackage{ifthen} \renewcommand{\nomgroup}[1]{% \ifthenelse{\equal{#1}{R}}{\item[\textbf{Variables}]}{% \ifthenelse{\equal{#1}{G}}{\item[\textbf{Constants}]}{} } } \makenomenclature \begin{document} This is some fancy text. \nomenclature[ga ]{$\alpha$}{Constant} \nomenclature[rx ]{$x$}{Variable} \printnomenclature \end{document}December 17th, 2012 at 3:48 pm
Hi, I’m using nomenclature after \listoftables and \listoffigures, and before the beginning of the first chapter.
My problem is that every of the firsts commands create a second blank page with only the header and page number, however nomenclature don’t, and there is a second blank page after nomenclature with the header of listoffigures. It seems like latex don’t know listoffigures end before nomenclature or something like that. By the way, listoffigures, of tables, etc. are not in the index (makeindex), and nomenclature does.
Please help!!
January 8th, 2013 at 1:18 pm
Hi Fer,
See here for a solution to your double page break problem. It’s got to do with the
documentclassoptionopenright.How to add the list of figures/table to the table of contents is explained here under point 6 (among other things).
makeindexcreates the nomenclature, not the table of contents as the name might suggest.Let me know if your problems are still facing problems.
Best, Tom.
March 10th, 2013 at 7:34 pm
Hi,
how can I print the nomenclature list in two columns??
March 11th, 2013 at 11:11 am
Hi!
Try the multicol package. Alternatively, you may find some of the information in this article useful.
If nothing works, please send a minimal working example.
Best,
Tom
April 15th, 2013 at 12:12 pm
Hi!
i use a simple command to \listoftables and \listoffigure and how to create list of symbols
April 29th, 2013 at 8:47 am
Hi Tom. I have been trying to follow your examples, but I still can’t make the list of abbreviations. I copied your Time Zone-example into TeXshop, but it doesn’t seem like the \printnomenclature works. Any suggestions? Thanks anyway:-)
April 29th, 2013 at 9:22 am
Hi Martha,
Did you run
makeindexto generate the index file as described above? You might also take a look at the answer given here for a more user-friendly solution.HTH,
Tom
April 29th, 2013 at 11:21 am
This might help:-) thanks a lot!
May 15th, 2013 at 2:50 pm
I used the nomencl pakage as you suggested in another post. Everything is working fine, but the title appears as centered, unlike the List of Tables and List of Figures page, where the title appears on the left. One more thing is that the fontsize of the title is also small compared to the fontsize of the List of Figures page.
Here is the code:
\documentclass{report} \usepackage{tocloft} \usepackage{etoolbox} \usepackage{titlesec} \usepackage{nomencl} \makenomenclature \renewcommand{\nomname}{List of Abbreviations} \titleformat{\chapter}[display] {\normalfont\LARGE\bfseries}{\filright\chaptertitlename\ \thechapter} {20pt}{\LARGE\filcenter} \titlespacing*{\chapter}{0pt}{-30pt}{40pt} \begin{document} \tableofcontents \clearpage \listoffigures \clearpage \printnomenclature \chapter{Dummy} I don't like WYSIWYG\nomenclature{WYSIWYG}{What You See Is What You Get} editors. \end{document}I haven’t included any image as such in this code, but I have done so in my thesis.
May 15th, 2013 at 4:05 pm
Hi,
You redefine the
titleformat. Just remove or comment out lines 11-13 (and possibly 15) and you’ll get the standard behavior.Cheers, Tom.
May 15th, 2013 at 7:07 pm
HI
i attempt the ‘Complete code of a working example and its output’ in my texwork and it only displays the sentence UTC is 3 hours behind ADT and 10 hours ahead of EST
please advise
May 16th, 2013 at 2:08 am
Hi!
The package requires running
latex, makeindex, latexas described in the post.Best, Tom