當 \index 本身使用 @ 時,如何索引包含 @ 的字串?

當 \index 本身使用 @ 時,如何索引包含 @ 的字串?

我需要索引字串$@

\documentclass[a4paper,10pt,openany]{scrbook}

\usepackage{imakeidx}
\makeindex

\newcommand{\indexthing}[1]%
{%
    \index{#1@\texttt{#1} (thing)}%
    \index{things!\texttt{#1}}%
}

\begin{document}

\chapter{ch1}

foo\index{foo}
bar\index{bar}
\index{\$\@}      % PROBLEM A
\indexthing{\$\@} % PROBLEM B

\chapter{ch2}

baz\index{baz}

\printindex

\end{document}

如果註解掉 PROBLEM B 行,文檔會編譯,但$會出現在索引中,而不是$@.

如果你留下 PROBLEM B 行,它根本不會編譯

! Extra }, or forgotten \endgroup.
l.17     \subitem m {}}
                       , 1

如何包含@在索引中?

答案1

您可以使用引用前綴字符實際的特點:

\documentclass[a4paper,10pt,openany]{scrbook}

\usepackage{imakeidx}
\makeindex

\newcommand{\indexthing}[1]%
{%
    \index{#1@\texttt{#1} (thing)}%
    \index{things!\texttt{#1}}%
}

\begin{document}

\chapter{ch1}

foo\index{foo}
bar\index{bar}
\index{\$"@}      % PROBLEM A
\indexthing{\$"@} % PROBLEM B

\chapter{ch2}

baz\index{baz}

\printindex

\end{document}

這些字元取決於 MakeIndex 樣式。有關更多信息,請參閱,例如,部分輸入樣式說明符在 MakeIndex 手冊中。

相關內容