我正在尝试更改书籍模板中预设的章节标题。我从 Vincent Zoonekynd 的网页上找到了一种我喜欢的风格,http://zoonek.free.fr/LaTeX/LaTeX_samples_chapter/0.html,但它在章节标题上方有很大的间隙,我不知道如何减少它。我的代码是,
\documentclass[11pt, oneside]{book}
\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height ex \hfill \kern \z@}
\def\@makechapterhead#1{%
\vspace*{5\p@}%
{\parindent \z@
{\raggedleft \reset@font
\scshape \@chapapp{} \thechapter\par\nobreak}%
\par\nobreak
\vspace*{10\p@}
\interlinepenalty\@M
{\raggedright \Huge \bfseries #1}%
\par\nobreak
\hrulefill
\par\nobreak
\vskip 20\p@
}}
\def\@makeschapterhead#1{%
\vspace*{10\p@}%
{\parindent \z@
{\raggedleft \reset@font
\scshape \vphantom{\@chapapp{} \thechapter}\par\nobreak}%
\par\nobreak
\vspace*{30\p@}
\interlinepenalty\@M
{\raggedright \Huge \bfseries #1}%
\par\nobreak
\hrulefill
\par\nobreak
\vskip 10\p@
}}
有人能帮我减少上面的空白吗?
使用显示框架包,我的文档如下所示
答案1
一个简单的代码titlesec
。你可以试试\titlespacing
:第一个参数增加左边距,第二个参数增加标题前的垂直空间,第三个参数增加标题后的垂直空间。
\documentclass[11pt, oneside]{book}
\usepackage{showframe}
\usepackage{titlesec}
\titleformat{\chapter}[display]{}{\filleft\scshape\chaptername\enspace\thechapter}{-2pt}{\filright \Huge \bfseries}[\vskip4.5pt\titlerule]
\titleformat{name=\chapter, numberless}[block]{}{}{0pt}{\filright \Huge \bfseries}[\vskip4.5pt\titlerule]
\titlespacing{\chapter}{0pt}{-15pt}{25.5pt}
\titlespacing{name=\chapter, numberless}{0pt}{16pt}{15pt}
\begin{document}
\chapter*{Introduction}
\section{Intended Application of Particles}
\end{document}
答案2
垂直间距使用 控制\vspace*
。您可以根据需要设置 值,也可以使用负值,将文本在页面上向上移动。105pt 的负空间会为您提供以下输出,但我不建议这样做。
\documentclass[11pt, oneside]{book}
\usepackage{showframe,blindtext}
\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height ex \hfill
\kern \z@}
\def\@makechapterhead#1{%
\vspace*{-105\p@}%<-------------
{\parindent \z@
{\raggedleft \reset@font
\scshape \@chapapp{}
\thechapter\par\nobreak}%
\par\nobreak
\vspace*{10\p@}
\interlinepenalty\@M
{\raggedright \Huge \bfseries #1}%
\par\nobreak
\hrulefill
\par\nobreak
\vskip 20\p@
}}
\begin{document}
\chapter{Beloved Banana}
\blindtext
\end{document}