![自定义 minitoc](https://linux22.com/image/249945/%E8%87%AA%E5%AE%9A%E4%B9%89%20minitoc.png)
我正在写论文,我想在每章开头添加一个迷你目录。但是,我不喜欢标准格式,即各节的标题列在主目录中,我想将标题对齐在同一行(我在几本书中看到的格式),可能用逗号或文本项目符号分隔。我的意思是这样的:
第1章
内容
1.1 中学一年级, 1.2 中学二年级, 1.3 中学三年级, 1.4 中学四年级
我可以通过 titletoc 包为主目录执行此操作,但我需要为 minitoc 执行此操作。有没有办法对 minitoc 进行这种自定义?提前谢谢您。
答案1
titletoc
这是一个用于主要和部分目录的可能解决方案;titlesec
还使用了该包,以便\chapter
自动启动并打印其部分目录:
\documentclass{book}
\usepackage{titlesec}
\usepackage{titletoc}
\newcommand\partialtocname{\contentsname}
\begin{document}
\tableofcontents
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
[\vspace*{2pc}\titlerule\vspace*{1pc}%
\startcontents\vbox{\Large\partialtocname}\vskip1ex
\printcontents{l}{1}{\setcounter{tocdepth}{1}}\vspace*{1pc}\titlerule]
\titlecontents*{lsection}[0pt]
{\small\normalfont}{\thecontentslabel\space}{}
{,~\itshape\thecontentspage}[\space\textbullet\space][.]
\titlecontents*{lsubsection}[0pt]{}{}{}{}
\chapter{Chapter One}
\section{Section One One}
\subsection{Subsection One One One}
\subsection{Subsection One One Two}
\section{Section One Two}
\subsection{Subsection One Two One}
\subsection{Subsection One Two Two}
\section{Section One Three}
\subsection{Subsection One Three One}
\subsection{Subsection One Three Two}
\chapter{Chapter Two}
\section{Section Two One}
\subsection{Subsection TwoOne One}
\subsection{Subsection Two One Two}
\section{Section Two Two}
\subsection{Subsection Two Two One}
\subsection{Subsection Two Two Two}
\end{document}
主要目录:
部分目录:
和
当然,你的论文中会有一些章节不需要部分目录,比如前言和后记部分(致谢、前言、主要目录、可能的附录和参考书目)。我对最初的代码进行了改进,定义了一个布尔值,让你可以轻松地激活和停用部分目录;最初布尔值设置为 false,因此前言章节不会有部分目录;一旦你开始主要内容(事实上,无论何时你想开始使用部分目录),你所要做的就是使用 将布尔值设置为 true \chapterwithtoctrue
。对于后记(或者,一般来说,要停用部分目录),你所要做的就是使用 将布尔值设置为 false \chapterwithtocfalse
;一个完整的例子:
\documentclass{book}
\usepackage{titlesec}
\usepackage{titletoc}
% The name to be used as title for the partialToCs
% initially set to be equal to \contentsname
\newcommand\partialtocname{\contentsname}
% depending on this boolean, \chapter will create or not a partial ToC
\newif\ifchapterwithtoc
\chapterwithtocfalse
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
[\ifchapterwithtoc
\vspace*{2pc}\titlerule\vspace*{1pc}%
\startcontents\vbox{\Large\partialtocname}\vskip1ex
\printcontents{l}{1}{\setcounter{tocdepth}{1}}\vspace*{1pc}\titlerule%
\else\fi%
]
\titlecontents*{lsection}[0pt]
{\small\normalfont}{\thecontentslabel\space}{}
{,~\itshape\thecontentspage}[\space\textbullet\space][.]
\titlecontents*{lsubsection}[0pt]{}{}{}{}
\begin{document}
\frontmatter
\chapter*{Acknowledgements}
\chapter*{Preface}
\tableofcontents
\mainmatter
\chapterwithtoctrue
\chapter{Chapter One}
\section{Section One One}
\subsection{Subsection One One One}
\subsection{Subsection One One Two}
\section{Section One Two}
\subsection{Subsection One Two One}
\subsection{Subsection One Two Two}
\section{Section One Three}
\subsection{Subsection One Three One}
\subsection{Subsection One Three Two}
\chapter{Chapter Two}
\section{Section Two One}
\subsection{Subsection TwoOne One}
\subsection{Subsection Two One Two}
\section{Section Two Two}
\subsection{Subsection Two Two One}
\subsection{Subsection Two Two Two}
\backmatter
\chapterwithtocfalse
\chapter{Appenix One}
\chapter{Appenix Two}
\end{document}
etoolbox
这可以通过适当的修补(例如,借助包)和来进一步改善\frontmatter
。\mainmatter
\backmatter