如何在 dtx 文件中执行“\DoNotIndex \”?

如何在 dtx 文件中执行“\DoNotIndex \”?

\EnableCrossrefs我在文件中使用dtx。在索引中我现在已经\,编入索引。我试过了\DoNotIndex{{\,}},但\DoNotIndex{\thinspace}没有成功。

有没有办法可以防止被纳入\,索引?

答案1

只需放

\DoNotIndex{\,}

应该可以工作,不需要多余的括号。

如果您想添加更多不需要索引的内容,只需添加逗号即可:

\DoNotIndex{\,,\addtocounter}

答案2

\DoNotIndex{\,}偶然的作品:

  1. \DoNotIndex将 catcode 更改\为 12(其他),并将\,,令牌寄存器添加到排除命令列表中\index@excludelist。第二个逗号是分隔符。

  2. 然后,宏在列表中查找由反斜杠、宏名称部分和分隔符逗号\ifnot@excluded组成的字符串,最后使用 LaTeX 进行匹配。由于已经包含逗号,算法会感到困惑,不会将逗号解释为宏名称,而是解释为分隔符逗号。因此,在排除命令列表中找到。\,\@@in\,\,

  • \{可以\}使用一个技巧。由于\DoNotIndex更改了反斜杠的 catcode \,花括号不再正确嵌套。花括号还需要 catcode 12(其他)。\string如示例所示,这很有帮助。

\,以下示例显示了、\{和的排除\}

% \iffalse
% arara: pdflatex: {draft: yes}
% arara: makeindex: {style: gind}
% arara: pdflatex
%<*driver>
\documentclass{ltxdoc}
\CodelineIndex
\EnableCrossrefs
\IndexPrologue{}
\DoNotIndex{\,}
\expandafter\DoNotIndex\expandafter{\string\{}
\expandafter\DoNotIndex\expandafter{\string\}}
\begin{document}
  \DocInput{\jobname.dtx}%
\end{document}
%</driver>
% \fi
%    \begin{macrocode}
%<*package>
\relax \, \thinspace \{ \}
%</package>
%    \end{macrocode}
%
% \PrintIndex
% \Finale

结果

相关内容