如何使目录的部分条目位于一列,而其他条目位于两列?

如何使目录的部分条目位于一列,而其他条目位于两列?

我使用该tocloft包来设计目录。我希望部分条目列在一列中,而所有其他条目(如章节、部分、小节...)应列在两列中。例如,我希望有:

                                 第一部分条目
------------------------------------ \hrule ---------------------------------
第1章 章节标题............ 1|第2章 章节标题............ 4
      1.1 章节标题............. 2| 2.1 章节标题............. 5
          1.1.1 小节标题 ... 3| 2.1.1 小节标题 ... 6


                                 第 2 部分
------------------------------------ \hrule ---------------------------------
第3章 章节标题 ............ 7|第4章 章节标题 ............ 10
      3.1 章节标题............ 8| 4.1 章节标题............ 11
          3.1.1 小节标题 ... 9| 4.1.1 小节标题 .. 12

嗯,以下是我的 MWE:


% !Mode:: "TeX:UTF-8"
\documentclass{book}
\usepackage{tocloft}
\usepackage{etoolbox}
\usepackage{tikz}

\renewcommand\cftpartafterpnum{\nopagebreak\vspace{-.7em}\par\tikz\draw (0,-0.1) -- (0,0) -- (\linewidth,0) -- (\linewidth, -0.1);\vspace{-2em}}
\setlength{\cftpartnumwidth}{0pt}
\setlength{\cftbeforepartskip}{.6em}
\makeatletter
\renewcommand{\cftpartfont}{\bfseries%
  \def\numberline##1{\gdef\@temp@numberline{##1}}%
}
\renewcommand{\cftpartfillnum}[1]{%
    {}%
    {\centering\makebox[0em]{\cftpartpagefont}\cftpartafterpnum}%
}
\makeatother

% http://tex.stackexchange.com/questions/78980/how-to-emulate-titletoc-with-tocloft
\pretocmd{\part}{\addtocontents{toc}{\par}}{}{}
\pretocmd{\chapter}{\addtocontents{toc}{\par}}{}{}

\begin{document}
\tableofcontents

\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\subsubsection{Subsubsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}

\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}


\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\section{Section Title}
\section{Section Title}
\subsubsection{Subsubsection Title}

\end{document} 

那么,我怎样才能使除部分条目之外的所有条目都分成两列,就像示例样式所示的那样这里

谢谢。

答案1

您需要multicol在适当的位置插入环境定义(开始和结束):在\part您需要之后立即插入\begin{multicol}{2}和在\part您需要之前立即插入\end{multicol}

在此处输入图片描述

\documentclass{book}
\usepackage{tocloft,etoolbox,multicol,tikz}

\renewcommand\cftpartafterpnum{\nopagebreak\vspace{-.7em}\par\tikz\draw (0,-0.1) -- (0,0) -- (\linewidth,0) -- (\linewidth, -0.1);\vspace{-2em}}
\setlength{\cftbeforepartskip}{.6em}
\makeatletter
\renewcommand{\cftpartfont}{\bfseries\let\numberline\@gobble}
\renewcommand{\cftpartfillnum}[1]{%
    {}%
    {\centering\makebox[0em]{\cftpartpagefont}\cftpartafterpnum}%
}
\let\@oldendpart\@endpart
\renewcommand{\@endpart}{\addtocontents{toc}{\protect\begin{multicols}{2}}\@oldendpart}
\makeatother

\let\oldpart\part
\renewcommand{\part}{\ifnum\value{part}>0 \addtocontents{toc}{\protect\end{multicols}}\fi\oldpart}
\AtEndDocument{\ifnum\value{part}>0 \addtocontents{toc}{\protect\end{multicols}}\fi}

\begin{document}
\tableofcontents

\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\subsubsection{Subsubsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\subsubsection{Subsubsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}

\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\subsubsection{Subsubsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}

\part{Part Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\section{Section Title}
\section{Section Title}
\subsubsection{Subsubsection Title}
\chapter{Chapter Title}
\section{Section Title}
\subsection{Subsection Title}
\subsubsection{Subsubsection Title}
\subsubsection{Subsubsection Title}
\section{Section Title}
\section{Section Title}
\subsection{Subsection Title}

\end{document} 

插入的\begin{multicol}{2}条件是 不是第一次调用它。此外, 的插入\end{multicol}已完成\AtEndDocument(同样,条件是您至少有一个\part)。

相关内容