我的章节标题和编号的布局如下:
我使用以下代码达到了这一目的:
\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}