我正在寻找任何可能的线索,试图找出在编写或处理.ind
类文档文件memoir
(使用latexmk
with pdflatex
)时出现以下错误的原因:
\mathit allowed only in math mode
这种情况首先发生在.ind
进入
\item \idxmark{Urysohn Metrization Theorem}, \hyperpage{506},
\mainref{580}
该函数\mainref
定义如下:
\newcommand{\mainref}[1]{\textbf{\emph{\hyperpage{#1}}}}
但即使我将其更改为,也会出现错误\mainref
:\newcommand{\mainref}[1]{#1}
日志显示:
./book.ind:1772: LaTeX Error: \mathit allowed only in math mode.
...
l.1772 \item \idxmark{Urysohn Metrization Theorem}
, \hyperpage{502},
序言hyperref
如下:
\usepackage{hyperref}
\hypersetup{
plainpages=false,pdfpagelabels,
bookmarksnumbered,
breaklinks=true,
colorlinks, citecolor=red, filecolor=black, linkcolor=blue, urlcolor=blue,
linktocpage=true,linktoc=all, %
}
doc.ind
所引用行周围的部分是:
\item \idxmark{upper semicontinuous map}, \hyperpage{317},
\hyperpage{497}
\item \idxmark{Urysohn Metrization Theorem}, \hyperpage{502},
\mainref{578}
\item \idxmark{Urysohn's Lemma}, \hyperpage{200}, \hyperpage{577},
\mainref{577}, \hyperpage{578}
\item \idxmark{usual ordering}, \hyperpage{12--13}
结尾book.idx
是:
\indexentry{Urysohn's Lemma|mainref}{585}
\indexentry{Urysohn's Lemma|hyperpage}{585}
\indexentry{Urysohn's Lemma|)hyperpage}{586}
\indexentry{Tietze Extension Theorem|mainref}{586}
\indexentry{normal space!and Tietze Extension Theorem|hyperpage}{586}
\indexentry{normal space|)hyperpage}{586}
\indexentry{Urysohn Metrization Theorem|mainref}{586}
该文件的.ist
文件是:
item_0 "\n\\item \\idxmark{"
delim_0 "}, "
% not forgetting the subitem case
item_x1 "} \n \\subitem "
headings_flag 1
heading_prefix "{\\medskip\\hfill\\large\\textsf{\\textbf{"
heading_suffix "}}\\hfill}\\medskip\\nopagebreak\n"
\idxmark
在我的序言中定义为:
\providecommand\gobbleone[1]{}
\newcommand{\idxmark}[1]{{\let\gobbleone\relax\markboth{\sffamily\bfseries#1}{\sffamily\bfseries#1}}#1}
目的\idxmark
是使每个索引页上的标题显示页面上的第一个和最后一个条目(第一页除外)。
如果我注释掉\index
“Urysohn 度量化定理”的条目,那么其他条目或子条目也会出现同样的错误。
我可以(尴尬地)通过忽略错误并再次使用处理源来解决该错误pdflatex
,但显然有些地方不对劲。
如果有帮助的话,有问题的索引条目会出现在输出的最后一页,如下所示:
可能的解决方案:
错误源于我对repeatindex
包的不当使用,我没有通过以 的形式创建索引条目来修改索引条目\item [Main Item A], 1, 3, 6 )
。这可以通过使用 来实现makeindex -s repeatindex
,即使用包repeatindex.ist
中的文件repeatindex
。但这可能与.ist
上面显示的现有自定义文件冲突。我已将此事推迟到如何修改自定义 .ist 以包含 repeatindex。
我道歉因为尚未提供完整的、最小的工作示例来重现错误,但我认为一些线索可能会帮助我设计这样的示例。有问题的文档有一本书那么长,源结构复杂,包括构成序言的多个样式文件。