% \iffalse meta-comment % ====================================================================== % scrkernel-pagestyles.dtx % Copyright (c) Markus Kohm, 2002-2023 % % This file is part of the LaTeX2e KOMA-Script bundle. % % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later and of this work. % % This work has the LPPL maintenance status "author-maintained". % % The Current Maintainer and author of this work is Markus Kohm. % % This work consists of all files listed in MANIFEST.md. % ====================================================================== %%% From File: $Id: scrkernel-pagestyles.dtx 4058 2023-06-16 08:32:27Z kohm $ %<option>%%% (run: option) %<body>%%% (run: body) %<*dtx> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} \filedate$Date: 2023-06-16 10:32:27 +0200 (Fr, 16. Jun 2023) $ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}} \filerevision$Revision: 4058 $ \edef\reserved@a{% \noexpand\endgroup \noexpand\ProvidesFile{scrkernel-pagestyles.dtx}% [\filedate\space\filerevision\space KOMA-Script source (page styles)] }% \reserved@a \documentclass[USenglish]{koma-script-source-doc} \usepackage{babel} \setcounter{StandardModuleDepth}{3} \begin{document} \DocInput{scrkernel-pagestyles.dtx} \end{document} %</dtx> % \fi % % \changes{v2.95}{2002/06/25}{first version after splitting \file{scrclass.dtx}} % \changes{v3.36}{2022/03/05}{switch over from \cls*{scrdoc} to % \cls*{koma-script-source-doc}} % \changes{v3.36}{2022/03/05}{whole implementation documentation in English} % \changes{v3.40}{2023/04/17}{guide names changed} % % \GetFileInfo{scrkernel-pagestyles.dtx} % \title{The Code of the Default Page Styles of the % \href{https://komascript.de}{\KOMAScript} Classes} % \author{\href{mailto:komascript@gmx.info}{Markus Kohm}} % \date{Revision \fileversion{} of \filedate} % \maketitle % \begin{abstract} % \file{scrkernel-pagestyles.dtx} provides the default page styles of the % \KOMAScript{} classes. As already told decades ago, there are plans to % remove this code and to require the \KOMAScript{} page style % package---namely \pkg*{scrlayer-scrpage}---instead. % \end{abstract} % \tableofcontents % % \section{User Manual} % % You can find the user documentation the commands implemented here in the % \KOMAScript{} manual, either the German \file{scrguide-de.pdf} or the % English \file{scrguide-en.pdf}. % % \MaybeStop{\PrintIndex} % % \section{Implementation of the Page Styles of the \KOMAScript{} Classes} % % \begin{macrocode} %<*class> % \end{macrocode} % % \subsection{Options for the separation lines in page head and footer} % % \begin{option}{headsepline} % \changes{v2.95c}{2006/08/11}{arguments of \cs{PassOptonsToPackage} fixed} % \changes{v2.97c}{2007/04/19}{don't pass \opt{headinclude} to \pkg*{typearea}} % \changes{v2.98c}{2008/03/26}{set \opt{headinclude}} % \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}} % \changes{v3.12}{2013/03/05}{if \pkg*{typearea} has not been loaded, pass % option to the package} % \changes{v3.17}{2015/03/10}{using value storage} % \changes{v3.18a}{2015/07/08}{arguments of \cs{PassOptionsToPackage} fixed % again} % \changes{v3.20}{2015/12/12}{don't pass option to \pkg*{typearea}} % \changes{v3.39}{2022/11/11}{initial dot removed from member argument of % option storage commands} % \begin{macro}{\@hslfalse,\@hsltrue,\if@hsl} % Optional separation line between page head and text area---in other words: % below the page head. % \begin{macrocode} %<*option> \KOMA@ifkey{headsepline}{@hsl}% \KOMA@kav@add{\KOMAClassFileName}{headsepline}{false} % \end{macrocode} % \begin{option}{headnosepline} % \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by % \cs{PackageInfoNoLine}} % \changes{v3.01a}{2008/11/20}{deprecated} % \changes{v3.99}{2022/11/16}{removed from \KOMAScript~4} % \begin{macrocode} %<!v4>\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false} % \end{macrocode} % \end{option}^^A headnosepline % \end{macro}^^A \if@hsl % \end{option}^^A headsepline % % % \begin{option}{footsepline} % \changes{v2.0e}{1994/08/14}{missing package at \cs{PassOptionsToPackage} % added} % \changes{v2.95c}{2006/08/11}{arguments of \cs{PassOptionsToPackage} fixed} % \changes{v2.97c}{2007/04/19}{don't pass \opt{footinclude} to % \pkg*{typearea}} % \changes{v2.98c}{2008/03/26}{set \opt{footinclude}} % \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}} % \changes{v3.12}{2013/03/05}{if \textsf{typearea} has not been loaded, pass % option to package} % \changes{v3.12}{2013/08/26}{\cs{KOMA@options} replaced by \cs{KOMAoptions}} % \changes{v3.12}{2013/08/26}{recalculation of typing area} % \changes{v3.13}{2014/07/07}{no recalculation of typing area} % \changes{v3.13}{2014/07/07}{\opt{headinclude} mistake fixed} % \changes{v3.17}{2015/03/10}{using value storage} % \changes{v3.18a}{2015/07/08}{arguments of \cs{PassOptionsToPackage} fixed % again} % \changes{v3.20}{2015/12/12}{don't pass option to \pkg*{typearea}} % \changes{v3.39}{2022/11/11}{initial dot removed from member argument of % option storage commands} % \begin{macro}{\@fslfalse,\@fsltrue,\if@fsl} % Optional separation line between text area and page footer---in other words: % above the page footer. % \begin{macrocode} \KOMA@ifkey{footsepline}{@fsl}% \KOMA@kav@add{\KOMAClassFileName}{footsepline}{false} % \end{macrocode} % \begin{option}{footnosepline} % \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by % \cs{PackageInfoNoLine}} % \changes{v3.01a}{2008/11/20}{deprecated} % \changes{v3.99}{2022/11/16}{removed from \KOMAScript~4} % \begin{macrocode} %<!v4>\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false} %</option> % \end{macrocode} % \end{option}^^A footnosepline % \end{macro}^^A \if@fsl % \end{option}^^A footsepline % % \begin{option}{mpinclude} % \changes{v2.95}{2002/07/08}{moved to \pkg*{typearea}} % \end{option}{mpinclude} % % % \subsection{Definition of the standard page styles} % % % \begin{pgstyle}{plain,myheadings,headings} % \changes{v2.0e}{1994/08/10}{\cls*{scrbook} does not provide single-side page % styles} % \changes{v2.0e}{1994/08/17}{in single-side mode \cs{markboth} replaced by % \cs{markright}} % \changes{v2.1b}{1994/12/31}{in single-side mode \cs{markboth} replaced by % \cs{markright}} % \changes{v2.2a}{1995/02/07}{dot after section number in \cls*{scrbook} and % \cls*{scrreprt} removed} % \changes{v2.2a}{1995/02/07}{using \cs{subsectionmark} in single-side mode % with \cls*{scrartcl}} % \changes{v2.2a}{1995/02/07}{using \cs{sectionmark} in single-side mode with % \cls*{scrreprt}} % \changes{v2.2c}{1995/05/25}{dot after chapter number removed} % \changes{v2.2c}{1995/05/25}{numbers in running heads support CJK format % extension} % \changes{v2.3a}{1995/07/08}{because \cls{book} from version 1.2v provides % option \opt{oneside} single-side page styles added to \cls*{scrbook}} % \changes{v2.4f}{1996/10/08}{\cs{strut} added to page head} % \changes{v2.97c}{2007/07/18}{distinguish \opt{twoside} as late as possible} % \changes{v3.08}{2010/10/28}{\cs{noindent} added before usage of variable % \var{nexthead} or \var{nextfoot}} % \changes{v3.10}{2011/08/31}{using \cs{MakeMarkcase}} % \changes{v3.28}{2019/11/19}{\cs{ifnumbered} renamed to \cs{Ifnumbered}} % In difference to the standard classes, the \KOMAScript{} classes use % pagination in the page footer for all page styles. Also an optional % separation line below the page head and above the page footer is % supported. The ugly usage of pool man's upper case for the running head of % the standard classes is also not used, but optional. % \begin{macro}{\set@tempdima@hw} % \changes{v2.8q}{2002/03/28}{added} % Because with \pkg*{typearea} option \opt{mpinclude} the head should be % extended to the margin note column, \cs{set@tempdima@hw} sets % \len{@tempdima} to the corresponding head width. % \begin{description} % \item[Note:] Package \pkg*{scrlayer} does not use this code, but allows % to configure the width of head and foot independent, which is much % better. % \end{description} % \begin{macrocode} %<*body> \newcommand*{\set@tempdima@hw}{% \setlength{\@tempdima}{\textwidth}% \if@mincl \addtolength{\@tempdima}{\marginparsep}% \addtolength{\@tempdima}{\marginparwidth}% \fi } % \end{macrocode} % \end{macro}^^A \set@tempdima@hw % \begin{fontelement}{pagenumber} % \changes{v2.8o}{2001/09/14}{added} % \begin{fontelement}{pagination} % \changes{v2.8o}{2001/09/14}{alias added} % \begin{fontelement}{pageheadfoot} % \changes{v2.98c}{2008/02/14}{added} % \begin{fontelement}{pagehead} % \changes{v2.8o}{2001/09/14}{added with warning added} % \changes{v2.98c}{2008/02/14}{changed to alias} % \changes{v2.97c}{2007/09/25}{warning changed} % \changes{v2.98c}{2008/02/14}{warning changed} % \begin{fontelement}{pagefoot} % \changes{v2.8o}{2001/09/14}{alias with warning added} % \changes{v2.98c}{2008/02/14}{changed to element} % \changes{v3.13}{2014/01/13}{warning changed} % \begin{macro}{\pnumfont,\headfont} % \changes{v2.8c}{2001/06/29}{\cs{normalcolor} added} % \begin{macro}{\footfont} % \changes{v2.98c}{2008/02/14}{added} % All these font settings are deprecated as user commands, but still valid as % internal macros, used to define font elements. Because of using the old % macros, we have to define elements manually instead of using \cs{newkomafont}. % \begin{macrocode} \newcommand*{\pnumfont}{\normalfont\normalcolor} \newcommand*{\headfont}{\normalfont\normalcolor\slshape} \newcommand*{\footfont}{} % \end{macrocode} % \begin{macrocode} \newcommand*{\scr@fnt@pagenumber}{\pnumfont} \aliaskomafont{pagination}{pagenumber} \newcommand*{\scr@fnt@pageheadfoot}{\headfont} \aliaskomafont{pagehead}{pageheadfoot} %<*letter> \newcommand*{\scr@fnt@wrn@pagehead}[1]{% `pagehead' is only an alias of `pageheadfoot'.\MessageBreak Font of page foot will also be changed% } \newcommand*{\scr@fnt@pagefoot}{\footfont} %</letter> %<*!letter> \newcommand*{\scr@fnt@pagefoot}{\footfont} \newcommand*{\scr@fnt@wrn@pagefoot}[1]{% This class does not use font element `pagefoot'!\MessageBreak Maybe you should load package `scrlayer-scrpage',\MessageBreak before using this element% } %</!letter> % \end{macrocode} % \end{macro}^^A \footfont % \end{macro}^^A \pnumfont,\headfont % \end{fontelement}^^A pagefoot % \end{fontelement}^^A pagehead % \end{fontelement}^^A pageheadfoot % \end{fontelement}^^A pagination % \end{fontelement}^^A pagenumber % % \begin{command}{\pagemark} % \changes{v2.95}{2006/03/15}{available for all classes} % \changes{v3.05}{2010/02/05}{group added} % \begin{command}{\letterpagemark} % \changes{v3.17}{2015/03/20}{added for \pkg*{scrletter}} % The pagination used by all classes. Originally this has been defined to % simplify usage of \pkg{fancyhdr} (instead of % \pkg[https://www.ctan.org/pkg/koma-script-obsolete]{scrpage2}), because in % this case you just have to use \cs{pagemark} instead of \cs{thepage} in the % definitions of the fancy page style to support \KOMAScript. But neither the % author nor the users of \pkg{fancyhdr} have used it. However, now it is % useful for \pkg{scrlayer-scrpage} too. And because we use another pagination % for letters, we define a second command for \pkg*{scrletter}. % \begin{macrocode} %</body> %</class> %<*(class|letter)&body> \newcommand*{% %<class> \pagemark %<package> \letterpagemark }{% {\usekomafont{pagenumber}{% %<letter> \pagename\nobreakspace \thepage}}} %</(class|letter)&body> % \end{macrocode} % \end{command}^^A \letterpagemark % \end{command}^^A \pagemark % First of all we have to define the page styles of all classes but the letter % class. % \begin{macrocode} %<*class&!letter&body> \renewcommand*{\ps@plain}{% \renewcommand*{\@oddhead}{}% \let\@evenhead\@oddhead \renewcommand*{\@evenfoot}{% \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% \renewcommand*{\@oddfoot}{% \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\hfil\pagemark \if@twoside\else\hfil\fi}}}}\hss}% }% \newcommand*{\ps@headings}{\let\@mkboth\markboth \renewcommand*{\@evenhead}{% \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% \if@hsl \vskip 1.5\p@ \hrule \fi}}}% \renewcommand*{\@oddhead}{% \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark \if@twoside\else\hfil\fi}}% \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% \renewcommand*{\@evenfoot}{% \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% \renewcommand*{\@oddfoot}{% \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\hfil\pagemark \if@twoside\else\hfil\fi}}}}\hss}% %<*article> % \end{macrocode} % \changes{v3.41}{2023/06/16}{split usage of \cs{MakeMarkcase}} % From version 3.41 usage of \cs{MakeMarkcase} is split for number and text, % to also support \cs{MakeTitlecase}. % \begin{macrocode} \renewcommand*{\sectionmark}[1]{% \if@twoside\expandafter\markboth\else\expandafter\markright\fi {% \Ifnumbered{section}{\MakeMarkcase{\sectionmarkformat}}{}% \MakeMarkcase{##1}% }{}% }% \renewcommand*{\subsectionmark}[1]{% \if@twoside \markright{% \Ifnumbered{subsection}{\MakeMarkcase{\subsectionmarkformat}}{}% \MakeMarkcase{##1}% }% \fi }% %</article> %<*report|book> \renewcommand*{\chaptermark}[1]{% \if@twoside\expandafter\markboth\else\expandafter\markright\fi {% \Ifnumbered{chapter}{% %<book> \if@mainmatter \MakeMarkcase{\chaptermarkformat}% %<book> \fi }{}\MakeMarkcase{##1}% }{}% }% \renewcommand*{\sectionmark}[1]{% \if@twoside \markright{% \Ifnumbered{section}{\MakeMarkcase{\sectionmarkformat}}{}% \MakeMarkcase{##1}% }% \fi }% %</report|book> }% \newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo \renewcommand*{\@evenhead}{% \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% \if@hsl \vskip 1.5\p@ \hrule \fi}}}% \renewcommand*{\@oddhead}{% \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark \if@twoside\else\hfil\fi}}% \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% \renewcommand*{\@evenfoot}{% \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}% \renewcommand*{\@oddfoot}{% \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% \if@fsl \hrule \vskip 3\p@ \fi \hb@xt@ \@tempdima{{\hfil\pagemark \if@twoside\else\hfil\fi}}}}\hss}% %<!article> \renewcommand*{\chaptermark}[1]{}% %<article> \renewcommand*{\subsectionmark}[1]{}% \renewcommand*{\sectionmark}[1]{}% } %</class&!letter&body> % \end{macrocode} % And now the page styles of the letter class. % \begin{macrocode} %<*class&letter&body> \renewcommand*{\ps@plain}{% \renewcommand*{\@oddhead}{% \vbox{\vbox{\hsize=\textwidth\hbox to\textwidth{% \parbox[b]{\textwidth}{\strut \ifnum\@pageat>-1 \ifnum\@pageat<3 \ifcase\@pageat\raggedright\or\centering\or\raggedleft\fi \pagemark \else \hfill \fi \else \hfill \fi }% }% \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi }% }% }% \let\@evenhead\@oddhead% \renewcommand*{\@oddfoot}{% \parbox[t]{\textwidth}{% \if@fsl {% \raggedright% \vskip-\baselineskip\vskip.4pt \hrulefill\\ }% \fi \ifnum\@pageat>2 \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi \strut\pagemark \else \hfill \fi }% }% \let\@evenfoot\@oddfoot } \newcommand*{\ps@headings}{\let\@mkboth\markboth \renewcommand*{\@oddhead}{% \vbox{% \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\noindent \usekomavar{nexthead}}}% \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi% }% }% \let\@evenhead\@oddhead \renewcommand*{\@oddfoot}{% \parbox[t]{\textwidth}{% \if@fsl {% \raggedright% \vskip-\baselineskip\vskip.4pt \hrulefill\\ }% \fi \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\footfont\noindent \usekomavar{nextfoot}}}% }% }% \let\@evenfoot\@oddfoot } \newcommand*{\ps@myheadings}{% \ps@headings \let\@mkboth\@gobbletwo } %</class&letter&body> % \end{macrocode} % The letter package already uses \pkg*{scrlayer-scrpage}: % \begin{macrocode} %<*package&letter&body> \RequirePackage{scrlayer-scrpage} \newpairofpagestyles{letter}{% \clearpairofpagestyles \lehead[\ifnum\@pageat=\z@\pagemark\fi]% {\usekomavar{nexthead}}% \lohead[\ifnum\@pageat=\z@\pagemark\fi]% {\usekomavar{nexthead}}% \chead[\ifnum\@pageat=\@ne\pagemark\fi]% {}% \rehead[\ifnum\@pageat=\tw@\pagemark\fi]% {}% \rohead[\ifnum\@pageat=\tw@\pagemark\fi]% {}% \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]% {\usekomavar{nextfoot}}% \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]% {\usekomavar{nextfoot}}% \cfoot[\ifnum\@pageat=4 \pagemark\fi]% {}% \refoot[\ifnum\@pageat=5 \pagemark\fi]% {}% \rofoot[\ifnum\@pageat=5 \pagemark\fi]% {}% } %</package&letter&body> % \end{macrocode} % \end{pgstyle}^^A plain,myheadings,headings % % \begin{pgstyle}{notepaper} % \changes{v3.27}{2019/03/22}{plan added} % There are plans for \pkg*{scrletter} package to use a new layer % \texttt{notepaper} to define the notepaper. With this layer it is possible % to add several separated information blocks everywhere on the first % page. A \texttt{picture} mode layer is used, because this makes the % placement easier. It's a background layer, so the page contents are printed % above. We could also use an odd-side layer, but who knows \dots % \begin{macrocode} %<*package&letter&body&willbe> \DeclareNewLayer[% background, mode=picture, page, align=b, contents=\scr@notepaper@printallelements ]{notepaper} % \end{macrocode} % For \cs{scr@notepaper@elements} see \file{scrkernel-notepaper.dtx}. % % A second layer is used for the foldmarks. Again it is a picture layer. But % this time it is an odd-sides-only layer. % \begin{macrocode} \DeclareNewLayer[% background, mode=picture, page, align=b, contents=\scr@foldmarks@printallelements ]{foldmarks} % \end{macrocode} % For \cs{@hfoldmark} and \cs{@vfoldmark} see \file{scrkernel-notepaper.dtx}. % % Last but not least the page style. The foldmarks are below the notepaper. % \begin{macrocode} \DeclareNewPageStyleByLayers{notepaper}{foldmarks,notepaper} %</package&letter&body&willbe> % \end{macrocode} % \end{pgstyle}^^A notepaper % % % \subsection{Selection of page styles for special pages} % % % \begin{command}{\titlepagestyle,\indexpagestyle} % \changes{v2.8d}{2001/07/05}{added} % For pages with the in-page title and for the first page of the index, % \KOMAScript{} provides configurable page styles. These are initially % \pstyle{plain}. % \begin{macrocode} %<*class&!letter&body> \newcommand*{\titlepagestyle}{plain} \newcommand*{\indexpagestyle}{plain} %</class&!letter&body> % \end{macrocode} % \end{command} % \begin{command}{\partpagestyle} % \changes{v2.8d}{2001/07/05}{added} % \changes{v3.00}{2008/08/05}{not with \cls*{scrartcl}} % \changes{v3.18}{2015/06/10}{indirect by \cs{DeclareSectionCommand}} % \end{command} % \begin{command}{\chapterpagestyle} % \changes{v2.8d}{2001/07/05}{added} % \changes{v3.18}{2015/05/20}{indirect by \cs{DeclareSectionCommand}} % \end{command} % % % \subsection{Selection of initial page style} % % The initial page style depends on the class: % \begin{macrocode} %<*class&body> %<report|article|letter>\pagestyle{plain} %<book>\pagestyle{headings} % \end{macrocode} % But the pagination is always done using Arabic numbers. % \begin{macrocode} \pagenumbering{arabic} %</class&body> % \end{macrocode} % % \section{Implementation of Interleaf Pages} % % \begin{description} % \item[ToDo:] Move this code to a new file \file{scrkernel-interleaf.dtx}. % \end{description} % % \begin{option}{cleardoublepage} % \changes{v2.95}{2004/08/24}{added} % \changes{v2.96a}{2007/01/03}{value \opt{\quotechar=current} fixed} % \changes{v2.98c}{2008/03/06}{\cs{def} replaced by \cs{let}, because of % option \opt{open}} % \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}} % \changes{v3.17}{2015/03/10}{using value storage} % \changes{v3.37}{2022/05/10}{guard for \pkg*{scrextend} fixed} % \changes{v3.39}{2022/10/25}{using \cs{scr@v@is@gt}} % \changes{v3.39}{2022/11/11}{initial dot removed from member argument of % option storage commands} % \begin{command}{\cleardoublestandardpage} % \changes{v2.8a}{2001/06/18}{added} % \changes{v2.96a}{2007/01/02}{default value added} % \begin{command}{\cleardoubleusingstyle} % \changes{v2.95}{2004/08/24}{added} % \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} replaced by % \cs{pagestyle}} % \begin{command}{\cleardoubleemptypage,\cleardoubleplainpage} % \changes{v2.8a}{2001/06/18}{added} % \begin{command}{\cleardoubleoddpage,\cleardoubleoddstandardpage} % \changes{v2.98c}{2008/03/06}{added} % \begin{command}{\cleardoubleoddusingstyle} % \changes{v2.98c}{2008/03/06}{added} % \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} replaced by % \cs{pagestyle}} % \begin{command}{\cleardoubleoddemptypage,\cleardoubleoddplainpage} % \changes{v2.98c}{2001/06/18}{added} % \begin{command}{\cleardoubleevenpage,\cleardoubleevenstandardpage} % \changes{v2.98c}{2008/03/06}{added} % \begin{command}{\cleardoubleevenusingstyle} % \changes{v2.98c}{2008/03/06}{added} % \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} replaced by % \cs{pagestyle}} % \begin{command}{\cleardoubleevenemptypage,\cleardoubleevenplainpage} % \changes{v2.98c}{2001/06/18}{added} % \begin{command}{\cleardoublepage} % \changes{v2.98c}{2001/06/18}{always redefining it} % \changes{v2.98c}{2008/04/11}{new default from version 2.98c} % \changes{v3.13}{2014/03/01}{allow page style \pstyle{headings} as value for % class option} % \changes{v3.28}{2019/11/18}{\cs{ifnotundefined} replaced by % \cs{Ifnotundefined}} % \changes{v3.28}{2019/11/18}{\cs{ifstr} replaced by \cs{Ifstr}} % With options \opt{twoside} and \opt{openright}, which are both default with % \cls*{scrbook} and available with \cls*{scrreprt}, \cs{chapter} imply % \cs{cleardoublepage}. Usually this results in a new odd page and can insert % an interleaf page. With the standard classes this interleaf page has the % current active page style and therefore can have a running head and % pagination. Mainstream typography uses empty pages without running head or % pagination for interleaf pages. Some users also want a pagination but no % running head. Option \opt{cleardoublepage} can be used to select all the % often wishes and also every other page style. The corresponding commands are % also defined and the option re-defines \cs{cleardoublepage} to use one of % these additional commands. Similar is for \cs{cleardoubleoddpage} and % \cs{cleardoubleevenpage}. % \begin{macrocode} %<*(class|extend)&option> \KOMA@key{cleardoublepage}{% \begingroup \def\@tempc{% \endgroup \KOMA@unknown@keyval{cleardoublepage}{#1}{% 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}% }% \Ifstr{#1}{current}{% \def\@tempc{\endgroup \def\cleardoublepage{\cleardoublestandardpage}% \def\cleardoubleoddpage{\cleardoubleoddstandardpage}% \def\cleardoubleevenpage{\cleardoubleevenstandardpage}% \FamilyKeyStateProcessed \KOMA@kav@replacevalue{% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}{current}% }% }{% \Ifnotundefined{ps@#1}{% \def\@tempc{\endgroup \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% \FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}{#1}% }% }{% % \end{macrocode} % At class loading time page style \pstyle{headings} is still undefined, but % should be allowed as value for option \opt{cleardoublepage}. % \begin{description} % \item[Note:] Page style \pstyle{plain} is already defined in the \LaTeX{} % kernel and therefore does not need special treatment. % \end{description} % \begin{macrocode} %<*class> \ifx\@currname\KOMAClassName \ifx\@currext\@clsextension \Ifstr{#1}{headings}{% \def\@tempc{\endgroup \def\cleardoublepage{\cleardoublepageusingstyle{#1}}% \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}% \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}% \FamilyKeyStateProcessed \KOMA@kav@xreplacevalue{\KOMAClassFileName}% {cleardoublepage}{#1}% }% }{}% \fi \fi %</class> }% }% \@tempc } \newcommand*{\cleardoubleoddstandardpage}{} \let\cleardoubleoddstandardpage=\cleardoublepage \newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage {\pagestyle{#1}\cleardoubleoddstandardpage}} \newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}} \newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}} \newcommand*{\cleardoubleevenstandardpage}{% \clearpage \if@twoside\ifodd\c@page \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi \fi\fi } \newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage {\pagestyle{#1}\cleardoubleevenstandardpage}} \newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}} \newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}} \newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage} \renewcommand*{\cleardoublepage}{% %<!v4> \expandafter\ifnum \scr@v@is@gt{2.98c}% \cleardoubleemptypage %<!v4> \else %<!v4> \cleardoublestandardpage %<!v4> \fi } \KOMA@kav@add{% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}{% %<!v4> \expandafter\ifnum \scr@v@is@gt{2.98c} empty% %<!v4> \else current\fi } % \end{macrocode} % We expand the value at the end of the class or package. % \begin{macrocode} %<package&extend>\AtEndOfPackage{% %<class>\AtEndOfClass{% \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]% {% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}% \KOMA@kav@removekey{% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}% \KOMA@kav@xadd{% %<package&extend> scrextend.\scr@pkgextension %<class> \KOMAClassFileName }{cleardoublepage}{\@tempa}% } \newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage} \newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage} \newcommand*{\cleardoublepageusingstyle}[1]{\clearpage {\pagestyle{#1}\cleardoublestandardpage}} \newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}} \newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}} % \end{macrocode} % \end{command}^^A \cleardoublepage % \end{command}^^A \cleardoubleevenplainpage,\cleardoubleevenemptypage % \end{command}^^A \cleardoubleevenusingstyle % \end{command}^^A \cleardoubleevenpage,\cleardoubleevenstandardpage % \end{command}^^A \cleardoubleoddemptypage,\cleardoubleoddplainpage % \end{command}^^A \cleardoubleoddusingstyle % \end{command}^^A \cleardoubleoddpage,\cleardoubleoddstandardpage % \end{command}^^A \cleardoubleemptypage,\cleardoubleplainpage % \end{command}^^A \cleardoubleusingstyle % \end{command}^^A \cleardoublestandardpage % \begin{option}{cleardoubleempty,cleardoubleplain,cleardoublestandard} % \changes{v2.8a}{2001/06/18}{added} % \changes{v2.8q}{2001/11/06}{\cs{cleardoublestandardpage} replaced by % \cs{cleardoublestandard}} % \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by % \cs{PackageInfoNoLine}} % \changes{v3.01a}{2008/11/20}{deprecated} % \changes{v3.99}{2022/11/16}{removed from \KOMAScript~4} % \begin{macrocode} %<*class&!v4> \KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty} \KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain} \KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current} %</class&!v4> %</(class|extend)&option> % \end{macrocode} % \end{option}^^A cleardoublestandard,cleardoubleplain,cleardoubleempty % \end{option}^^A cleardoublepage % % % \Finale % \PrintChanges % \endinput % Local Variables: % mode: doctex % ispell-local-dictionary: "en_US" % eval: (flyspell-mode 1) % TeX-master: t % TeX-engine: luatex-dev % eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx")) % End: