索引条目中的 htlatex、imakeidx 和 textit

索引条目中的 htlatex、imakeidx 和 textit

我正在使用 htlatex 创建电子书。

由于某些自定义原因,我需要使用 imakeidx 而不是 makeidx。此外,我的一些索引条目使用 \textit{},例如 \index{\textit{example}}。

这对于标准 latex 来说很好。但对于 htlatex 来说,这是一个问题。具体来说,对于索引,我需要运行:

tex '\def\filename{{doc}{idx}{4dx}{ind}} \input idxmake.4ht'

并且它被索引条目中的 \textit{} 绊倒了。错误消息是:

! Undefined control sequence.
l.1 \indexentry{\textit
                   {example}}{1}

以下是 MWE:

\documentclass{book}

\usepackage{imakeidx}
\makeindex

\begin{document} 

An \textit{example}\index{\textit{example}}.

\printindex
\end{document}

我用来处理这个问题的命令是:

htlatex doc "xhtml,charset=utf-8" " -cunihtf -utf8"
tex '\def\filename{{doc}{idx}{4dx}{ind}} \input idxmake.4ht'
makeindex -o doc.ind doc.4dx
htlatex doc "xhtml,charset=utf-8" " -cunihtf -utf8"

如果我将 imakeidx 更改为 makeidx,它就可以正常工作。但是,我需要使用 imakeidx。

答案1

问题似乎是\textit在索引处理中的某个地方执行了该命令。由于索引是由纯 TeX 完成的,因此它无法识别 LaTeX 命令\textit。最简单的解决方案是定义虚拟\textit宏:

tex '\def\textit#1{#1}\def\filename{{sample}{idx}{4dx}{ind}} \input idxmake.4ht' 

此版本编译时没有问题并且输出似乎正确:

在此处输入图片描述

请注意,还有另一种索引解决方案,使用 Xindy (12),它使用章节号而不是页码作为定位符。这可能比默认使用的页码更有用。

相关内容