我想在索引中放入数学符号。例如,\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
而不是一些晦涩的核心命令序列。