目录侵占了章节标题

目录侵占了章节标题

我正在使用\titleformat(与titlesectitletoc包一起)来配置部分标题的外观。由于我需要一个实心框架标题,因此我尝试了:

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{multicol}
\usepackage{lipsum}

\titleformat{\section}
[block]
{ 
\LARGE\sffamily\color{white}
}
{}
{0pt}
{\hspace{-20pt}\colorbox{blue}{\parbox{\textwidth}{
\strut
\hspace{10pt}
#1.
\hfill
}}}

\begin{document}

%\begin{minipage}{\textwidth}
\begin{multicols}{2}
  \tableofcontents
\end{multicols}
%\end{minipage}

\section{First section}
\lipsum[0]
\subsection{Subsection 1.1}
\lipsum[1]
\subsubsection{Subsubsection 1.1.1}
\lipsum[2]
\section{Second section}
The second section begins here\ldots
\subsection{Subsection 2.1}
\lipsum[4]
\subsubsection{Subsubsection 2.1.1}
\lipsum[5]
\section{Third section}
\lipsum[6]

\end{document}

除了目录(我希望目录分为两列)之外,它似乎工作正常。在这种情况下,目录的第二列会侵占框架的空间(当然,我希望避免这种情况)。我尝试将两列的目录放在小页面中,但这似乎也不起作用。

关于如何解决这个问题有什么建议吗?

提前致谢!

答案1

您必须从multicols目录内部开始(在标题之后),并在目录末尾结束。下面是 MWE 的修改版本,可满足您的要求。

% tocprob9.tex  SE 536012 2 col ToC

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{multicol}
\usepackage{lipsum}

\titleformat{\section}
[block]
{ 
\LARGE\sffamily\color{white}
}
{}
{0pt}
{\hspace{-20pt}\colorbox{blue}{\parbox{\textwidth}{
\strut
\hspace{10pt}
#1.
\hfill
}}}

\begin{document}

%\begin{minipage}{\textwidth}
%\begin{multicols}{2}
  \tableofcontents
\addtocontents{toc}{\begin{multicols}{2}} % PW added to go into the ToC
%\end{multicols}
%\end{minipage}

\section{First section}
\lipsum[0]
\subsection{Subsection 1.1}
\lipsum[1]
\subsubsection{Subsubsection 1.1.1}
\lipsum[2]
\section{Second section}
The second section begins here\ldots
\subsection{Subsection 2.1}
\lipsum[4]
\subsubsection{Subsubsection 2.1.1}
\lipsum[5]
\section{Third section}
\lipsum[6]

\addtocontents{toc}{\end{multicols}} % PW added to go at the end of the ToC.

\end{document}

相关内容