Hyperref 破坏了 ltxdoc 文档类生成的索引

Hyperref 破坏了 ltxdoc 文档类生成的索引

假设以下最小文档:

\documentclass{ltxdoc}
\CodelineIndex
\EnableCrossrefs    
\begin{document}
  \DescribeMacro{\macro}
  A description of \cs{macro}
     \begin{macrocode}
       \macro
%    \end{macrocode}
  \PrintIndex
\end{document}

对文档进行 LaTeX 如下处理

pdflatex tex
makeindex -s gind.ist tex
makeindex -s gglo.ist -o tex.gls tex.glo
pdflatex tex

产生以下输出:

正确的输出

现在让我们加载hyperref包:

\documentclass{ltxdoc}
\usepackage{hyperref}
\CodelineIndex
\EnableCrossrefs    
\begin{document}
...

按照上面描述的方式对文档进行 LaTeX 处理,现在会产生以下输出:

错误的输出

索引不再包含宏描述的页码。有没有办法阻止此行为?

答案1

包使用其包hypdoc加载hyperref并添加对文档类的一些“超级”支持。然后链接索引条目:ltxdocdoc

\documentclass{ltxdoc}
\usepackage{hypdoc}
\CodelineIndex
\EnableCrossrefs
\begin{document}
...

请注意,您需要通过 LaTeX 运行该文档makeindex至少两次才能在索引中获得正确的链接:

pdflatex tex
makeindex -s gind.ist tex
makeindex -s gglo.ist -o tex.gls tex.glo
pdflatex tex
pdflatex tex

答案2

使用该选项hyperindex=false来防止出现“错误”行为hyperref

\documentclass{ltxdoc}
\CodelineIndex
\EnableCrossrefs    
\usepackage[hyperindex=false]{hyperref}
\begin{document}
  \DescribeMacro{\macro}
  A description of \cs{macro}
     \begin{macrocode}
       \macro
%    \end{macrocode}
  \PrintIndex
\end{document}

相关内容