我的 LaTeX 文档包含一个索引,该索引也通过 引用到目录中\addcontentsline
。目录中显示的页码是正确的。但是链接不正确。(如果我在 PDF 查看器 Evince 中查看文档结构,页码似乎也是错误的。)
我发现链接似乎总是指向文档结构中索引之前的内容(例如section
,subsection
或paragraph
)。
在我的示例中,Pdflatex 生成的链接指向索引之前的段落“Und so weiter”。如果我删除“Und so weiter”并再次编译,链接将指向子部分“Hallo”。
最小工作示例
\documentclass[11pt, titlepage]{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{hyperref}
\pagestyle{plain}
\makeindex
\title{Stichwortverzeichnis bei \LaTeX\ korrekt verlinken}
\author{Kunigunde Knitterkleid}
%%%%% DOCUMENT %%%%%
\begin{document}
\maketitle
\setcounter{tocdepth}{3}
\tableofcontents
\thispagestyle{empty}
\clearpage
\section{Abschnitt 1}
\subsection{Blabla}
Lorem\index{Lorem|see{Lorem ipsum}} ipsum\index{Lorem ipsum} dolor sit amet, consectetuer adipiscing elit.
Donec ullamcorper, felis non sodales\index{sodales} commodo, lectus\index{lectus} velit ultrices augue, a dignissim nibh lectus placerat pede.
\clearpage
\section{Abschnitt 2}
\subsection{Hallo}
\paragraph{Und so weiter}
\blindtext
\clearpage
%%%%% INDEX %%%%%
\renewcommand{\indexname}{Stichwortverzeichnis}
\addcontentsline{toc}{section}{Stichwortverzeichnis}
\printindex
\end{document}
奇怪的是,当使用 KOMA 脚本类时,它可以完美运行。
我所做的唯一更改是将文档类更改为scrartcl
带有选项index=totoc
并删除不必要的\addcontentsline
行。
使用 KOMA 脚本的最小工作示例
\documentclass[11pt, titlepage, index=totoc]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{hyperref}
\pagestyle{plain}
\makeindex
\title{Stichwortverzeichnis bei \LaTeX\ korrekt verlinken}
\author{Kunigunde Knitterkleid}
%%%%% DOCUMENT %%%%%
\begin{document}
\maketitle
\setcounter{tocdepth}{3}
\tableofcontents
\thispagestyle{empty}
\clearpage
\section{Abschnitt 1}
\subsection{Blabla}
Lorem\index{Lorem|see{Lorem ipsum}} ipsum\index{Lorem ipsum} dolor sit amet, consectetuer adipiscing elit.
Donec ullamcorper, felis non sodales\index{sodales} commodo, lectus\index{lectus} velit ultrices augue, a dignissim nibh lectus placerat pede.
\clearpage
\section{Abschnitt 2}
\subsection{Hallo}
\paragraph{Und so weiter}
\blindtext
\clearpage
%%%%% INDEX %%%%%
\renewcommand{\indexname}{Stichwortverzeichnis}
\printindex
\end{document}
有人知道如何让链接指向正确的位置吗(除了使用 KOMA 脚本)?
我在 Linux 上使用 Tex Live 2009。
答案1
\addcontentsline
不设置锚点;它仅引用设置锚点的最新上一个位置,这就是超链接指向错误位置(在您的情况下为分段单元)的原因。要获得正确的结果,请使用\phantomsection
from 在hyperref
正确位置设置锚点:
\phantomsection
\addcontentsline{toc}{section}{Stichwortverzeichnis}
\printindex
另一个选择是使用tocbibind
包裹:
\documentclass[11pt, titlepage]{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[nottoc]{tocbibind}
\usepackage{makeidx}
\usepackage{hyperref}
\pagestyle{plain}
\makeindex
\title{Stichwortverzeichnis bei \LaTeX\ korrekt verlinken}
\author{Kunigunde Knitterkleid}
%%%%% DOCUMENT %%%%%
\begin{document}
\maketitle
\setcounter{tocdepth}{3}
\tableofcontents
\thispagestyle{empty}
\clearpage
\section{Abschnitt 1}
\subsection{Blabla}
Lorem\index{Lorem|see{Lorem ipsum}} ipsum\index{Lorem ipsum} dolor sit amet, consectetuer adipiscing elit.
Donec ullamcorper, felis non sodales\index{sodales} commodo, lectus\index{lectus} velit ultrices augue, a dignissim nibh lectus placerat pede.
\clearpage
\section{Abschnitt 2}
\subsection{Hallo}
\paragraph{Und so weiter}
\blindtext
\clearpage
%%%%% INDEX %%%%%
\renewcommand{\indexname}{Stichwortverzeichnis}
\printindex
\end{document}