Hyperref、目錄和小節

Hyperref、目錄和小節

我在乳膠中遇到了一個我無法解決的問題。雖然 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}

另一種選擇是使用titlesectitletoc包從文件正文和目錄中刪除編號:

\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}

相關內容