2010-05-21 29 views
7

Lateks projemde otomatik olarak oluşturulan semboller listesini almaya çalışıyorum. İşte ben bugüne kadar makro ...Lateks'teki sembollerin bir listesini oluşturma

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

Sonra symbols.tex dosyası

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

I yani

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

gibi sembollerin benim listesini dahil olduğu sembolüm bu şekilde etiketini alabilir: \ dispsymbol {num_points} - bu durumda n görüntülenir.

Bu, aynı bölümde (semboller Listesi) \ addsymbol def olarak \ dispsymbol'ı çağırdığımda tüm bul ve dandy ... işlevlerini çalışır. Başka bir bölümde sembolün etiketini almaya çalıştığımda hiçbir şey işe yaramıyor gibi görünüyor.

Herkes bana yardım edebilir mi, ya da aradığım şeyi yapacak bir paket önerebilir mi?

cevap

5

şey

\begin{listofsymbols} 
\end{listofsymbols} 

kapsamı ve herhangi bir makro bu grupta sonra kaybolur olmasıdır. Global makroları tanımlamalısınız.

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

Alexey, Bu çok çalıştı, çok çalıştı. – Brian

5

Otomatik olarak bir sembol listesi oluşturmak için nomencl paketini veya sözlükler veya kısaltmalar listesi gerektiren daha karmaşık belgeler için glossaries paketini kullanabilirsiniz.

Kontrol belgelerinde örnekler;)

+0

Ben Nomencl baktım aşağıdaki

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

değiştirin ve iyi görünüyor, ancak diğer kod dozu ne istiyorum . Ayrıca ben kendim yazdım diyebilirim :) Teşekkürler – Brian