我使用该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
)。