创建一个简单的符号列表

创建一个简单的符号列表

受到这个伟大的回答我尝试手动创建一个词汇表风格的环境,用于简单的符号列表。基本上,我想创建一个newsymbol可以从文本中的任何位置执行的命令,并将新符号连同简短说明和页码一起添加到文本末尾的符号列表中。这是我尝试的:

 \documentclass{amsbook}
 \usepackage{lstdoc,longtable}

 \begin{document}
 \makeatletter

 \def\symbollist{}
 \let\sort\lst@BubbleSort 
 \def\addtolist#1#2{
   \lst@lAddTo\symbollist{#2}
 }
 \long\gdef\addterm#1#2{\addtolist\symbollist{#1,}}
 \def\newsymbol#1#2#3{%
 \long\expandafter\gdef\csname#1\endcsname{#2 & #3 & \thepage}
 \addterm{#1}{#2}
 \sort\symbollist
 }
 \def\PrintListOfSymbols{%
 \begin{longtable}{r p{.8\textwidth} l}
 \@for \i:=\symbollist\do{%
     \csname\i\endcsname \\ }
 \end{longtable}
 }

 \chapter{Contents}
 Here the integers $\mathbb{Z}$ appear first.\newsymbol{Z}{$\mathbb{Z}$}{integers} \newpage

 Here the other symbols appear first: $\mathbb{R},\mathbb{N}$. \newsymbol{R}{$\mathbb{R}$}{real numbers} \newsymbol{N}{$\mathbb{N}$}{natural numbers}

 \begin{center} The entry from inside an environment does not appear. \newsymbol{Q}{$\mathbb{Q}$}{rational numbers} \end{center}

 \chapter{List of Symbols}
 \PrintListOfSymbols

 \makeatother
 \end{document}

第一个参数newsymbol仅用于对条目进行排序。列表如下所示: 符号列表

主要有两个问题尚待解决:

  • 页码不正确,\thepage变量返回打印符号列表的页面。如何将执行命令的页码作为参数提供给命令?
  • 在环境中执行该命令时,它不执行任何操作。如何解决此问题?

我将很感激你的帮助!

答案1

经过更多的调试,我让所有东西都正常工作了。如果有人感兴趣,这里有一个工作版本:

\documentclass{article}
\usepackage{lstdoc,longtable,amssymb}

\begin{document}
\makeatletter

\def\symbollist{}

\def\newsymbol#1#2#3{\label{symbol#1}#2\long\expandafter\gdef\csname createNewSymbol#1\endcsname{$#2$ & & #3 & & \pageref{symbol#1}\\}\lst@AddTo\symbollist{createNewSymbol#1,}}

\def\PrintListOfSymbols{%
\lst@BubbleSort{\symbollist}
\renewcommand*{\arraystretch}{1.1} 
\begin{longtable}{r p{.01\textwidth} p{.8\textwidth} p{.01\textwidth} l}
\@for \i:=\symbollist\do{%
    \csname\i\endcsname }
\end{longtable}
}

\section{Contents}
Here the integers $\newsymbol{Z}{\mathbb{Z}}{integers}$ appear first. Here the continuous functions $\newsymbol{CX}{C(X)}{continuous functions on $X$}$\newpage

Here the other symbols appear first: $\newsymbol{R}{\mathbb{R}}{real numbers}, \newsymbol{N}{\mathbb{N}}{natural numbers}$

\begin{center} Even entries $\newsymbol{Q}{\mathbb{Q}}{rational numbers}$ from inside an environment appear.  \end{center}

\section{List of Symbols}
\PrintListOfSymbols

\makeatother
\end{document}

相关内容