将单词 chapter 添加到目录中并保留 hyperref

将单词 chapter 添加到目录中并保留 hyperref

我知道有现有的方法可以添加像这样的章节单词:

常见章节选项

但是,我想将所有章节分组到一个章节标题下,如下所示:

我想要的是

我实际上可以用代码获得这种格式

\documentclass[oneside,12pt]{book}

 \usepackage{graphicx}

 \usepackage{multirow}

 \usepackage{fancyvrb}

 \usepackage{tabularx}

 \usepackage[titletoc]{appendix} 

 \usepackage{amsmath}

%  \usepackage{hyperref}

\begin{document}

 \tableofcontents

  \listoffigures

  \listoftables

\addtocontents{toc}{\protect\contentsline{part}{\normalsize\textnormal{CHAPTER}}{}}

\end{document}

问题是,出于某种原因,它与 hyperref 不兼容。它收到错误:

./FinalDissertationManuscript.toc:5: Argument of \contentsline has an extra }. <inserted text> \par l.5 \contentsline {chapter}{\hspace *{30pt}\numberline {I} INTRODUCTION}{1}{...

我还尝试了禁用单个目录条目的超链接的解决方案这里,但错误仍然存​​在。

有没有办法可以获得相同的输出但仍保留 hyperref 包?

答案1

\addtotoc{toc}{\contentsline{}{}{}}不起作用的原因是为超锚点hyperref添加了第 4 个参数。\contentsline

\newcommand{\adddescriptivetexttotoc}[2][part]{%
  \cleardoublepage
  \addtocontents{toc}{\protect\contentsline{#1}{#2}{}{}}
}

将描述性文本作为条目添加到目录中part(默认)并省略页码和超级锚点,即最后两个括号{}对为空。

如果hyperref没有加载,最后一个空{}对不会造成任何损害,因此不需要检查是否hyperref加载。

\documentclass[oneside,12pt]{book}

\usepackage{tocloft}
\usepackage{graphicx}

\usepackage{multirow}

\usepackage{fancyvrb}

\usepackage{tabularx}

\usepackage[titletoc]{appendix} 

\usepackage{amsmath}

\usepackage{hyperref}


\newcommand{\adddescriptivetexttotoc}[2][part]{%
  \cleardoublepage
  \addtocontents{toc}{\protect\contentsline{#1}{#2}{}{}}
}

\addtolength{\cftchapindent}{10pt}



\begin{document}
\tableofcontents
\listoffigures
\listoftables

\adddescriptivetexttotoc{\normalsize\textnormal{CHAPTER}}

\chapter{Foo chapter}
\section{Foo section}

\chapter{Foo bar chapter}
\section{Foo bar section}


\end{document}

在此处输入图片描述

相关内容