In retrospective, I don't even know why I am still using [nomenclature](http://ctan.org/tex-archive/macros/latex/contrib/nomencl), but with my current fixes it seems to work just fine. <span id="more-94"></span> I am using the nomencl package to create a list of symbols for mathematical texts. The options are as follows,
```latex
\usepackage[refpage,intoc,norefeq]{nomencl}
% ...
\setlength{\nomlabelwidth}{.8in}
\setlength{\nomitemsep}{-.8\parsep}
\renewcommand*{\pagedeclaration}[1]%
{\nobreakspace(page\nobreakspace\hyperpage{#1})}
```
because I think it is extremely practical to have a page reference to the definition of a mathematical symbol. However, page referencing does not seem to be a very popular feature of this *rich* package, so it is clear that more effort was put into developing other features.
In fact, problems do not occur if you only use the <strong>nomenclature</strong> command once for each symbol. However, I sometimes want to add the same command in two places in order to reference two different pages. This usually happens when I define a symbol for a special case first, then extend the definition to a larger scope. For reasons I do not fully comprehend, nomencl will sometimes handle this very competently, and sometimes screw up cataclysmically. Every once in a while, it will write
```latex
\nompageref{12} \nompageref{17}
```
instead of
```latex
\nompageref{12, 17}
```
Now the `nompageref` macro contains an `\endgroup` command, so two of them following each other will cause the latex compilation to fail. I have no idea what causes this bug, but it is quite easy to fix. But don't worry, there's more. The nomenclature creation
```bash
makeindex %2.nlo -s nomencl.ist -o %2.nls
```
does write `\nomeqrefs` commands to the nls-file, which is completely unnecessary considering my options - but it *did* make me realize another bug: Even if two entries are completely identical, if they have a different equation preceeding them, nomencl will create one separate entry for each of them. That is quity silly considering that I explicitly forbade it to ever display equation references anyway. To make a long story short, I wrote a little script `fixnls.py` to fix all the horrible things that nomencl does wrong. For the time being, it might be of use to someone.
```python
import re
from sys import argv, stdout
stdout.write('Removing nomeqrefs ...')
contents = open(argv[1],'r').read()
contents = re.sub('\\\\nomeqref\s?\{[\d.]*\}\s*','',contents)
stdout.write(' done.\n')
stdout.write('Merging nompagerefs ...')
contents = contents.replace('}, \\nompageref{',', ')
stdout.write(' done.\n')
stdout.write('Combining ...')
flip = True
count = 0
while flip:
pattern = '\\\\item\s\\\x5B\{\$([^\$]*)\$\}\\\x5D' + \
'(?:(?:\\\\\S*\s*)*)([^\n\r]*)\\\\nompageref\{([^\}]*)\}'
matched_items = [ match for match in re.finditer(pattern,contents) ]
matched_items.reverse()
flip = False
for m in matched_items:
if flip: break
for n in matched_items:
if n is m: continue
elif flip: break
if n.group(2) == m.group(2):
flip = True
count += 1
number = m.group(3)
contents = contents[:m.start()]+contents[m.end():]
contents = contents[:n.end(3)]+', '+number+contents[n.end(3):]
stdout.write(' %d combined.\n' % count)
open(argv[1],'w').write(contents)
```
In [LED](http://latexeditor.org) (which is, by the way, the worst editor with the best preview function) I can now do all the jobs at once in the following `user1.bat`:
```bash
@echo off
%3
cd %1
makeindex %2
makeindex %2.nlo -s nomencl.ist -o %2.nls
python fixnls.py %2.nls
```
Here's a minimal example for those who really just want a working nomenclature:
```latex
\documentclass{article}
\usepackage{hyperref}
\usepackage[refpage,intoc,norefeq]{nomencl}
\setlength{\nomlabelwidth}{.8in}
\setlength{\nomitemsep}{-.8\parsep}
\renewcommand*{\pagedeclaration}[1]%
{\nobreakspace(page\nobreakspace\hyperpage{#1})}
\makenomenclature
\begin{document}
\section{First Section}
I will call $\Gamma$ something nice
\nomenclature[G]{$\Gamma$}{something nice}
and also, $\Delta$ will be something bad.
\nomenclature[D]{$\Delta$}{something bad}
consequently,
\begin{equation}
\Delta\ne\Gamma
\end{equation}
\newpage
\section{Second Section}
In a completely different context, let $\Gamma$ again be something rather nice.
\nomenclature[G]{$\Gamma$}{something nice}
that's it!
\newpage
\printnomenclature
\end{document}
```