创建新标题类别并将其从目录中排除时出错

创建新标题类别并将其从目录中排除时出错

我正在尝试创建一个类似于部分的新标题类,但它未包含在目录中。但当我使用\titlecontents{exercise}{}{}{}{}它时它无法编译。我该如何解决这个问题?

以下是一个 mwe:

\documentclass[11pt,twoside,openany]{book}
\usepackage{amsmath,amssymb}
\usepackage{titletoc}
\usepackage{titlesec}

\usepackage{lipsum}

% Exercise Environment
%\titlecontents{exercise}{}{}{}{} % should remove from ToC but does not work

\titleclass{\exercise}{straight}[\chapter]
\newcounter{exercise}
\renewcommand{\theexercise}{\thechapter.\arabic{exercise}}

\titleformat{\exercise}[block]
    {\normalfont\sffamily\Large}
    {\bfseries\Large Exercise \theexercise}
    {.5em}
    {\bfseries}

\titleformat{name=\exercise,numberless}[block]
    {\titlerule*[.6em]{\bfseries.}
    \vspace{0.9ex}%
    \normalfont\sffamily\Large}
    {\bfseries ##1}
    {.5em}
    {\bfseries}

\titlespacing*{\exercise}{0pt}{3.5ex plus 1ex minus .2ex}{1ex plus .2ex}
\begin{document}
\tableofcontents
\chapter{sample}

\section{A test section}
\exercise{}
\lipsum[1-6]
\end{document}

答案1

来自titletoc 文档(部分6.1. 十分钟指南titletoc):

\dottedcontents{<section>}[<left>]{<above-code>}
               {<label width>}{<leader width>}
  • ...
  • <left>即使目前括号内是强制性的,并且它也是从页左边界设置左边距。
  • ...
\titlecontents{<section>}[<left>]{<above-code>}
              {<numbered-entry-format>}{<numberless-entry-format>}
              {<filler-page-format>}[<below-code>]

这里<section><left><above-code>上面一样……

为此,您需要提供第二个可选参数,因为它实际上是强制性的:

% Exercise Environment
\titlecontents{exercise}[0pt]{}{}{}{} % should remove from ToC

相关内容