带有 runin 和 KOMA-Script 类的章节标题?

带有 runin 和 KOMA-Script 类的章节标题?

我希望章节标题带有 runin,这样章节标题后就没有换行符了。这可以通过以下方式实现

\documentclass{article}
\usepackage{titlesec}
\title{\section}[runin]{\large}{\thesection}{1em}{}[]
\begin{document}
    \section{First section}
     This text follows on the same line as "First section"
\end{document}

但是,我正在使用 KOMA-Scriptscrartcl类并使用titlesec类,不鼓励KOMA-Script 与 titlesec 之间的不兼容性)。

我搜索了 KOMA-Script 文档,但找不到runin中的选项titlesec。如何在使用 KOMA-Script 类时实现此功能?

答案1

1. KOMA-Script 的旧版本

你必须重新定义\sectionsubsection ETC。您可以使用负值来设置 runin 标题,类似于标准 article-class。我scrartcl过去曾复制过标题的定义。请注意,如果scrartcl更改,此解决方案可能会失效。

如果您查看 KOMA-Script 英文手册第 351 页,您会看到有几个命令用于更改上下空格chapterpart希望我们能看到类似的命令\section

在这里,我已将节和小节都重新定义为 runin-header。

\documentclass{scrartcl}

\makeatletter
\renewcommand\section{\@startsection{section}{1}{\z@}%
    {-1.5ex}%
    {-1em}%{2.3ex \@plus.2ex}% < - negative value here negative value here, 
                             % the values behind % are the original.
                             % no use for rubber values, use a fix value to set the
                             % distance to between heading and the text 
    {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\sectfont\nobreak\size@section}%
  }

\renewcommand\subsection{\@startsection{subsection}{1}{\z@}%
  {-1.5ex \@plus -1ex \@minus -.2ex}%
  {-1em}%{2.3ex \@plus.2ex}% <- negative value here, the values behind % are the original
  {\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
    }
\makeatother

\begin{document}
    \section{First section}
     This text follows on the same line as "First section"
\end{document}

你用普通的\addtokomafont等来更改字体、颜色ETC。当然,你必须摆弄这些数字来获得你喜欢的上方空间。

2. KOMA-Script 的较新版本

我参考了下面 Johannes_B 的回答。

为了完整起见,我将提请您注意 2015-10-03 英文版 KOMA-Script 手册第 363 页及后续内容。作者(从版本 3.16?开始)\section{}通过四个命令添加了与其姐妹交互的可能性:

\DeclareSectionCommand[attributes]{name}
\DeclareNewSectionCommand[attributes]{name}
\RedeclareSectionCommand[attributes]{name}
\ProvideSectionCommand[attributes]{name}

您可以使用这些命令来定义全新的分段命令,也可以重新定义现有的命令,包括轻松将\section{}命令定义为运行标题。

\RedeclareSectionCommand[%
afterskip=-10pt plus -1sp minus 1sp% using rubber is optional 
]{section}

只需使用负值作为第一个afterskip值(我这里使用了 -10pt)。

答案2

KOMA-Script 的作者添加了一个易于使用的界面来重新声明分段命令(章节和部分也是如此)。在我看来,它比使用titlesec;-)要简单得多

当然,您需要一个相当新的 KOMA-Script-bundle。

\documentclass{scrartcl}
\RedeclareSectionCommand[afterskip=-1em,%negative value -> runin
font=\large\normalfont%match the font of your example
]{section}
\begin{document}
\section{First section}
This text follows on the same line as "First section"
\end{document}

答案3

从 开始v3.26,也可以使用开关runin

\RedeclareSectionCommand[runin=on]{section}

相关内容