当目录分为两列时,如何将目录标题设置在内容上方?

当目录分为两列时,如何将目录标题设置在内容上方?

正如标题所示,我希望标题(“内容”)出现在两列上方,如下图所示:目录所需编辑

即目录中的项目应从两者的同一级别开始。目前,标题被视为第一列的一部分(这就是问题所在)。我遵循的创作似乎非常简单——使用多列——所以我可能需要指导一个全新的方向来取代它。下面您可以找到我的代码:

\documentclass[7pt,a4paper]{report}

\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{tocloft}

\setlength{\cftbeforetoctitleskip}{0pt}
\setlength{\cftaftertoctitleskip}{8pt}

\begin{document}

\begin{multicols}{2}
 \tableofcontents
\end{multicols}



\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}


\end{document}

答案1

如果不采用multicol,您可以进入双列模式,执行目录,然后返回单列模式。

使用答案两列中的目录,无多列

A

\documentclass[7pt,a4paper]{report}

\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{tocloft}

\setlength{\cftbeforetoctitleskip}{0pt}
\setlength{\cftaftertoctitleskip}{8pt}


%% From https://tex.stackexchange.com/a/353870/161015
\makeatletter
\newcommand{\twocolumntoc}{% added <<<<<<<<<<<<<<<<
    \twocolumn
    \chapter*{\contentsname
    \@mkboth{%
        \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    \onecolumn
    }
\makeatother


\begin{document}
    
\twocolumntoc % added <<<<<<<<<<<<<<<<  
    

\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}

\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
\chapter{Asdf}
    
\end{document}

如果你想要一个平衡的列,你现在可以multicol使用

\makeatletter
\newcommand{\twocolumntoc}{% added <<<<<<<<<<<<<<<<
    \chapter*{\contentsname
    \@mkboth{%
        \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \begin{multicols}{2}
        \@starttoc{toc}%
    \end{multicols}
    \onecolumn
    }
\makeatother

要得到

b

相关内容