Tocloft + KOMA,删除目录中的编号,但保留内容和其他列表(如图表列表)中的编号

Tocloft + KOMA,删除目录中的编号,但保留内容和其他列表(如图表列表)中的编号

我正在使用带有 tocloft 的 documentclass scrbook (KOMA),并且想删除目录中所有章节、节和小节的编号,但不删除内容中的编号,也不删除我将拥有的其他列表(例如图表列表、术语列表、提及的作者列表等)中的编号。

已经有一个类似的问题被提出这里,但现在我想针对这个特定案例找到解决方案。这里有一个解决方案,它通过 lockstep 禁用所有列表中的所有编号。但如上所述,我需要一个可以为每个类别的列表(数字列表、xxxx 列表等)指定它的解决方案。

\documentclass{scrbook}

\usepackage{tocloft}

\usepackage{lipsum}

\makeatletter

% Without number and indentation
\renewcommand*{\numberline}[1]{}

\makeatother

\begin{document}

\tableofcontents 

答案1

在重新定义\numberline不执行任何操作(或更准确地说,吞噬其参数)之前,请创建一个名为的副本\oldnumberline。然后使用etoolbox包来修补内部 LaTeX 宏\@caption(用于像figure和 这样的浮点数table)以\oldnumberline代替\numberline

\documentclass{scrbook}

\usepackage{tocloft}

\usepackage{etoolbox}

\usepackage{lipsum}

\makeatletter
\let\oldnumberline\numberline
\patchcmd{\@caption}{\numberline}{\oldnumberline}{}{}
\renewcommand*{\numberline}[1]{}
\makeatother

\begin{document}

\tableofcontents

\listoffigures

\chapter{foo}

\section{foobar}

\subsection{foobargnu}

\lipsum

\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}

\end{document}

在此处输入图片描述

答案2

不要tocloft与 KOMA-Script 类一起使用。您可以使用选项

toc=indenttextentries

并重新定义\addtocentrydefault以获取 TOC 中的所有条目编号。

\renewcommand\addtocentrydefault[3]{%
  \addcontentsline{toc}{#1}{\nonumberline#3}}

你可以使用

\RedeclareSectionCommand[style=section,indent=0pt]{chapter}

以避免在列表开始之前自动分页。

在此处输入图片描述

代码:

\documentclass[toc=indenttextentries]{scrbook}
\usepackage{lipsum}

\renewcommand\addtocentrydefault[3]{%
  \addcontentsline{toc}{#1}{\nonumberline#3}}

\begin{document}

\begingroup
  \RedeclareSectionCommand[style=section,indent=0pt]{chapter}
  \thispagestyle{plain}
  \tableofcontents
  \listoffigures
\endgroup

\chapter{foo}
\section{foobar}
\subsection{foobargnu}
\lipsum
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}

更新

从...开始KOMA-Script 版本 3.20您可以使用它\RedeclareSectionCommand来删除目录中的条目编号。

\documentclass{scrbook}[2016/05/10]
\usepackage{lipsum}

\newcommand\remove[1]{}
\RedeclareSectionCommands[
  tocnumwidth=0pt,
  tocentrynumberformat=\remove
]{part,chapter,section,subsection,subsubsection}


\begin{document}
\tableofcontents
\listoffigures
\chapter{foo}
\section{foobar}
\subsection{foobargnu}
\lipsum
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容