doc.sty:以 tt 字体打印索引中的代码行号?

doc.sty:以 tt 字体打印索引中的代码行号?

是否可以用打字机字体打印引用代码行号而不是页面的索引号。

我知道我可以改变\main,但这样我就无法改变自动索引命令的格式。

例子

% \iffalse
%<*driver>
\ProvidesFile{example.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}[2009/01/01]
%<class>\ProvidesClass{example}
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{hypdoc}

\renewcommand{\main}[1]{\underline{\texttt{#1}}}

\CodelineIndex
\EnableCrossrefs

\begin{document}
  \DocInput{example.dtx}
\end{document}
%</driver>
% \fi
%
% \DoNotIndex{\newcommand}
%
% \section{Usage}
% \DescribeMacro{\test} This is a stupid example
% for \cmd{\test}, but it prducec the right index
% formatting.
%
% \StopEventually{\PrintIndex}
%
% \section{Implementaion}
% \begin{macro}{\test}
% This is how Test is defined
%    \begin{macrocode}
\newcommand{\test}{Some text}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\supertest}
% And here \cmd{\test} is used in another macro
%    \begin{macrocode}
\newcommand{\supertest}{\test{} without sense}
%    \end{macrocode}
% \end{macro}
% \Finale
\endinput

建立

pdflatex example.dtx
makeindex -s gind.ist -o example.ind example.idx
pdflatex example.dtx

结果

result

但应该是
\test……1, 1, 2
(带1下划线)

答案1

你可以尝试

\makeatletter
\renewcommand*{\theCodelineNo}{%
  \reset@font\ttfamily\scriptsize\arabic{CodelineNo}}
\makeatother

加载课程后。

确实,在索引写入过程中,该类直接使用\number\c@CodelineNo,所以这应该可以工作。

写作也

\def\hdclindex#1#2#3{%
  \csname\ifx\\#2\\relax\else#2\fi\endcsname{%
    \hyperlink{HD.#1}{\texttt{#3}}%
    \HD@savedest@add{#1}%
  }%
}

将使用打字机类型来显示索引中的行号,但连续的行号将无法正确打印(它们形成唯一的链接,因此逗号也将以打字机类型打印)。可以通过调用选项(禁用页面范围形成)来解决此makeindex问题-r

相关内容