![链接到行而不是页面](https://linux22.com/image/367146/%E9%93%BE%E6%8E%A5%E5%88%B0%E8%A1%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E9%A1%B5%E9%9D%A2.png)
我有一篇文章,我尝试使用 构建一个带有超链接的工作索引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}