summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx
blob: 406b32e1d2265a45bb4df8b1c8827c9e85ab834c (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
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer-fancyhdr.dtx
% Copyright (c) Markus Kohm, 2021
%
% This file is part of the LaTeX2e package `scrlayer-fancyhdr'.
%
% 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 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 the files `scrlayer-fancyhdr.dtx' and
% `README.md'.
% ----------------------------------------------------------------------
% scrlayer-fancyhdr.dtx
% Copyright (c) Markus Kohm, 2021
%
% Diese Datei ist Teil des LaTeX2e Pakets `scrlayer-fancyhdr'.
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c.
% 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 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 Dateien `scrlayer-fancyhdr.dtx' und
% `README.md'.
% ======================================================================
%
%<identify>%%% docstrip run: identify
%<init>%%% docstrip run: init
%<options>%%% docstrip run: options
%<body>%%% docstrip run: body
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{scrlayer-fancyhdr.dtx}[2021-03-30 v0.2.1
  source of package scrlayer-scrpage]
%</dtx>
%<*package>
%<identify>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<identify>\ProvidesPackage{scrlayer-fancyhdr}[2021-03-30 v0.2.1
%<identify>  combining fancyhdr with KOMA-Script's scrlayer]
%</package>
%<*dtx>
\ifx\documentclass\undefined
  \input docstrip.tex
  \generate{%
    \file{scrlayer-fancyhdr.sty}{%
      \from{scrlayer-fancyhdr.dtx}{package,identify}%
      \from{scrlayer-fancyhdr.dtx}{package,init}%
      \from{scrlayer-fancyhdr.dtx}{package,options}%
      \from{scrlayer-fancyhdr.dtx}{package,body}%
    }%
  }
\else
  \let\endbatchfile\relax
\fi
\endbatchfile
\documentclass{scrdoc}
\RedeclareSectionCommand[tocbeforeskip=0pt]{section}
\RedeclareSectionCommand[tocbeforeskip=.75\baselineskip plus .25\baselineskip]{part}
\setkomafont{sectionentry}{}
\KOMAoption{toc}{flat}
\addtolength{\textwidth}{-1em}
\addtolength{\marginparwidth}{2em}
\addtolength{\oddsidemargin}{2em}
\usepackage[main=english,ngerman]{babel}
\usepackage{csquotes}
\usepackage{biblatex}
\usepackage{listings}
\usepackage{scrhack}
\usepackage{xpatch}

\begin{filecontents}[force]{\jobname.bib}
@Misc{      package:fancyhdr,
  language= {english},
  author  = {Piet van Oostrum},
  title   = {{\Package{fancyhdr}}\,---\,Extensive control of page headers and
             footers in {\LaTeXe}},
  date    = {2021-01-28},
  edition = {4.0.1},
  url     = {https://www.ctan.org/pkg/fancyhdr},
  urldate = {2021-03-30}
}

@Misc{      package:koma-script,
  language= {english},
  author  = {Markus Kohm},
  title   = {{\Package{koma-script}}\,---\,A bundle of versatile classes and
             packages},
  date    = {2021-03-17},
  edition = {3.33},
  url     = {https://www.ctan.org/pkg/koma-script},
  urldate = {2021-03-30}
}

@Misc{      package:scrlayer,
  language= {english},
  author  = {Markus Kohm},
  title   = {{\Package{scrlayer}}\,---\,Manage text `layers' within
             {\KOMAScript}},
  date    = {2021-03-17},
  edition = {3.33},
  url     = {https://www.ctan.org/pkg/scrlayer},
  urldate = {2021-03-30}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\CodelineIndex
\RecordChanges
\GetFileInfo{scrlayer-fancyhdr.dtx}
\title{The \texttt{scrlayer} interface \texttt{scrlayer-fancyhdr}%
  \footnote{\parbox[t]{.9\linewidth}{\raggedright
      This is version \fileversion\ of file \texttt{\filename}.\\
      Dies ist Version \fileversion\ der Datei \texttt{\filename}.}}\\
  \otherlanguage{ngerman}{Das \texttt{scrlayer}-Interface
    \texttt{scrlayer-fancyhdr}\footnotemark[1]}}
\date{\filedate}
\author{Markus Kohm}

\newenvironment{Explain}{\par}{\par}
\newcommand*{\length}{}
\let\length\Length
\let\endlength\endLength
\let\Macro\cs
\let\Length\Macro
\let\Package\textsf
\let\Class\Package
\let\File\texttt
\let\Option\texttt
\newcommand*{\KOption}[1]{\Option{#1}\texttt{=}}
\newcommand*{\OptionValue}[2]{\Option{#1}\texttt{=}\PValue{#2}}
\let\Counter\texttt
\let\Environment\texttt
\let\ShowOutput\quote
\let\endShowOutput\endquote
\let\Pagestyle\texttt
\newcommand*{\Parameter}[1]{\texttt{\marg{#1}}\linebreak[1]}
\newcommand*{\OParameter}[1]{\texttt{\oarg{#1}}\linebreak[1]}
\newcommand*{\MParameter}[2]{\texttt{(\meta{#1},\meta{#2})}\linebreak[1]}
\providecommand\PParameter[1]{\mbox{\texttt{\{#1\}}}\linebreak[1]}
\let\PName\meta
\let\PValue\texttt
\providecommand*{\autoref}[1]{\expandafter\AUTOREF#1:}
\providecommand*{\AUTOREF}{}
\makeatletter
\def\AUTOREF#1:#2:{%
  \edef\@tempa{#1}%
  \edef\@tempb{tab}\ifx\@tempa\@tempb table~\fi
  \edef\@tempb{sec}\ifx\@tempa\@tempb section~\fi
  \ref{#1:#2}%
}
\makeatother
\providecommand*{\IndexCmd}[2][]{}
\providecommand*{\textnote}[2][]{}

\lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}

\renewcaptionname{english}{\partname}{Part}
\renewcaptionname{english}{\contentsname}{Contents\,/\,Inhalt}%
\renewcaptionname{english}{\refname}{References\,/\,Literatur}%
\renewcaptionname{ngerman}{\partname}{Teil}
\renewcaptionname{ngerman}{\contentsname}{Inhalt\,/\,Contents}
\renewcaptionname{ngerman}{\refname}{Literatur\,/\,References}%

\begin{document}
\maketitle
\tableofcontents
\DocInput{\filename}
\printbibliography
\PrintChanges
\PrintIndex
\end{document}
% \fi^^A meta-comment
% 
% \changes{v0.0}{2018/09/01}{start of interface}
% \changes{v0.2}{2021/02/18}{package is no longer part of \KOMAScript}
% \changes{v0.2.1}{2021/03/30}{improved user manual}
% \changes{v0.2.1}{2021/03/30}{German user manual}
%
% \changes{v0.0}{2018/09/05}{some user documentation}
% \part{English User Manual}
% \section{The Purpose of this Package}
% \label{sec:purpose}
% This package has been made to give users a chance to combine the features of
% Piet van Oostrum's \mbox{\Package{fancyhdr}} \autocite{package:fancyhdr}
% with the features of \mbox{\Package{scrlayer}}
% \autocite{package:scrlayer}. In other words: It has been made to combine the
% page layers of \mbox{\Package{scrlayer}} with the page styles of
% \mbox{\Package{fancyhdr}}.
%
% In this combination compatibility with \mbox{\Package{fancyhdr}} is the
% first aim!  Usability and the freedom provided by \mbox{\Package{scrlayer}}
% is only the second one. Compatibility with other packages or classes of
% \KOMAScript{} \cite{package:koma-script} is not a primary aim. Perhaps it
% will become an optional feature in future. Abolishing any real or virtual
% limitations of \mbox{\Package{fancyhdr}} other than make it possible to use
% layers is not an aim and will not be an aim in future.
%
% If you need a better combination of page styles and layers, you should
% either use the low level interface of \mbox{\Package{scrlayer}} to define
% your page styles or\,---\,and this is the recommendation of the
% author\,---\,use \Package{scrlayer-scrpage} instead of
% \Package{scrlayer-fancyhdr} or \mbox{\Package{fancyhdr}}. If you need more
% compatibility with other parts of \KOMAScript, i.\,e.\@ with the
% \KOMAScript{} classes, you should use \Package{scrlayer-scrpage} instead of
% \Package{scrlayer-fancyhdr} or \mbox{\Package{fancyhdr}}.
%
%
% \section{How it works}
% \label{sec:howitworks}
%
% To combine \mbox{\Package{fancyhdr}} and \mbox{\Package{scrlayer}},
% \Package{scrlayer-scrpage} loads both packages. After loading
% \mbox{\Package{fancyhdr}} it redefines page style \Pagestyle{@fancy} (up to
% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
% (from \mbox{\Package{fancyhdr}} version 4) to make it a layer page style of
% \mbox{\Package{scrlayer}} using the newly defined layers
% \texttt{fancy.head.even}, \texttt{fancy.head.odd}, \texttt{fancy.foot.even}
% and \texttt{fancy.foot.odd}. The \texttt{\dots head\dots} layers are
% background layers like the page head of \mbox{\Package{fancyhdr}}'s page
% styles (or other usual page styles). The \texttt{\dots foot\dots} layers are
% foreground layers like the page footer of \mbox{\Package{fancyhdr}}'s page
% styles (or other usual page styles). The \texttt{\dots even} layers are
% restricted to even pages, that means left side pages in two-sided
% documents. The \texttt{\dots odd} layers are restricted to odd pages, that
% means right side pages in two-sided documents or all pages in single-sided
% documents.
%
% \DescribeMacro\ps@@fancy
% \DescribeMacro\ps@f@nch@fancycore
% \DescribeMacro\ps@fancyplain
% \DescribeMacro\ps@plain@fancy
% Up to \mbox{\Package{fancyhdr}} verison 3.10 page style \Pagestyle{@fancy}
% was an internal page style, users should not select direclty. From version 4
% page style \Pagestyle{f@nch@fancycore} is used internally by package
% \mbox{\Package{fancyhdr}}. In both cases, the internal page style is used
% for the user page style \Pagestyle{fancy}. The user page style
% \Pagestyle{fancy} is also used for \Package{fancyheadings}'s deprecated page
% style \Pagestyle{fancyplain}, that also redefines page style
% \Pagestyle{plain} to be \mbox{\Package{fancyhdr}}'s internal page style
% \Pagestyle{plain@fancy}, that also uses \Pagestyle{fancy} but with
% \Macro{if@fancyplain} set to \Macro{iftrue}. There is an additional
% deprecated command \Macro{fancyplain}\Parameter{plain code}\Parameter{fancy
% code}, too. The command uses the \meta{plain code} if \Macro{if@fancyplain}
% is \Macro{iftrue} and \meta{fancy code} if \Macro{if@fancyplain} is
% \Macro{iffalse}. It can be used inside the definition of the page style
% elements to distinguish settings of \Pagestyle{fancy} and \Pagestyle{plain}
% pages.
%
% Page styles defined using \mbox{\Package{fancyhdr}}'s command
% \Macro{fancypagestyle} also always use page style \Pagestyle{fancy} and so
% the internal basic page style \Pagestyle{@fancy} (up to
% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
% (from \mbox{\Package{fancyhdr}} version 4).
%
% As a result of the two notes above, every page style of
% \mbox{\Package{fancyhdr}} always uses the same internal basic page style
% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
% 4). As a result of redefining page style \Pagestyle{@fancy} (up to
% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
% (from \mbox{\Package{fancyhdr}} version 4) to be a layer page style, users
% can add layers to or remove layers from all \mbox{\Package{fancyhdr}} page
% styles by adding layers to or remove layers from page style
% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
% 4). You cannot add layers to or remove layers from
% \mbox{\Package{fancyhdr}}'s single page styles \Pagestyle{fancy},
% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} or the page styles defined
% using \Macro{fancypagestyle} directly. So using layers is a all or nothing
% feature with \Package{scrlayer-scrpage}. However, you can use the second
% argument of \Macro{fancypagestyle} to add or remove layers whenever one of
% the \mbox{\Package{fancyhdr}} page styles is activated. So this is a move
% from the \mbox{\Package{scrlayer}} interface of adding or removing layers to
% single page styles to the \mbox{\Package{fancyhdr}} interface of defining
% modifications of page style \Pagestyle{fancy}.
%
% Another such movement from a \mbox{\Package{scrlayer}} user interface to a
% \mbox{\Package{fancyhdr}} user interface is the decision whether or not
% automatic running heads are used. \mbox{\Package{scrlayer}} provides the
% options \Option{automark} and \Option{manualmark} and commands
% \Macro{automark} and \Macro{manualmark} to do this decision and also to
% configure commands like \Macro{partmark}, \Macro{chaptermark},
% \Macro{sectionmark} etc. With \Package{scrlayer-fancyhdr} already using page
% style \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4)
% does switch to automatic running heads. The first activation of page style
% \Pagestyle{fancy} still redefines \Macro{chaptermark} and
% \Macro{sectionmark}, if a class with \Macro{chapter} is used, or
% \Macro{sectionmark} and \Macro{subsectionmark}, if a class without
% \Macro{chapter} is used. However, you still can use \Macro{manualmark} and
% \Macro{automark} after switching to a \mbox{\Package{fancyhdr}} page style
% to configure the running heads. So this movement is only partial.
%
% \DescribeMacro\ps@headings
% \DescribeMacro\ps@myheadings
% \DescribeMacro\ps@plain
% Note: Currently, neither \mbox{\Package{scrlayer}} nor
% \mbox{\Package{fancyhdr}} nor \Package{scrlayer-fancyhdr} do redefine page
% styles \Pagestyle{headings} or \Pagestyle{myheadings} by default. And
% neither \mbox{\Package{scrlayer}} nor \mbox{\Package{fancyhdr}} nor
% \Package{scrlayer-fancyhdr} do redefine page style \Pagestyle{plain} unless
% you are activating the deprecated \mbox{\Package{fancyhdr}} page style
% \Pagestyle{fancyplain}. So if you like to use layers on \Pagestyle{plain}
% pages, i.\,e. usually the first page of a chapter or part or the page with a
% title head, you have to either use \mbox{\Package{fancyhdr}}'s deprecated
% page style \Pagestyle{fancyplain} or redefine page style \Pagestyle{plain}
% either using \Macro{fancypagestyle} as documented in the
% \mbox{\Package{fancyhdr}} manual or using \Macro{DeclarePageStyleByLayers},
% documented in the \KOMAScript{} manual.
% \DescribeOption{myheading}%
% \DescribeOption{heading}%
% However from version 4.0 \mbox{\Package{fancyhdr}} provides options
% \Option{myheadings} and \Option{headings} to redefine the corresponding page
% style. \Package{scrlayer-fancyhdr} also provides these options and passes
% them to \mbox{\Package{fancyhdr}}.
%
% \DescribeMacro\ps@empty
% \DescribeMacro\ps@@empty
% Note: Pagestyle \Pagestyle{empty} is somehow
% special. \mbox{\Package{scrlayer}} redefines it to be a layer page
% style. And \mbox{\Package{fancyhdr}}'s internal page style
% \Pagestyle{@empty} is the same like \Pagestyle{empty}. So \Pagestyle{@empty}
% also uses the layers of \Pagestyle{empty} but you should not try to modify
% it directly using the interface of \mbox{\Package{scrlayer}}. Moreover, if
% \mbox{\Package{fancyhdr}} is loaded before \Package{scrlayer-fancyhdr},
% \mbox{\Package{fancyhdr}}'s internal page style \Pagestyle{@empty} is not a
% copy of \mbox{\Package{scrlayer}}'s layer page style \Pagestyle{empty} but
% the original standard page style \Pagestyle{empty}. However, with
% \Package{scrlayer-fancyhdr} package \mbox{\Package{fancyhdr}} does not
% longer use the internal page style \Pagestyle{@empty}. So you would not need
% to know this.
%
% \section{How to use the Package}
% \label{sec:howtouse}
%
% To use the package you have to load it, e.\,g., using:
%\begin{verbatim}
% \usepackage{scrlayer-fancyhdr}
%\end{verbatim}
% instead of loading \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}}
% or before or after loading one of these packages. However it is recommended
% to replace loading \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}}
% by loading \Package{scrlayer-fancyhdr} because this avoids option
% clashes. \Package{scrlayer-fancyhdr} provides all options of
% \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}} and passes them to
% \mbox{\Package{scrlayer}} resp. \mbox{\Package{fancyhdr}}. Nevertheless
% sometimes it may be useful to be able to additionally load
% \mbox{\Package{scrlayer}} or \mbox{\Package{fancyhdr}}. In this case you
% should first load \mbox{\Package{scrlayer}} next \mbox{\Package{fancyhdr}}
% and last \Package{scrlayer-fancyhdr}.
%
% \DescribeMacro\ps@@fancy
% \DescribeMacro\ps@f@nch@fancycore
% \DescribeMacro\ps@fancy
% \DescribeMacro\ps@fancyplain
% \DescribeMacro\ps@plain@fancy
% \DescribeMacro\fancypagestyle
% After loading the package you should be able to use the page styles and
% commands of \mbox{\Package{fancyhdr}} and to add layers to or remove layers
% from the \mbox{\Package{fancyhdr}}'s internal basic page style
% \Package{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
% 4). Note, you are not able to add layers to or remove layers from
% \mbox{\Package{fancyhdr}}'s page styles \Pagestyle{fancy},
% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} or page styles defined by
% \Macro{fancypagestyle}. However adding layers to or removing layers from
% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4)
% will always change all these page styles!
%
% \DescribeMacro\ps@plain
% \DescribeMacro\ps@headings
% \DescribeMacro\ps@myheadings
% \DescribeMacro\ps@empty
% Note: Loading \Package{scrlayer-fancyhdr} will not make page style
% \Pagestyle{plain} nor \Pagestyle{headings} nor \Pagestyle{myheadings} or any
% other page style but \Pagestyle{empty} to automatically be a layer page
% style! But if you are using option \Option{headings} or \Option{myheadings},
% package \mbox{\Package{fancyhdr}} redefines the corresponding page styles to
% be \mbox{\Package{fancyhdr}} page styles\,---\,and so relate to the same
% internal layer page style, either \Pagestyle{@fancy} (up to
% \mbox{\Package{fancyhdr}} version 3.10) or \Pagestyle{@f@nch@fancycore}
% (from \Package{fancydr} version 4.0).
%
%
% \section{Hint}
% \label{sec:hint}
%
% To become independent from the used version of \mbox{\Package{fancyhdr}} you
% can use:
% \begin{verbatim}
% \IfPackageAtLeastTF{fancyhdr}{2019/03/21}{%
%   \DeclarePageStyleAlias{@fancy}{f@nch@fancycore}%
% }{%
%   \DeclarePageStyleAlias{f@nch@fancycore}{@fancy}%
% }
% \end{verbatim}^^A
% \unskip after loading \Package{scrlayer-fancyhdr} and before adding a layer
% to the internal layer page style. This code defines page style
% \Pagestyle{@fancy} to be an alias of \Pagestyle{f@nch@fancycore} if
% \mbox{\Package{fancyhdr}} from version 4.0 is used or vise versa
% \Pagestyle{f@nch@fancycore} as an alias of \Pagestyle{@fancy} if
% \mbox{\Package{fancyhdr}} before version 4.0 is used. So after this code
% using either
% \begin{verbatim}
% \AddLayersToPageStyle{@fancy}{...}
% \end{verbatim}^^A
% \unskip or
% \begin{verbatim}
% \AddLayersToPageStyle{f@nch@fancycore}{...}
% \end{verbatim}^^A
% \unskip would both result in adding the layers to the internal layer page
% style.
%
%
% \section{Known Issues}
% \label{sec:issues}
%
% Please note, the follow issues are either notes to the package author or
% notes to the user to avoid them reporting the same issues again and
% again. Listing these issues does not say they are bugs or features.
% \begin{itemize}
% \item
%   \DescribeMacro\ps@fancy
%   \DescribeMacro\ps@f@nch@fancycore
%   \DescribeMacro\ps@fancyplain
%   \DescribeMacro\fancypagestyle
%   \DescribeMacro\ps@@fancy
%   You are not able to add layers to the user level page style
%   \Pagestyle{fancy} or \Pagestyle{fancyplain} or any page style defined by
%   \Macro{fancypagestyle} but only to the internal page style
%   \Pagestyle{@fancy} (if you are using \mbox{\Package{fancyhdr}} up to
%   version 3.10) resp. \Pagestyle{f@nch@fancycore} (if you are using
%   \mbox{\Package{fancyhdr}} from version 4). This is intended as explained
%   in this manual (see also section~\ref{sec:hint}).
% \item
%   \DescribeMacro\ps@@empty
%   Using \mbox{\Package{fancyhdr}}'s internal page style \Pagestyle{@empty}
%   could have strange results. However, there is a simple solution for this:
%   Don't use the internal \Pagestyle{@empty} but always the user level page
%   style \Pagestyle{empty}!
% \item
%   \DescribeMacro\ps@@fancy
%   \DescribeMacro\ps@f@nch@fancycore
%   The vertical position of the page header does differ a little bit, if
%   \Package{scrlayer-fancyhdr} is used instead of
%   \mbox{\Package{fancyhdr}}. This could be fixed by a modification of the
%   layers \texttt{fancy.head.odd} and \texttt{fancy.head.even} using
%   \Option{addvoffset}. More tests are needed.
% \end{itemize}
% See \url{https://github.com/komascript/scrlayer-fancyhdr/issues} for more
% issues.
%
% \selectlanguage{ngerman}
% \part{Benutzeranleitung auf Deutsch}
% \section{Der Sinn dieses Pakets}
% \label{sec:sinn}
% Dieses Paket wurde entwickelt, um den Anwendern die Möglichkeit zu geben,
% die Fähigkeiten von Piet van Oostrums \mbox{\Package{fancyhdr}}
% \autocite{package:fancyhdr} mit den Fähigkeiten von
% \mbox{\Package{scrlayer}} \autocite{package:scrlayer} zu kombinieren. In
% anderen Worten: Es wurde geschaffen, um die Seiten-Ebenen von
% \mbox{\Package{scrlayer}} mit den Seiten-Stilen von
% \mbox{\Package{fancyhdr}} zu kombinieren.
%
% In dieser Kombination ist Kompatibilität mit \mbox{\Package{fancyhdr}} das
% oberste Ziel! Verwendbarkeit und die Freiheiten, die von
% \mbox{\Package{scrlayer}} geboten werden, ist das zweite
% Ziel. Kompatibilität mit anderen Paketen oder Klassen von \KOMAScript{}
% \cite{package:koma-script} ist kein primäres Ziel. Vielleicht wird dies in
% Zukunft eine optionale Fähigkeit werden. Die Aufhebung irgendwelcher realen
% oder eingebildeter Beschränkungen von \mbox{\Package{fancyhdr}}, die darüber
% hinaus gehen, die Verwendung von Ebenen zu ermöglichen, ist kein Ziel und
% wird auch in Zukunft kein Ziel werden.
%
% Wenn Sie eine bessere Kombination von Seitenstilen und Ebenen benötigen, so
% sollten Sie entweder die Low-Level-Schnittstelle von
% \mbox{\Package{scrlayer}} zur Definition von Seitenstilen oder ---~und das
% ist die Empfehlung des Autors~--- das Paket \Package{scrlayer-scrpage}
% anstelle von \Package{scrlayer-fancyhdr} oder \mbox{\Package{fancyhdr}}
% verwenden. Wenn Sie bessere Kompatibilität mit anderen Teilen von
% \KOMAScript, beispielsweise mit den \KOMAScript-Klassen. benötigen, sollten
% Sie \Package{scrlayer-scrpage} anstelle von \Package{scrlayer-fancyhdr} oder
% \mbox{\Package{fancyhdr}} verwenden.
%
% \section{Wie es funktioniert}
% \label{sec:funktion}
% Zur Kombination von \mbox{\Package{fancyhdr}} mit \mbox{\Package{scrlayer}}
% lädt \Package{scrlayer-scrpage} beide Pakete. Nach dem Laden von
% \mbox{\Package{fancyhdr}} definiert es den Seitenstil \Pagestyle{@fancy}
% (bis einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
% bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4.0)
% in einen Ebenen-Seitenstil von \mbox{\Package{scrlayer}} um, bestehend aus
% den neu definierten Ebenen \texttt{fancy.head.even},
% \texttt{fancy.head.odd}, \texttt{fancy.foot.even} und
% \texttt{fancy.foot.odd}. Die \texttt{\dots head\dots}-Ebenen sind
% Hintergrund-Ebenen entsprechend dem Seitenkopf von
% \mbox{\Package{fancyhdr}}-Seiten\-stilen (oder anderen gebräuchlichen
% Seitenstilen). Die \texttt{\dots foot\dots}-Ebenen sind Vordergrund-Ebenen
% entsprechend dem Seitenfuß von
% \linebreak\mbox{\Package{fancyhdr}}-Seitenstilen (oder anderen
% gebräuchlichen Seitenstilen). Die \texttt{\dots even}-Ebenen sind auf gerade
% Seiten, also linke Seiten von doppelseitigen Dokumenten, beschränkt. Die
% \texttt{\dots odd}-Ebenen sind auf ungerade Seiten, also rechte Seiten bei
% doppelseitigen Dokumenten oder alle Seiten bei einseitigen Dokumenten,
% beschränkt.
%
% \DescribeMacro\ps@@fancy
% \DescribeMacro\ps@f@nch@fancycore
% \DescribeMacro\ps@fancyplain
% \DescribeMacro\ps@plain@fancy
% Bis Version 3.10 von \mbox{\Package{fancyhdr}} war Seitenstil
% \Pagestyle{@fancy} ein interner Seitenstil, den Anwender selbst nicht direkt
% verwenden sollten. Ab Version 4.0 wird \Pagestyle{f@nch@fancycore} als
% interner Seitenstil von Paket \mbox{\Package{fancyhdr}} genutzt. In beiden
% Fällen wird der interne Seitenstil für den Benutzer\-seiten\-stil
% \Pagestyle{fancy} verwendet. Der Benutzerseitenstil \Pagestyle{fancy} wird
% ebenfalls für den veralteten Seitenstil \Pagestyle{fancyplain} des Pakets
% \Package{fancyheadings} verwendet, der zusätzlich den Seitenstil
% \Pagestyle{plain} in \mbox{\Package{fancyhdr}}s internen Seitenstil
% \Pagestyle{plain@fancy} ändert, der ebenfalls \Pagestyle{fancy} verwendet,
% wobei allerdings \Macro{if@fancyplain} auf \Macro{iftrue} gesetzt ist. Es
% gibt eine weitere überholte Anweisung
% \Macro{fancyplain}\Parameter{plain-Code}\Parameter{fancy-Code}. Diese
% Anweisung verwendet \meta{plain-Code}, wenn \Macro{if@fancyplain}
% \Macro{iftrue} ist, aber \meta{fancy-Code}, wenn \Macro{if@fancyplain}
% \Macro{iffalse} ist. Sie kann innerhalb der Definition der
% Seitenstilelemente verwendet werden um zwischen den Einstellung für
% \Pagestyle{fancy} und \Pagestyle{plain} zu unterscheiden.
%
% Seitenstile, die mit der \mbox{\Package{fancyhdr}}-Anweisung
% \Macro{fancypagestyle} definiert wurden, verwenden ebenfalls immer den
% Seitenstil \Pagestyle{fancy} und damit den internen grundlegenden Seitenstil
% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
% 4).
%
% Als Ergebnis der beiden obigen Anmerkungen, verwenden alle Seitenstile von
% \mbox{\Package{fancyhdr}} immer denselben internen grundlegenden Seitenstil
% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
% 4). Als Ergebnis daraus resultiert aus der Umdefinierung des Seitenstils
% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
% 4) in einen Ebenen-Seitenstil, dass Anwender Ebenen zu allen Seitenstilen
% von \mbox{\Package{fancyhdr}} hinzufügen oder daraus löschen können, indem
% sie Ebenen zu \Pagestyle{@fancy} (bis einschließlich
% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
% \mbox{\Package{fancyhdr}} Version 4) hinzufügen oder daraus löschen. Sie
% können keine Ebenen unmittelbar zu einzelnen Seitenstilen von
% \mbox{\Package{fancyhdr}} wie \Pagestyle{fancy}, \Pagestyle{fancyplain},
% \Pagestyle{plain@fancy} oder anderen mit \Macro{fancypagestyle} definierten
% Seitenstilen hinzufügen oder daraus löschen. Aber natürlich können Sie das
% zweite Argument von \Macro{fancypagestyle} nutzen, um Ebenen zum Zeitpunkt
% der Aktivierung eines \mbox{\Package{fancyhdr}}-Seitenstils hinzuzufügen
% oder zu entfernen. Dies stellt eine Verschiebung dar weg von der
% \mbox{\Package{scrlayer}}-Schnittstelle zum Hinzufügen oder Entfernen von
% Ebenen hin zur \mbox{\Package{fancyhdr}}-Schnittstelle zur Definition von
% Änderungen des Seitenstils \Pagestyle{fancy}.
%
% Ein weitere solche Verschiebung von der Anwenderschnittstelle von
% \mbox{\Package{scrlayer}} zur Anwenderschnittstelle von
% \mbox{\Package{fancyhdr}} ist die Entscheidung, ob automatische, lebende
% Kolumnentitel verwendet werden sollen oder nicht. \mbox{\Package{scrlayer}}
% bietet dafür die Optionen \Option{automark} und \Option{manualmark} und die
% Anweisungen \Macro{automark} und \Macro{manualmark}. Diese konfigurieren
% gleichzeitig Anweisungen wie \Macro{partmark}, \Macro{chaptermark},
% \Macro{sectionmark} etc. Mit \Package{scrlayer-fancyhdr} wird bereits durch
% Verwendung von Seitenstil \Pagestyle{@fancy} (bis einschließlich
% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
% \mbox{\Package{fancyhdr}} Version 4) auf automatische, lebende Kolumnentitel
% umgeschaltet. Die erste Aktivierung von \Pagestyle{fancy} definiert auch
% weiterhin \Macro{chaptermark} und \Macro{sectionmark}, wenn eine Klasse mit
% \Macro{chapter} verwendet wird, oder \Macro{sectionmark} und
% \Macro{subsectionmark}, wenn eine Klasse ohne \Macro{chapter} verwendet
% wird. Dennoch können Sie weiterhin \Macro{manualmark} und \Macro{automark}
% nach der Umschaltung zu einem \mbox{\Package{fancyhdr}}-Seitenstil
% verwenden, um die lebenden Kolumnentitel zu konfigurieren. Diese
% Verschiebung ist also nur partiell.
%
% \DescribeMacro\ps@headings
% \DescribeMacro\ps@myheadings
% \DescribeMacro\ps@plain
% Hinweis: Derzeit definieren weder \mbox{\Package{scrlayer}} noch
% \mbox{\Package{fancyhdr}} noch \Package{scrlayer-fancyhdr} die Seitenstile
% \Pagestyle{headings} oder \Pagestyle{myheadings} in der Voreinstellung
% um. Und weder \mbox{\Package{scrlayer}} noch \mbox{\Package{fancyhdr}} oder
% \Package{scrlayer-fancyhdr} definieren den Seitenstil \Pagestyle{plain} um,
% solange nicht der veraltete \mbox{\Package{fancyhdr}}-Seitenstil
% \Pagestyle{fancyplain} aktiviert wird. Wenn Sie also einen Ebeneseitenstil
% für \Pagestyle{plain}-Seiten wünschen, insbesondere für die erste Seite
% eines Kapitels oder Teils oder die Seiten mit dem Titelkopf, so müssen Sie
% entweder den veralteten \mbox{\Package{fancyhdr}}-Seitenstil
% \Pagestyle{fancyplain} verwenden oder den Seitenstil \Pagestyle{plain}
% entweder per \Macro{fancypagestyle} umdefinieren, wie dies in der
% \mbox{\Package{fancyhdr}}-Anleitung beschrieben ist, oder per
% \Macro{DeclarePageStyleByLayers}, wie dies in der \KOMAScript-Anleitung
% dokumentiert ist.
% \DescribeOption{myheading}%
% \DescribeOption{headings}%
% Darüber hinaus bietet \mbox{\Package{fancyhdr}} ab Version 4.0 die Optionen
% \Option{myheadings} und \Option{headings}, um die entsprechenden Seitenstile
% umzudefinieren. \Package{scrlayer-fancyhdr} bietet diese Optionen ebenfalls
% und leitet sie an \mbox{\Package{fancyhdr}} weiter.
%
% \DescribeMacro\ps@empty
% \DescribeMacro\ps@@empty
% Hinweis: Der Seitenstil \Pagestyle{empty} ist etwas
% speziell. \mbox{\Package{scrlayer}} definiert dieses in einen
% Ebenen-Seitenstil um. Und \mbox{\Package{fancyhdr}}s interner Seitenstil
% \Pagestyle{@empty} ist ebenfalls identisch mit \Pagestyle{empty}. Daher
% verwendet auch \Pagestyle{@empty} die Ebenen von \Pagestyle{empty}, aber Sie
% sollten nicht versuchen, diese direkt mit der Schnittstelle von
% \mbox{\Package{scrlayer}} zu verändern. Mehr noch, wenn
% \mbox{\Package{fancyhdr}} vor \Package{scrlayer-fancyhdr} geladen wird, ist
% der interne Seitenstil \Pagestyle{@empty} von \mbox{\Package{fancyhdr}}
% nicht länger eine Kopie des Ebenen-Seitenstils \Pagestyle{empty} von
% \mbox{\Package{scrlayer}}, sondern weiterhin des Standard-Seitenstils
% \Pagestyle{empty}. Allerdings verwendet \mbox{\Package{fancyhdr}} mit
% \Package{scrlayer-fancyhdr} selbst den internen Seitenstil
% \Pagestyle{@empty} gar nicht mehr. Daher brauchen Sie das eigentlich auch
% nicht zu wissen.
%
% \section{Wie man das Paket verwendet}
% \label{sec:verwendung}
%
% Um das Paket zu verwenden, muss man es laden, beispielsweise per:
%\begin{verbatim}
% \usepackage{scrlayer-fancyhdr}
%\end{verbatim}
% an Stelle von \mbox{\Package{scrlayer}} oder \mbox{\Package{fancyhdr}} oder
% vor dem Laden eines dieser Pakete. Empfohlen wird das komplette Ersetzen von
% \mbox{\Package{scrlayer}} und \mbox{\Package{fancyhdr}} durch das Laden von
% \Package{scrlayer-fancyhdr}, weil dadurch Optionskonflikte
% (engl. \emph{option clash}) vermieden wird. \Package{scrlayer-fancyhdr}
% stellt alle Optionen von \mbox{\Package{scrlayer}} und
% \mbox{\Package{fancyhdr}} bereit und leitet diese an
% \mbox{\Package{scrlayer}} bzw. \mbox{\Package{fancyhdr}}
% weiter. Nichtsdestotrotz kann es in seltenen Fällen nützlich sein, dass man
% das Paket auch zusätzlich nach \mbox{\Package{scrlayer}} und
% \mbox{\Package{fancyhdr}} laden kann. In diesem Fall sollte
% \mbox{\Package{scrlayer}} vor \mbox{\Package{fancyhdr}} und zuletzt
% \Package{scrlayer-fancyhdr} geladen werden.
%
% \DescribeMacro\ps@@fancy
% \DescribeMacro\ps@f@nch@fancycore
% \DescribeMacro\ps@fancy
% \DescribeMacro\ps@fancyplain
% \DescribeMacro\ps@plain@fancy
% \DescribeMacro\fancypagestyle
% Nach dem Laden des Pakets sollten Sie in der Lage sein, die Seitenstile und
% Befehle von \mbox{\Package{fancyhdr}} zu verwenden und Ebenen zum internen
% \mbox{\Package{fancyhdr}}-Seitenstil \Package{@fancy} (bis einschließlich
% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
% \mbox{\Package{fancyhdr}} Version 4) hinzuzufügen oder davon zu
% entfernen. Hinweis: Es ist Ihnen nicht möglich, Ebenen zu den
% \mbox{\Package{fancyhdr}}-Seitenstilen \Pagestyle{fancy},
% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} oder jedem anderen mit
% \Macro{fancypagestyle} definierten Seitenstil hinzuzufügen. Jedoch wird das
% Hinzufügen oder Entfernen von Ebenen zu bzw. von \Package{@fancy} (bis
% einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
% bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4)
% immer alle diese Seitenstile mit ändern!
%
% \DescribeMacro\ps@plain
% \DescribeMacro\ps@headings
% \DescribeMacro\ps@myheadings
% \DescribeMacro\ps@empty
% Hinweis: Das Laden von Paket \Package{scrlayer-fancyhdr} wird weder den
% Seitenstil \Pagestyle{plain} noch \Pagestyle{headings} noch
% \Pagestyle{myheadings} noch irgend einen anderen Seitenstil außer
% \Pagestyle{empty} automatisch in einen Ebenen-Seitenstil umwandeln! Wenn Sie
% aber Option \Option{headings} oder \Option{myheadings} angeben, definiert
% \mbox{\Package{fancyhdr}} die entsprechenden Seitenstile in
% \mbox{\Package{fancyhdr}}-Seitenstil um --~somit hängen diese dann von
% demselben internen Seitenstil, entweder \Package{@fancy} (bis einschließlich
% \mbox{\Package{fancyhdr}} Version 3.10) oder \Pagestyle{f@nch@fancycore} (ab
% \mbox{\Package{fancyhdr}} Version 4), ab.
%
%
%
% \section{Tipp}
% \label{sec:tipp}
%
% Um unabhängig von der verendeten Version von \mbox{\Package{fancyhdr}} zu
% werden, kann man:
% \begin{verbatim}
% \IfPackageAtLeastTF{fancyhdr}{2019/03/21}{%
%   \DeclarePageStyleAlias{@fancy}{f@nch@fancycore}%
% }{%
%   \DeclarePageStyleAlias{f@nch@fancycore}{@fancy}%
% }
% \end{verbatim}^^A
% \unskip nach dem Laden von \Package{scrlayer-fancyhdr} verwendenm, bevor man
% irgendwelche Ebenen zu dem internen Seitenstil hinzufügt oder davon
% entfernt. Diese Codezeilen definieren bei Verwendung von
% \mbox{\Package{fancyhdr}} aber Version 4.0 Seitenstil \Pagestyle{@fancy} als
% Alias für Seitenstil \Pagestyle{f@nch@fancycore} und umgekehrt für
% \mbox{\Package{fancyhdr}} bis einschließlich Version 3.10
% \Pagestyle{f@ch@fancycore} als Alias für Seitenstil \Package{@fancy}. Damit
% führt dann sowohl:
% \begin{verbatim}
% \AddLayersToPageStyle{@fancy}{...}
% \end{verbatim}^^A
% \unskip als auch
% \begin{verbatim}
% \AddLayersToPageStyle{f@nch@fancycore}{...}
% \end{verbatim}^^A
% \unskip dazu, dass die Ebenen zum internen Ebenen-Seitenstil hinzugefügt
% werden.
%
%
%
% \section{Bekannte Probleme}
% \label{sec:probleme}
%
% Bitte beachten Sie, dass die folgenden Hinweise entweder Notizen für den
% Paketautor oder Hinweise für die Anwender darstellen und verhindern sollen,
% dass dieselben Probleme immer wieder gemeldet werden. Die Auflistung sagt
% nichts darüber aus, ob es sich dabei um Fehler oder Eigenschaften handelt:
% \begin{itemize}
% \item
%   \DescribeMacro\ps@fancy
%   \DescribeMacro\ps@f@nch@fancycore
%   \DescribeMacro\ps@fancyplain
%   \DescribeMacro\fancypagestyle
%   \DescribeMacro\ps@@fancy
%   Sie können keine Ebenen zu den Seitenstilen auf Benutzerebene
%   \Pagestyle{fancy} oder \Pagestyle{fancyplain} oder irgendwelchen anderen
%   Seitenstilen, die mit \Macro{fancypagestyle} definiert wurden,
%   hinzufügen. Dies ist nur für den internen Seitenstil \Package{@fancy} (bis
%   einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
%   bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4)
%   möglich (see auch Abschnitt~\ref{sec:tipp}).
% \item 
%   \DescribeMacro\ps@@empty
%   Die Verwendung des internen \mbox{\Package{fancyhdr}}-Seitenstils
%   \Pagestyle{@empty} kann zu unerwarteten Ergebnissen führen. Es gibt jedoch
%   eine einfache Lösung für dieses Problem: Verwenden Sie nicht den internen
%   Seitenstile \Package{@empty}, sondern immer den Seitenstile
%   \Package{empty} der Benutzerebene.
% \item
%   \DescribeMacro\ps@@fancy
%   \DescribeMacro\ps@f@nch@fancycore
%   Die vertikale Position des Seitenkopfes weicht ein wenig ab, wenn
%   \Package{scrlayer-fancyhdr} an Stelle von \mbox{\Package{fancyhdr}}
%   verwendet wird. Dies kann durch leichte Modifikation der Ebenen
%   \texttt{fancy.head.odd} und \texttt{fancy.head.even} mit Hilfe von
%   \Option{addvoffset} behoben werden. Weitere Tests sind hier erforderlich.
% \end{itemize}
% Siehe \url{https://github.com/komascript/scrlayer-fancyhdr/issues} für
% weitere bekannte Probleme.
%
%\iffalse
%</dtx>
%\fi
%
% \StopEventually{}
%
% \selectlanguage{english}
% \part{Implementation of \Package{scrlayer-fancyhdr}}
% \label{sec:scrlayer-fancyhdr}
%
% \sloppy^^A Good paragraph breaking is not the purpose of implementation
%        ^^A documentation.
% \iffalse
%<*package>
% \fi
%
% This section if for developers only.
%
% We need \mbox{\Package{scrlayer}} at least version 2021/02/15,
%    \begin{macrocode}
%<*init>
\RequirePackage{scrlayer}[2021/02/15]
%</init>
%    \end{macrocode}
% Because before \cs{scrlayer@do@inherited@options} would not be defined. And
% we need it, to inherit all options of \mbox{\Package{scrlayer}}.
%    \begin{macrocode}
%<*options>
\scrlayer@do@inherited@options{\scrlayer@inherit@option}
%</options>
%    \end{macrocode}
%
% And the very first thing at the body, after definition of the options is to
% process the options.
%    \begin{macrocode}
%<*body>
\KOMAProcessOptions
%</body>
%    \end{macrocode}
%
% Note: The main problem of this interface is, that it tries to implement the
% user interface of package \mbox{\Package{fancyhdr}} by Piet van Oostrum, that is
% completely different from \mbox{\Package{scrlayer}} and not really compatible with
% \mbox{\Package{scrlayer}}, using \mbox{\Package{scrlayer}}. This means, that
% \Package{scrlayer-fancyhdr} never can be a drop-in replacement of
% \mbox{\Package{fancyhdr}}. Nevertheless it can help to let \mbox{\Package{scrlayer}} and
% \mbox{\Package{fancyhdr}} coexist. To do so
% \begin{itemize}
% \item the lowest level of \mbox{\Package{fancyhdr}} should not be the page style
% but a layer
% \item the page styles of \mbox{\Package{fancyhdr}} should be layer page styles
% \item init code of the page styles of \mbox{\Package{fancyhdr}} should use the
% layer page init code
% \end{itemize}
% Currently it is unsure whether it would be best to do a new implementation
% or to load original \mbox{\Package{fancyhdr}} and to only modify some things. First
% I'll try the second method. Currently we explicitly provide the options of
% \mbox{\Package{fancyhdr}}.
%    \begin{macrocode}
%<*options>
\DeclareOption{nocheck}{\PassOptionsToPackage{nocheck}{fancyhdr}}
\DeclareOption{compatV3}{\PassOptionsToPackage{compatV3}{fancyhdr}}
\DeclareOption{myheadings}{\PassOptionsToPackage{myheadings}{fancyhdr}}
\DeclareOption{headings}{\PassOptionsToPackage{headings}{fancyhdr}}
%</options>
%    \end{macrocode}
%    \begin{macrocode}
%<*body>
\RequirePackage{fancyhdr}
%</body>
%    \end{macrocode}
%
% We need at least one new layer for the new layer page style
% \Pagestyle{fancy}. However, it could be useful to have not only one but
% four layers (even side head, odd side head, even side foot, odd side foot).
%    \begin{macrocode}
%<*body>
\DeclareNewLayer[%
  background,oddpage,
  head,
  contents={\hb@xt@ \layerwidth{%
      \f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh}}
]{fancy.head.odd}
\DeclareNewLayer[%
  background,evenpage,
  head,
  contents={\hb@xt@ \layerwidth{%
      \f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh}}
]{fancy.head.even}
\DeclareNewLayer[%
  foreground,oddpage,
  foot,
  contents={\hb@xt@ \layerwidth{%
      \f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf}}
]{fancy.foot.odd}
\DeclareNewLayer[%
  foreground,evenpage,
  foot,
  contents={\hb@xt@ \layerwidth{%
      \f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}}
]{fancy.foot.even}
%    \end{macrocode}
% \begin{macro}{\ps@f@nch@fancycore}
% \changes{0.1.3558}{2021/02/15}{support for \mbox{\Package{fancyhdr}} 4}
% \begin{macro}{\ps@@fancy}
% \begin{macro}{\@mkboth}
% And have to create a layer page style from this new layers, but we do not
% redefine page style \Pagestyle{fancy} but the low level page style
% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4.0).
%
% \mbox{\Package{fancyhdr}} does some initialization at the very first call
% of \cs{pagestyle{fancy}}. To do so \mbox{\Package{fancyhdr}} first uses a different
% page style definition, that does the initialization and redefines the page
% style afterwards. This is still active with \Package{scrlayer-fancyhdr}.
% Additionally, \mbox{\Package{fancyhdr}} redefines \cs{@mkboth} at every selection
% of the internal page style \Pagestyle{@fancy}
% resp. \Pagestyle{f@nch@fancycore}. This can be adapted using the
% \Option{onselect} feature of the new layer page style \Pagestyle{@fancy}
% resp. \Pagestyle{f@nch@fancycore}. In my opinion, the
% |\let\@mkboth\markboth| used by page style \Pagestyle{headings} of, e.\,g.,
% the standard classes or the \KOMAScript{} classes would be best
% here. However, \mbox{\Package{fancyhdr}} uses the uncommon
% |\def\@mkboth{\protect\markboth}|, which would fail if a class or package
% tests \cs{@mkboth} using |\ifx\@mkboth\markboth|. However, \KOMAScript's
% \cs{IfActiveMkBoth} (see the \Package{scrbase} chapter in the \KOMAScript{}
% manual) does also recognize the \mbox{\Package{fancyhdr}} definition and copying
% this is more compatible with \mbox{\Package{fancyhdr}}.
%    \begin{macrocode}
\@ifpackagelater{fancyhdr}{2019/03/21}{%
  \DeclarePageStyleByLayers[
    onselect={\def\@mkboth{\protect\markboth}},
  ]{f@nch@fancycore}{%
    fancy.head.odd,fancy.head.even,fancy.foot.odd,fancy.foot.even
  }%
}{%
  \DeclarePageStyleByLayers[
    onselect={\def\@mkboth{\protect\markboth}},
  ]{@fancy}{%
    fancy.head.odd,fancy.head.even,fancy.foot.odd,fancy.foot.even
  }%
}
%</body>
%    \end{macrocode}
% Note: Redefining page style \Pagestyle{@fancy}
% resp. \Pagestyle{f@nch@fancycore} instead of \Pagestyle{fancy}
% does also mean, that features like options \Option{automark} and
% \Option{manualmark} resp. \cs{automark} and \cs{manualmark} are not fully
% supported by \Package{scrlayer-fancyhdr}. Also currently the font features
% of the \KOMAScript{} classes are not supported by
% \Package{scrlayer-fancyhdr}. However you are now able to combine other
% features of \mbox{\Package{scrlayer}} with features of
% \mbox{\Package{fancyhdr}} and you can, e.g., use
% \Package{scrlayer-notecolumn} with \Package{scrlayer-fancyhdr}.
% \end{macro}%^^A \@mkboth
% \end{macro}%^^A \ps@@fancy
% \end{macro}%^^A \ps@f@nch@fancycore
%
% A future release of \Package{scrlayer-fancyhdr} may even provide the font
% features of the \KOMAScript{} classes and a working
% \Option{markcase}. However, in this case I would have to redefine the
% initial page style \Pagestyle{fancy} and the layers above.
%
% \iffalse
%</package>
% \fi
%
% \Finale
%
\endinput
%
% End of file `scrlayer-fancyhdr.dtx'.
%

%%% Local Variables:
%%% mode: doctex
%%% mode: flyspell
%%% ispell-local-dictionary: "en_GB"
%%% TeX-master: t
%%% End: