自定义前言和后文章节标题的目录外观

自定义前言和后文章节标题的目录外观

这可能是重复的,但我有兴趣自定义放置命令的章节标题的目录外观\chapter

  1. 在里面正面后退物质,以及
  2. \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}

在此处输入图片描述

相关内容