PDF 阅读器中除 LOF 之外的粗体章节书签条目

PDF 阅读器中除 LOF 之外的粗体章节书签条目

我想突出显示除附录、图表目录和表格目录之外的所有章节。我使用 -package bookmark,并尝试将所有条目设置为level = 0粗体,并关闭 LoF 等的粗体,但关闭粗体似乎没有效果。

在此处输入图片描述

\documentclass[listof=totoc]{scrreprt}

\usepackage{bookmark}
\bookmarksetup{
    open,
    addtohook={%
        \ifnum\bookmarkget{level}=0 %
        \bookmarksetup{bold}%
        \fi
    },
}


\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{mwe}

\begin{document}
\pdfbookmark[0]{Content}{toc}
\tableofcontents 
\bookmarksetupnext{bold=false}
\listoffigures  
\newpage

\chapter{Chapter 1}
\lipsum[1]
\begin{figure}[h]
\includegraphics[width=\textwidth]{example-image-a}
\caption{I am a figure\label{fig:one}}
\end{figure}
\section{Section 1}
\lipsum[1]
\begin{figure}[h]
\includegraphics[width=\textwidth]{example-image-a}
\caption{I am a figure\label{fig:one}}
\end{figure}

\bookmarksetupnext{bold=false}
\appendix
\addtocontents{toc}{\protect\contentsline {chapter}{Appendix}{}{}}
\chapter{App 1}
\lipsum[1]
\end{document}

答案1

您可以提供在钩子中使用的附加切换(或条件)。下面我定义了\ifboldPDFchapters您可以根据需要进行切换,并将条件添加到钩子中:

\usepackage{bookmark}

\newif\ifboldPDFchapters

\bookmarksetup{
  open,
  addtohook={%
    \ifnum\bookmarkget{level}=0 %
      \ifboldPDFchapters
        \bookmarksetup{bold}%
      \fi
    \fi
  }
}

添加\boldPDFchapterstrue到您的文档将确保以下所有 0 级元素将被设置在大胆的.\boldPDFchaptersfalse将删除此设置。

在此处输入图片描述

\documentclass[listof=totoc]{scrreprt}

\usepackage{bookmark}

\newif\ifboldPDFchapters

\bookmarksetup{
  open,
  addtohook={%
    \ifnum\bookmarkget{level}=0 %
      \ifboldPDFchapters
        \bookmarksetup{bold}%
      \fi
    \fi
  }
}

\begin{document}

\boldPDFchapterstrue
\pdfbookmark[0]{Content}{toc}
\tableofcontents 

\boldPDFchaptersfalse
\listoffigures  

\boldPDFchapterstrue
\chapter{Chapter 1}
\begin{figure} \caption{I am a figure} \end{figure}
\section{Section 1}
\begin{figure} \caption{I am a figure} \end{figure}

\boldPDFchaptersfalse
\appendix
\addtocontents{toc}{\protect\contentsline {chapter}{Appendix}{}{}}
\chapter{App 1}

\end{document}

可以将这些设置作为文档命令本身的一部分:

\newif\ifboldPDFchapters
\boldPDFchapterstrue% All chapter (level 0) bookmarks are BOLD

\bookmarksetup{
  open,
  addtohook={%
    \ifnum\bookmarkget{level}=0 %
      \ifboldPDFchapters
        \bookmarksetup{bold}%
      \fi
    \fi
  }
}

\let\oldtableofcontents\tableofcontents
% ToC bookmark is BOLD
\renewcommand{\tableofcontents}{{\boldPDFchapterstrue\oldtableofcontents}}
\let\oldlistoffigures\listoffigures
% LoF bookmark is NOT BOLD
\renewcommand{\listoffigures}{{\boldPDFchaptersfalse\oldlistoffigures}}
% Appendix onward has chapter bookmarks NOT BOLD
\let\oldappendix\appendix
\renewcommand{\appendix}{\oldappendix\boldPDFchaptersfalse}

这使您可以按原样设置文档,而无需使用任何开关或临时/中间文档更改。

答案2

addtohook使用和 的想法是正确的\bookmarksetupnext。但是,bold=false\bookmarksetupnext被钩子覆盖。因此\bookmarksetupnext还必须使用钩子:

\documentclass[listof=totoc]{scrreprt}

\usepackage{bookmark}
\bookmarksetup{
    open,
    addtohook={%
        \ifnum\bookmarkget{level}=0 %
        \bookmarksetup{bold}%
        \fi
    },
}

\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{mwe}

\begin{document}
\pdfbookmark[0]{Content}{toc}
\tableofcontents
\bookmarksetupnext{addtohook=\bookmarksetup{bold=false}}
\listoffigures
\newpage

\chapter{Chapter 1}
\lipsum[1]
\begin{figure}[h]
\includegraphics[width=\textwidth]{example-image-a}
\caption{I am a figure\label{fig:one}}
\end{figure}
\section{Section 1}
\lipsum[1]
\begin{figure}[h]
\includegraphics[width=\textwidth]{example-image-a}
\caption{I am a figure\label{fig:two}}
\end{figure}

\bookmarksetupnext{addtohook=\bookmarksetup{bold=false}}
\appendix
\addtocontents{toc}{\protect\contentsline {chapter}{Appendix}{}{}}
\chapter{App 1}
\lipsum[1]
\end{document}

结果

相关内容