使用 sectsty 在章节编号和章节标题之间设置垂直间距

使用 sectsty 在章节编号和章节标题之间设置垂直间距

我正在使用 sectsty 来格式化我的章节标题,但我想消除章节编号和章节标题之间的垂直空格,但我找不到在不丢失 sectsty 应用的样式的情况下做到这一点的方法。

这是 MWE

\documentclass[fontsize=12pt, paper=a4]{book}

\usepackage{lipsum}

\usepackage{sectsty}
\chapternumberfont{\LARGE\uppercase}
\chapterfont{\thispagestyle{empty}\LARGE\centering\uppercase}
\sectionfont{\large\uppercase}
\subsectionfont{\normalsize}

\begin{document}

\chapter{Cap name one}
\lipsum[1]
\section{Section 1.1}
\lipsum[2-4]

\chapter{Cap name two}
\lipsum[5]
\section{Section 2.1}
\lipsum[6]

\end{document}

\begin{document}现在,如果我在空格消失之前添加以下这段代码,但 secsty 的样式也会消失

\makeatletter
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \huge\bfseries \@chapapp\space {\thechapter}
        \par\nobreak
        \vskip 0\p@
      \fi
    \fi
    \interlinepenalty\@M
    {\parbox{\textwidth}{\Huge \bfseries \linespread{1.2}\selectfont #1\par\nobreak}}
    \vskip 40\p@
  }}
\makeatother

答案1

你可以titlesec使用sectsty

\documentclass[12pt,a4paper]{book}

\usepackage{lipsum}

\usepackage{titlesec}
\makeatletter
\titleformat
  {\chapter}
  [display]
  {\centering\LARGE}
  {\MakeUppercase{\@chapapp\enskip\thechapter}}
  {0pt}
  {\MakeUppercase}
\makeatother
\titleformat*{\section}{\large\MakeUppercase}
\titleformat*{\subsection}{\normalsize}

\usepackage{xpatch}
\xpatchcmd{\chapter}{\thispagestyle{plain}}{\thispagestyle{empty}}{}{}

\begin{document}

\chapter{Cap name one}
\lipsum[1]
\section{Section 1.1}
\lipsum[2-4]

\chapter{Cap name two}
\lipsum[5]
\section{Section 2.1}
\lipsum[6]

\end{document}

请注意,我已经更改了fontsize=12pt和 ,paper=a4因为它们是班级未知的book

结果:

在此处输入图片描述

相关内容