使目录的第二列清除页眉

使目录的第二列清除页眉

我使用以下方法将目录分成两列,以便它能放在一页上:

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

但是,结果如下。第二列从页面顶部开始,位于“目录”标题的右侧。我更希望第二列从与第一列完全相同的高度开始。

如果在执行此操作时有机会,最好不要将章节组拆分到各个列中。在图片中,这将导致第 6 章完全移到第二列,而不是将开头放在第一列,将后续部分放在第二列。

目录页

答案1

您要实现的目标至少可以通过两种方式实现。

根据元素之间的空间不同,外观会略有不同。但基本上是相同的。


方法 1:不使用multicols

\documentclass{book}

\makeatletter
\renewcommand\tableofcontents{%
  \twocolumn[%
  \begin{@twocolumnfalse}
    \chapter*{\contentsname
      \@mkboth{%
        \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}
  \end{@twocolumnfalse}]%
  \@starttoc{toc}
  \onecolumn}
\makeatother

\usepackage{lipsum}

\begin{document}

\tableofcontents

\chapter{Introduction}

\lipsum[1-50]

\section{Research domain}

\section{Another section}

\subsection{And a subsection}

\chapter{Literature Study}

\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}

\chapter{More Chapter Alpha}
\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}

\chapter{More Chapter Beta}
\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}


\chapter{More Chapter Gamma}
\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}

\chapter{More Chapter Delta}
\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}


\chapter{More Chapter Epsilon}
\section{Section Alpha}
\section{Section Beta}
\section{Section Gamma}
\section{Section Delta}
\section{Section Epsilon}
\section{Section Zeta}

\chapter{Conclusion}

\chapter{References}

\appendix

\chapter{Code Listings}

\end{document}

方法 2:使用multicols

\documentclass{book}

\usepackage{multicol}

\begin{document}

\makeatletter
\chapter*{\contentsname
  \@mkboth{%
    \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}
\begin{multicols*}{2}
  \@starttoc{toc}
\end{multicols*}
\makeatother


\chapter{Introduction}
 
.........................


\appendix

\chapter{Code Listings}

\end{document}

在此处输入图片描述


这些是如何完成的?

这里的基本原理是将 放在\contentsname 一列,将实际内容放在两列。然后切换回单列以显示正文。为了真正实现这种效果,我们侵入了命令的内部\tableofcontents

\twocolumn文本前的命令会将其拆分为两列。问题是,开始\twocolumn一个新页面。幸运的是,它有一个可选参数,可让您在两列内容之前指定一列内容。请参阅TeX 常见问题解答了解详情。

在第二种方法中,我们\contentsname 像往常一样放置,然后使用将实际内容放在两列中{multicols*}{2}

相关内容