我正在使用 Koma-script
我想创建一个chapter
执行以下操作的页面:
- 章节标题水平和垂直居中
- 章节标题极大
- 章节编号位于背景中,规模极大。
我的问题是关于 3.,我没能做到。
通过修改\chapterlinesformat
Koma 脚本,我实现了 1. 和 2.,尽管 2. 在代码方面有点奇怪。
对于 3.,我曾想过使用tikz
并将页眉简单地放在章节标题后面,这种方法很有效。但是尽管使用了 ,我还是无法轻松地将其居中(current page.center)
。我不明白为什么它不在中心。
这是我的 MWE:
\documentclass[oneside]{scrbook}
\usepackage{xparse}
\usepackage{tikz}
\usepackage{adjustbox}
\DeclareDocumentCommand\chapterheadstartvskip {}{}
\DeclareDocumentCommand\chapterheadendvskip {}{}
\DeclareDocumentCommand\chaptermarkformat {}{}
\DeclareDocumentCommand\chapterlinesformat {mmm} {%
\tikz[remember picture,overlay]
\node[scale=25,pink] at (current page.center){#2};%
\vspace*{-\topskip}\vfill
\adjustbox{center}{%
\adjustbox{minipage=8cm, scale=3, max width=20cm}{\centering #3}
}
\vfill
\clearpage
}
\begin{document}
\chapter{Extremely long chapter title blablablablabla}
\end{document}
顺便说一句,对于 2.,为了让章节标题尽可能大,我必须嵌套两个adjustbox
。第一个 到center
,第二个 到。如果我尝试在同一个 中scale
使用键center
和,它会忽略该参数。scale=3
adjustbox
scale
有人能帮我把章节号放在标题后面吗?为什么不在(current page.center)
页面中央?
答案1
KOMA 命令的原始定义\chapterformat
是
\newcommand*{\chapterformat}{%
\mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot
\IfUsePrefixLine{}{\enskip}}%
}
它格式化章节编号。如果没有包含单词“Chapter”和章节编号的前缀行,则需要一个空格来分隔章节编号和章节标题文本。此空格必须是数字格式的一部分,因为如果章节未编号,则应将其删除。
我建议按照其任务来使用这些命令。
\chapterheadstartvskip
使用和在章节标题上方和下方插入空格\chapterheadendvskip
。- 使用 格式化章节编号
\chapterformat
。 - 用于
chapterlinesformat
获取章节标题文本的非常特殊的格式。
例子:
\documentclass[oneside]{scrbook}
\usepackage{tikz}
\usepackage{adjustbox}
\renewcommand*\chapterheadstartvskip{\vspace*{-\topskip}\vfill}
\renewcommand*\chapterheadendvskip{\vfill\clearpage}
\renewcommand*\chapterformat{%
\tikz[remember picture,overlay]
\path(current page.center)node[scale=25,pink]{\thechapter};%
}
\renewcommand\chapterlinesformat[3]{%
#2\par
\adjustbox{center}{%
\adjustbox{minipage=8cm, scale=3, max width=20cm}{\centering #3}%
}%
}
\begin{document}
\chapter{Extremely long chapter title blablablablabla}
\end{document}
更新
您还可以使用\parbox
with\textwidth
和\textheight
inside \chapterlinesformat
:
\documentclass[oneside]{scrbook}
\usepackage{tikz}
\usepackage{adjustbox}
\RedeclareSectionCommand[
beforeskip=-1sp minus -1sp,
afterskip=1sp minus 1sp
]{chapter}
\renewcommand*\chapterformat{%
\tikz[remember picture,overlay]
\path(current page.center)node[scale=25,pink]{\thechapter};%
}
\renewcommand\chapterlinesformat[3]{%
\parbox[c][\textheight][c]{\textwidth}{%
#2\par
\adjustbox{center}{%
\adjustbox{minipage=8cm, scale=3, max width=20cm}{\centering #3}%
}}}
\begin{document}
\chapter{Extremely long chapter title blablablablabla}
\end{document}
结果和上面一样。
答案2
该命令添加了一个空格\chapterformat
,它是 的参数\chapterlinesformat
。
所以我可以重新定义\chapterformat
为\thechapter
:
\RenewDocumentCommand\chapterformat {}{\thechapter}
以达到预期的效果。
或者,我可以使用\thechapter
而不是#2
但我认为第一个解决方案更好。
\chapterformat
我认为because中有一个空格\chapterlinesformat
通常是这样的:
\@hangfrom{\hskip #2#3}{#4}}
是。因此需要空格吗?我不太确定#2
。\chapterformat