dtx 文件中的索引完全混乱

dtx 文件中的索引完全混乱

我与 dtx 文件中索引的奇怪和无用的条目作斗争。

它可以复制

% \iffalse
%<*driver>
\ProvidesFile{dtxcode.tex}
%</driver>
%
%<*driver>
\documentclass{ltxdoc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\listfiles

\begin{document}
  \DocInput{dtxcode.tex}
  \PrintIndex
\end{document}
%</driver>
% \fi
%%
% \DescribeMacro{\foobar} Prints out foobar
% 
% \Finale
\endinput

结果是

foobar= \subitem *+\foobar+, \usage{1}

按照 pdf 中显示的方式打印。

无论如何:我想完全切换 doc.sty 的索引功能并将其替换为我自己的。它会尝试添加索引中使用的每个 latex 命令。使用我当前的代码,这是数百个与包定义的任何命令无关的条目。

答案1

如果我跑

makeindex -s gind.ist dtxcode

生成的文件的内容.ind

 \begin{theindex} 
 \makeatletter\scan@allowedfalse
{\bfseries\hfil F\hfil}\nopagebreak

  \item \verb*+\foobar+\pfill \usage{1}

 \end{theindex}

如果我运行了错误的命令

makeindex dtxcode

生成的文件包含

\begin{theindex}

  \item foobar=\verb
    \subitem *+\foobar+, \usage{1}

\end{theindex}

这显然是错误的。

通过将宏作为参数添加到\DoNotIndex命令中来抑制宏的索引(可以有很多,每个命令都接收宏名称列表);例如(来自.dtx我的一个)

% \DoNotIndex{\newcommand,\newenvironment,\!,\@empty,\@gobble,\@gobbletwo}
% \DoNotIndex{\@ifpackageloaded,\@ifpackagewith,\@ifundefined,\@namedef}
% \DoNotIndex{\@nil,\@onlypreamble,\@tempa,\@tempb,\@tempswafalse,\def}

(我喜欢一个命令不会溢出下一行。)

.dtx通常情况下,DTX 文件的扩展名为.tex

相关内容