使用 LaTex 格式化目录

使用 LaTex 格式化目录

是否可以使用 LaTeX 命令或 LaTeX 包来格式化书籍的目录 (TOC),使得 TOC 如下所示:


Table des matières

Chapter I - MyChapter1

I.1 MySection1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1

I.1.1 MySubSection1 (1).

I.2 MySection2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  3

I.2.1 MySubSection1 (3). I.2.2 MySubSection2 (9)I.2.3 MySubSection3 (11). 
I.2.4 MySubSection4 (12).


Chapter II - MyChapter2

II.1 MySection1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

II.1.1 MySubSection1 (12)

II.2 MySection2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

II.2.1 MySubSection1 (12). II.2.2 MySubSection2 (13).II.2.3 MySub
Section3 (15). II.2.4 MySubSection4 (16). II.2.5 MySubSection5 
(17). II.2.6 MySubSection6 (18).II.2.7 MySubSection7 (21). II.2.8 
MySubSection8 (27).II.2.9 MySubSection9 (40). II.2.10 MySubSection
10 (45).II.2.11 MySubSection11 (46). II.2.12 MySubSection12 (53). 
II.2.13 MySubSection13 (54). II.2.14 MySubSection14 (58).

以便 :

  • 每个章节标题都以前缀“章节”显示,并且不包含书籍的页码。

  • 每个部分都显示在目录右侧的书页参考处,并用“...”分隔。

  • 子部分列表显示为()...

(注:编号问题已解决)

答案1

您可以使用以下方式实现所需的格式titletoc格式。

截屏

我已经使用了titlecontents命令

\titlecontents{<section>}
[]             % left margin
{}             % above code
{}             % numbered format
{}             % unnumbered format
{}             % filler-page-format, e.g dots

自定义chapter,及其兄弟命令 titlecontents*(删除条目之间的换行符)以自定义格式subsection

hyperref如果您希望加载它,它与包兼容。

这里有一个完整的 MWE 供您使用。

% arara: pdflatex
% arara: pdflatex
\documentclass{book}
\usepackage{lipsum}
\usepackage{titlesec}
\usepackage{titletoc}

% indented subsection (in toc)
\titlecontents{chapter}
[0.0cm]             % left margin
{\vspace{1cm}}                  % above code
{%                  % numbered format
{{\scshape Chapter} \thecontentslabel---}%
}%
{}         % unnumbered format
{}         % filler-page-format, e.g dots

% indented subsection (in toc)
\titlecontents*{subsection}
[1.0cm]             % left margin
{}                  % above code
{%                  % numbered format
{\thecontentslabel. }%
}%
{}         % unnumbered format
{ (\thecontentspage)}         % filler-page-format
[.~]


\begin{document}
\tableofcontents

\chapter{mychapter} 
\section{mysection}
\subsection{mysubsection}
\section{mysection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\chapter{mychapter} 
\section{mysection}
\subsection{mysubsection}
\section{mysection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\subsection{mysubsection}
\chapter{mychapter} 
\end{document}

答案2

您可以使用以下方式实现此设计埃托克包裹。

更新添加了处理Chaptervz. 的代码Annex,以便根据情况在目录中正确显示标题(通过 Babel 以法语设置)。在类中,toc 文件不包含我们有附件的信息,除非通过编号更改为按字母顺序排列。在目录中添加一些内容来告知这一点比在章节样式中测试我们是否有罗马或字母编号更book容易。etoc

埃托克

\documentclass{book}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{etoc}

% Something very close to the desired design is obtained using:
% \etoctoclines
% \etocsetlevel{subsection}{3}
% \etocsetlevel{subsubsection}{6}
% \etocsettocdepth {3}
% 
% But the way these etoc toc line styles are defined may look a bit
% frightening, thus we do not try to customize and define from scratch,
% starting from example from the sample code in section 30.5 of the
% manual
\renewcommand{\thechapter}{\Roman{chapter}}

\renewcommand*\etoctoclineleaders
{\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}}

\newcommand*{\DotsAndPage}
{\nobreak\leaders\etoctoclineleaders\hfill\nobreak
 \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}

\etocsetstyle {chapter}
{\parindent 0pt\leftskip 0pt\relax \rightskip .75cm 
 \nobreak
 \etocskipfirstprefix}
{\pagebreak[3]\bigskip}
{\bfseries\large Chapter \etocnumber{} -- \etocname\par}
{}

\etocsetstyle {section}
{\parfillskip-\rightskip
 \nobreak\medskip
 \etocskipfirstprefix}
{\pagebreak[1]\smallskip\parfillskip-\rightskip}
{\bfseries\normalsize\etocnumber{} \etocname\DotsAndPage }
{\parfillskip 0pt plus 1fil\relax}

\etocsetstyle {subsection}
{\parfillskip 0pt plus 1fil\relax
 \nobreak\smallskip}
{}
{\mdseries\normalsize\etocnumber~\etocname{} (\etocpage). }
{\par\medskip}



\newcount\cnta
\begin{document}

\tableofcontents

\chapter{My Chapter 1}

\section{My Section 1}
\subsection{My sub section 1}

\section{My Section 2}

\cnta 0
\loop
  \advance\cnta 1
\subsection{My sub section \the\cnta}
  \ifnum\cnta<4
\repeat


\chapter{My Chapter 2}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}

\cnta 0
\loop
  \advance\cnta 1
\subsection{My sub section \the\cnta}
  \ifnum\cnta<14
\repeat

\end{document}

扩展代码来处理附件(命令\appendix)和未编号的章节(\backmatter)。

\documentclass{book}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{etoc}

\renewcommand{\thechapter}{\Roman{chapter}}
% We start from the sample code in section 30.5 of the etoc
% manual ("using depth tags")

\renewcommand*\etoctoclineleaders
{\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}}

\newcommand*{\DotsAndPage}
{\nobreak\leaders\etoctoclineleaders\hfill\nobreak
 \makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}

\etocsetstyle {chapter}
{\parindent 0pt\leftskip 0pt\relax \rightskip .75cm 
 \nobreak
 \etocskipfirstprefix}
{\pagebreak[3]\bigskip}
{\bfseries\large 
 \etocifnumbered{\ChapterOrAnnex{} \etocnumber{} -- }{}\etocname\par}
{}


% THIS IS TO GET CHAPTER OR ANNEX CORRECTLY IN THE TOC.

\newcommand*\ChapterOrAnnex{\chaptername}
\let\oldappendix\appendix
\renewcommand\appendix{\oldappendix
   \addtocontents{toc}{\def\protect\ChapterOrAnnex{\protect\appendixname}}}


\etocsetstyle {section}
{\parfillskip-\rightskip
 \nobreak\medskip
 \etocskipfirstprefix}
{\pagebreak[1]\smallskip\parfillskip-\rightskip}
{\bfseries\normalsize\etocnumber{} \etocname\DotsAndPage }
{\parfillskip 0pt plus 1fil\relax}

\etocsetstyle {subsection}
{\parfillskip 0pt plus 1fil\relax
 \nobreak\smallskip}
{}
{\mdseries\normalsize\etocnumber~\etocname{} (\etocpage). }
{\par\medskip}

\newcount\cnta
\begin{document}
\tableofcontents

\chapter{My Chapter 1}

\section{My Section 1}
\subsection{My sub section 1}

\section{My Section 2}

\cnta 0
\loop
  \advance\cnta 1
\subsection{My sub section \the\cnta}
  \ifnum\cnta<4
\repeat

\chapter{My Chapter 2}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}

\cnta 0
\loop
  \advance\cnta 1
\subsection{My sub section \the\cnta}
  \ifnum\cnta<14
\repeat

\appendix
\chapter{My Annex}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}

\cnta 0
\loop
  \advance\cnta 1
\subsection{My sub section \the\cnta}
  \ifnum\cnta<6
\repeat

\backmatter

\chapter{My back matter}
\section{My Section 1}
\subsection{My sub section 1}

\end{document}

扩展目录

相关内容