如何在 KOMA 脚本中将章节编号放在章节标题后面

如何在 KOMA 脚本中将章节编号放在章节标题后面

我的章节标题和编号的布局如下: 当前布局

我使用以下代码达到了这一目的:

\renewcommand*{\chapterformat}{%
  \fontsize{60}{68}\selectfont\color{Gray}\thechapter\autodot\enskip}

\addtokomafont{chapter}{%
  \renewcommand*{\raggedsection}{\raggedleft}}

将章节号(本例中为 2)移动到同一行的右端,使其与章节标题重叠的最佳方法是什么?(我希望标题位于顶部)。如果可能的话,我希望该方法能够与 KOMA 脚本很好地集成,例如通过\chapterformat像我上面所做的那样重新定义。

答案1

你的意思是像这样吗?

标题重叠

这看上去不太好,不是吗?

至少,我会做这样的事:

\renewcommand*{\chapterformat}{%
  \rlap{\makebox[\linewidth][r]{\colorbox{ltGray}{\fontsize{60}{68}\selectfont\color{Gray}\thechapter\autodot}}}}

\addtokomafont{chapter}{%
  \renewcommand*{\raggedsection}{\raggedleft\rightskip1.2em\hfill}}

部分重叠标题

免责声明:我不是设计师!

答案2

以下是通过补丁获取请求输出的一种方法\@@makechapterhead(使用etoolbox\@@makechapterhead中打印实际的章节标题(章节编号+标题)scrbook

在此处输入图片描述

\documentclass{scrbook}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\usepackage{fix-cm}% http://ctan.org/pkg/fix-cm
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox

\renewcommand*{\chapterformat}{%
  \fontsize{60}{68}\selectfont\color{black!50}\thechapter}% \autodot\enskip

\makeatletter
% Remove \chapterformat from \@@makechapterformat
\patchcmd{\@@makechapterhead}% <cmd>
  {\chapterformat}% <search>
  {}% <replace>
  {}{}% <success><failure>
% Reinsert \chapterformat  modify heading layout
\patchcmd{\@@makechapterhead}% <cmd>
  {\size@chapter{#1}}% <search>
  {\ooalign{\hss\chapterformat\cr\size@chapter{#1}}}% <replace>
  {}{}% <success><failure>
\makeatother

\addtokomafont{chapter}{%
  \renewcommand*{\raggedsection}{\raggedleft}}
\begin{document}
\setcounter{chapter}{1}% Just for this example
\chapter{Text elements}
In this chapter, some textual elements are shown, like figures,
tables, lists, equations, etc. Also, bananas.
\end{document}

第一个补丁删除了章节号的排版(通过 完成\chapterformat)。第二个补丁使用 重新插入\chapterformat并覆盖标题\ooalign。有关 的快速课程\ooalign,请参阅\subseteq+\circ作为单个符号(“开子集”)

答案3

\chapterlinesformat自 3.19 版起,KOMA-Script 提供了定义无前缀行章节格式的命令。您可以重新定义此命令,\chapterformat\raggedchapter得到类似

在此处输入图片描述

代码:

\documentclass{scrbook}
\usepackage{lmodern}
\usepackage{xcolor}

\renewcommand\raggedchapter{\raggedleft}
\renewcommand*{\chapterformat}{%
  \fontsize{60}{68}\selectfont\textcolor{lightgray}{\thechapter}}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \ifstr{#1}{chapter}
    {\raggedleft\makebox[0pt][r]{\smash{#2}}\makebox[0pt][r]{\parbox[t]{\textwidth}{\raggedchapter#3}}\par\nobreak}%
    {\@hangfrom{#2}{#3}}% original definition for other commands with style=chapter
}
\makeatother

\usepackage{blindtext}
\begin{document}
\tableofcontents
\blinddocument
\chapter{Text elements}
In this chapter, some textual elements are shown, like figures,
tables, lists, equations, etc. Also, bananas.
\end{document}

更新因为一条评论:

要将章节编号放在页边距中,我会使用

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \ifstr{#1}{chapter}
    {\raggedright
      \parbox[t]{\textwidth}{\raggedchapter#3}%
      \makebox[0pt][l]{\smash{\enskip#2}}%
      \par\nobreak
    }%
    {\@hangfrom{#2}{#3}}% original definition for other commands with style=chapter
}
\makeatother

\chapterlinesformat接受 3 个参数:分段级别的名称 ( #1)、格式化的数字 ( #2) 和格式化的标题 ( #3)。

在代码段中,章节标题(#3)占据整个文本宽度。其对齐方式定义为,\raggedchapter在示例中将其重新定义为\raggedleft。默认情况下,它将是\raggedsection定义为\raggedright。如果章节标题应该对齐,则使用\renewcommand\raggedchapter{}

章节号 ( #2) 设置在宽度为 的框中0pt。因此它打印在页边距中。\smash隐藏数字的高度。因此,编号和未编号(如目录)章节标题从相同的垂直位置开始。

例子:

\documentclass{scrbook}
\usepackage{lmodern}
\usepackage{xcolor}

\renewcommand\raggedchapter{\raggedleft}
\renewcommand*{\chapterformat}{{%
  \fontsize{60}{68}\selectfont\textcolor{lightgray}{\thechapter}}}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \ifstr{#1}{chapter}
    {\raggedright
      \parbox[t]{\textwidth}{\raggedchapter#3}%
      \makebox[0pt][l]{\smash{\enskip#2}}%
      \par\nobreak
    }%
    {\@hangfrom{#2}{#3}}% original definition for other commands with style=chapter
}
\makeatother

\usepackage{blindtext}
\begin{document}
\tableofcontents
\blinddocument
\chapter{In this chapter, some textual elements are shown, like figures,
tables, lists, equations, etc. Also, bananas.}
\end{document}

相关内容