summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/doc/english/common-pagestylemanipulation.tex
blob: 8c85bf399fc275c4d5f7058430933347bff979c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
% ======================================================================
% common-pagestylemanipulation.tex
% Copyright (c) Markus Kohm, 2013-2017
%
% 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-pagestylemanipulation.tex
% Copyright (c) Markus Kohm, 2013-2017
%
% 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-pagestylemanipulation.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: 2015-06-18

\section{Manipulation of Defined Page Styles}
\seclabel{pagestyle.content}
\BeginIndexGroup
\BeginIndex{}{page>style}

\IfThisCommonLabelBase{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.%
}{%
  \IfThisCommonLabelBase{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}.%
  }{%
    \IfThisCommonLabelBase{scrlayer-scrpage-experts}{%
      This section is an add-on to
      \autoref{sec:scrlayer.pagestyle.content}. It describes features that may
      be to complicated for beginners.%
    }{\InternalCommonFileUsageError}%
  }%
}


\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iffalse}{%
  \csname iftrue\endcsname}%
  \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}%
    \OptionVName{autooneside}{simple switch}%
    \Option{manualmark}
  \end{Declaration}
  \IfThisCommonLabelBase{scrlayer-scrpage}{%
    \begin{Explain}
      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
      \DescRef{maincls.cmd.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\important{%
        \DescRef{\ThisCommonLabelBase.cmd.markright}\\
        \DescRef{\ThisCommonLabelBase.cmd.markboth}}%
      you can fill them only using the commands
      \DescRef{\ThisCommonLabelBase.cmd.markright} and
      \DescRef{\ThisCommonLabelBase.cmd.markboth}, which will be described
      later in this section.
    \end{Explain}\par
  }{%
    \IfThisCommonLabelBase{scrlayer}{%
      In common classes the decision for a page style\,---\,generally
      \PageStyle{headings} and \PageStyle{myheading}\,---\,is also a decision
      to use either automatic or manual running heads. %
    }{\InternalCommonFileUsageError}%
  }%
  This difference between those 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.

  Please note\textnote{Attention} that not every class provides running heads
  for every section level. For example the standard classes never setup the
  running head of \DescRef{maincls.cmd.part}. The \KOMAScript{} classes
  provide running heads for every section level.

  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.
  \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname
    iffalse\endcsname}%
    \begin{Example}
      \phantomsection\xmpllabel{mark}%
      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}
  \fi

  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}
  \automark[section]{chapter}
\end{lstcode}
  for classes with \DescRef{maincls.cmd.chapter} and
\begin{lstcode}
  \automark[subsection]{section}
