部分在 scrbook 中打开

部分在 scrbook 中打开

使用scrbook,我希望部分在新的奇数页上打开,就像章节一样。我该如何实现?

答案1

只需添加\cleardoublepage到 的动作即可\section

没有包裹:

\long\expandafter\def\expandafter\section\expandafter{%
  \expandafter\cleardoublepage\section}

简短:

\usepackage{etoolbox}
\preto\section{\cleardoublepage}

注意:该\section命令(在标准类和 KoMa 脚本类中)有一个定义没有参数。这些参数被它调用的其他宏吸收。

如果您想尊重openanyopenright选项,那么\cleardoublepage就不是正确的命令。因此

\usepackage{etoolbox}
\makeatletter
\preto\section{\if@openright\cleardoublepage\else\clearpage\fi}
\makeatother

应该使用。

此版本的“无包”版本可能是

\makeatletter
\toks0={\if@openright\cleardoublepage\else\clearpage\fi}
\toks2=\expandafter{\section}
\long\edef\section{\the\toks0 \the\toks2 }
\makeatother

答案2

您可以重新定义\section添加\cleardoublepage\clearpage(取决于openright或是否openany处于活动状态)以使其表现为\chapter

\documentclass{scrbook}
\usepackage{lipsum}

\makeatletter
\renewcommand\section{%
\if@openright\cleardoublepage\else\clearpage\fi
\@startsection{section}{1}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\setlength{\parfillskip}{\z@ \@plus 1fil}%
    \raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}}
\makeatother
\begin{document}

\section{Test Section One}
\lipsum[1]
\section{Test Section Two}
\lipsum[1]

\end{document}

答案3

\documentclass{scrbook}
\let\mySection\section
\renewcommand\section{\cleardoublepage\mySection}
\begin{document}
\chapter{foo}
text
\section{bar}
text
\end{document}

相关内容