Klicken Sie auf das Kapitel, um zum Inhaltsverzeichnis zu gelangen

Klicken Sie auf das Kapitel, um zum Inhaltsverzeichnis zu gelangen

Bezugnehmend auf diese Frage:Hyperref verweist auf Kapitel und Seite im Textund sein mögliches DuplikatAnklickbarer Link zurück zum Inhaltsverzeichnis

Dies ist im Grunde genommen noch einmal die zweite Frage, aber haben Sie Geduld mit mir.

Ich habe die Antwort auf die erste Frage verwendet, aber leicht bearbeitet. Jetzt habe ich jeden Kapitelnamen, der auf das Inhaltsverzeichnis verweist (nur den Namen, nicht den Teil „Kapitelnummer“ darüber. Kein großes Problem, wenn Sie wissen, wie man es löst, lassen Sie es mich wissen :))

Das Problem ist: Dadurch wird auch die Inhaltsverzeichniszeile selbst geändert, sodass sie auf das Inhaltsverzeichnis verweist. Wenn ich jetzt also auf ein Kapitel im Inhaltsverzeichnis klicke,AuchLinks zum Inhaltsverzeichnis.

MWE:

\documentclass[11pt]{report}

\usepackage{hyperref}
\usepackage{lipsum}

\usepackage{xparse}
\AtBeginDocument{
    \let\oldchapter\chapter
    \RenewDocumentCommand{\chapter}{s o m}{%
    \clearpage
    \IfBooleanTF{#1}
        {\oldchapter*{\hyperref[toc]{#3}}}% \chapter*[..]{...}
        {\IfValueTF{#2}
            {\oldchapter[#2]{\hyperref[toc]{#3}}}% \chapter[..]{...}
            {\oldchapter{\hyperref[toc]{#3}}}% \chapter{...}
        \label{chapter-\thechapter}% \label this chapter
        }%
    }
}

\begin{document}

\chapter*{Preface}
\lipsum[1-1]
\tableofcontents\label{toc}
\chapter{Introduction}
\lipsum[2-2]
\end{document}

Ich habe die Lösung mit der Unterstützung für nicht nummerierte Kapitel genommen und \hyperref[toc]{}ihnen ein hinzugefügt.

Antwort1

Die einfachste Lösung ist die Verwendung von \oldchapter[#3]{\hyperref[toc]{#3}}}%, d. h. das explizite Schreiben von #3again in das Inhaltsverzeichnis und das Setzen des \hyperrefBefehls in den Kapiteltitel. Dadurch bleiben die korrekten Hyperanker erhalten und hässliche [toc]Präfixe im Lesezeichenfeld werden vermieden!

\documentclass[11pt]{report}

\usepackage{hyperref}
\usepackage{lipsum}

\usepackage{xparse}
\AtBeginDocument{
  \let\oldchapter\chapter
  \RenewDocumentCommand{\chapter}{s o m}{%
    \clearpage
    \IfBooleanTF{#1}
    {\oldchapter*{\hyperref[toc]{#3}}}% \chapter*[..]{...}
    {\IfValueTF{#2}
      {\oldchapter[#2]{\hyperref[toc]{#3}}}% \chapter[..]{...}
      {\oldchapter[#3]{\hyperref[toc]{#3}}}% \chapter{...}
      \label{chapter-\thechapter}% \label this chapter
    }%
  }
}

\begin{document}

\chapter*{Preface}
\lipsum[1-1]
\tableofcontents\label{toc}
\chapter{Introduction}
\lipsum[2-2]

\chapter{Results}
\lipsum[2-4]
\end{document}

verwandte Informationen