我参考了 ltxdoc 中的多个索引 当我添加几行时,它就不再起作用了。我感觉有些更深层次的问题,但首先考虑一下这个 MWE。
1)选项nonewpage导致根本不打印索引(如果临时文件已经存在,请先删除它们,否则您将不会注意到这一点)。
2)“其他”索引包含以下条目:测试字符串 A,测试字符串 A 1
在我看来,imakeidx 包和 doc 包中的原始索引存在一些通信问题。
\documentclass{ltxdoc}
% with option nonewpage no indexes are printed
%\usepackage[nonewpage]{imakeidx}
\usepackage{imakeidx}
\CodelineIndex\EnableCrossrefs
\indexsetup{level=\section*}
\makeindex[name=other]
\makeindex[options=-s gind.ist,title={General Index}]
\begin{document}
\DescribeMacro{\mymacroA}
\DescribeMacro{\mymacroB}\index[other]{\mymacroB}
\def\mymacroA{Test String A}
\def\mymacroB#1{%
\mymacroA\
#1
\mymacroA
}multiple indexes in ltxdoc
%
\newpage
\mymacroB{Test String B}
\printindex
\printindex[other]
\end{document}
答案1
这里有两个问题。
- 使用该
nonewpage
选项,您需要手动运行 MakeIndex。 - 您需要
\mymacroB
对索引中的插入进行字符串化(ltxdoc
对其自动生成的索引执行此操作,但不对其他索引执行此操作)。
这是一个例子。
\documentclass{ltxdoc}
% with option nonewpage no indexes are printed
\usepackage[nonewpage]{imakeidx}
\CodelineIndex\EnableCrossrefs
\indexsetup{level=\section*}
\makeindex[name=other]
\makeindex[options=-s gind.ist,title={General Index}]
\begin{document}
\DescribeMacro{\mymacroA}
\DescribeMacro{\mymacroB}\index[other]{mymacroB@\texttt{\string\mymacroB}}
\def\mymacroA{Test String A}
\def\mymacroB#1{%
\mymacroA\
#1
\mymacroA
}multiple indexes in ltxdoc
%
\newpage
\mymacroB{Test String B}
\printindex
\printindex[other]
\end{document}
以下是 的内容jack.ind
:
\begin{theindex}
\makeatletter\scan@allowedfalse
{\bfseries\hfil M\hfil}\nopagebreak
\item \verb*+\mymacroA+\pfill \usage{1}
\item \verb*+\mymacroB+\pfill \usage{1}
\end{theindex}
内容other.ind
:
\begin{theindex}
\item \texttt{\string\mymacroB}, 1
\end{theindex}