这可能是重复的,但我有兴趣自定义放置命令的章节标题的目录外观\chapter
:
- 在里面正面和后退物质,以及
\appendix
在命令之后主要的事情。
我只希望更改字体系列(改为中等)和形状(改为斜体),如下所示。(前言章节标题之间的垂直间距可能也需要减小。)
目前我正在使用标准文档类book
和:
\usepackage[nottoc]{tocbibind} % nottoc option for inclusion of LoT/LoF/Bib in ToC
\usepackage{hyperref}
答案1
这贡萨洛·梅迪纳的解决方案titletoc
使用与 不能很好配合的包hyperref
,因为它提取目录(以及 LOF、LOT)中条目的标题编号并将其设置在链接之外。
以下解决方案修补了\l@chapter
、\l@section
、…,它们负责在目录中添加 来格式化条目\TocTitleFormat
。根据开关\ifTocMainMatter
,\TocTitleFormat
不执行任何操作或添加\textit
标题。如果\itshape
改为使用 ,页码也将以斜体显示。
与Medina的解决方案类似\frontmatter
,朋友们也打了补丁,将开关的设置添加到文件\ifTocMainMatter
中.toc
。
由于hyperref
使用了 ,因此很可能也会生成书签。可以通过 包将相同的样式应用于它们bookmark
。
\documentclass{book}
\usepackage[nottoc]{tocbibind}
\usepackage{etoolbox}
\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{numbered,open}
\makeatletter
\newcommand*{\PatchTocEntry}[1]{%
\expandafter\@PatchTocEntry\csname l@#1\expandafter\endcsname
\csname org@l@#1\endcsname{org@l@#1}%
}
\newcommand*{\@PatchTocEntry}[3]{%
\@ifdefinable{#3}{%
\let#2#1%
\renewcommand*{#1}[1]{%
#2{\TocTitleFormat{##1}}%
}%
}%
}
\@for\@tmp:=chapter,section,subsection,subsubsection,paragraph,subparagraph\do{
\PatchTocEntry{\@tmp}%
}
\newif\ifTocMainMatter
\let\ifTocMainMatter\if@mainmatter
\newcommand*{\SetTocMainMatter}[1]{%
\addtocontents{toc}{%
\expandafter\protect\csname TocMainMatter#1\endcsname
}%
\begingroup
\edef\x{\endgroup
\noexpand\bookmarksetup{%
italic=\csname if#1\endcsname false\else true\fi
}%
}\x
}
\apptocmd{\frontmatter}{\SetTocMainMatter{false}}{}{}
\apptocmd{\mainmatter}{\SetTocMainMatter{true}}{}{}
\apptocmd{\appendix}{\SetTocMainMatter{false}}{}{}
\apptocmd{\backmatter}{\SetTocMainMatter{false}}{}{}
\newcommand*{\TocTitleFormat}[1]{%
\ifTocMainMatter
#1%
\else
\textit{#1}%
\fi
}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}
\listoftables
\listoffigures
\mainmatter
\chapter{Introduction}
\chapter{Results and Discussion}
\section{Section}
\section{Another Section}
\chapter{Conclusion}
\appendix
\chapter{My Appendix}
\section{Section in Appendix}
\cite{testa}
\backmatter
\begin{thebibliography}{9}
\bibitem{testa} Author A, Title A, 2012
\end{thebibliography}
\end{document}
答案2
一种可能性是使用titletoc
包裹;etoolbox
包用于修补\frontmatter
、\mainmatter
和\appendix
,以便自动使用相应的样式:
\documentclass{book}
\usepackage[nottoc]{tocbibind}
\usepackage{titletoc}
\usepackage{etoolbox}
\newcommand\frontformat{%
\titlecontents{chapter}[0em]
{\itshape}{\contentslabel{0em}}
{}{\normalfont\titlerule*[1pc]{.}\contentspage}}
\newcommand\mainformat{%
\titlecontents{chapter}[1.4em]
{\addvspace{10pt}\bfseries}{\contentslabel{1.15em}}
{}{\normalfont\titlerule*[1pc]{.}\bfseries\contentspage}
}
\newcommand\backformat{%
\titlecontents{chapter}[1.5em]
{\addvspace{10pt}\itshape}{\contentslabel{1.5em}}
{\hspace*{-1.5em}}{\normalfont\titlerule*[1pc]{.}\contentspage}}
\titlecontents{section}[3.8em]
{}{\contentslabel{2.3em}}
{\hspace*{-2.3em}}{\titlerule*[1pc]{.}\contentspage}
\apptocmd{\frontmatter}{\frontformat}{}{}
\apptocmd{\mainmatter}{\mainformat}{}{}
\apptocmd{\appendix}{\backformat}{}{}
\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}
\listoftables
\listoffigures
\mainmatter
\chapter{Introduction}
\chapter{Results and Discussion}
\section{Section}
\section{Another Section}
\chapter{Conclusion}
\appendix
\chapter{My Appendix}
\cite{testa}
\backmatter
\begin{thebibliography}{9}
\bibitem{testa} Author A, Title A, 2012
\end{thebibliography}
\end{document}