CJK 和 imakeidx - 字体编码问题

CJK 和 imakeidx - 字体编码问题

我用它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}

在此处输入图片描述

相关内容