是否可以在不同的节级别上使用不同的几何图形,前提是您可以保证它们位于不同的页面上。这听起来可能很奇怪,但让我用一个显然需要这样做的案例来说明。
\documentclass{scrreprt}
\usepackage[outer=7cm, inner=3cm, marginparwidth=4cm, marginparsep=10mm, showframe]{geometry}
\begin{document}
\part{test}
\end{document}
在这个使用宽边距注释的文档示例中,部分页面将成为章节之间的分隔符,并且我希望这些页面的居中方式与主要页面不同(即以纸张为中心,因此具有没有边距的几何形状)
我知道每次我都可以使用 \newgeometry 和 \restoregeometry,但我希望可以将其与 \part{} 关联并自动完成。有没有办法实现这一点?
答案1
方法如下:
\documentclass{scrreprt}
\usepackage{lipsum}
\usepackage[outer=7cm, inner=3cm, marginparwidth=4cm, marginparsep=10mm, showframe]{geometry}
\let\oldpart\part
\def\part#1{\newgeometry{marginparwidth=0cm,marginparsep=0cm,showframe,inner=0cm,outer=0cm}\oldpart{#1}\restoregeometry}
\begin{document}
\part{test}
\chapter{Test}
\lipsum[1-3]
\part{test}
\chapter{Test}
\lipsum[1-3]
\end{document}
只需测试一下并根据您的需要进行更改...PS:我认为不需要截图。
答案2
您可以修补部分级别命令来更改几何形状:
\usepackage{xpatch}
\xpretocmd\part
{\newgeometry{marginparwidth=0cm,marginparsep=0cm,showframe,inner=0cm,outer=0cm}}
{}{\PatchFailedI}
style=part
如果某个部分级别将其标题放在自己的页面上,那么它就是具有(选项\DeclareSectionCommand
等,请参阅文档)的部分,类似于部分级别 。您可以\partheademptypage
使用 来在所有部分级别之后恢复几何形状style=part
。这也适用于和带星号的版本。此外,可以使用\addpart
可选参数。\part
例子:
\documentclass[chapterprefix]{scrreprt}
\usepackage{lipsum}
\usepackage[outer=7cm, inner=3cm, marginparwidth=4cm, marginparsep=10mm, showframe]{geometry}
\usepackage{xpatch}
\xpretocmd\part
{\newgeometry{marginparwidth=0cm,marginparsep=0cm,showframe,inner=0cm,outer=0cm}}
{}{\PatchFailedI}
\xapptocmd\partheademptypage
{\restoregeometry}
{}{\PatchFailedII}
\begin{document}
\tableofcontents
\part{test}
\chapter{Test}
\lipsum[1-3]
\addpart{test}
\chapter{Test}
\lipsum[1-3]
\part[toc entry]{title}
\chapter{Test}
\lipsum
\end{document}
如果您想对章节执行相同的操作,请将选项更改style
为部分和补丁\chapter
:
\RedeclareSectionCommand[
style=part,
]{chapter}
\xpretocmd\chapter
{\newgeometry{marginparwidth=0cm,marginparsep=0cm,showframe,inner=0cm,outer=0cm}}
{}{\PatchFailedIII}
从 3.27 版开始,KOMA-Script 将提供新的 Hooks (DoHooks)。目前您需要 3.27 的预发布版本(可在 KOMA-Script 网站上查阅)测试以下示例:
\documentclass{scrreprt}[2019/07/29]% needs prerelease 3.27.3193 or newer
\usepackage{lipsum}
\usepackage[outer=7cm, inner=3cm, marginparwidth=4cm, marginparsep=10mm, showframe]{geometry}
\AddtoDoHook{heading/postinit/part}{\partgeometry}
\newcommand*\partgeometry[1]
{\newgeometry{marginparwidth=0cm,marginparsep=0cm,showframe,inner=0cm,outer=0cm}}
\let\originalpartheademptypage\partheademptypage
\renewcommand\partheademptypage
{\originalpartheademptypage\restoregeometry}
\begin{document}
\tableofcontents
\part{test}
\chapter{Test}
\lipsum[1-3]
\addpart{test}
\chapter{Test}
\lipsum[1-3]
\part[toc entry]{title}
\chapter{Test}
\lipsum
\end{document}