Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a list of symbols in latex

I'm trying to get an auto generated list of symbols in my latex project. Here is the macro that I have so far...

\newcommand{\addsymbol}[3]{%
  \symboldisplay{#1}{#2}\\%
  \setelem{#3}{#1}
}
\newcommand{\symboldisplay}[2]{%
  $#1$ \parbox{5in}{\dotfill #2}%
}

\def\setelem#1{\expandafter\def\csname myarray(#1)\endcsname}
\def\dispsymbol#1{\csname myarray(#1)\endcsname}

I then include my list of symbols like so

\begin{listofsymbols}
\input{symbols}
\end{listofsymbols}

where the symbols.tex file is

\addsymbol{n}{Number of sample points}{num_points}
\addsymbol{f_s}{Sampling frequency}{samp_frequency}

I can then get my symbol by label like so: \dispsymbol{num_points} -- this displays n in this case.

This works all find and dandy... when I am calling \dispsymbol in the same chapter (the List of Symbols chapter) as the \addsymbol def. When I try to get the label for the symbol in another chapter nothing seems to work.

Could anyone help me, or suggest a package that will do what I am looking for?

like image 292
Brian Avatar asked May 21 '10 06:05

Brian


People also ask

How do you add a list of notation in LaTeX?

To automatically generate a list of symbols you can use the nomencl package, or for more complex documents that requires also glossaries or lists of acronyms, the glossaries package.


1 Answers

The thing is that

\begin{listofsymbols} 
\end{listofsymbols} 

is the scope and any macro is lost after this group. You should define the global macros. Replace the following

\def\setelem#1{\expandafter\def\csname myarray(#1)\endcsname} 

with

\def\setelem#1{\expandafter\gdef\csname myarray(#1)\endcsname} 
like image 124
Alexey Malistov Avatar answered Oct 22 '22 18:10

Alexey Malistov