我与 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