
私は LaTeX で解決できない問題に遭遇しました。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}
すべてのセクションとサブセクションに番号を付けず、ToC に含めて正しいハイパーリンクを生成し続けたい場合は、次の\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
もう 1 つのオプションは、およびtitletoc
パッケージを使用して、ドキュメント本体と ToC の両方から番号を削除することです。
\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
エントリを ToC に手動で追加する方法があります。
\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}