我设法在目录中添加了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}