\index 查看宏和数学内容

\index 查看宏和数学内容

跟随相关问题,我在提供 see macro (from makeidx) 数学输入时遇到了问题。MWE:

\documentclass[a4paper,12pt]{article} 
\usepackage{makeidx}
\makeindex
\begin{document}
Test
\index{\string{$\mu$-recursive}}\index{recursive|see \string{$mu$-recursive}}

\printindex
\end{document}

第 3 行和第 7 行中的错误消息:
类似于“Extra } 或缺少 \endgroup”。

问题出在哪里?如源代码所示,我已经稍后使用 \string 对数学内容进行了评估。

答案1

使用\string是完全错误的。

\documentclass[a4paper,12pt]{article}
\usepackage{makeidx}
\makeindex

\begin{document}

Test\index{mu-recursive@$\mu$-recursive}\index{recursive|see {$\mu$-recursive}}

\printindex

\end{document}

请注意该格式sort@entry是如何帮助 MakeIndex 正确对非字母条目进行排序的。

在此处输入图片描述

答案2

\string不像带参数的命令:\string{你实际上是将左括号转换为普通字符,从而使其}不平衡。另一方面,对于写入文件的目的,在这个特定的上下文中你\string根本不需要,因为你想要写入的所有标记,包括 \mu,恰好是不可扩展的:

\documentclass[a4paper,12pt]{article} 
\usepackage{makeidx}
\makeindex
\begin{document}
Test: \texttt{\meaning\mu}%
\index{$\mu$-recursive}\index{recursive|see{$\mu$-recursive}}

\printindex
\end{document}

但是,一般来说,您不应该使用\string,而应该使用\protect:事实上,后者可以安全地应用于不可扩展的标记,同时抑制可扩展标记的过早扩展。换句话说,与 不同\string\protect不需要您知道要将其应用到的控制序列的类型(可扩展与不可扩展)。

\documentclass[a4paper,12pt]{article} 
\usepackage{makeidx}
\makeindex
\begin{document}
Test: \texttt{\meaning\mu}%
\index{$\protect\mu$-recursive}\index{recursive|see{$\protect\mu$-recursive}}

\printindex
\end{document}

相关内容