PDF 书签中的目录和章节

PDF 书签中的目录和章节

我设法在目录中添加了Chapter x每个章节标题前的字符串(以下这个帖子)。

章节标题格式为:

A Nice Title

他们现在是:

Chapter 1   A Nice Title

一切运行良好。

但是,在第二步中,我该如何继续添加它在 PDF 查看器显示的书签中? 甚至,我如何只为包含在\mainmatter部分中的内容添加它?

信息:我使用 xelatex。

[编辑]

以下是 MWE:

\documentclass[a4paper,oneside]{book}

\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{titletoc}
\titlecontents*{chapter}
  [0pt]% <left>
  {}
  {\chaptername\ \thecontentslabel\quad}
  {}
  {\bfseries\hfill\contentspage}

\title{My document}

\begin{document}

\frontmatter
\chapter{Introduction} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]

\mainmatter
\chapter{Second chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]
\chapter{Last chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]

\backmatter
\chapter{Conclusion}
\lipsum[8]

\tableofcontents
\end{document}

是什么赋予了 :

在此处输入图片描述

我希望 PDF 书签中的章节标题采用相同的格式。似乎可以通过以下方法找到解决方案:书签包...但这对我来说是一个谜。

答案1

可能有一个更干净的带有书签的解决方案,但你可以修补 hyperref 内部:

\documentclass{book}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{hyperref}
\usepackage{xparse}
\usepackage{titletoc}% http://ctan.org/pkg/titletoc
\titlecontents*{chapter}% <section-type>
  [0pt]
  {}
  {\chaptername\ \thecontentslabel\quad}
  {}
  {\bfseries\hfill\contentspage}

\makeatletter
\ExplSyntaxOn
\cs_new:Npn\__hack_bookmarkprefix:w#1.#2\q_stop{
  \str_if_eq:nnT{#1}{chapter}{
    \chaptername\ #2\ 
  }
}
\cs_new:Nn\__hack_bookmarkprefix:n{
  \__hack_bookmarkprefix:w#1\q_stop
}
\cs_new:Nn\__hack_bookmark:nnnn{
  \@@BOOKMARK[#1][#2]{#3}{#4}
}
\cs_generate_variant:Nn\__hack_bookmark:nnnn{nnnf}
\RenewDocumentCommand\BOOKMARK{O{1} O{-} m m}{
  \__hack_bookmark:nnnf{#1}{#2}{#3}{\__hack_bookmarkprefix:n{#3}#4}%
}
\ExplSyntaxOff
\makeatletter

\begin{document}
\tableofcontents

\frontmatter
\chapter{Introduction} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]

\mainmatter
\chapter{Second chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]
\chapter{Last chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]

\backmatter
\chapter{Conclusion}
\lipsum[8]
\end{document}

答案2

以下示例使用包bookmark及其钩子支持来偷偷插入章节前缀。此外,数字也是通过选项numbered(包bookmark,执行bookmarknumbered包的选项hyperref)添加的。

\documentclass[a4paper,oneside]{book}

\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{titletoc}
\titlecontents*{chapter}
  [0pt]% <left>
  {}
  {\chaptername\ \thecontentslabel\quad}
  {}
  {\bfseries\hfill\contentspage}    

\usepackage{bookmark}
\usepackage{etoolbox}

\makeatletter
\newcommand*{\AddChapterPrefixInBookmarks}{%
  \if@mainmatter
    \ifnum\bookmarkget{level}=0 %
      \preto\bookmark@text{\@chapapp\space}%
    \fi
  \fi
}
\makeatother

\bookmarksetup{
  numbered,
  addtohook=\AddChapterPrefixInBookmarks,
}

% Workaround for numbered sections in unnumbered
% chapter "Introduction" to avoid chapter number
% zero.
\renewcommand*{\thesection}{%
  \ifcase\value{chapter}%
  \else
    \thechapter.%
  \fi
  \arabic{section}%
}

\title{My document}

\begin{document}
\frontmatter
\tableofcontents
\chapter{Introduction} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]
\subsection{Subsection}

\mainmatter
\chapter{Second chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]
\chapter{Last chapter} \lipsum[1]
\section{First section} \lipsum[2-3]
\section{Second section} \lipsum[4-5]
\section{Last section} \lipsum[6-7]
\subsection{Subsection}

\backmatter
\chapter{Conclusion}
\lipsum[8]

\tableofcontents
\end{document}

书签

相关内容