KOMA-Script 中章节编号之后/章节标题之前的换行符

KOMA-Script 中章节编号之后/章节标题之前的换行符

我必须遵守一个风格指南,该指南规定在章节/部分/等编号后必须有换行符,而不是通常的

1.2 Heading

它应该是

1.2
Heading

这必须适用于标题本身和目录。到目前为止,我使用了一个丑陋的离合器,只是简单地写了\section{\\Heading},这会导致一些问题,例如包hyperref。我正在使用 KOMA-Script(scrreprt),并试图通过重新定义来解决这个问题\sectionformat,但遗憾的是它会忽略任何\newline命令。有没有一种干净的方法来实现这一点?我知道有一种twolinechapter选项可以解决章节标题的问题,但不能解决目录或任何其他分段命令的问题。

提前致谢!

编辑: 我发现了另一个离合器,它适用于标题,并且可能也以某种方式适用于目录(不知道如何格式化目录项目,将尝试找出答案):

\renewcommand*{\chapterformat}{\makebox[0pt][l]{\raisebox{17.5pt}{\thechapter}}}

这只是增加了编号,并\makebox避免了缩进(出于某种原因,负数\vspace/\hspace不起作用)。感觉不对,但至少比标题开头的换行符要好。

编辑我当前方法的一个最小示例:

\documentclass{scrreprt}
\usepackage{blindtext}
% Styling the Headings
\renewcommand*{\chapterformat}{\makebox[0pt][l]{\raisebox{17.5pt}{\thechapter}}}
\renewcommand*{\sectionformat}{\makebox[0pt][l]{\raisebox{17.5pt}\thesection}}
\renewcommand*{\subsectionformat}{\makebox[0pt][l]{\raisebox{12pt}\thesubsection}}

\begin{document}
\tableofcontents
\blinddocument  
\end{document}

现在剩下的就是设置目录样式。\chapterformat目录是否有类似版本的 (etc.)?我知道我可以使用 重新定义目录缩进\RedeclareSectionCommand,并设置不同的目录样式。但没有与我想要实现的类似的东西。

答案1

第二次更新

从 3.20 版本开始,您可以使用选项tocbreakafternumber\RedeclareSectionCommands分段编号 TOC 后进行中断。

\documentclass{scrreprt}[2016/04/09]

\RedeclareSectionCommands[
  tocbreakafternumber,% <-
  tocindent=0pt
]{chapter,section,subsection,subsubsection}

\renewcommand\chapterlinesformat[3]{\ifstr{#2}{}{}{#2\\*}#3}
\renewcommand*{\sectionlinesformat}[4]{%
  \hspace*{#2}%
  \parbox{\dimexpr\linewidth-#2\relax}{\raggedsection
    \ifstr{#3}{}{}{#3\\}%
    #4}%
}

\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\listoffigures
\Blinddocument
\begin{figure}%
  Figure
\caption{A Figure}%
\end{figure}
\end{document}

结果和下面的图片一样。


更新

自 3.19 版本以来,更改章节数字和文本的顺序或布局的推荐方法是重新定义命令\chapterlinesformat\chapterlineswithprefixformat和。\sectionlinesformat\sectioncatchphraseformat

另外,我在下一个 KOMA-Script 版本 (3.20) 的预发布版中测试了我在 TOC 的原始答案中的 hack/workaround。对于即将推出的这个版本,简单的重新定义\numberline不起作用。您可以将代码附加到,\numberline但目前我建议重新定义\addtocentrydefault。也许将来会有一个特殊的tocstyle功能可以自动定义您需要的 toc 条目样式。

\documentclass[toc=flat]{scrreprt}[2015/10/03]

\renewcommand\chapterlinesformat[3]{\ifstr{#2}{}{}{#2\\*}#3}

\renewcommand*{\sectionlinesformat}[4]{%
  \hspace*{#2}%
  \parbox{\dimexpr\linewidth-#2\relax}{\raggedsection
    \ifstr{#3}{}{}{#3\\}%
    #4}%
}

\renewcommand\addtocentrydefault[3]{%
  \ifstr{#2}{}{%
    \addcontentsline{toc}{#1}{\protect\nonumberline#3}%
  }{%
    \addcontentsline{toc}{#1}{\protect\nonumberline#2\\*#3}%
  }%
}

\usepackage{blindtext}
\begin{document}
\tableofcontents
\listoffigures
\Blinddocument
\begin{figure}%
  Figure
\caption{A Figure}%
\end{figure}
\end{document}

在此处输入图片描述

在此处输入图片描述


原始答案:

有人问过 Markus Kohm 类似的问题。因此,现在有一个关于KOMA-Script 网站(德语):

\documentclass[chapterprefix]{scrreprt}
\renewcommand*{\chapterformat}{\thechapter\autodot}
\RedeclareSectionCommand[innerskip=0pt]{chapter}
\makeatletter
\renewcommand*{\raggedsection}{\raggedright\renewcommand*{\@hangfrom}[1]{##1\\*}}
\makeatother

\usepackage{mwe}
\begin{document}
\Blinddocument
\end{document}

注意:此代码是一种解决方法,使用 KOMA-Script 内部代码。它适用于当前版本 3.18但它可能不会适用于未来的版本。

此外,这里还有一个基于 Markus 想法的目录解决方法/破解方法:

\documentclass[chapterprefix,
  toc=flat
]{scrreprt}

\renewcommand*{\chapterformat}{\thechapter\autodot}
\RedeclareSectionCommand[innerskip=0pt]{chapter}
\makeatletter
\renewcommand*{\raggedsection}{\raggedright\renewcommand*{\@hangfrom}[1]
{##1\\*}}
\makeatother

\BeforeStartingTOC[toc]{\renewcommand*{\numberline}[1]{#1\\*}}
\RedeclareSectionCommands[tocnumwidth=0pt]{chapter,section,subsection}

\usepackage{blindtext}
\begin{document}
\tableofcontents
\listoffigures
\Blinddocument
\begin{figure}%
  Figure
\caption{A Figure}%
\end{figure}
\end{document}

在此处输入图片描述

或者没有toc=flat

在此处输入图片描述

相关内容