删除章节标题前的垂直空间。

删除章节标题前的垂直空间。

我有一个似乎无法解决的问题。基本上,我希望我的章节标题相对于页面顶部的位置与其余文本相同。我在网上查看了大量资源,但问题仍然没有解决... :(

我尝试使用该titlesec包,但没有结果:

\usepackage{titlesec}
\titleformat{\chapter}[hang]
{\normalfont\Large\bfseries}{\thechapter}{1em}{\Large}
\titleformat{\section}
{\normalfont\Large\bfseries}{\thesection}{1em}{}
\titlespacing*{\chapter} {0pt}{\baselineskip}{0pt}
\titlespacing*{\section} {0pt}{\baselineskip}{0pt}

以下是我得到的输出:

章节标题:

章节标题

其他文本(部分):

部分标题

此外,TOC L​​oF 和 LoT 的标题与正常章节标题间距略有偏差……

请帮忙!

答案1

不幸的是,如果不重新定义 的一些内部结构,这是不可能的titlesec。它使用命令

\vspace*{<before vspace>}

在章节命令之前。即使在分页符之后,这也是绝对距离。在章节标题之前,它使用

\addvspace{<before vspace>}

关于 有很多规则\addvspace,例如仅添加最多两个连续的\addvspace,分页符后没有空格,等等。

为了得到你想要的,你可以尝试以下重新定义

\usepackage{titlesec}
\makeatletter
\def\ttl@mkchap@i#1#2#3#4#5#6#7{%
    \ttl@assign\@tempskipa#3\relax\beforetitleunit
    \vspace{\@tempskipa}%<<<<<< REMOVE THE * AFTER \vspace
    \global\@afterindenttrue
    \ifcase#5 \global\@afterindentfalse\fi
    \ttl@assign\@tempskipb#4\relax\aftertitleunit
    \ttl@topmode{\@tempskipb}{%
        \ttl@select{#6}{#1}{#2}{#7}}%
    \ttl@finmarks  % Outside the box!
    \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}}
\makeatother

答案2

在大多数文档类中,章节标题以 开头\vspace*{<sink amount>}。在报告类中,这是定义的第一部分\@makechapterhead(对于编号章节)和\@makeschapterhead(对于未编号章节)。

因为该titlesec包显然没有直接的方法来省略这个空格,所以重新定义两个相关的命令似乎更容易report.cls。只需将这两个定义复制到你的序言中,注释掉不需要的\vspace 行,将整个块包装在中间\makeatletter ... \makeatother,然后继续。添加一条评论来说明你为什么这样做;你以后会为此感到高兴的。

相关内容