我知道有现有的方法可以添加像这样的章节单词:
但是,我想将所有章节分组到一个章节标题下,如下所示:
我实际上可以用代码获得这种格式
\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}