链接到行而不是页面

链接到行而不是页面

我有一篇文章,我尝试使用 构建一个带有超链接的工作索引hyperref。我做了一个示例来重现:

\documentclass[a4paper,12pt,twoside]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{makeidx}
\usepackage{acronym}
\usepackage{helvet}
\usepackage{geometry}
\usepackage{imakeidx}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{pdfpages}
\usepackage{xargs} 
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{float}
\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes}
\usepackage{hyperref} 


\pagestyle{plain}
\bibliographystyle{plain}

\makeindex
\begin{document} 
\section{Aufbau}
\cite{itu}
\subsection{Hardware}
\subsubsection{CPU Module}
\index{BeagleCore}
\phantomsection
\addcontentsline{toc}{section}{Index}
\printindex 
\section{Literatur}
\bibliography{Literatur}
\end{document}

如果我现在点击索引条目,BeagleCore它会跳转到该页面。是否可以将其更改hyperref为指向特定部分/子部分?

答案1

据我所知,没有直接的方法可以实现这一点,因为hyperref链接了索引条目的页面,尽管\hyperindexformat在中有类似的内容hyperref

\index此处通过重新定义(适应imakeidx多个索引的使用)来写出链接格式:

\imki@wrindexentry{\jobname}{#2|hyperlink{\@currentHref}}{\thepage}

会将索引条目 (#2) 写入默认文件,并安装指向当前设置的锚点的超链接,该锚点存储在 中。通过在应用宏的位置\currentHref放置一个右键来实现锚点。\phantomsection\index

链接文本仍然使用页码,但链接指向使用行\index而不是顶部页面锚点。

\documentclass[a4paper,12pt,twoside]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{acronym}
\usepackage{helvet}
\usepackage{geometry}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{pdfpages}
\usepackage{xargs} 
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{float}
\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes}
\usepackage{imakeidx}
\usepackage{letltxmacro}
\usepackage[hyperindex=true]{hyperref} 

\usepackage{blindtext}


\pagestyle{plain}
\bibliographystyle{plain}
\makeindex[intoc]
\makeindex[name=foo, title=Foo index]

\makeatletter
\AtBeginDocument{
  \LetLtxMacro\egregs@index\index
  \RenewDocumentCommand{\index}{o+m}{%
    \begingroup
    \phantomsection%
    \IfValueTF{#1}{%
      \imki@wrindexentry{#1}{#2|hyperlink{\@currentHref}}{\thepage}%
    }{%
      \imki@wrindexentry{\jobname}{#2|hyperlink{\@currentHref}}{\thepage}%
    }%
    \endgroup
  }
}
\makeatother

\begin{document} 

\section{Aufbau}
%\cite{itu}
\subsection{Hardware}
\subsubsection{CPU Module}
\blindtext
Foo\index[foo]{BeagleCore}

Foo other\index{BeagleCore}
\clearpage
\printindex 

\clearpage
\printindex[foo]

\section{Literatur}
%\bibliography{Literatur}
\end{document}

相关内容