索引数学符号

索引数学符号

我想在索引中放入数学符号。例如,\vec@。为此,我编写了一个命令,将数学索引条目排序到索引的开头。有时该命令有效,有时它会打印乱码索引条目,甚至引发编译错误。

从最小工作示例开始……

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\newcommand\mindex[1]{\index{ @#1}}
\makeindex
\begin{document}

% works as expected
$A\cup B$ is the union.
\mindex{$\cdot\cup \cdot$}

% works, but prints garbled text in the index
$\vec{v}$ is a vector.
\mindex{$\vec{\cdot}$}

% commented line doesn't compile. Error "Missing $ inserted"
$\langle \phi|$ is a bra-ket.
%\mindex{$\langle \cdot|$}

\printindex
\end{document}

我用来latexmk -pdf编译文档并获取

文档

指数

生成的.idx文件是

\indexentry{ @$\cdot \cup \cdot $}{1}
\indexentry{ @$\mathaccent "017E\relax {\cdot }$}{1}

如何将任意数学表达式放入索引中?

我已经玩过\protect\DeclareRobustCommand但没有成功。记录makeindex状态

要在索引条目中放置!@或字符,请在该字符前加上 来引用它。|"

所以我用 替换了\mindex{$\vec{\cdot}$}\mindex{$\mathaccent ""017E\relax {\cdot}$},它就成功了。我也可以编译,\mindex{$\langle \cdot"|$}但不知道如何获得\lange正确的结果。即使我知道,我也宁愿写\langle而不是一些晦涩的核心命令序列。

相关内容