在 LaTeX 中索引不匹配的括号

在 LaTeX 中索引不匹配的括号

我正在尝试完成以下工作

\documentclass{book}
\usepackage{makeidx}
\makeindex
\begin{document}
\chapter{One}
\section{One}
Let us try to index the characters '()'. \index{()@()} \\
Let us try to index the character '('. \index{(@(} \\
Let us try to index the character ')'. \index{)@)} \\
Let us try to index the characters '{}'. \index{\{\}@\{\}} 
Let us try to index the character '{'. \index{\{@\{} 
Let us try to index the character '}'. \index{\}@\}} 
\backmatter
\printindex
\end{document}

但似乎无法逃离这些角色{}进入 makeidx。

生成的索引文件如下所示

\indexentry{()@()}{1}
\indexentry{(@(}{1}
\indexentry{)@)}{1}
\indexentry{\{\}@\{\}}{1}
\indexentry{\{@\{} Let us try to index the character '}'. \index{\}@\}{1}

我所期望的是 -

\indexentry{()@()}{1}
\indexentry{(@(}{1}
\indexentry{)@)}{1}
\indexentry{\{\}@\{\}}{1}
\indexentry{\{@\{}{1}
\indexentry{\}@\}}{1}

我怎样才能摆脱不匹配}{索引条目。

我使用无与伦比的}和,因为我有一个传统的 True Type Devanagari 字体,其中有这些字符的特殊字形。{

答案1

MakeIndex 的文档,第 6 页,说:

请记住,命令的参数必须始终具有匹配的括号,其中或命令\index中的括号才有效。\{\}

因此,在您的例子中,匹配的括号\{\}已很好地编入索引,但最后两行没有匹配的括号,这是造成问题的原因。您可以轻松地用宏包装它们:

\documentclass{book}
\usepackage{makeidx}
\makeindex
\begin{document}
\chapter{One}
\section{One}
\def\lcurly{\{}
\def\rcurly{\}}
Let us try to index the characters '()'. \index{()@()} \\
Let us try to index the character '('. \index{(@(} \\
Let us try to index the character ')'. \index{)@)} \\
Let us try to index the characters '\{\}'. \index{\{\}@\{\}} \\
Let us try to index the character '\{'. \index{\lcurly@\lcurly} \\
Let us try to index the character '\}'. \index{\rcurly@\rcurly} 
\backmatter
\printindex
\end{document}

此外,文本中引号中的括号也应该被转义。

相关内容