是否可以用打字机字体打印引用代码行号而不是页面的索引号。
我知道我可以改变\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
结果
但应该是
\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
。