我正在写一本由各个部分组成的书。我希望包含各个部分的页面采用以下格式:
- 后台的罗马部分编号,目前使用
tikz
和获得background
。有没有更好的方法来实现这一点(也许使用 KOMA 内部宏,只是因为我使用 才问的\tikzexternalize
)? - 但主要问题是:如何
addmargin
在标题周围使用环境?我希望标题跨越到边距,并且没有\partlinesformat
或类似的东西。 - 添加:是否有可以应用其他风格的宏
\part*
?
\documentclass{scrbook}
\usepackage{tikz,xcolor,background,etoolbox}
\backgroundsetup{pages=some,angle=0,scale=50,color=blue!50,opacity=.1,contents={
\begin{tikzpicture}
\node at (current page.center) {\thepart};
\end{tikzpicture}
}}
\renewcommand*{\partformat}{}
\renewcommand*{\partpagestyle}{empty}
\setkomafont{part}{\Huge\sffamily\BgThispage}
\begin{document}
\part{This is a test with a very very long title}
Here comes text
\end{document}
答案1
您可以使用包scrlayer
或scrlayer-scrpage
为部分页面定义自己的页面样式。
以下是假设所有部分页面都是奇数页的示例:
\documentclass{scrbook}
\usepackage{tikz}% loads xcolor and graphicx
\usepackage{scrlayer-scrpage}% loads scrlayer
\newcommand*\partnumber{}
\DeclareNewLayer[
background,
textarea,
addwidth=\marginparsep+\marginparwidth,
mode=picture,
contents={%
\putC{\makebox[0pt][c]{\raisebox{-.5\height}{\scalebox{50}{\textcolor{blue!5}{\partnumber}}}}}\gdef\partnumber{}%
}
]{partnumber}
\DeclareNewPageStyleByLayers{part}{partnumber}
\renewcommand\partpagestyle{part}
\renewcommand*{\partformat}{\gdef\partnumber{\thepart}}
% only a dirty workaround for the part title
\newcommand*\changedpartwidth[1]{%
\makebox[\linewidth][l]{%
\parbox{\dimexpr\textwidth+\marginparsep+\marginparwidth\relax}{\raggedpart#1}%
}%
}
% add \changedpartwidth as last command to the settings for font element part
\addtokomafont{part}{\Huge\changedpartwidth}
\begin{document}
\part{This is a test with a very very long title}
Here comes text
\part{This is a test with a very very very very long title}
Here comes text
\addpart{Part without Number}
\end{document}
零件编号和标题水平居中于文本区域(包括边距)。