代码

代码

这始于我需要在 PDF 书签中添加目录条目。完成此操作后,我决定让它始终显示大胆的(从 PDF 1.4 开始支持)。

我想用来etoolbox实现这个功能:

\preto<hook>{<code>}
\pretocmd{<command>}{<code>}{<success>}{<failure>}
%    \preto\tableofcontents{% Something like this
%      \bookmarksetupnext{bold=true}
%      \pdfbookmark{\contentsname}{bkm\contentsname}
%    }

这样,每次\tableofcontents调用时,都会创建一个以粗体格式的书签。

代码

\documentclass{article}
\usepackage{fontspec}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage{etoolbox}

%    \preto\tableofcontents{% Something like this
%      \bookmarksetupnext{bold=true}
%      \pdfbookmark{\contentsname}{bkm\contentsname}
%    }


\begin{document}
\tableofcontents
\clearpage
\section{Ablutophobia}
\section{Ergophobia}
\section{Nomophobia}

\end{document}

答案1

您的用法是正确的。因此,从根本上来说,您可以执行以下操作:

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref,bookmark}
\usepackage{etoolbox}

\pretocmd\tableofcontents{%
  \bookmarksetupnext{bold=true}%
  \pdfbookmark{\contentsname}{bkm\contentsname}%
}{}{}


\begin{document}

\tableofcontents
\clearpage
\section{Ablutophobia}
\section{Ergophobia}
\section{Nomophobia}

\end{document}

你必须小心标记的位置。在上面的例子中,这似乎不是一个问题,因为书签中的超链接位于内容在 PDF 中开始。但是,在放置之前可能会执行一些“管理”内容,这可能会导致跳转标记和文本位置之间出现间隙。


另一种方法 - 有点老派 - 是使用

\let\oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
  \bookmarksetupnext{bold=true}%
  \pdfbookmark{\contentsname}{bkm\contentsname}%
  \oldtableofcontents
}

上面提供了类似的\pretocmd接口,如果你不想使用etoolbox

相关内容