目录为两列,无多列

目录为两列,无多列

有没有办法把目录做成两列不使用 multicol

我添加了twocolumn文档类,但是目录仍然只有一列。

我发现的所有解决方案都使用了 muitlcol。

但是,multicol在双列模式下使用会给我警告:

Package multicol Warning: May not work with the twocolumn option on input line 150.

所以,我不想使用multicol。有没有办法把目录做成两列无需使用multicol

编辑:我正在使用book课程

答案1

\tableofcontents标准命令检查book.cls模式是否twocolumn已激活,使用onecolumn并设置标志以便在twocolumn之后恢复。

\newcommand\tableofcontents{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
    }

我决定使用一个新命令,比如\twocolumntoc不检查。当然,可以将命令放入twocolumn新宏中,并在\onecolumn命令末尾使用 进行恢复。

\documentclass{book}

\usepackage{pgffor}

\makeatletter
\newcommand{\twocolumntoc}{%
  \chapter*{\contentsname
    \@mkboth{%
      \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
  \@starttoc{toc}%
}
\makeatother

\setcounter{tocdepth}{4}

\begin{document}

\twocolumn
\twocolumntoc

\onecolumn

\foreach \x in {1,...,50}{%
\chapter{Chap \x}
\section{Foo section}
\subsection{Foo subsec}
\subsubsection{Foo subsecsec}
}
\end{document}

pgffor包仅用于快速生成此处的内容。

相关内容