
我在乳膠中遇到了一個我無法解決的問題。雖然 hyperref 包在目錄中產生可單擊的鏈接,但它不會將任何小節鏈接到實際小節,而是鏈接到它們所在的節。無論如何,是否可以更改此行為,以便它連結到該小節本身或該小節所在的頁面?
經過進一步研究後,似乎需要停用節編號並使用 titlesec 套件才能顯示此問題。下面是這個問題的一個範例:
\documentclass{report}
\usepackage[linktoc=all]{hyperref}
\setcounter{secnumdepth}{0}
\usepackage{titlesec}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\chapter{test}
Test text
\newpage
\section{A section}
Lorem Ipsum
\newpage
\subsection{This link is wrong}
\end{document}
答案1
由於您設定secnumdepth
為零,因此不會為超連結產生錨點,這會產生上述的不良效果;以下程式碼按預期工作:
\documentclass{report}
\usepackage[linktoc=all]{hyperref}
\usepackage{titlesec}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\chapter{test}
Test text
\newpage
\section{A section}
Lorem Ipsum
\newpage
\subsection{This link is correct}
\end{document}
如果您希望所有章節和小節都未編號,但包含在目錄中並仍然生成正確的超鏈接,一種選擇是使用以下命令\phantomsection
生成錨點:
\documentclass{report}
\usepackage[linktoc=all]{hyperref}
\setcounter{secnumdepth}{0}
\usepackage{titlesec}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\chapter{test}
Test text
\newpage
\phantomsection
\section{A section}
Lorem Ipsum
\newpage
\phantomsection
\subsection{This link is correct}
\end{document}
另一種選擇是使用titlesec
和titletoc
包從文件正文和目錄中刪除編號:
\documentclass{report}
\usepackage[linktoc=all]{hyperref}
\usepackage{titlesec}
\usepackage{titletoc}
\titleformat{\section}
{\normalfont\Large\bfseries}{}{1em}{}
\titleformat{\subsection}
{\normalfont\large\bfseries}{}{1em}{}
\titlecontents{section}
[1.5em] {}{}{}
{\titlerule*[1em]{.}\contentspage}
\titlecontents{subsection}
[3.8em] {}{}{}
{\titlerule*[1em]{.}\contentspage}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\chapter{test}
Test text
\newpage
\section{A section}
Lorem Ipsum
\newpage
\subsection{This link is correct}
\end{document}
另一種選擇是使用分區單元的帶星號版本(即\section*
、\subsection*
)並用於\addcontentsline
手動將條目新增至目錄:
\documentclass{report}
\usepackage[linktoc=all]{hyperref}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\tableofcontents
\chapter{test}
Test text
\newpage
\section*{A section}
\addcontentsline{toc}{section}{A section}
Lorem Ipsum
\newpage
\subsection*{This link is correct}
\addcontentsline{toc}{subsection}{This link is correct}
\end{document}