
Я использую hyperref
пакет, в котором \tableofcontents
есть кликабельные ссылки.
Есть ли способ заставитьодингиперссылку \tableofcontents
для ссылки на заданную страницу вместо автоматически выбранной страницы?
Допустим, у вас есть глава, начинающаяся на странице 2 вашего PDF-файла, но вы хотите, чтобы в оглавлении была создана соответствующая кликабельная ссылка, которая отображала бы страницу 3.
(Я ищу здесь общий ответ, поэтому код/заголовок отсутствует)
решение1
Возможно, я вообще не понял вопрос:
Должна быть hyperlink
запись, похожая на главу, но не на начальную страницу главы, а указывающая куда-то еще.
Я сделал главу \nottocchapter
, которая ведет себя как обычная пронумерованная глава, но ее выгнали \addcontentsline
оттуда.
Затем я определил \lookslikeachapterentrybutpointstosomewhereelse
(это название — головная боль для пользователей, которые неправильно используют соответствующую функцию ;-)), которое добавляет соответствующую запись главы позже, с номером страницы, на которой она появляется.
Рекомендую ли я все это? Нет ;-)
\documentclass{book}
\usepackage{blindtext}
\usepackage{xparse}
\makeatletter
\let\latex@chapter\chapter
\def\currentchaptername{}
\NewDocumentCommand{\notocchapter}{om}{%
\IfValueTF{#1}{%
\def\currentchaptername{#1}
}{%
\def\currentchaptername{#2}
}%
\begingroup
\renewcommand{\addcontentsline}[3]{}% Do nothing for this chapter
\IfValueTF{#1}{%
\latex@chapter[#1]{#2}
}{%
\latex@chapter{#2}
}%
\endgroup
}
\NewDocumentCommand{\lookslikeachapterentrybutpointstosomewhereelse}{o}{%
\phantomsection
\IfValueTF{#1}{%
\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}%
}{%
\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}\currentchaptername}
}%
}
\makeatother
\usepackage[linktocpage]{hyperref}
\begin{document}
\tableofcontents
\notocchapter{Some chapter}
\blindtext[20]
\lookslikeachapterentrybutpointstosomewhereelse
\chapter{Some other chapter}
\notocchapter{Another chapter}
\blindtext[40]
\lookslikeachapterentrybutpointstosomewhereelse[And now for something completely different]
\end{document}