我如何准备一份带有回忆录的符号索引?

我如何准备一份带有回忆录的符号索引?

我想为我正在写的一本书准备一个符号索引(使用类memoir)。符号的排序方式显然存在问题。由于其中许多符号不是字母顺序的,我认为按书中出现的顺序排序是最好的主意。我浏览了手册页makeindex,但没有找到任何选项(出于显而易见的原因,我不想做诸如 等事情\index{01@symbol}\index{02@symbol}

如果解决方案中非字母符号首先出现(作为一组),按出现顺序排序,字母符号随后出现,按字典顺序排序,则可以获得加分,例如

Symbols
=
<
(,)

A
angle
apple
arrgh

B
Banach space
banana

答案1

像这样吗?

说明

  • \newsymbol{cos}为该符号 ( $\cos$) 赋予一个唯一的 id (= 的当前值symbolcounter)。该数字存储在宏 中symbolidofcos
  • \symbolindex{cos}检查此符号是否之前出现过。如果没有,则它确实出现过\newsymbol{cos}。然后,无论符号是新的还是旧的,它都会将信息写入索引。
  • 符号将根据其 ID 进行排序。由于 ID 是按顺序给出的,因此符号将按照其首次出现的顺序显示。

以下是代码

\documentclass{memoir}
\usepackage{makeidx}
    \makeindex
    \newcounter{symbolcounter}\setcounter{symbolcounter}{1000}
    \newcommand*\newsymbol[1]{
        \stepcounter{symbolcounter}
        \expandafter\edef\csname symbolidof#1\endcsname{\arabic{symbolcounter}}}
    \newcommand*\symbolindex[1]{
        \ifcsname symbolidof#1\endcsname\else\newsymbol{#1}\fi
        \index{~@(Symbols)!\csname symbolidof#1\endcsname @$\csname#1\endcsname$}}
\begin{document}
    \index{Lorem}
    $\sin\theta$\symbolindex{sin}
    \index{ipsum}
    $\cos\theta$\symbolindex{cos}
    \index{dolor}
    $\tan\theta$\symbolindex{tan}
    \index{sit}
\clearpage
    \index{amet}
    $\cos\phi$\symbolindex{cos}
    \index{consectetur}
    $\cosh\phi$\symbolindex{cosh}
    \index{adipiscing}
\printindex
\end{document}

相关内容