使用 sectsty 调整子段落前后的间距

使用 sectsty 调整子段落前后的间距

我正在帮助一位朋友sectsty格式化文档中的标题。我该如何调整标题前后的间距,特别是标题的subparagraph间距?

(我知道这titlesec更强大。但是现在我们只需要快速修复或将以下内容完整翻译成titlesec。)

这就是我们现在所拥有的:

\usepackage{sectsty}
\allsectionsfont{\centering\normalfont\normalsize}
\subsectionfont{\noindent\normalfont\normalsize\emph}
%\subsubsectionfont{\indent\normalfont\normalsize\itshape}
\subparagraphfont{\indent\normalfont\normalsize\itshape}

像往常一样,这是因为无知的人提出了论文要求。

答案1

sectsty仅更新部分单元字体相关设置但仍使用传统\@startsection构造:

\renewcommand\section{\@startsection {section}{1}{\z@}%
      {-3.5ex \@plus -1ex \@minus -.2ex}%
      {2.3ex \@plus.2ex}%
%     {\normalfont\Large\bfseries}}
      {\normalfont\Large\bfseries\SS@sectfont}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
      {-3.25ex\@plus -1ex \@minus -.2ex}%
      {1.5ex \@plus .2ex}%
%     {\normalfont\large\bfseries}}
      {\normalfont\large\bfseries\SS@subsectfont}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
      {-3.25ex\@plus -1ex \@minus -.2ex}%
      {1.5ex \@plus .2ex}%
%     {\normalfont\normalsize\bfseries}}
      {\normalfont\normalsize\bfseries\SS@subsubsectfont}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
      {3.25ex \@plus1ex \@minus.2ex}%
      {-1em}%
%     {\normalfont\normalsize\bfseries}}
      {\normalfont\normalsize\bfseries\SS@parafont}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
      {3.25ex \@plus1ex \@minus .2ex}%
      {-1em}%
%     {\normalfont\normalsize\bfseries}}
      {\normalfont\normalsize\bfseries\SS@subparafont}}

常规字体选择被注释掉,并用sectsty格式替换\SS@...。阅读\@startsection中每个组件的含义在哪里可以找到类似\@startsectionLaTeX 的命令的帮助文件或文档?并重点关注参数 4 (跳过之前) 和 5 (跳过之后)。

以下是调整单元前后空间的示例\subparagraph

在此处输入图片描述

\documentclass{article}
\usepackage{sectsty}
\allsectionsfont{\centering\normalfont\normalsize}
\subsectionfont{\noindent\normalfont\normalsize\emph}
%\subsubsectionfont{\indent\normalfont\normalsize\itshape}
\subparagraphfont{\indent\normalfont\normalsize\itshape}
\begin{document}
\section{A section}
Some text
\subsection{A subsection}
Some text
\subsubsection{A subsubsection}
Some text
\paragraph{A paragraph}
Some text
\subparagraph{A subparagraph}
Some text

\makeatletter
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
      {2\baselineskip \@plus1ex \@minus .2ex}%
      {\baselineskip}%
%     {\normalfont\normalsize\bfseries}}
      {\normalfont\normalsize\bfseries\SS@subparafont}}
\makeatother

\subparagraph{A subparagraph}
Some text

\end{document}

请注意sectsty,假设您使用的文档类中的部分单元\@startsection未对默认类进行修改,但不包括KOMA 脚本(来自sectsty文档; 部分1 简介,第 2 页):

secsty软件包提供了一组命令,用于更改标准 LaTeX 2e 文档类中各个部分标题使用的字体:articlebookreport。该软件包还适用于 KOMA-Script 类scrartclscrbookscrreprt

虽然它“可以”与其他文档类别一起使用,但其效果仅仅是用上面提到的默认文档类别的定义覆盖了部分单元的定义。例如,apa6定义

\renewcommand{\section}{\@startsection {section}{1}{\z@}%
    {\b@level@one@skip}{\e@level@one@skip}%
    {\centering\normalfont\normalsize\bfseries}}

\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
    {\b@level@two@skip}{\e@level@two@skip}%
    {\normalfont\normalsize\bfseries}}

\newcommand*{\addperi}[1]{#1.}

\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\parindent}%
    {0\baselineskip \@plus 0.2ex \@minus 0.2ex}%
    {-1em}%
    {\normalfont\normalsize\bfseries\addperi}}

\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\parindent}%
    {0\baselineskip \@plus 0.2ex \@minus 0.2ex}%
    {-1em}%
    {\normalfont\normalsize\bfseries\itshape\addperi}}

\renewcommand{\subparagraph}[1]{\@startsection{subparagraph}{5}{1em}%
    {0\baselineskip \@plus 0.2ex \@minus 0.2ex}%
    {-\z@\relax}%
    {\normalfont\normalsize\itshape\hspace{\parindent}{#1}\textit{.}}{\relax}}

为了保持分段单元结构,最好手动重新定义上述集合*(与 分开sectsty,如第一个示例中所做的那样)。同样的方法也适用(包括在 中重新定义你喜欢的\makeatletter...\makeatother对)也apa6用于\@startsection定义截面单位。

*当然,如果其他包兼容的话,也可以使用apa6,但是在这里这似乎是不可能的。

相关内容