我用它imakeidx
来生成一本科学书籍中出现的人物列表。问题是我想用自己的语言列出所有出现的作者,这在文档本身中运行良好,但在索引中会产生字体编码问题。
请参阅下面的 MWE,其中“角谷静夫”在正文中有效,但在索引中无效。
\documentclass{scrbook}
\usepackage{CJKutf8}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[OT1, T2A]{fontenc}
\usepackage{imakeidx}
\makeindex[name=name, title = {List of Persons}]
\begin{document}
\begin{CJK}{UTF8}{min}角谷 静夫\end{CJK} (Shizuo Kakutani), \textborn{}~28th~August 1911 in Ōsaka \textdied{}~17th~August 2004 in New Haven, Connecticut, Japanese-American Mathematician
\index[name]{Kakutani@{\begin{CJK}{UTF8}{min}角谷 静夫\end{CJK}}}
\printindex[name]
\end{document}
该文件name.idx
包含许多以下形式的错误消息:
Package inputenc Error: Unicode char 角 (U+89D2)\MessageBreak not set up for use with LaTeX
我该怎么做才能让它CJK
不仅在正文中起作用,而且在索引中也起作用?
答案1
你必须避免不合时宜的扩张\begin{CJK}
:
\documentclass{scrbook}
\usepackage{CJKutf8}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[OT1, T2A]{fontenc}
\usepackage{imakeidx}
\newcommand{\nameindex}[2]{%
\index[name]{#1@\detokenize{\begin{CJK}{UTF8}{min}#2\end{CJK}}}%
}
\makeindex[name=name, title = {List of Persons}]
\begin{document}
\begin{CJK}{UTF8}{min}角谷 静夫\end{CJK} (Shizuo Kakutani)\nameindex{Kakutani}{角谷 静夫},
\textborn{}~28th~August 1911 in Ōsaka \textdied{}~17th~August 2004
in New Haven, Connecticut, Japanese-American Mathematician.
\printindex[name]
\end{document}