如何更改 PDFBookmark 标题 (hyperref)

如何更改 PDFBookmark 标题 (hyperref)

我希望更改 PDF 书签选项卡中显示的标题,以匹配我列出章节的格式。

\documentclass[]{report}
\usepackage[hidelinks]{hyperref} %to add hyperlinks throughout document
\usepackage{titlesec} %reformatting the chapter headings
\titleformat{\chapter}[block]
    {\normalfont\LARGE\bfseries\centering}{CHAPTER \thechapter}{0em}{:\hspace{2mm}}
\begin{document}

\chapter{THE BEGINNING}
Hello.

\chapter{THE END}
Goodbye.
\end{document}

我目前拥有的是:

标题格式

可以选择创建以下书签:

坏书签1 坏书签2

我希望我的书签看起来与章节标题的格式相同:

好书签

我发现我可以输入\pdfbookmark[0]{THE BEGINNING}{name1},但我需要删除创建的书签hyperref(如果我有多个章节、节、小节等,并且必须使用此方法手动输入它们,那么这并不理想。)

我是否必须先更改\chapter{THE BEGINNING}\chapter{CHAPTER \thechapter: THE BEGINNING},然后再担心从标题和目录中删除“第 1 章:开始”的章节号?

更新:

我发现的最佳选择是: 如何删除章节编号但不将其从目录中删除

我可以使用代码

\newcommand{\mychapter}[2]{
    \setcounter{chapter}{#1}
    \setcounter{section}{0}
    \chapter*{#2}
    \addcontentsline{toc}{chapter}{#2}}

我使用 TeXMaker,我喜欢它提供的用于打开/组织子文件的结构(即使用\input{...})。为了尽可能保持井然有序,我采取了以下做法:

  1. 创建.tex标题为Chapter.1.THEBEGINNING

  2. 该子文件将包括\mychapter{1}{CHAPTER \thechapter: THE BEGINNING}

  3. 我的主要文件将包括\input{Chapter.1.THEBEGINNING}

效果已经足够好了……尽管仍在寻找更好的选择。

答案1

此示例提供了一个小的修改沃纳的解决方案。不是修补内部,而是在包的书签钩子中\Hy@writebookmark重新定义:\numberlineaddtohookbookmark

\documentclass{report}

\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{numbered}

\usepackage{titlesec} %reformatting the chapter headings
\titleformat{\chapter}[block]
  {\normalfont\LARGE\bfseries\centering}
  {CHAPTER\thechapter: }{0em}{}

\makeatletter
\bookmarksetup{%
  addtohook={%
    \ifnum\toclevel@chapter=\bookmarkget{level}\relax
      \renewcommand*{\numberline}[1]{CHAPTER #1: }%
    \fi
  },
}
\makeatother

\begin{document}

\tableofcontents

\chapter{THE BEGINNING}
Hello.
\section{A section}

\chapter{THE END}
Goodbye.
\end{document}

结果

答案2

\numberline您可以插入一个条件来改变处理 s 时函数的方式\chapter

在此处输入图片描述

\documentclass{report}
\PassOptionsToPackage{hyperref}{hidelinks}
\usepackage{bookmark,etoolbox}
\bookmarksetup{numbered}
\usepackage{titlesec} %reformatting the chapter headings
\titleformat{\chapter}[block]
  {\normalfont\LARGE\bfseries\centering}{CHAPTER \thechapter:\hspace{2mm}}{0em}{}

\makeatletter
\patchcmd{\Hy@writebookmark}% <cmd>
  {\let\chapternumberline\Hy@numberline}% <search>
  {\ifx\Hy@toclevel\toclevel@chapter\def\numberline##1{CHAPTER ##1: }\fi}% <replace>
  {}{}% <success><failure>
\makeatother
\begin{document}

\tableofcontents

\chapter{THE BEGINNING}
Hello.
\section{A section}

\chapter{THE END}
Goodbye.
\end{document}

默认值\numberline(类似\Hy@numberline用于hyperref是设置数字后跟一个空格:

\def\numberline#1{#1 }

我刚刚打了补丁\Hy@writebookmark来纠正你使用条件\numberline处理的问题。补丁需要\chapter\ifx\Hy@toclevel\toclevel@chapteretoolbox。它可以更新,为不同的部门单位/标题提供不同的前缀。

相关内容