2010-05-21 3 views
7

Я пытаюсь получить автоматически сгенерированный список символов в моем проекте латекса. Вот макрос, который я до сих пор ...Создание списка символов в латекс

\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} 

Я тогда включить мой список символов, как так

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

где файл symbols.tex является

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

I может затем получить мой символ с помощью метки: \ dispsymbol {num_points} - в этом случае отобразится n.

Это работает, все находят и денди ... когда я вызываю \ dispsymbol в той же главе (глава списка символов) как \ addedymbol def. Когда я пытаюсь получить ярлык для символа в другой главе, ничего не работает.

Может ли кто-нибудь помочь мне или предложить пакет, который будет делать то, что я ищу?

ответ

5

Дело в том, что

\begin{listofsymbols} 
\end{listofsymbols} 

является областью и любой макрос теряется после этой группы. Вы должны определить глобальные макросы. Заменить следующий

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

с

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

Alexey, Это сработало, спасибо большое. – Brian

5

Чтобы автоматически сгенерировать список символов, вы можете использовать пакет nomencl или для более сложных документов, в которых также требуются глоссарии или списки сокращений, glossaries.

Проверьте примеры в документации;)

+0

Я смотрел на nomencl, и это выглядит хорошо, но другой код дозы, что я хочу. Плюс я могу сказать, что я написал это в основном сам :) Thanks – Brian

Смежные вопросы