使章节显示在目录中

使章节显示在目录中

我想自定义 LaTeX 提供目录的方式:

这是我的(最小)工作代码(我真正的前言大约有 300 行):

\documentclass[12pt]{book}

% For French
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\begin{document}

\tableofcontents

\part{First part}

% A numbered chapter
\chapter{First}

%An unnumbered chapter
\chapter*{Appendix}
\addcontentsline{toc}{chapter}{Appendix}

\end{document}

我想要获得这样的目录:

Partie I - First Part . . . . 1

Chapitre 1 - First . . . . . .2
Appendix . . . . . . . . . . .3

使用我的代码我得到:

I First Part . . . . . . . . . 1
1 First . . . . . . . . . . . .2
Appendix . . . . . . . . . . . 3

事实上,管理未编号的章节很简单,我确实在我的代码中解决了这个问题。但是当章节编号时,我不知道如何在目录中更改它。我还希望 pdf 中的书签(我用 pdflatex 编译)与目录中的书签相同,例如这里的“第 1 章 - 第一章”

此外,但仍然不是最重要的,如果可能的话,我想把“Partie”一词的“Chapitre”用小写字母表示。

我确信这个问题可能以前被问过,但我没有找到我的问题的答案。

提前谢谢了。

答案1

在这里,我使用了软件包的标准功能tocloft。但请注意,文档的第 10 页tocloft指出\cftpartaftersnum 不起作用标准文档类别。因此,我无法在零件编号后添加短划线。

编辑后将单词“Partie”和“Chapitre”改为小写。编辑后将章节的短划线置于空白处的中心。

\documentclass[12pt]{book}
\usepackage{tocloft}
\renewcommand\cftpartpresnum{\textsc{Partie}\ }
\renewcommand\cftpartaftersnum{\ --}% ACCORDING TO p.10 OF THE DOCS, THIS MAY NOT WORK
\renewcommand\cftpartafterpnum{\bigskip}
\renewcommand\cftchappresnum{\textsc{Chapitre}\ }
\renewcommand\cftchapaftersnum{\hfill--\hfill}
\renewcommand\cftchapnumwidth{3.2cm}
\renewcommand\cftdotsep{2}
\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} 
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} 
% For French
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\begin{document}

\tableofcontents

\part{First part}

% A numbered chapter
\chapter{First}

%An unnumbered chapter
\chapter*{Appendix}
\addcontentsline{toc}{chapter}{Appendix}

\end{document}

在此处输入图片描述

答案2

处理零件tocloft总是很麻烦。

我可以为book班级提出两个补丁和两个备选设置,具体取决于所需的章节标题对齐方式。没有尝试对齐部分标题,因为罗马数字的宽度变化太大。

第一个提案

如果章节标题超过九个,则它们彼此不对齐。在拒绝此操作之前,请考虑两个章节标题之间会有一些节标题。

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage[titles]{tocloft}
\usepackage{xpatch}

\makeatletter
\patchcmd{\@part}
  {\thepart\hspace{1em}}
  {\protect\partnumberline{\thepart}}
  {}{}
\patchcmd{\@chapter}
  {\numberline}
  {\chapternumberline}
  {}{}
\makeatother
\newcommand\partnumberline[1]{\textsc{Partie} #1 -- }
\newcommand\chapternumberline[1]{\textsc{\chaptername} #1 -- }

\renewcommand\cftpartafterpnum{\par\nobreak\bigskip}

\renewcommand\cftdotsep{2}
\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} 
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} 

\begin{document}

\tableofcontents

\part{First part}

% A numbered chapter
\chapter{First}

\setcounter{chapter}{9}
\chapter{Tenth}

%An unnumbered chapter
\chapter*{Appendix}
\addcontentsline{toc}{chapter}{Appendix}

\end{document}

在此处输入图片描述

第二个建议

章节标题对齐,并且数字设置为右对齐(因此当只有一位数字时会留下一个空洞)。

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage[titles]{tocloft}
\usepackage{xpatch}

\makeatletter
\patchcmd{\@part}
  {\thepart\hspace{1em}}
  {\protect\partnumberline{\thepart}}
  {}{}
\patchcmd{\@chapter}
  {\numberline}
  {\chapternumberline}
  {}{}
\makeatother
\newcommand\partnumberline[1]{\textsc{Partie} #1 -- }
\newcommand\chapternumberline[1]{%
  \textsc{\chaptername} %
  \ifnum#1<10 \hphantom{0}\fi
  #1 -- %
}

\renewcommand\cftpartafterpnum{\par\nobreak\bigskip}

\renewcommand\cftdotsep{2}
\renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} 
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} 

\begin{document}

\tableofcontents

\part{First part}

% A numbered chapter
\chapter{First}

\setcounter{chapter}{9}
\chapter{Tenth}

%An unnumbered chapter
\chapter*{Appendix}
\addcontentsline{toc}{chapter}{Appendix}

\end{document}

在此处输入图片描述

相关内容