ltxdoc 中多个索引仍然存在问题

ltxdoc 中多个索引仍然存在问题

我参考了 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

这里有两个问题。

  1. 使用该nonewpage选项,您需要手动运行 MakeIndex。
  2. 您需要\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}

在此处输入图片描述

相关内容