受到这个伟大的回答我尝试手动创建一个词汇表风格的环境,用于简单的符号列表。基本上,我想创建一个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}