\end{lstcode}
  for classes without \DescRef{maincls.cmd.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.%
  \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname
    iffalse\endcsname}%
    \begin{Example}
      \phantomsection\xmpllabel{mark.oneside}%
      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}
  \fi

  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.%
  \EndIndexGroup


  \begin{Declaration}
    \OptionVName{draft}{simple switch}
  \end{Declaration}
  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.%
  \IfThisCommonLabelBase{scrlayer-scrpage}{%
    If the option has been set as a global option (see the optional argument
    of \DescRef{\LabelBase.cmd.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
    \DescRef{\LabelBase.cmd.usepackage} while loading the package.%
  }{}%
  \EndIndexGroup

  \begin{Declaration}
    \Macro{MakeMarkcase}\Parameter{string}
  \end{Declaration}
  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
  \DescRef{\LabelBase.option.markcase}, that will be described next.
  Depending on the setting the argument could, e.\,g., be converted into upper
  or lower cases.
  % 
  \EndIndexGroup


  \begin{Declaration}
    \OptionVName{markcase}{Wert}
  \end{Declaration}
  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
  \DescRef{scrlayer.cmd.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}%
  \IfThisCommonLabelBase{scrlayer-scrpage}{}{,
    \autopageref{tab:scrlayer-scrpage.markcase}}.%
  \IfThisCommonLabelBase{scrlayer-scrpage}{%
    \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:\ThisCommonLabelBase.markcase}%
      \begin{desctabular}
        \pventry{lower}{\IndexOption[indexmain]{markcase~=lower}%
          redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the
          automatic running heads into lower case letters using
          \Macro{MakeLowercase} (lower case typesetting).%
        }%
        \pventry{upper}{\IndexOption[indexmain]{markcase~=upper}%
          redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the
          automatic running heads into upper case letters using
          \Macro{MakeUppercase} (upper case typesetting).%
        }%
        \pventry{used}{\IndexOption[indexmain]{markcase~=used}%
          redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to use automatic
          running heads without any case changes.%
        }%
        \entry{\PValue{ignoreuppercase}, \PValue{nouppercase},
          \PValue{ignoreupper},
          \PValue{noupper}}{\IndexOption[indexmain]{markcase~=noupper}%
          redefines not only \DescRef{\LabelBase.cmd.MakeMarkcase} but also
          locally to the running heads \Macro{MakeUppercase} and
          \Macro{uppercase} to leave the automatic running heads unchanged.%
        }%
      \end{desctabular}
    \end{table}
  }{}%
  \EndIndexGroup

  \begin{Declaration}
    \Macro{leftmark}%
    \Macro{rightmark}%
    \Macro{headmark}%
    \Macro{pagemark}
  \end{Declaration}
  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 \DescRef{maincls-experts.cmd.rightmark} in
  \autoref{sec:maincls-experts.addInfos},
  \DescPageRef{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}\LabelFontElement{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
  \DescRef{maincls.cmd.addtokomafont} (see also
  \autoref{sec:maincls.textmarkup}, \DescPageRef{maincls.cmd.setkomafont}).%
  \EndIndex{FontElement}{pagenumber}%
  \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
    \par %
    If you are interested in an example about usage of commands
    \Macro{headmark} and \Macro{pagemark}, have a look into
    \autoref{sec:scrlayer-scrpage.pagestyle.content},
    \PageRefxmpl{scrlayer-scrpage.cmd.headmark}. The package
    \Package{scrlayer-scrpage} internally uses a lot of such features of
    \Package{scrlayer}.%
    \csname iffalse\endcsname}%
    \begin{Example}
      \phantomsection\xmpllabel{cmd.headmark}%
      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 \DescRef{scrlayer-scrpage.cmd.ihead}\IndexCmd{ihead} and
      \DescRef{scrlayer-scrpage.cmd.ohead}\IndexCmd{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
      \DescRef{scrlayer-scrpage.cmd.chead} and
      \DescRef{scrlayer-scrpage.cmd.cfoot}\IndexCmd{cfoot} with empty
      arguments. Alternatively you'd use
      \DescRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles}
      \IndexCmd{clearpairofpagestyles} \emph{before}
      \DescRef{scrlayer-scrpage.cmd.ihead}. You will find a description of
      this command in \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs}.
    \end{Example}

    Please note\textnote{Attention!}, that the empty optional argument of
    \DescRef{scrlayer-scrpage.cmd.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.%
  \fi

  If all the mark features described above are not sufficient, experienced
  users can find more of them on \IfThisCommonLabelBase{scrlayer-scrpage}{%
    \DescPageRef{scrlayer-scrpage-experts.cmd.righttopmark}}{%
    \DescPageRef{scrlayer.cmd.righttopmark}}. For example, you can find there
  \DescRef{scrlayer-scrpage-experts.cmd.leftfirstmark} and
  \DescRef{scrlayer-scrpage-experts.cmd.rightbotmark}, which seem to be useful
  for lexicon like documents.%
  \EndIndexGroup


  \begin{Declaration}
    \Macro{partmarkformat}%
    \Macro{chaptermarkformat}%
    \Macro{sectionmarkformat}%
    \Macro{subsectionmarkformat}%
    \Macro{subsubsectionmarkformat}%
    \Macro{paragraphmarkformat}%
    \Macro{subparagraphmarkformat}
  \end{Declaration}
  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 \DescRef{maincls.cmd.autodot} mechanism of the
  \KOMAScript{} classes. If wanted these commands may be redefined to get
  another form of section numbers.%
  \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
    \ See the example in \autoref{sec:scrlayer-scrpage.pagestyle.content},
    \PageRefxmpl{scrlayer-scrpage.cmd.sectionmarkformat} for more
    information.%
    \csname iffalse\endcsname%
  }%
    \begin{Example}
      \phantomsection\xmpllabel{cmd.sectionmarkformat}%
      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}
  \fi
  % 
  \EndIndexGroup


  \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}
  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.

  Unfortunately\textnote{Attention!}, not all classes use such a command for
  every section level. The standard classes for example do not call
  \Macro{partmark}. The \KOMAScript{} classes support such commands for all
  section levels and therefore also use \Macro{partmark}.

  If users redefine these commands, they should\textnote{Attention!} take care
  to also use the counter \DescRef{maincls.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 \DescRef{maincls.counter.secnumdepth}
  himself, because packages and classes may do so locally and rely on correct
  handling of \DescRef{maincls.counter.secnumdepth}.

  However, package \Package{scrlayer} redefines these commands whenever you
  use \DescRef{scrlayer.cmd.automark} or \DescRef{scrlayer.cmd.manualmark} or
  the corresponding options, to activate or deactivate the wanted running
  heads.%
  \EndIndexGroup


  \begin{Declaration}
    \Macro{markleft}\Parameter{left mark}%
    \Macro{markright}\Parameter{right mark}%
    \Macro{markboth}\Parameter{left mark}\Parameter{right mark}
  \end{Declaration}
  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.%
  \IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
    \ You can find a detailed example about usage of \Macro{markboth} with
    \Package{scrlayer-scrpage} in
    \autoref{sec:scrlayer-scrpage.pagestyle.content},
    \PageRefxmpl{scrlayer-scrpage.cmd.markboth}. Package
    \Package{scrlayer-scrpage} is a kind of extension of \Package{scrlayer}.%
    \csname iffalse\endcsname%
  }%
    \begin{Example}
      \phantomsection\xmpllabel{cmd.markboth}%
      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 \DescRef{\LabelBase.cmd.MakeMarkcase} results in getting
      the same letter case as for automatic running heads.

      Now, let's move command \DescRef{maincls.cmd.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
      \DescRef{maincls.cmd.chapter*} (see also \autoref{sec:maincls.structure}
      on \DescPageRef{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}
  \fi
  % 
  \EndIndexGroup
\fi


\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname}
  \begin{Declaration}
    \Macro{GenericMarkFormat}\Parameter{name of the section level}
  \end{Declaration}
  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
  \DescRef{maincls.cmd.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.%
  \IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iftrue}{%
    \par %
    A detailed example about cooperation of command \Macro{GenericMarkFormat}
    and the commands \DescRef{\ThisCommonLabelBase.cmd.sectionmarkformat} and
    \DescRef{\ThisCommonLabelBase.cmd.subsectionmarkformat} that are described
    at \DescPageRef{\ThisCommonLabelBase.cmd.chaptermark} is shown in
    \autoref{sec:scrlayer-scrpage-experts.pagestyle.content},
    \PageRefxmpl{scrlayer-scrpage-experts.cmd.GenericMarkFormat}.%
    \csname iffalse\endcsname}%
    \begin{Example}
       \phantomsection
      \xmpllabel{cmd.GenericMarkFormat}%
      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 \DescRef{scrlayer.cmd.sectionmarkformat}%
      \IndexCmd{sectionmarkformat}%
      \important{\DescRef{scrlayer.cmd.sectionmarkformat}} and
      \DescRef{scrlayer.cmd.subsectionmarkformat}%
      \IndexCmd{subsectionmarkformat}%
      \important{\DescRef{scrlayer.cmd.subsectionmarkformat}} respectively
      \DescRef{scrlayer.cmd.chaptermarkformat}%
      \IndexCmd{chaptermarkformat}%
      \important{\DescRef{scrlayer.cmd.chaptermarkformat}} and
      \DescRef{scrlayer.cmd.sectionmarkformat}%
      \IndexCmd{sectionmarkformat}%
      \important{\DescRef{scrlayer.cmd.sectionmarkformat}} and 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}
  \fi
  % 
  \EndIndexGroup


  \begin{Declaration}
    \Macro{righttopmark}%
    \Macro{rightbotmark}%
    \Macro{rightfirstmark}%
    \Macro{lefttopmark}%
    \Macro{leftbotmark}%
    \Macro{leftfirstmark}
  \end{Declaration}
  For page styles \LaTeX\ChangedAt{v3.16}{\Package{scrlayer}} uses a bipartite
  \TeX{} mark. Running heads can use the left part of that mark by
  \DescRef{scrlayer.cmd.leftmark}%
  \important{\DescRef{scrlayer.cmd.leftmark}}\IndexCmd{leftmark} and the right
  part by \DescRef{scrlayer.cmd.rightmark}%
  \important{\DescRef{scrlayer.cmd.rightmark}}\IndexCmd{rightmark}. Indeed, it
  seems that it was suggested to use \DescRef{scrlayer.cmd.leftmark} for the
  running head of left, even pages and \DescRef{scrlayer.cmd.rightmark} for
  the running head of right, odd pages of double-sided documents. Within
  single-sided layouts the standard classes even do not set the left part of
  the mark.

  \TeX{} itself knows three alternatives to make usage of a mark. The
  \Macro{botmark} is the last valid mark of the page that has been build
  last. If there has not been set any mark on the page, it is the last mark of
  the already shipped out pages. \LaTeX{} command
  \DescRef{scrlayer.cmd.leftmark} uses exactly this mark. So it shows the left
  part of the last mark of the page. This is the same like
  \Macro{leftbotmark}. In opposite to this \Macro{rightbotmark} shows the
  right part of that mark.

  \Macro{firstmark} is the first mark of the page that has been build
  last. This means the first mark, that has been set on the page. If there has
  not been set any mark on the page, this is the last mark of the already
  shipped out pages. \LaTeX{} command \DescRef{scrlayer.cmd.rightmark} uses
  exaclty this mark. So it shows the right part of the first mark of the
  page. This is the same like \Macro{rightfirstmark}. In opposite to this
  \Macro{leftfirstmark} shows the left part of that mark.

  \Macro{topmark} is the content of \Macro{botmark} before building the
  current page. \LaTeX{} itself does not use it. Nevertheless,
  \Package{scrlayer} provides \Macro{lefttopmark} to show the left part of it
  and \Macro{righttopmark} to show the right part of it.

  Note\textnote{Attention!} that the left part and the right part of the mark
  can be made all together only. Even if you use
  \DescRef{scrlayer.cmd.markright}\IndexCmd{markright} to change only the
  right part, the left part will be made again (unchanged). Accordingly in
  double-side mode using page style
  \PageStyle{headings\important{\PageStyle{headings}}\IndexPagestyle{headings}}
  the higher section levels always make both parts. For example
  \DescRef{scrlayer.cmd.chaptermark} uses \DescRef{scrlayer.cmd.markboth} with
  an empty right argument in this case. This is the reason why
  \DescRef{scrlayer.cmd.rightmark} or \Macro{rightfirstmark} always shows an
  empty value on pages with chapter beginnings, even if there was a
  \DescRef{scrlayer.cmd.sectionmark} or \DescRef{maincls.cmd.section} on the
  same page to make the right part of the mark.

  Please note\textnote{Attention!} that using any of these commands to show
  the left or right part of the mark as part of the page content could have
  unexpected results. They are recommended to be used in the head or foot of a
  page style only. So with \Package{scrlayer} they should be part of the
  contents of a layer. But it does not matter whether or not a layer is
  restricted to the background or the foreground. Both kind of layers are
  shipped out after building the current page.

  If you need more information about the mark mechanism of \TeX, please have a
  look at \cite[chapter~23]{knuth:texbook}. You will find, that marks are an
  issue for real experts. So if the explanation above was at least more
  confusing than illuminative: Please don't worry.%
  \EndIndexGroup


  \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}
  Sometimes inside classes and packages the marks for running heads should be
  filled up only if automatic running heads are active (see option
  \DescRef{scrlayer.option.automark} and command
  \DescRef{scrlayer.cmd.automark} on
  \DescPageRef{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
  \DescRef{scrlayer.cmd.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}.%
  \EndIndexGroup
\fi

\IfThisCommonLabelBase{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}.%
}{}%
\EndIndexGroup

%%% Local Variables:
%%% mode: latex
%%% mode: flyspell
%%% coding: iso-latin-1
%%% ispell-local-dictionary: "en_GB"
%%% TeX-master: "../guide.tex"
%%% TeX-PDF-mode: t
%%% End: