在执行一个项目时,我有一个长达多页的目录。
我已经将章节级别格式化为如下格式:
\titlecontents{chapter}
[0em]
{\fontsize{13}{12}\selectfont \filcenter \addvspace{12pt}}%
{\qquad \fontsize{10}{12}\selectfont Partie \enspace\thecontentslabel \\[-1.5ex]
\centerline{\rule{\linewidth}{.5pt}}\vspace{2mm}\\ \qquad}%
{1em}%
{}%
问题如下:在页面或栏的末尾,有时标题会被拆分:“Partie”和标尺在一页上,标题在下一页上。
我该如何避免这种情况?我试过了\\*
,\nobreak
但没有成功……
附加问题:它看起来不是完全居中,有人知道为什么吗?
附言:抱歉,\fontsize{13}{12}
它看起来很糟糕!这是我的错误,但奇怪的是它有效。
分数维:
\documentclass[12pt,twoside]{book}
\usepackage[paperheight=240mm,paperwidth=160mm, left=22mm, right = 20mm, top = 20mm, bottom = 22mm]{geometry}
\usepackage[cam,width=17.5truecm,height=25.54truecm,center,dvips,noinfo]{crop}
\usepackage[french]{babel}
\usepackage{fontspec}
\usepackage{lipsum}
\usepackage[newparttoc]{titlesec}%
\usepackage{titletoc}
% ToC
\usepackage{tocloft}
\usepackage[toc]{multitoc}
\renewcommand*{\multicolumntoc}{2}
\makeatletter
\addto\captionsfrench{\renewcommand\contentsname{\vspace{-2.04cm}\parbox{\linewidth}{\fontsize{18}{12}\selectfont \centerline{TABLE ANALYTIQUE}~\\[-0.5cm]\centerline{\fontsize{7}{12}\selectfont \itshape{Les chiffres renvoient aux num\'eros de pages}}}}}
\makeatother
% Little hack for the end of the ToC : I don't want it to be on both left and right columns but left then right.
\makeatletter
\renewcommand*{\@starttoc}[1]{%
\ifthenelse{\boolean{@multitoc@toc}\and\equal{#1}{toc}}{%
\begin{multicols*}{\multicolumntoc}%
\@multitoc@starttoc{#1}%
\end{multicols*}%
}{}%
}
\makeatother
\setlength\cftaftertoctitleskip{22pt}
\setcounter{tocdepth}{9}
\titlecontents{chapter}
[0em]
{\fontsize{13}{12}\selectfont \filcenter \addvspace{12pt}}%
{\qquad \fontsize{10}{12}\selectfont Partie \enspace\thecontentslabel
\\[-1.5ex]\centerline{\rule{\linewidth}{.5pt}}\vspace{2mm}\\\qquad}%
{1em}%
{}%
\begin{document}
\paragraph{Test}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\chapter{Aides d'etat}
\newpage
\tableofcontents
\end{document}
答案1
您的问题是,参数\qquad...\qquad
是在水平模式下处理的,\vspace
其行为类似于\vadjust{<space>}
,因此它不会离开水平模式。我们仅使用\titlecontents
在垂直模式下处理的第三个参数。接下来的参数为空。
\titlecontents{chapter}[0em]
{\fontsize{13}{15}\selectfont \addvspace{12pt}% your settings
\leftskip=0pt plus1fill \rightskip=\leftskip % centering the paragraph
\emergencystretch=40pt % narrow columns
\let\rightskip=\abovedisplayskip % trick: we don't want to re-declare \rightskip
\centerline{\fontsize{10}{12}\selectfont Partie \enspace\thecontentslabel}
% your title at center
\nobreak\smallskip\hrule height.5pt \nobreak\medskip % rule + unreakable spaces
}
{}{}
{}