我正在尝试在使用 KOMA 脚本的大型 Latex 文档中创建目录。在目录中,我想将各部分居中并删除所有其他组件(页码、零件号)。我使用 tocloft(出于其他原因,这是一项硬性要求)。
虽然我设法删除了页码,但部件号仍然存在,并且部件位于正确的位置,而不是居中。
一个简化的例子是:
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{tocloft}
\renewcommand{\cftpartfont}{\hfill\Large\bfseries}
\renewcommand{\cftpartaftersnum}{\hfill}
\addtocontents{toc}{\cftpagenumbersoff{part}}
\begin{document}
\tableofcontents
\part{A}
\section{a}
\lipsum
\part{B}
\section{b}
\lipsum
\end{document}
我从 tocloft 手册的一个例子中改编了居中命令,其中
\renewcommand{\cftZtitlefont}{\hfill\Large\bfseries} 与 \renewcommand{\cftafterZtitle}{\hfill} 一起使用将产生居中的大号粗体标题。
用于使标题居中(而不是使部分居中)。
所以我的问题是,我怎样才能将零件置于中心并删除零件编号?
答案1
尝试这个:
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{tocloft}
\addtocontents{toc}{\cftpagenumbersoff{part}}
\renewcommand*{\addparttocentry}[2]{%
\addtocentrydefault{part}{}{\protect\parbox{\textwidth}{\protect\centering#2}}% original #1 in second argument
}
\begin{document}
\tableofcontents
\part{A}
\section{a}
\lipsum
\part{B}
\section{b}
\lipsum
\end{document}
\hfil
我使用了而不是\parbox
,内容居中,以防某些标题跨越多行。我使用 的简单重新定义来隐藏目录中的零件编号\addparttocentry
。
您提到您需要使用tocloft
,但如果不是这种情况,您可以改用包tocstyle
(专门为类设计KOMA
)并说类似的话:
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{tocstyle}
\usetocstyle{classic}
\settocfeature{pagenumberhook}{}
\renewcommand*{\addparttocentry}[2]{%
\addtocentrydefault{part}{}{\protect\parbox{\textwidth}{\protect\centering#2}}% original #1 in second argument
}
\begin{document}
\tableofcontents
\part{A}
\section{a}
\lipsum
\part{B}
\section{b}
\lipsum
\end{document}
警告:
应使用以下解决方案仅有的对于旧版本的 KOMA-Script(例如,TeX Live2009 中的版本);对于较新版本(从 TeX Live2010 开始的版本),请参见上面的代码;我在这里只包含这个解决方案,因为 OP 使用的是 TeX Live2009 并且无法更新:
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{tocloft}
\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\@maybeautodot\thepart%
\addcontentsline{toc}{part}{\protect\makebox[0pt][l]{\protect\parbox{\textwidth}{\protect\centering#1}}}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\begingroup
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
\raggedpart
\interlinepenalty \@M
\normalfont\sectfont\nobreak
\ifnum \c@secnumdepth >-2\relax
\size@partnumber{\partformat}%
\partheadmidvskip
\fi
\size@part{#2}\strut%
\partmark{#1}\par
\endgroup
\@endpart
}
\makeatother
\addtocontents{toc}{\cftpagenumbersoff{part}}
\begin{document}
\tableofcontents
\part{A}
\section{a}
\lipsum
\part{B}
\section{b}
\lipsum
\end{document}