From 9b219d1b664067729034647a4b37626cf2bf5e26 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 26 Dec 2013 23:18:36 +0000 Subject: koma-script (26dec13) git-svn-id: svn://tug.org/texlive/trunk@32489 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/koma-script/doc/english/common-21.tex | 765 +++++++++++++++++++++ 1 file changed, 765 insertions(+) create mode 100644 Master/texmf-dist/source/latex/koma-script/doc/english/common-21.tex (limited to 'Master/texmf-dist/source/latex/koma-script/doc/english/common-21.tex') diff --git a/Master/texmf-dist/source/latex/koma-script/doc/english/common-21.tex b/Master/texmf-dist/source/latex/koma-script/doc/english/common-21.tex new file mode 100644 index 00000000000..92397fe2f17 --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/doc/english/common-21.tex @@ -0,0 +1,765 @@ +% ====================================================================== +% common-21.tex +% Copyright (c) Markus Kohm, 2013 +% +% 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.txt. +% ---------------------------------------------------------------------- +% common-21.tex +% Copyright (c) Markus Kohm, 2013 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Text that is common for several chapters of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Absaetze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{common-21.tex} + [$Date: 2013-10-22 11:17:09 +0200 (Di, 22 Okt 2013) $ + KOMA-Script guide (common paragraph: + Manipulation of defined page styles)] +\translator{Markus Kohm\and Jana Schubert} + +% Date version of the translated file: 2013-10-23 + +\makeatletter +\@ifundefined{ifCommonscrlayer}{\newif\ifCommonscrlayer}{}% +\@ifundefined{ifCommoonscrlayer-scrpage}{\expandafter\newif\csname ifCommonscrlayer-scrpage\endcsname}{}% +\@ifundefined{ifIgnoreThis}{\newif\ifIgnoreThis}{}% +\makeatother + +\section{Manipulation of Defined Page Styles} +\label{sec:\csname label@base\endcsname.pagestyle.content} + +\IfCommon{scrlayer}{% + Even though \Package{scrlayer} itself does not define a concrete page style + with content\,---\,the already mentioned page styles \Pagestyle{@everystyle@} + and \Pagestyle{empty} are initially defined without any level and so empty + and without content\,---\,, it provides some options and commands for the + manipulation of the contents.% +} + +\IfCommon{scrlayer-scrpage}{% + \hyperref[sec:scrlayer-scrpage.predefined.pagestyles]% + {Section~\ref*{sec:scrlayer-scrpage.predefined.pagestyles}} + states the predefined defaults for the page style \Pagestyle{scrheadings} + and \Pagestyle{plain.scrheadings} and how they can be adapted. But + information about the generation of, i.\,e., the running heads, the + manipulation of the widths of page head and footer, and how you can get + horizontal lines printed above or below the page head or footer are still + missing. Even though all these are features of package \Package{scrlayer}, + they will be described consecutively, because these basic features of + \Package{scrlayer} are also a fundamental part of the features of + \Package{scrlayer-scrpage}.% +} + +\ifshortversion\IgnoreThistrue\IfCommon{scrlayer-scrpage}{\IgnoreThisfalse}\fi +\ifIgnoreThis %++++++++++++++++++++++++++++++++++++++++ not scrlayer-scrpage + +\else %----------------------------------------------- only scrlayer-scrpage - + +\begin{Declaration} + \Macro{automark}\OParameter{section level of the right mark}% + \Parameter{section level of the left mark}\\ + \Macro{automark*}\OParameter{section level of the right mark}% + \Parameter{section level of the left mark}\\ + \Macro{manualmark}\\ + \Option{automark}\\ + \KOption{autooneside}\PName{simple switch}\\ + \Option{manualmark} +\end{Declaration} +\BeginIndex{Cmd}{automark}% +\BeginIndex{Cmd}{manualmark}% +\BeginIndex{Option}{automark}% +\BeginIndex{Option}{manualmark}% +\BeginIndex{Option}{autooneside~=\PName{simple switch}}% +With the \LaTeX{} standard classes or the \KOMAScript{} classes the decision +whether using automatic running heads\Index{running heads>automatic}, or +static or manual running heads\Index{running heads>static}\Index{running + heads>manual} would be done using either page style \Pagestyle{headings} or +\Pagestyle{myheadings}. Automatic running heads are replications of a +significant, characterizing text snippet of the page mostly inside the page +head, sometimes in the page footer. + +The article classes\OnlyAt{\Class{article}\and \Class{scrartcl}} +\Class{article} or \Class{scrartcl} with page style +\Pagestyle{headings}\IndexPagestyle{headings} use the section heading, which +is either the mandatory or the optional argument of \Macro{section}, for the +automatic running head of single side documents. Double side documents use +this section heading as the \emph{left mark} and at once use the subsection +heading as the \emph{right mark}. The left mark will be printed on left pages, +which founds the name \emph{left mark}. The right mark will be printed on +right\,---\,in single side mode this means every\,---\,page. The classes by +default also remove the right mark whenever they put the section heading into +the left mark. + +The report and book classes \OnlyAt{\Class{report}\and + \Class{scrreprt}\and \Class{book}\and \Class{scrbook}} start one level +higher. So they use the chapter heading to be the right mark in single side +layout. In double side layout they use the chapter heading to be the left mark +and the section heading to be the right mark. + +If you are using \Pagestyle{myheadings} instead of +\Pagestyle{headings}\IndexPagestyle{myheadings}, the marks in the page header +still exists and would be printed same like using \Pagestyle{headings}. But +section commands will not automatically set the marks any longer. So you can +fill them only using the commands \Macro{markright}, \Macro{markleft}, and +\Macro{markboth}, which will be described later in this section. + +This difference between two page styles has been abolished by +\Package{scrpage2} and also by \Package{scrlayer}. Instead of distinguishing +between automatic and manual running head by the selection of a page style, +two new commands, \Macro{automark} and \Macro{manualmark}, are provided. The +command \Macro{manualmark} switches to manual marks and deactivates the +automatic filling of the marks. In contrast to this \Macro{automark} and +\Macro{automark*} can be used to define, which section levels should be used +for the automatic mark filling. The optional argument is the \PName{section + level of the right mark}, the mandatory argument the \PName{section level of + the left mark}. The arguments always should be the name of a section level +like \PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection}, +\PValue{subsubsection}, \PValue{paragraph}, or \PValue{subparagraph}. + +Generally the higher level should be used for the left mark and the lower +level for the right mark. This is only a convention and not a need, but it +makes sense. + +The difference in \Macro{automark} and \Macro{automark*} is, that +\Macro{automark} deletes all prior usages of \Macro{automark} or +\Macro{automark*}, while \Macro{automark*} changes only the behaviour of the +section levels of its arguments. So you can even build more complex cases. + +\begin{Example} + Assume you want the chapter heading to be the running head of even pages + and the section heading to be the running head of odd pages like this is + usual for books. But on odd pages you also want the chapter headings as a + running head as long as the first section appears. To do so, you first have + to load \Package{scrlayer-scrpage} and select page style + \Pagestyle{scrheadings}. So you're document starts with: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} +\end{lstcode} + Next you will setup the chapter heading to be not only the left but also the + right mark: +\begin{lstcode} + \automark[chapter]{chapter} +\end{lstcode} + Then the section heading should also become a right mark: +\begin{lstcode} + \automark*[section]{} +\end{lstcode} + Here the star version is used, because the prior \Macro{automark} command + should be still valid. Additionally the mandatory argument for the + \PName{section level of the left mark} is empty, because this mark should be + unchanged. + + Now you just need some document contents to see a result: +\begin{lstcode} + \usepackage{lipsum} + \begin{document} + \chapter{Chapter Heading} + \lipsum[1-20] + \section{Section Heading} + \lipsum[21-40] + \end{document} +\end{lstcode} + We once again use package \Package{lipsum}\IndexPackage{lipsum} to generate + some dummy text with command \Macro{lipsum}\IndexCmd{lipsum}. The package is + really useful. + + If you'd test the example, you'd see, that the chapter start page does not + have a running head as usual. This is, because it automatically uses the + \Pagestyle{plain} page style \Pagestyle{plain.scrheadings}. Pages~2--4 have + the chapter headings in the running head. After the section heading on + page~4 the running head of page~5 changes into this section heading. From + this page to the end the running head alternates between chapter and section + heading from page to page. +\end{Example} + +Instead of the commands you may also use the options \Option{manualmark} and +\Option{automark} to switch between manual and automatic running +heads. Thereby \Option{automark} always uses the default +\begin{lstcode}[belowskip=\dp\strutbox] + \automark[section]{chapter} +\end{lstcode} +for classes with \Macro{chapter} and +\begin{lstcode}[belowskip=\dp\strutbox] + \automark[subsection]{section} +\end{lstcode} +for classes without \Macro{chapter}. + +But normally in single side mode you do not want that the lower level +influences the right mark, you want the higher level, that +will fill only the left mark in double side layout, to be the running head of +all pages. The default option \Option{autooneside} corresponds to this +behaviour. The option understands the values for simple switches, that can be +found in \autoref{tab:truefalseswitch} on +\autopageref{tab:truefalseswitch}. If you'd deactivate the option, in single +side layout the optional and the obligatory arguments of \Macro{automark} and +\Macro{automark*} will influence the running head again.% +% +\begin{Example} + Assume you have a single sided report but want similar running heads as in + the book example before. The chapter headings should be used as a running + head as long as the first section appears. From the first section on, the + section heading should be used. So we modify the previous example a little + bit: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage[autooneside=false]{scrlayer-scrpage} + \pagestyle{scrheadings} + \automark[section]{chapter} + \usepackage{lipsum} + \begin{document} + \chapter{Chapter Heading} + \lipsum[1-20] + \section{Section Heading} + \lipsum[21-40] + \end{document} +\end{lstcode} + You can see, that we do not need a \Macro{automark*} command in this + case. Please try the example also with \Option{autooneside} set to + \PValue{true} or remove the option and its value. You should find a + difference at the running head in the pages' head from page~4 on. +\end{Example} + +Please note\textnote{Attention!}, only loading the package does not have +any effect on the fact whether automatic or manual running heads are used or +what kind of section headings do fill up the marks. Only using an explicit +option \Option{automark} or \Option{manualmark} or one of the commands +\Macro{automark} or \Macro{manualmark} can reach a well defined state.% +\EndIndex{Option}{autooneside~=\PName{simple switch}}% +\EndIndex{Option}{manualmark}% +\EndIndex{Option}{automark}% +\EndIndex{Cmd}{manualmark}% +\EndIndex{Cmd}{automark}% +\fi % ******************************************** End only scrlayer-scrpage * + +\ifshortversion\IgnoreThistrue\IfCommon{scrlayer}{\IgnoreThisfalse}\fi +\ifIgnoreThis %++++++++++++++++++++++++++++++++++++++++++++++++ not scrlayer + +\else %------------------------------------------------------- only scrlayer - + +\begin{Declaration} + \KOption{draft}\PName{simple switch} +\end{Declaration} +\BeginIndex{Option}{draft~=\PName{simple switch}}% +This \KOMAScript{} option understands the values for simple switches, that are +shown in \autoref{tab:truefalseswitch} on \autopageref{tab:truefalseswitch}. If +the option is active, all elements of the page styles will also show dimension +lines. This might be useful while draft editing. If the option has been set as +a global option (see the optional argument of \Macro{documentclass}), but you +do not want the dimension lines, you can deactivate them for the package only +using \OptionValue{draft}{false} as an optional argument of \Macro{usepackage} +while loading the package.% +\EndIndex{Option}{draft~=\PName{Ein-Aus-Wert}}% + +\begin{Declaration} + \Macro{MakeMarkcase}\Parameter{string} +\end{Declaration} +\BeginIndex{Cmd}{MakeMarkcase}% +The automatic running head and only this uses \Macro{MakeMarkcase} for its +output. If the command has not been defined, e.\,g., by the class, while +loading \Package{scrlayer}, it would be defined with the default of outputting +the argument \PName{string} without changes. But the default can be change +either redefining \Macro{MakeMarkcase} or using option \Option{markcase}, that +\ifshortversion has been described in +\autoref{sec:scrlayer-scrpage.pagestyle.content}% +\else will be described next% +\fi% +. Depending on the setting the argument could, e.\,g., be converted into upper +or lower cases. +% +\EndIndex{Cmd}{MakeMarkcase}% +\fi %***************************************************** End only scrlayer * + +\ifshortversion\IgnoreThistrue\IfCommon{scrlayer-scrpage}{\IgnoreThisfalse}\fi +\ifIgnoreThis %++++++++++++++++++++++++++++++++++++++++ not scrlayer-scrpage + +\else %----------------------------------------------- only scrlayer-scrpage - +\begin{Declaration} + \KOption{markcase}\PName{Wert} +\end{Declaration} +\BeginIndex{Option}{markcase~=\PName{Wert}}% +As already mentioned with \Package{scrlayer} you may switch between manual and +automatic running heads. Using automatic running heads the corresponding marks +will be filled by the section heading commands. Some culture areas do convert +the running heads into upper case letters in opposite to the German +typographic habit. The \LaTeX{} standard classes do so by default. Package +\Package{scrlayer} optionally provides this too. Therefor you'd use option +\OptionValue{markcase}{upper} which results in a redefinition of +\Macro{MakeMarkcase}\IndexCmd[indexmain]{MakeMarkcase}, a command, that is +used by \Package{scrlayer} for automatic running heads. + +Unfortunately \LaTeX's command for upper case letter typesetting, +\Macro{MakeUppercase}\IndexCmd{MakeUppercase} results in an very inadequate +typesetting, because it neither uses letter spacing nor does it space +balancing. One reason for this behaviour might be, that a glyph analyzing +would be needed, to incorporate the letter shapes and their combination while +space balancing. Because of this \KOMAScript{} author suggests to abstain from +upper case letter typesetting for running heads. This could be achieved using +\OptionValue{markcase}{used}. Nevertheless, some classes would add +\Macro{MarkUppercase} or even \TeX{} command \Macro{uppercase} into the +running heads. For such cases option \OptionValue{markcase}{noupper} can be +used. This will also deactivate \Macro{MakeUppercase} and \Macro{uppercase} +inside the running heads. + +You can find all valid values for \Option{markcase} in +\autoref{tab:scrlayer-scrpage.markcase}.% +% +\begin{table} + \centering + \caption[Possible values for option \Option{markcase}]{Possible values for + option \Option{markcase} to select upper/lower case letter typesetting in + automatic running heads}% + \label{tab:scrlayer-scrpage.markcase}% + \begin{desctabular} + \pventry{lower}{\IndexOption{markcase~=\PValue{lower}}% + redefines \Macro{MakeMarkcase} to convert the automatic running heads + into lower case letters using \Macro{MakeLowercase} + (lower case typesetting).% + }% + \pventry{upper}{\IndexOption{markcase~=\PValue{upper}}% + redefines \Macro{MakeMarkcase} to convert the automatic running heads + into upper case letters using \Macro{MakeUppercase} + (upper case typesetting).% + }% + \pventry{used}{\IndexOption{markcase~=\PValue{used}}% + redefines \Macro{MakeMarkcase} to use automatic running heads without + any case changes.% + }% + \entry{\PValue{ignoreuppercase}, \PValue{nouppercase}, + \PValue{ignoreupper}, + \PValue{noupper}}{\IndexOption{markcase~=\PValue{noupper}}% + redefines not only \Macro{MakeMarkcase} but also locally to the running + heads \Macro{MakeUppercase} and \Macro{uppercase} to leave the automatic + running heads unchanged.% + }% + \end{desctabular} +\end{table} +% +\EndIndex{Option}{markcase~=\PName{Wert}}% + +\begin{Declaration} + \Macro{leftmark}\\ + \Macro{rightmark}\\ + \Macro{headmark}\\ + \Macro{pagemark} +\end{Declaration} +\BeginIndex{Cmd}{leftmark}% +\BeginIndex{Cmd}{rightmark}% +\BeginIndex{Cmd}{headmark}% +\BeginIndex{Cmd}{pagemark}% +If you want to differ from the predefined page styles, usually you need to +decide, where to place the marks' contents. With \Macro{leftmark} you can state +the contents of the left mark. + +Similar you can use \Macro{rightmark} to state the contents of the right +mark. For more information about some intricacies of this see the further +description of \Macro{rightmark} in \autoref{sec:maincls-experts.addInfos}, +\autopageref{desc:maincls-experts.cmd.rightmark}. + +Somehow easier would be usage of \Macro{headmark}. This extension of +\Package{scrlayer} aliases either \Macro{leftmark} or \Macro{rightmark} +depending on whether the current page is even or odd. + +Strictly thought command \Macro{pagemark} is not involved by \TeX's mark +mechanism. It is only used to output a formatted page number. +\BeginIndex{FontElement}{pagenumber}% +The font of element +\FontElement{pagenumber}\important{\FontElement{pagenumber}} will be used for +the output. This can be changed using command \Macro{setkomafont} or +\Macro{addtokomafont} (see also \autoref{sec:maincls.textmarkup}, +\autopageref{desc:maincls.cmd.setkomafont}).% +\EndIndex{FontElement}{pagenumber}% +% +\begin{Example} + Assume you want to use a left aligned running head and right aligned page + number in the head of the pages of a document in single side layout. The + following minimal but working examples would do so: +\begin{lstcode} + \documentclass{scrreprt} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \ihead{\headmark} + \ohead[\pagemark]{\pagemark} + \chead{} + \cfoot[]{} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + Here package \Package{blindtext}\IndexPackage{blindtext} with its command + \Macro{blinddocument}\IndexCmd{blinddocument} has been used to easily + generate content for an example document. + + Commands \Macro{ihead} and \Macro{ohead} have been used to place the wanted + marks. Although the page mark will be place not only to pages in page style + \Pagestyle{scrheadings} but using the optional argument also to pages in + page style \Pagestyle{plain.scrheadings}. + + Because of both page styles already have marks in the middle of the page + head and page foot, those elements will be cleared using \Macro{chead} and + \Macro{cfoot} with empty arguments. Alternatively you'd use + \Macro{clearpairofpagestyles} \emph{before} \Macro{ihead}. You will find a + description of this command in + \autoref{sec:scrlayer-scrpage.pagestyle.pairs}. +\end{Example} + +Please note\textnote{Attention!}, that the empty optional argument of +\Macro{cfoot} in the example above is not the same like omitting the optional +argument. Please try it out and have a look at the difference in the footer of +the first page.% +% +\EndIndex{Cmd}{pagemark}% +\EndIndex{Cmd}{headmark}% +\EndIndex{Cmd}{rightmark}% +\EndIndex{Cmd}{leftmark}% + +\begin{Declaration} + \Macro{partmarkformat}\\ + \Macro{chaptermarkformat}\\ + \Macro{sectionmarkformat}\\ + \Macro{subsectionmarkformat}\\ + \Macro{subsubsectionmarkformat}\\ + \Macro{paragraphmarkformat}\\ + \Macro{subparagraphmarkformat} +\end{Declaration} +\BeginIndex{Cmd}{partmarkformat}% +\BeginIndex{Cmd}{chaptermarkformat}% +\BeginIndex{Cmd}{sectionmarkformat}% +\BeginIndex{Cmd}{subsectionmarkformat}% +\BeginIndex{Cmd}{subsubsectionmarkformat}% +\BeginIndex{Cmd}{paragraphmarkformat}% +\BeginIndex{Cmd}{subparagraphmarkformat}% +Usually the \KOMAScript{} classes and package \Package{scrlayer} use these +commands internally to bring the section numbers into wanted form and +additionally they support the \Macro{autodot} mechanism of the \KOMAScript{} +classes. If wanted these commands may be redefined to get another form of +section numbers.% +% +\begin{Example} + Assume you do not want section numbers but section heading text only in the + running head. So: +\begin{lstcode} + \renewcommand*{\sectionmarkformat}{} +\end{lstcode} + would be a simple solution for this. +\end{Example} +% +\EndIndex{Cmd}{subparagraphmarkformat}% +\EndIndex{Cmd}{paragraphmarkformat}% +\EndIndex{Cmd}{subsubsectionmarkformat}% +\EndIndex{Cmd}{subsectionmarkformat}% +\EndIndex{Cmd}{sectionmarkformat}% +\EndIndex{Cmd}{chaptermarkformat}% +\EndIndex{Cmd}{partmarkformat}% + +\begin{Declaration} + \Macro{partmark}\Parameter{Text}\\ + \Macro{chaptermark}\Parameter{Text}\\ + \Macro{sectionmark}\Parameter{Text}\\ + \Macro{subsectionmark}\Parameter{Text}\\ + \Macro{subsubsectionmark}\Parameter{Text}\\ + \Macro{paragraphmark}\Parameter{Text}\\ + \Macro{subparagraphmark}\Parameter{Text} +\end{Declaration} +\BeginIndex{Cmd}{partmark}% +\BeginIndex{Cmd}{chaptermark}% +\BeginIndex{Cmd}{sectionmark}% +\BeginIndex{Cmd}{subsectionmark}% +\BeginIndex{Cmd}{subsubsectionmark}% +\BeginIndex{Cmd}{paragraphmark}% +\BeginIndex{Cmd}{subparagraphmark}% +Most classes use these commands to setup marks corresponding to the +section commands. Thereby the only argument is the text without the number of +the section heading, that should be used for the running head. For the number +simply the number of the current section level will be used, if the current +level uses numbers. + +If users redefine these commands, they should\textnote{Attention!} take care +to also use the counter \Counter{secnumdepth} for the test whether or not the +section level should output a number, even in the case the user +does not change counter \Counter{secnumdepth} himself, because packages and +classes may do so locally and rely on correct handling of +\Counter{secnumdepth}. + +However, package \Package{scrlayer} redefines these commands whenever you use +\Macro{automark} or \Macro{manualmark} or the corresponding options, to +activate or deactivate the wanted running heads.% +% +\EndIndex{Cmd}{subparagraphmark}% +\EndIndex{Cmd}{paragraphmark}% +\EndIndex{Cmd}{subsubsectionmark}% +\EndIndex{Cmd}{subsectionmark}% +\EndIndex{Cmd}{sectionmark}% +\EndIndex{Cmd}{chaptermark}% +\EndIndex{Cmd}{partmark}% + +\begin{Declaration} + \Macro{markleft}\Parameter{left mark}\\ + \Macro{markright}\Parameter{right mark}\\ + \Macro{markboth}\Parameter{left mark}\Parameter{right mark} +\end{Declaration} +\BeginIndex{Cmd}{markleft}% +\BeginIndex{Cmd}{markright}% +\BeginIndex{Cmd}{markboth}% +Independent of whether currently manual or automatic running heads are active, +you may change the contents of the \PName{left mark} or the \PName{right mark} +at any time using these commands. You should note, that the resulting contents +of \Macro{leftmark}\IndexCmd{leftmark} is the \PName{left + mark} of the last \Macro{markleft} or \Macro{markboth} command of the +current page. In opposite to this the resulting contents of +\Macro{rightmark}\IndexCmd{rightmark} is the \PName{right mark} of the first +\Macro{rightmark} or \Macro{markboth} command of the current page. + +If you are using manual running heads, the marks will stay valid until one of +the corresponding commands will be used again. If you are using automatic +running heads the marks can loose their validity with the next section heading +depending on the configuration of the automatism. + +You may also use these commands together with the star versions of the section +commands.% +% +\begin{Example} + Assume you are using a preface with several pages just before the table of + contents, that should not have an entry at the table of contents + itself. Because of using a separation line at the page head, you want also a + running head for this preface: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Preface} + \markboth{Preface}{Preface} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + First of all this seems to produce the wanted result. But have a closer + look: In difference to the other running heads ``\texttt{Preface}'' is not in + upper case letters. But you can fix this easily: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \chapter*{Preface} + \markboth{\MakeMarkcase{Preface}}{\MakeMarkcase{Preface}} + \blindtext[20] + \tableofcontents + \blinddocument + \end{document} +\end{lstcode} + Using command \Macro{MakeMarkcase} results in getting the same letter case + as for automatic running heads. + + Now, let's move command \Macro{tableofcontents} in front of the + preface. Let's remove the \Macro{markboth} command too. You'll realise, that + the preface now has the running head ``\texttt{CONTENTS}''. This is because + of a quirk of \Macro{chapter*} (see also \autoref{sec:maincls.structure} on + \autopageref{desc:maincls.cmd.chapter*}). If in such cases the running head + should be removed, \Macro{markboth} with two empty arguments would be + useful: +\begin{lstcode} + \documentclass[headsepline]{book} + \usepackage{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{blindtext} + \begin{document} + \tableofcontents + \chapter*{Preface} + \markboth{}{} + \blindtext[20] + \blinddocument + \end{document} +\end{lstcode} +\end{Example} +% +\EndIndex{Cmd}{markboth}% +\EndIndex{Cmd}{markright}% +\EndIndex{Cmd}{markleft}% + +\fi %********************************************* End only scrlayer-scrpage * + + +\ifshortversion\IgnoreThistrue\IfCommon{scrlayer}{\IgnoreThisfalse}\fi +\ifIgnoreThis %++++++++++++++++++++++++++++++++++++++++++++++++ not scrlayer + +\else %------------------------------------------------------- only scrlayer - + +\begin{Declaration} + \Macro{GenericMarkFormat}\Parameter{name of the section level} +\end{Declaration} +\BeginIndex{Cmd}{GenericMarkFormat}% +At the running head this command will be used by default for the formatting of +all section numbers below the subsection and with classes without +\Macro{chapter} also for the section level and the subsection level, if the +mark commands for those numbers have not been defined before loading +\Package{scrlayer}. Thereby the package uses \Macro{@seccntmarkformat} if such +a command has been defined, like the \KOMAScript{} classes do. Otherwise +\Macro{@seccntformat} will be used, which is provided by the \LaTeX{} +kernel. The expected, mandatory argument of the command is the \PName{name of + a section level}, i.\,e., \PValue{chapter} or \PValue{section} +\emph{without} the backslash prefix. + +You can change the default formatting of the numbers, that use this command, +by redefining only this single command. Classes can change the default +formatting also by defining this command.% +% +\begin{Example} + Assume you want the section numbers of all levels at the running head of + an article to be printed in white colour inside a black coloured box. Using + standard \LaTeX{} \Class{article} class, package \Package{scrlayer} defines + the number mark commands \Macro{sectionmarkformat} and + \Macro{subsectionmarkformat} using \Macro{GenericMarkFormat}. So you need to + redefine only this single command: +\begin{lstcode} + \documentclass{article} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{\strut~\textcolor{white}{#1}~}} + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}\enskip} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} + The colour has been done using package + \Package{xcolor}\IndexPackage{xcolor}. See the package manual for more + information about this. Additionally a not visible strut has been + used. Every complete \LaTeX{} introduction should explain the related + command \Macro{strut}. A helper macro \Macro{numberbox} has been defined for + the formatting of the number within a box. In the redefinition of + \Macro{GenericMarkFormat} this has been prefixed by + \Macro{protect} to protect it from expansion. This is necessary because + otherwise the upper case letter conversion of \Macro{MakeUppercase} that + will be used for the running head, would result in an ask for colours + ``\texttt{BLACK}'' and ``\texttt{WHITE}'' instead of ``\texttt{black}'' and + ``\texttt{white}'' and those colours are undefined. Alternatively you may + define \Macro{numberbox} using \Macro{DeclareRobustCommand*} instead of + \Macro{newcommand*} and then omit \Macro{protect} (see + \cite{latex:clsguide}). + + If you'd do the same with a \KOMAScript{} class or with one of the \LaTeX{} + standard classes \Class{book} or \Class{report}, you'd additionally have to + redefine \Macro{sectionmarkformat} and \Macro{subsectionmarkformat} + respectively \Macro{chaptermarkformat} and \Macro{sectionmarkformat} too, + because then these would not have been defined using + \Macro{GenericMarkFormat}: +\begin{lstcode} + \documentclass{scrbook} + \usepackage{blindtext} + \usepackage[automark]{scrlayer-scrpage} + \pagestyle{scrheadings} + \usepackage{xcolor} + \newcommand*{\numberbox}[1]{% + \colorbox{black}{\strut~\textcolor{white}{#1}~}} + \renewcommand*{\GenericMarkFormat}[1]{% + \protect\numberbox{\csname the#1\endcsname}\enskip} + \renewcommand*{\chaptermarkformat}{\GenericMarkFormat{chapter}} + \renewcommand*{\sectionmarkformat}{\GenericMarkFormat{section}} + \begin{document} + \blinddocument + \end{document} +\end{lstcode} +\end{Example} +% +\EndIndex{Cmd}{GenericMarkFormat}% + +\begin{Declaration} + \Macro{@mkleft}\Parameter{left mark}\\ + \Macro{@mkright}\Parameter{right mark}\\ + \Macro{@mkdouble}\Parameter{mark}\\ + \Macro{@mkboth}\Parameter{left mark}\Parameter{right mark} +\end{Declaration} +\BeginIndex{Cmd}{@mkleft}% +\BeginIndex{Cmd}{@mkright}% +\BeginIndex{Cmd}{@mkdouble}% +\BeginIndex{Cmd}{@mkboth}% +Sometimes inside classes and packages the marks for running heads should be +filled up only if automatic running heads are active (see option +\Option{automark} and command \Macro{automark} on +\autopageref{desc:scrlayer-scrpage.cmd.automark}). In the \LaTeX{} standard +classes only \Macro{@mkboth} has been used for this. This command is either +\Macro{@gobbletwo}, that simply destroys both mandatory arguments, or +\Macro{markboth}, a command that fills up the left and \PValue{left mark} and +the \PValue{right mark}. Packages like \Package{babel} also change +\Macro{\@mkboth}, i.\,e., to add language switching to the running head. + +But if a class or package author only wants to change either the \PName{left + mark} or the \PName{right mark} without the other one, a proper command is +missing. Package \Package{scrlayer} itself needs such commands for the +implementation of all cases of automatic running heads. So if command +\Macro{@mkleft} to fill up only the left mark or \Macro{@mkright} to fill up +only the right mark or \Macro{@mkdouble} to fill up both marks with the same +content is undefined while loading \Package{scrlayer}, the package will define +them. Thereby the actual definition of \Macro{@mkboth} will be used as an +indicator whether or not automatic running heads should be used. The new +commands will full up the marks only in the case of automatic running heads. + +Class and package authors can use these commands too, if they want to fill up +only one of the marks or both marks with the same content but only if +automatic running heads are activated. This condition is also the difference +to the commands \Macro{markleft}, \Macro{markright}, and \Macro{markboth}.% +\EndIndex{Cmd}{@mkboth}% +\EndIndex{Cmd}{@mkdouble}% +\EndIndex{Cmd}{@mkright}% +\EndIndex{Cmd}{@mkleft}% + + +\fi %***************************************************** End only scrlayer * + + +\ifshortversion% +\IfCommon{scrlayer}{% + For more information about manipulation of the contents of page styles see + also \autoref{sec:scrlayer-scrpage.pagestyle.content} from + \autopageref{sec:scrlayer-scrpage.pagestyle.content}.% +}% +\fi + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "en_GB" +%%% TeX-master: "scrlayer-de.tex" +%%% TeX-PDF-mode: t +%%% End: -- cgit v1.2.3