Titletoc + titlesec 在章节开头自动创建目录

Titletoc + titlesec 在章节开头自动创建目录

我想在每一章的开头创建一个自动目录 (ToC)。为此,我使用了 titlesec 和 titletoc 包的组合。我使用\titleformat包含命令来在章节标题后打印目录。但为了看起来更好,我还希望每一章的目录看起来像文档开头的主要目录,特别是章节和子章节的缩进……因此,我发现我需要使用\titlecontents

我的问题来了,这个组合给出了错误! LaTeX Error: Something's wrong--perhaps a missing \item.。我不明白发生了什么。

以下是一个例子:

\documentclass[onecolumn,twoside,openright,a4paper,11pt]{book}

\usepackage[utf8]{inputenc}     
\usepackage[T1]{fontenc}        

\usepackage{titletoc}
\setcounter{secnumdepth}{3}

\AtBeginDocument{
    \titlecontents{psection}[2.3em] {} {\contentslabel{2.3em}} {} {\titlerule*[1pc]{.}\contentspage}
    \titlecontents{psubsection}[5.5em] {} {\contentslabel{3.2em}} {} {\titlerule*[1pc]{.}\contentspage}
    \titlecontents{psubsubsection}[9.6em] {} {\contentslabel{4.1em}} {} {\titlerule*[1pc]{.}\contentspage}
}

\usepackage{titlesec}

\titleformat{\chapter}[hang]{\filright}{}{0pt}{ \Huge \bfseries\raggedleft}
[\vspace*{4pc}%
\startcontents
{\raggedleft\bfseries \large minitoc}\newline\llap
\noindent\hrulefill
\printcontents{p}{1}{\setcounter{tocdepth}{3}}
\noindent\hrulefill]


\begin{document}

    \tableofcontents

    \chapter{chapter}
    \section{title section}
    \subsection{subsection}
    \subsubsection{subsubsection}
    \subsubsection{subsubsection}
    \subsubsection{ssubsubection}

    \chapter{chapter}
    \section{section}
    \subsection{subsection}
    \subsubsection{subsubsection}
    \subsubsection{ssubsubection}
    \section{section}
    \subsection{subsection}
\end{document}

答案1

这是一个解决方案。

\documentclass[a4paper,11pt]{book}

\usepackage[T1]{fontenc}        

\usepackage{titletoc}
\setcounter{secnumdepth}{3}

\AtBeginDocument{
    \titlecontents{psection}[2.3em] {} {\contentslabel{2.3em}} {} {\titlerule*[1pc]{.}\contentspage}
    \titlecontents{psubsection}[5.5em] {} {\contentslabel{3.2em}} {} {\titlerule*[1pc]{.}\contentspage}
    \titlecontents{psubsubsection}[9.6em] {} {\contentslabel{4.1em}} {} {\titlerule*[1pc]{.}\contentspage}
}

\usepackage{titlesec}

\titleformat{\chapter}[hang]{\filright}{}{0pt}{ \Huge \bfseries\raggedleft}
[\vspace*{4pc}%
\startcontents
{\raggedleft\bfseries \large minitoc\endgraf}
\titlerule
\vspace{6pt}
\printcontents{p}{1}{\setcounter{tocdepth}{3}}
\vspace{6pt}
\titlerule]


\begin{document}

    \tableofcontents

    \chapter{chapter}
    \section{title section}
    \subsection{subsection}
    \subsubsection{subsubsection}
    \subsubsection{subsubsection}
    \subsubsection{ssubsubection}

    \chapter{chapter}
    \section{section}
    \subsection{subsection}
    \subsubsection{subsubsection}
    \subsubsection{ssubsubection}
    \section{section}
    \subsection{subsection}
\end{document}

笔记您需要为带星号的章节定义一种新格式,请参阅 titlesec 文档的第 9 页。

相关内容