我不明白为什么hyperref
当我在目录上单击它时它没有转到我想要的页面?
\documentclass[12pt, a4paper, oneside]{report}
\usepackage[T1]{fontenc}
\usepackage{mathptmx} %times font
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage{hyperref}
\usepackage{setspace}
\usepackage[english]{babel} %roman & arabic label page
\usepackage[top=50mm , bottom=50mm, left=45mm, right=45mm]{geometry}
\addto\captionsenglish{% Replace "english" with the language you use
\renewcommand{\contentsname}%
{Table of Contents}% change "Contents" (default) to "Table of Contents"
}
\hypersetup{
colorlinks=true, %set true if you want colored links
linktoc=all, %set to all if you want both sections and subsections linked
linkcolor=black, %choose some color if you want links to stand out
}
\pagenumbering{Roman}
\begin{document}
\input{CoverPage}
\thispagestyle{empty}
\pagebreak
\input{TitlePage}
\thispagestyle{empty}
\pagebreak
\input{CopyrightPage}
\addcontentsline{toc}{chapter}{Copyright}
\setcounter{page}{1}
\pagebreak
\input{DeclarationPage}
\addcontentsline{toc}{chapter}{Declaration}
\pagebreak
\input{AcknowledgementPage}
\addcontentsline{toc}{chapter}{Acknowledgement}
\pagebreak
\tableofcontents
\addcontentsline{toc}{chapter}{Table of Contents}
\pagebreak
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
\pagebreak
% % (1) =========================================
\pagenumbering{arabic}
\addcontentsline{toc}{chapter}{1. Introduction}
\input{Introduction}
\setcounter{chapter}{1}
\pagebreak
答案1
OP 代码存在多个问题...
\cleardoublepage\phantomsection\addcontentsline{...}
如果某些内容必须明确添加到 ToC 中,请使用- 为了目录和图片列表
\usepackage{tocbibind}
是更清洁的解决方案 - 应该
Introduction
是真正的章节,而不是带有\section
和 的东西subsection
。这会搞乱书签等和编号。 \input
对于我来说这太过分了——这使得编辑(和调试)变得非常困难。
\phantomsection
一些关于等等的注释。
如果要将内容添加到.toc
等文件,\addcontentsline{toc}{...}{...}
大多数情况下都是正确的选择。但是,如果没有\cleardoublepage
(或\clearpage
) 与 结合使用\phantomsection
,则链接将转到上一页。
\phantomsection
但是,如果使用诸如 etc. 之类的命令,则可以省略。然后会插入\chapter*
与 相关的锚点。有关更多信息,请参阅部分chapter*
hyperref
3.2 目的地名称选项
请参阅hyperref
手册。
\documentclass[12pt, a4paper, oneside]{report}
\usepackage[T1]{fontenc}
\usepackage{mathptmx} %times font
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage{setspace}
\usepackage[english]{babel} %roman & arabic label page
\usepackage[top=50mm , bottom=50mm, left=45mm, right=45mm]{geometry}
\addto\captionsenglish{% Replace "english" with the language you use
\renewcommand{\contentsname}%
{Table of Contents}% change "Contents" (default) to "Table of Contents"
}
\title{Foo}
\author{Foo}
\usepackage{blindtext}
\usepackage{tocbibind}
\usepackage{hyperref}
\hypersetup{
colorlinks=true, %set true if you want colored links
linktoc=all, %set to all if you want both sections and subsections linked
linkcolor=black, %choose some color if you want links to stand out
}
\pagenumbering{Roman}
\begin{document}
\input{CoverPage}
\thispagestyle{empty}
\cleardoublepage
\input{TitlePage}
\thispagestyle{empty}
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Copyright}
\input{CopyrightPage}
\setcounter{page}{1}
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Declaration}
\input{DeclarationPage}
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Acknowledgement}
\input{AcknowledgementPage}
\cleardoublepage
\tableofcontents
\addcontentsline{toc}{chapter}{Table of Contents}
\cleardoublepage
\listoffigures
\addcontentsline{toc}{chapter}{List of Figures}
\cleardoublepage
% % (1) =========================================
\pagenumbering{arabic}
\phantomsection
\addcontentsline{toc}{chapter}{1. Introduction}
\input{Introduction}
\setcounter{chapter}{1} % Why???
\end{document}
对于单个FooPage.tex
文件我基本上使用了这段代码
\chapter*{Foo} % To make the page header outstanding, just for this solution
\blindtext[2]
Foo
用相关名称替换(例外:TitlePage.tex
仅限\maketitle
)
如果使用 etc,则单独的\phantomsection
命令不是必需的\chapter*
,但我保留了它们,因为不清楚真实\input{...}
文件里面有什么。
答案2
我遇到了同样的问题,但只是在罗马部分出现了特别的错误行为。解决方案是将命令 \addcontentsline... 放在罗马部分标题之后,阿拉伯部分标题之前。
答案3
我只在几个部分遇到了这个问题,发现这是由于浮点说明符H!覆盖内部参数。例如
\begin{figure}[h!]
% My graphics
\end{figure}
删除“!”实际上解决了我的问题。