使用宏和 | 字符创建索引

使用宏和 | 字符创建索引

我目前正在为文档中使用的数学符号创建索引,包括 -symbol 的使用|。为了方便起见,我添加了一个宏以便于更改,但这给$f|_A$

这是一个最小(不)工作的示例:

\documentclass[a4paper]{article}

\usepackage[makeindex]{imakeidx}
\makeindex

\newcommand{\mathsymbol}[2]{#2\index{#1@#2}}

\begin{document}

\mathsymbol{f}{$f\vert_A$}

$f\vert_A$\index{a@$f\vert_A$}

\printindex
\end{document}

据我所知,宏应该扩展到下面的行。在文本中,一切都很好,但索引不同:虽然没有宏的行按预期工作,但其他条目看起来像$f\GammaA30C_A$

随附.idx文件包含

\indexentry{f@$f\delimiter "026A30C _A$}{1}
\indexentry{a@$f\vert_A$}{1}

因此,我怎样才能创建一个包含这种特殊情况的宏索引,而不|被这个(十六进制?)代码替换?

我使用这些命令:

$ lualatex --version
This is LuaTeX, Version 1.0.4 (TeX Live 2017/Arch Linux)
$ makeindex
This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support).

答案1

问题类似于按出现次数排序的符号索引

\documentclass[a4paper]{article}

\usepackage[makeindex]{imakeidx}
\makeindex

\newcommand{\mathsymbol}[2]{#2\index{#1@\detokenize{#2}}}

\begin{document}

\mathsymbol{f}{$f\vert_A$}

$f\vert_A$\index{a@$f\vert_A$}

\printindex
\end{document}

相关内容