我所在大学的博士论文指南规定了章节第一页的精确顶部边距。我尝试使用 titlesec 设置此边距,但它似乎总是将其设置为大于应有的边距。编译以下代码时,从文本区域顶部到单词 Chapter 的边距大于 0,据我所知,以下代码应将其设置为 0。
\documentclass[12pt]{report}
\usepackage[compact]{titlesec}
\titleformat{\chapter}
[display]
{\normalfont\Large\bfseries\centering}
{\large\chaptertitlename\ \thechapter}
{0in}
{}
\titlespacing*{\chapter}{0pt}{*0}{*0}
\begin{document}
\chapter{Hello}
Hello
\end{document}
我真正想要的是章节名称上方总共正好两英寸的上边距。根据 Gonzalo 的回复,我希望下面的方法可以奏效,但它仍然将上边距设置为 0。更令人困惑的是,添加 \vspace*{1in} 会使上边距增加一英寸以上!为什么?
\documentclass[12pt]{report}
\usepackage[showframe]{geometry}
\usepackage[compact]{titlesec}
\titleformat{\chapter}
[display]
{\normalfont\Large\bfseries\centering}
{\large\chaptertitlename\ \thechapter}
{.1in}
{}
% the following block eliminates the extra space above a chapter heading
\makeatletter
\def\ttl@mkchap@i#1#2#3#4#5#6#7{%
\ttl@assign\@tempskipa#3\relax\beforetitleunit
%\vspace*{\@tempskipa}% NEW
%\vspace*{1in}
\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
\titlespacing*{\chapter}
{0pt} % left
{1in} % before
{.5in} % after
\begin{document}
\chapter{Hello}
Hello
\end{document}
答案1
内部命令\ttl@mkchap@i
为章节标题添加了一些垂直间距,因此您需要删除这个间距;这可以通过注释掉负责这个间距的行(我在% NEW
下面标记的行)来完成:
\documentclass{book}
\usepackage[showframe]{geometry} % just for the example
\usepackage{titlesec}
\usepackage{lipsum}
\makeatletter
\def\ttl@mkchap@i#1#2#3#4#5#6#7{%
\ttl@assign\@tempskipa#3\relax\beforetitleunit
%\vspace*{\@tempskipa}% NEW
\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
\titleformat{\chapter}[display]
{\normalfont\Large\bfseries\centering}
{\large\chaptertitlename\ \thechapter}
{0in}
{}
\titlespacing*{\chapter}{0pt}{*0}{*0}
\begin{document}
\chapter{Test chapter}
\lipsum[1-12]
\end{document}
我添加了geometry
带有showframe
选项的包只是为了说明结果。
现在已经对原始问题进行了编辑,下面是产生新请求结果的代码:
\documentclass[12pt]{report}
\usepackage[top=1in, bottom=1in, left=1.5in, right=1in,showframe]{geometry}
\usepackage[compact]{titlesec}
\usepackage{lipsum}
\newlength\mylen
\setlength\mylen{\dimexpr\topskip+\baselineskip-\ht\strutbox-1in\relax}
\titleformat{\chapter}
[display]
{\normalfont\Large\bfseries\centering}
{\large\chaptertitlename\ \thechapter}
{.1in}
{}
\titlespacing*{\chapter}
{0pt} % left
{-\mylen} % before
{.5in} % after
\begin{document}
\chapter{Hello}
\lipsum[1-12]
\end{document}