summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/source
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source')
-rw-r--r--macros/latex/contrib/koma-script/source/ChangeLog16102
-rw-r--r--macros/latex/contrib/koma-script/source/ChangeLog.22383
-rw-r--r--macros/latex/contrib/koma-script/source/Makefile464
-rw-r--r--macros/latex/contrib/koma-script/source/Makefile.baseinit225
-rw-r--r--macros/latex/contrib/koma-script/source/Makefile.baserules144
-rw-r--r--macros/latex/contrib/koma-script/source/japanlco.dtx371
-rw-r--r--macros/latex/contrib/koma-script/source/scraddr.dtx386
-rw-r--r--macros/latex/contrib/koma-script/source/scrdoc.dtx373
-rw-r--r--macros/latex/contrib/koma-script/source/scrdocstrip.tex324
-rw-r--r--macros/latex/contrib/koma-script/source/scrextend.dtx245
-rw-r--r--macros/latex/contrib/koma-script/source/scrhack.dtx1314
-rw-r--r--macros/latex/contrib/koma-script/source/scrjura.dtx2063
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-basics.dtx4677
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-bibliography.dtx741
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-circularletters.dtx174
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx697
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-floats.dtx2062
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-fonts.dtx2251
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-footnotes.dtx695
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-index.dtx449
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-language.dtx1709
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-letterclassoptions.dtx1725
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-listsandtabulars.dtx542
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-listsof.dtx1101
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx1223
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-notepaper.dtx4091
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-pagestyles.dtx903
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-paragraphs.dtx771
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-pseudolengths.dtx349
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-sections.dtx6304
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-title.dtx1071
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx2090
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-typearea.dtx3338
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-variables.dtx399
-rw-r--r--macros/latex/contrib/koma-script/source/scrkernel-version.dtx236
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer-fancyhdr.dtx549
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx1787
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx2968
-rw-r--r--macros/latex/contrib/koma-script/source/scrlayer.dtx4319
-rw-r--r--macros/latex/contrib/koma-script/source/scrlfile.dtx965
-rw-r--r--macros/latex/contrib/koma-script/source/scrlogo.dtx125
-rw-r--r--macros/latex/contrib/koma-script/source/scrmain.ins496
-rw-r--r--macros/latex/contrib/koma-script/source/scrpage.dtx2260
-rw-r--r--macros/latex/contrib/koma-script/source/scrsource.tex137
-rw-r--r--macros/latex/contrib/koma-script/source/scrstrip.inc119
-rw-r--r--macros/latex/contrib/koma-script/source/scrstrop.inc67
-rw-r--r--macros/latex/contrib/koma-script/source/scrtime.dtx785
-rw-r--r--macros/latex/contrib/koma-script/source/scrwfile.dtx515
-rw-r--r--macros/latex/contrib/koma-script/source/tocbasic.dtx1961
-rw-r--r--macros/latex/contrib/koma-script/source/tocstyle.dtx2327
50 files changed, 81372 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/source/ChangeLog b/macros/latex/contrib/koma-script/source/ChangeLog
new file mode 100644
index 0000000000..216994af24
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/ChangeLog
@@ -0,0 +1,16102 @@
+r3066 2019-02-01 08:58:57 +0100 kohm:
+
+ * releaselist.txt: release 2019/02/01 v3.26b
+
+r3065 2019-02-01 08:55:26 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix of \bottomrule in desctabular due to
+ external changes
+
+r3064 2019-02-01 08:40:28 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx: replaced \baselineskip by 1\baselineskip
+ in option parskip
+
+r3063 2019-02-01 08:39:11 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx, scrhack.dtx,
+ scrkernel-sections.dtx, scrkernel-basics.dtx: v3.27 --> v3.26b
+
+r3062 2019-01-28 15:35:42 +0100 kohm:
+
+ * scrhack.dtx: prepared for nomencl 5.1
+
+r3061 2019-01-23 13:06:34 +0100 kohm:
+
+ * scrhack.dtx: prepared nomencl hack for nomencl 5.0 and hopefully
+ fixed version of nomencl
+
+r3060 2019-01-17 21:36:57 +0100 kohm:
+
+ * scrkernel-sections.dtx: emergency workaround for typical auxhook
+ problem
+
+r3059 2019-01-17 13:46:30 +0100 kohm:
+
+ * scrkernel-basics.dtx: made \scr@sp@def \long
+
+r3058 2019-01-15 08:39:58 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/introduction.tex: corrections by O. C.
+
+r3057 2019-01-15 08:29:44 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/common-marginpar.tex, doc/english/common-options.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/common-textmarkup.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex: translation improvements
+ by Karl
+
+r3056 2019-01-14 14:29:39 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: defining own page
+ styles is in chapter 17 and 18
+
+r3055 2019-01-09 16:54:51 +0100 kohm:
+
+ * scrkernel-basics.dtx: copyright date changed
+
+r3054 2019-01-09 16:54:19 +0100 kohm:
+
+ * scrkernel-basics.dtx: added new error message for using
+ \FamilyOption with key=value or
+ list of options
+
+r3053 2019-01-01 13:48:49 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for new
+ beta
+
+r3052 2019-01-01 13:47:38 +0100 kohm:
+
+ * scrkernel-title.dtx: requested warnings about not used
+ \uppertitleback and \lowertitleback
+
+ in `twoside=false' or `titlepage=false' mode added
+
+r3051 2018-12-30 16:08:14 +0100 kohm:
+
+ * releaselist.txt: release 2018/12/30 v3.26a
+
+r3050 2018-12-30 15:36:55 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx, tocbasic.dtx:
+ fix of usage of \kernel@ifnextchar
+
+r3049 2018-12-22 17:30:41 +0100 kohm:
+
+ * doc/, doc/guide.tex, doc/scrguide.cls: simplified language select by
+ using babel's main=...
+
+r3048 2018-12-22 17:02:04 +0100 kohm:
+
+ * scrsource.tex: changed font encoding and font due to a change in
+ LaTeX
+
+r3047 2018-12-22 16:51:54 +0100 kohm:
+
+ * releaselist.txt, scrkernel-fonts.dtx: prepared for v3.26
+
+r3046 2018-12-22 16:30:58 +0100 kohm:
+
+ * scrkernel-version.dtx: prepared for 3.26
+
+r3045 2018-12-15 15:01:34 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: typofix [AK]
+
+r3044 2018-11-16 20:00:32 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: storage of option subject=underline fixed
+ [Elke]
+
+r3043 2018-11-06 08:50:06 +0100 kohm:
+
+ * scrkernel-basics.dtx: fixed definition of \Family@@CS@Key and
+ indirectly broken \Family@@String@@Key
+
+r3042 2018-10-23 08:59:49 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex, doc/english/,
+ doc/english/common-options.tex: changed key=value in the option list
+ of \documentclass note
+
+r3041 2018-10-22 11:14:19 +0200 kohm:
+
+ * scrkernel-basics.dtx: problem with options like
+ headheight=\baselineskip reduced
+
+r3040 2018-10-22 08:54:40 +0200 kohm:
+
+ * scrkernel-basics.dtx: make \FamilyProcessOptions robust against a
+ potential kernel change
+
+ that does not remove white spaces inside options (i. e. before an after the
+ =)
+
+r3039 2018-10-19 19:37:30 +0200 kohm:
+
+ * scrkernel-notepaper.dtx: warning fixed
+
+r3038 2018-10-14 20:31:51 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: afterindent for
+ \DeclareSectionCommand style part and change of behaviour of
+ beforeskip depending on afterindent
+
+r3037 2018-10-14 19:57:50 +0200 kohm:
+
+ * scrkernel-sections.dtx: option afterindent for
+ \DeclareSectionCommand with style part
+
+r3036 2018-10-08 15:15:51 +0200 kohm:
+
+ * doc/, doc/Makefile.guide: new variable EXAMPLE_LETTER_TEX_SRC
+
+r3035 2018-09-27 12:38:53 +0200 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: fix of
+ \DeclareSectionCommand option afterindent and the default
+
+r3034 2018-09-21 09:51:45 +0200 kohm:
+
+ * scrlayer-fancyhdr.dtx, Makefile: alpha of scrlayer-fancyhdr added
+
+r3033 2018-09-21 09:36:59 +0200 kohm:
+
+ * scrjura.dtx: fix the group level fix
+
+r3030 2018-09-20 14:20:52 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ typofix
+
+r3029 2018-09-20 11:56:30 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ typofix
+
+r3028 2018-09-20 11:22:18 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex: typofix
+
+r3027 2018-09-20 10:52:09 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: docu of new settings of
+ \DeclareSectionCommand etc.
+
+r3026 2018-09-20 09:39:51 +0200 kohm:
+
+ * scrkernel-sections.dtx: \DeclareSectionCommand's style chapter uses
+ a negative afterskip value as it is: a negative skip
+
+r3025 2018-09-18 12:58:34 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx: new option "runin=true|false|bysign"
+ for section style of \DeclareSectionCommand
+
+r3024 2018-09-18 10:58:23 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx: new option
+ "afterindent=true|false|bysign" for \DeclareSectionCommand
+
+r3023 2018-09-18 10:48:04 +0200 kohm:
+
+ * scrdocstrip.tex: endline char fix
+
+r3022 2018-09-18 10:47:09 +0200 kohm:
+
+ * scrjura.dtx: fix for group level while docstrip run of scrmain.ins
+
+r3021 2018-09-07 14:17:12 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: \toplevelpagestyle docu added
+
+r3020 2018-09-06 18:12:13 +0200 kohm:
+
+ * Makefile, scrmain.ins: scrhack and scrjura integrated into
+ scrmain.ins
+
+r3019 2018-09-06 17:45:33 +0200 kohm:
+
+ * scrhack.dtx: not longer needed manual code removed
+
+r3018 2018-09-06 08:27:10 +0200 kohm:
+
+ * TODO: missing \toplevelpagestyle docu
+
+r3017 2018-09-05 08:27:27 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: initial English comment fixed
+
+r3016 2018-09-03 13:40:59 +0200 kohm:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx, tocbasic.dtx: usage
+ of \@mkright replaced by either \addsecmark or
+ \c@secnumdepth=-\maxdimen\subsectionmark
+
+r3015 2018-09-03 12:51:32 +0200 kohm:
+
+ * scrlayer.dtx: using new \IfActiveMkBoth
+
+r3014 2018-09-03 12:40:17 +0200 kohm:
+
+ * scrkernel-basics.dtx: new \IfActiveMkBoth to detect whether or not
+ \@mkboth changes the
+ main mark
+
+r3013 2018-08-31 11:28:26 +0200 kohm:
+
+ * tocbasic.dtx: multitoc warning added
+
+r3012 2018-08-31 09:11:20 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: Typofix
+
+r3011 2018-08-29 09:35:17 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-language.dtx, scrlayer.dtx,
+ scrkernel-letterclassoptions.dtx, scrlayer-notecolumn.dtx,
+ scrkernel-sections.dtx, scrlfile.dtx, tocbasic.dtx,
+ scrkernel-basics.dtx: improvement of \@for loops
+
+r3010 2018-08-27 09:35:27 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx, doc/, doc/ngerman/,
+ doc/ngerman/tocbasic.tex, doc/english/, doc/english/tocbasic.tex: new
+ \DeclareTOCStyleEntries
+
+r3009 2018-08-27 08:53:35 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: documentation of \FamilyUseLengthMacroKey and
+ \FamilySetUseLength
+
+r3008 2018-08-27 08:31:52 +0200 kohm:
+
+ * scrkernel-basics.dtx: docufix
+
+r3007 2018-08-10 08:51:05 +0200 kohm:
+
+ * tocbasic.dtx: four info messages moved to trace mode
+
+r3006 2018-08-01 18:05:05 +0200 kohm:
+
+ * TODO: new missing documentation, one nice to have removed
+
+r3005 2018-08-01 18:04:11 +0200 kohm:
+
+ * scrjura.dtx: Typo in implementation docu
+
+r3004 2018-07-20 09:52:01 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrjura.tex, doc/english/,
+ doc/english/common-textmarkup.tex, doc/english/scrjura.tex: new font
+ element sentencenumber; new command \sentencenumberformat
+
+r3003 2018-07-20 09:09:12 +0200 kohm:
+
+ * scrjura.dtx: don't use an argument for \sentenceformat
+
+r3002 2018-07-20 09:05:42 +0200 kohm:
+
+ * scrjura.dtx: new command `\sentencenumberformat' and new (font)
+ element `sentencenumber'
+
+r3001 2018-07-19 09:00:29 +0200 kohm:
+
+ * TODO: new nice to have: \sentenceformat
+
+r3000 2018-07-18 14:56:07 +0200 kohm:
+
+ * scrlayer.dtx: fix of new features [Falk]
+
+r2999 2018-07-18 14:12:27 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: replaced reference to
+ \@setplength by \setplength
+
+r2998 2018-07-18 14:09:29 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: reference \newplength
+ instead of \@newplength
+
+r2997 2018-07-18 13:58:44 +0200 kohm:
+
+ * doc/, doc/linkalias.tex: extended link aliases
+
+r2996 2018-07-18 13:40:17 +0200 kohm:
+
+ * doc/, doc/linkalias.tex: \lalias extended by one optional argument
+
+r2995 2018-07-18 08:46:34 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: copyright year fixed
+
+r2994 2018-07-18 08:45:56 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: additional warnings about tocloft and
+ multitoc; some warnings
+ removed from scrlttr2
+
+r2993 2018-07-16 09:33:22 +0200 kohm:
+
+ * scrkernel-typearea.dtx: changed large line warning; replaced small
+ line warning by changed
+ small line info
+
+r2992 2018-07-14 14:33:18 +0200 kohm:
+
+ * scrlayer.dtx: Simplification and documentation
+
+r2991 2018-07-14 11:54:34 +0200 kohm:
+
+ * scrlayer.dtx: new layer attributes for hooks and artifacts
+
+r2990 2018-07-14 08:23:46 +0200 kohm:
+
+ * scrlayer.dtx: new command \ModifyLayers which expects a list of
+ layers instead of
+ only one layer
+
+r2989 2018-07-09 07:53:40 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Replaced example call
+ of \RedeclareTOCStyleEntry by \DeclareTOCStyleEntry
+
+r2988 2018-07-09 07:50:43 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Beispielaufruf
+ \RedeclareTOCStyleEntry durch \DeclareTOCStyleEntry ersetzt
+
+r2987 2018-06-27 13:14:50 +0200 kohm:
+
+ * scrkernel-sections.dtx: emergency fix for bookmark level gaps added
+
+r2986 2018-06-22 11:28:38 +0200 kohm:
+
+ * tocbasic.dtx: fixed penalty problem with features leveldown and
+ totoc in case of
+
+ existence of \chapter and \addsec by removing one group
+
+r2985 2018-06-18 17:54:11 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: fehlendes
+ Komma eingefügt (Elke)
+
+r2984 2018-06-09 08:44:23 +0200 kohm:
+
+ * tocbasic.dtx: earlier registration of extensions in \DeclareNewTOC
+
+r2983 2018-05-14 20:15:53 +0200 kohm:
+
+ * scrkernel-sections.dtx: missing \interlinepenalty \@M added in
+ \minisec
+
+r2982 2018-05-14 14:13:12 +0200 kohm:
+
+ * scrkernel-sections.dtx: new experimental macros \startsection@…
+ for package authors
+
+r2981 2018-04-26 14:55:38 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrlttr2-experts.tex:
+ documentation of new commands
+
+r2980 2018-04-26 14:06:09 +0200 kohm:
+
+ * scrkernel-pseudolengths.dtx: new \setplength, \addtoplength,
+ \setplengthtowidth,
+
+ \setplengthtoheight, \setplengthtodepth, \setplengthtototalheight
+
+r2979 2018-04-17 08:01:18 +0200 kohm:
+
+ * scrkernel-footnotes.dtx: checksum
+
+r2978 2018-04-17 07:55:10 +0200 kohm:
+
+ * scrkernel-letterclassoptions.dtx: improved warning message due to
+ scrletter package
+
+r2977 2018-04-17 07:52:13 +0200 kohm:
+
+ * scrkernel-footnotes.dtx: Do not use \@ifundefined side effect of
+ former LaTeX releases
+
+r2976 2018-04-17 07:31:42 +0200 kohm:
+
+ * japanlco.dtx: warning message extended to respect the scrletter
+ package
+
+r2975 2018-04-13 07:41:27 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Trennung von
+ "Inhaltsverzeichniseinträge"
+
+r2974 2018-04-09 10:14:11 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/scrextend.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/scrjura.tex,
+ doc/english/common-pagestylemanipulation.tex: additional translation
+ improvements by Karl
+
+r2973 2018-04-01 10:53:34 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: change version fixed
+
+r2972 2018-04-01 10:51:48 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: usage of not yet documented XeTeX primitive
+ \mdfivesum
+
+r2971 2018-03-31 12:02:08 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ v3.26 BETA
+
+r2970 2018-03-31 12:00:50 +0200 kohm:
+
+ * releaselist.txt: Release v3.25
+
+r2969 2018-03-30 11:57:25 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbase.tex, doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/scrjuraexample.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrdatetime.tex,
+ doc/english/tocbasic.tex, doc/english/typearea-experts.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex: translations
+ improvement by Karl
+
+r2968 2018-03-30 09:37:06 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/common-marginpar.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/common-interleafpage.tex, doc/english/adrconvnote.tex,
+ doc/english/common-dictum.tex, doc/english/common-options.tex,
+ doc/english/common-footnotes.tex, doc/english/common-lists.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/common-titles.tex,
+ doc/english/common-typearea.tex: translations improvement by Karl
+
+r2967 2018-03-28 16:50:29 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrjura.tex: sentence completed
+
+r2966 2018-03-28 11:51:12 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-parmarkup.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrjura.tex,
+ doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex: avaible values etc.
+ instead of possible values etc.
+
+r2965 2018-03-28 11:44:09 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrjuraexample.tex,
+ doc/english/common-footnotes.tex, doc/english/typearea-experts.tex,
+ doc/english/scrjura.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/preface.tex: translations improvement or made by Karl
+
+r2964 2018-03-27 11:46:14 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/scrdatetime.tex, doc/english/scrextend.tex,
+ doc/english/tocbasic.tex, doc/english/scrhack.tex,
+ doc/english/scrlfile.tex, doc/english/scrwfile.tex,
+ doc/english/scraddr.tex: translations improvement by Karl
+
+r2963 2018-03-27 11:10:14 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: label fixed
+
+r2962 2018-03-21 10:37:34 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-marginpar.tex, doc/english/common-parmarkup.tex,
+ doc/english/common-fontsize.tex, doc/english/guide-english.tex,
+ doc/english/japanlco.tex, doc/english/common-options.tex,
+ doc/english/common-footnotes.tex, doc/english/common-lists.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/common-textmarkup.tex,
+ doc/english/common-typearea.tex, doc/english/preface.tex: improvements
+ by Karl
+
+r2961 2018-03-21 09:29:17 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2examples.dtx, doc/english/,
+ doc/english/common-fontsize.tex, doc/english/scrlttr2examples.dtx:
+ improvements by Karl
+
+r2960 2018-03-16 09:39:32 +0100 kohm:
+
+ * scrhack.dtx: usage of \@dottedtocline replaced by
+ \DeclareTOCStyleEntry
+
+r2959 2018-03-15 14:32:29 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Info message improved
+
+r2958 2018-03-15 14:21:49 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Warning improved
+
+r2957 2018-03-12 09:45:33 +0100 kohm:
+
+ * doc/, doc/guide.bib, doc/ngerman/, doc/ngerman/preface.tex,
+ doc/english/, doc/english/preface.tex: preface to KOMA-Script 3.25
+ instead of 3.22a
+
+r2956 2018-03-12 08:43:21 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/common-marginpar.tex,
+ doc/english/scrlayer-notecolumn-example.tex,
+ doc/english/scrlayer-notecolumn.tex, doc/english/adrconvnote.tex: new
+ translation by Karl
+
+r2955 2018-03-12 08:08:52 +0100 kohm:
+
+ * README.in/, README.in/README.scrartcl.cls,
+ README.in/README.scrlttr2.cls, README.in/README.scrreprt.cls,
+ README.in/README.scrdoc.cls, README.in/README.scrbook.cls: improved
+ README files by Karl
+
+r2954 2018-03-10 22:15:16 +0100 kohm:
+
+ * scrkernel-sections.dtx: fixed error messages of
+ \DeclareNewSectionCommand and \RedeclareSectionCommand
+
+r2953 2018-03-05 09:11:19 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Copyright-Datum geändert
+
+r2952 2018-03-05 08:58:44 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Revision is a svn:keyword now
+
+r2951 2018-03-05 08:55:12 +0100 kohm:
+
+ * scrkernel-typearea.dtx: don't use \ta@divlist if paper is not
+ (almost) A4 and version >= 3.25
+
+r2950 2018-03-05 08:54:19 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: New compatibility value
+
+r2949 2018-03-01 10:42:54 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/scrbase.tex: docu of
+ \FamilyCSKey
+
+r2948 2018-03-01 10:28:00 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/tocbasic.tex: docu of options
+ setup and unset of \DeclareNewTOC
+
+r2947 2018-03-01 10:14:52 +0100 kohm:
+
+ * TODO, doc/, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: documentation of
+ \IfIsAliaskomafont
+
+r2946 2018-03-01 10:05:28 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/scrjura.tex: no more undefined
+ references; scrjura.tex synced with German version
+
+r2945 2018-03-01 09:03:49 +0100 kohm:
+
+ * TODO: Überholte Punkte entfernt, Frage bezüglich "simple switch"
+ ergänzt
+
+r2944 2018-02-28 13:23:23 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/common-marginpar.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/expertpart.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/common-dictum.tex,
+ doc/english/common-options.tex, doc/english/common-footnotes.tex,
+ doc/english/scrextend.tex, doc/english/common-lists.tex,
+ doc/english/common-draftmode.tex, doc/english/common-textmarkup.tex,
+ doc/english/scrlayer.tex, doc/english/typearea.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/authorpart.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/preface.tex: New translation by Karl Hagen
+
+r2943 2018-02-28 13:15:51 +0100 kohm:
+
+ * TODO: Fehler längst beseitigt
+
+r2942 2018-02-19 08:23:07 +0100 kohm:
+
+ * scrkernel-title.dtx: bugfix
+
+r2941 2018-02-16 04:42:17 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/scrwfile.tex: Korrekturen [Falk]
+
+r2940 2018-02-13 09:46:59 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: Farbgebung
+
+r2939 2018-02-13 09:46:41 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: Fehlerkorrekturen
+ [Ernst]
+
+r2938 2018-02-12 10:12:53 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix usage of font for new defined heading
+ commands of style part
+
+r2937 2018-02-12 08:08:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Korrekturen [Ernst]
+
+r2936 2018-02-07 13:47:54 +0100 kohm:
+
+ * doc/, doc/guide.tex, doc/scrpage2.tex: scrpage2.pdf generation
+ improved
+
+r2935 2018-02-07 12:57:30 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: improvements for non-free
+
+r2934 2018-02-06 10:26:38 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrjura.tex: Korrekturen [Heiner+Alexander]
+
+r2933 2018-02-06 09:33:25 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: Korrekturen [Elke]
+
+r2932 2018-02-06 09:20:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex: Eine Randmarke
+ eingefügt [Elke]
+
+r2931 2018-02-05 10:50:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/scraddr.tex: wie-Komma-Korrekturen
+
+r2930 2018-02-05 09:57:42 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex:
+ Doppelpunktverwendung im Satz
+
+r2929 2018-02-05 07:37:22 +0100 kohm:
+
+ * scrlayer-scrpage.dtx, scrkernel-fonts.dtx: warning for element
+ pagehead replaced by an info
+
+r2928 2018-02-02 18:10:27 +0100 kohm:
+
+ * scrlayer-notecolumn.dtx: usage of \closein and \closeout fixed
+
+r2927 2018-02-02 12:16:47 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex: Korrekturen
+ [Elke+Markus]
+
+r2926 2018-02-02 11:18:15 +0100 kohm:
+
+ * TODO: new issue
+
+r2925 2018-02-02 09:33:36 +0100 kohm:
+
+ * TODO: \IfIsAliaskomafont dokumentiert
+
+r2924 2018-02-02 08:58:15 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Korrektur
+ [Heiner]
+
+r2923 2018-02-02 07:58:03 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Korrektur [Elke]
+
+r2922 2018-02-01 12:55:46 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/common-typearea.tex: Korrekturen [Ernst + Rolf]
+
+r2921 2018-01-31 16:27:33 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Korrekturen
+
+r2920 2018-01-31 14:24:50 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/introduction.tex: Korrekturen
+ [Heiner]
+
+r2919 2018-01-31 13:56:21 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrlayer.tex: Korrekturen [Heiner]
+
+r2918 2018-01-31 13:01:01 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: Korrekturen [Heiner und
+ Elke]
+
+r2917 2018-01-31 11:33:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Korrektur
+ [Elke]
+
+r2916 2018-01-31 09:49:41 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex: Korrekturen
+ [Heiner]
+
+r2915 2018-01-31 09:48:21 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: Korrekturen
+ [Heiner]
+
+r2914 2018-01-31 09:21:42 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: Korrekturen [Heiner]
+
+r2913 2018-01-31 08:51:30 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: Korrekturen [Heiner]
+
+r2912 2018-01-31 08:18:25 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrhack.tex: Korrekturen [Heiner]
+
+r2911 2018-01-30 13:37:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/common-draftmode.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/scrwfile.tex, doc/ngerman/scraddr.tex: Korrekturen
+ [Heiner]
+
+r2910 2018-01-30 11:07:48 +0100 kohm:
+
+ * doc/, doc/guide.bib, doc/ngerman/, doc/ngerman/scrlttr2.tex:
+ adrconv-Problematik aufgegriffen
+
+r2909 2018-01-30 09:32:50 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-oddorevenpage.tex,
+ doc/ngerman/common-compatibility.tex: Korrekturen [Heiner]
+
+r2908 2018-01-30 08:21:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2examples.dtx: Korrektur
+ [Heiner]
+
+r2907 2018-01-29 14:12:59 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/adrconvnote.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/introduction.tex:
+ Korrekturen [Heiner]
+
+r2906 2018-01-26 15:57:01 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjuraexample.tex: eine Änderung
+ zu viel
+
+r2905 2018-01-26 11:15:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjuraexample.tex: Korrekturen
+ [Heiner]
+
+r2904 2018-01-26 11:14:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Korrekturen [Heiner]
+
+r2903 2018-01-26 09:46:22 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-textmarkup.tex: Korrekturen [Elke]
+
+r2902 2018-01-26 09:27:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: zusätzliche
+ Randmarken [Elke]
+
+r2901 2018-01-26 09:21:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex: scrlttr2-Randnotiz
+ auf Kapitel zu scrlttr2 und scrletter beschränkt
+
+r2900 2018-01-26 08:58:58 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: neueste -->
+ neuste
+
+r2899 2018-01-26 08:56:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Korrekturen [Heiner]
+
+r2898 2018-01-26 08:18:26 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: Ligatur in
+ nicht verwendetem Text gebrochen
+
+r2897 2018-01-25 11:57:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Korrekturen
+
+r2896 2018-01-25 10:23:54 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/expertpart.tex,
+ doc/ngerman/typearea.tex, doc/ngerman/authorpart.tex,
+ doc/ngerman/common-compatibility.tex, doc/ngerman/introduction.tex:
+ Korrekturen
+
+r2895 2018-01-24 12:02:37 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Verwendung von
+ \OptionVName korrigiert
+
+r2894 2018-01-24 11:59:22 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: \OptionVName-Nutzung
+ korrigiert
+
+r2893 2018-01-24 11:44:29 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-titles.tex: Index-Einträge nicht mit ~\PValue,
+ sondern mit ~\textKValue
+
+r2892 2018-01-24 11:26:46 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/typearea.tex: Paket-Indexeintrag
+
+r2891 2018-01-24 11:22:18 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: Letzte
+ Änderungen korrigiert
+
+r2890 2018-01-24 11:21:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Hauptindexeintrag für das Paket
+
+r2889 2018-01-24 11:20:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Indexeintrag für das Paket
+
+r2888 2018-01-24 11:11:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex: Index
+ Eintrag für scrlayer korrekt einsortiert
+
+r2887 2018-01-24 11:06:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: Tabelle
+ korrigiert um keine falschen Variablen-Einträge in den Index
+
+ zu verursachen
+
+r2886 2018-01-24 10:56:26 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Index
+ Eintrag korrigiert
+
+r2885 2018-01-24 10:46:29 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Seitenstile nicht fett
+
+r2884 2018-01-24 10:18:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Zusätzliche
+ Index-Einträge für lco-Dateien
+
+r2883 2018-01-24 09:07:53 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: new keyword
+
+r2882 2018-01-24 08:56:56 +0100 kohm:
+
+ * doc/, doc/guide.bib: gaphics date update
+
+r2881 2018-01-23 20:13:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Verweise
+ auf entfernten Anhang entfernt
+
+r2880 2018-01-23 11:31:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Dokumentation
+ überarbeitet
+
+r2879 2018-01-23 11:31:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Linkfehler korrigiert
+
+r2878 2018-01-23 09:34:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Laden von LCOs bei
+ scrletter präzisiert
+
+r2877 2018-01-22 13:07:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: einige
+ Kürzungen und sprachliche Vereinfachungen
+
+r2876 2018-01-19 11:35:39 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Kapitel überarbeitet
+
+r2875 2018-01-18 14:22:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ diverse Verbesserungen und Erweiterung der Verlinkung
+
+r2874 2018-01-18 12:23:37 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: zwei weitere
+ Trennausnahmen
+
+r2873 2018-01-18 12:06:43 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: neue
+ Trennausnahme
+
+r2872 2018-01-17 13:01:54 +0100 kohm:
+
+ * scrlayer-notecolumn.dtx: Lua replacement of \pdfmdfivesum added for
+ usage of lualatex
+
+r2871 2018-01-17 10:27:46 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex: leichte
+ Verbesserungen
+
+r2870 2018-01-17 09:33:25 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Vollverlinkung
+
+r2869 2018-01-16 14:19:39 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/scrlayer-scrpage.tex: diverse Hinweise zu scrpage2
+ verschoben
+
+r2868 2018-01-16 12:16:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ kleiner Tippfehler
+
+r2867 2018-01-16 11:43:11 +0100 kohm:
+
+ * TODO: missing English docu issue
+
+r2866 2018-01-16 11:41:41 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex: Option
+ autoenlargethispage
+
+r2865 2018-01-16 11:41:21 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: weitere Verbesserungen
+ an der Anleitung
+
+r2864 2018-01-16 08:55:20 +0100 kohm:
+
+ * scrkernel-listsof.dtx: forgotten debug messages
+
+r2863 2018-01-15 12:29:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Umbruchoptimierung
+
+r2862 2018-01-15 11:50:39 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ Einige Kürzungen und Präzisierungen
+
+r2861 2018-01-15 10:50:58 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex:
+ Wiederholungstext gekürzt
+
+r2860 2018-01-14 12:21:47 +0100 kohm:
+
+ * TODO: need docu for autoenlargeheadfoot
+
+r2859 2018-01-14 12:19:38 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: new option autoenlargeheadfoot
+
+r2858 2018-01-11 11:21:51 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Verbesserungen bei den
+ Erklärungen
+
+r2857 2018-01-11 08:15:39 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex: section about state of
+ development removed
+
+r2856 2018-01-10 09:26:15 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrhack.tex: Erklärung zum nomencl
+ Hack überarbeitet
+
+r2855 2018-01-10 08:32:08 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Quellcodeumbruch
+
+r2854 2018-01-10 07:45:36 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: link colors changed
+
+r2853 2018-01-09 12:35:34 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Kapitelüberarbeitung
+
+r2852 2018-01-09 09:42:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: einige Verbesserungen
+ an der Doku
+
+r2851 2018-01-09 08:41:11 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: additional keywords
+
+r2850 2018-01-09 08:39:59 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: additional keywords
+
+r2849 2018-01-08 13:31:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: diverse Verbesserungen
+ in der Doku
+
+r2848 2017-12-19 11:12:33 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Doku von
+ \withoutparnumber verbessert
+
+r2847 2017-12-19 10:38:00 +0100 kohm:
+
+ * scrjura.dtx, doc/, doc/ngerman/, doc/ngerman/scrjura.tex: new
+ \withoutparnumber
+
+r2846 2017-12-15 09:47:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex: Vollverlinkung
+
+r2845 2017-12-15 09:47:01 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: \XeLaTeX
+
+r2844 2017-12-14 12:29:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: einige Verbesserungen
+
+r2843 2017-12-14 11:08:46 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: Diverse Verbesserungen,
+ Umsortierungen, Anpassungen
+
+r2842 2017-12-14 09:02:53 +0100 kohm:
+
+ * doc/, doc/guide.bib: one more Oberdiek package and revision of
+ others
+
+r2841 2017-12-13 12:12:48 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: einige Passagen
+ verschlankt, andere erweitert
+
+r2840 2017-12-13 12:12:28 +0100 kohm:
+
+ * TODO: kleine Änderung
+
+r2839 2017-12-13 12:11:29 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: new keyword
+
+r2838 2017-12-13 10:25:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: an Stelle → anstelle
+
+r2837 2017-12-13 10:21:57 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: an Stelle → anstelle
+
+r2836 2017-12-13 10:21:03 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: an Stelle → anstelle
+
+r2835 2017-12-13 10:17:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: an Stelle →
+ anstelle
+
+r2834 2017-12-13 10:16:22 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: an Stelle → anstelle
+
+r2833 2017-12-13 10:15:23 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: an Stelle → anstelle
+
+r2832 2017-12-13 10:13:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: an Stelle → anstelle
+
+r2831 2017-12-13 10:12:48 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: an Stelle
+ → anstelle
+
+r2830 2017-12-13 10:11:34 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex: an Stelle →
+ anstelle
+
+r2829 2017-12-13 10:11:17 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex: an
+ Stelle → anstelle
+
+r2828 2017-12-13 10:09:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: an Stelle →
+ anstelle
+
+r2827 2017-12-13 10:05:13 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: an Stelle →
+ anstelle
+
+r2826 2017-12-11 09:20:20 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: new keyword
+
+r2825 2017-12-11 09:18:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Einige Umstellungen in
+ der Formatierung
+
+r2824 2017-12-11 08:40:49 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Umbruch im Quellcode
+
+r2823 2017-12-08 21:50:56 +0100 kohm:
+
+ * scrkernel-fonts.dtx: additional warning if an element becomes and
+ alias and vica versa
+
+r2822 2017-12-08 12:01:06 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrjura.tex:
+ Teilüberarbeitung der scrjura-Anleitung
+
+r2821 2017-12-08 11:55:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex: Deutliche
+ Überarbeitung für scrjura
+
+r2820 2017-12-08 10:27:49 +0100 kohm:
+
+ * scrjura.dtx: several fixes and new option "ClauseFont" for
+ \DeclareNewJuraEnvironment
+
+r2819 2017-12-08 10:24:32 +0100 kohm:
+
+ * scrkernel-fonts.dtx: \IfIsAliaskomafont fixed
+
+r2818 2017-12-08 09:31:53 +0100 kohm:
+
+ * scrkernel-basics.dtx: new \FamilyCSKey
+
+r2817 2017-12-08 09:18:04 +0100 kohm:
+
+ * scrkernel-fonts.dtx: new \IfIsAliaskomafont
+
+r2816 2017-12-08 08:37:47 +0100 kohm:
+
+ * scrjura.dtx: font alias Clause inside new environments fixed
+
+r2815 2017-12-08 08:10:55 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: einige
+ Verbesserungen für scrextend auch für scrjura übernommen
+
+r2814 2017-12-07 12:45:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrextend.tex: Kapitel scrextend
+ überabreitet
+
+r2813 2017-12-07 12:43:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex: kleine
+ Verbesserungen
+
+r2812 2017-12-07 12:36:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-dictum.tex:
+ Umbruchoptimierung
+
+r2811 2017-12-07 12:24:25 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-dictum.tex: kleinere
+ Verbesserungen
+
+r2810 2017-12-07 12:14:29 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: Beispiele in
+ Kapitel 3
+
+r2809 2017-12-07 11:43:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex: Für die
+ Beispiele wird auf Abschnitt 3.13 verwiesen
+
+r2808 2017-12-07 11:10:17 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: kleinere
+ Verbesserungen
+
+r2807 2017-12-07 10:29:52 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex: Kürzung für
+ den Umbruch bei scrextend
+
+r2806 2017-12-07 10:03:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: kleine
+ Verbesserungen für scrextend
+
+r2805 2017-12-07 09:52:54 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-draftmode.tex: zusätzlichen
+ Hinweis bei scrextend eingefügt
+
+r2804 2017-12-07 09:34:03 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-compatibility.tex: kleinere
+ Verbesserungen zur Unterscheidung von Paket und Klasse,
+
+ keine veralteten Optionen bei scrextend
+
+r2803 2017-12-07 09:09:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: geringfügige
+ Verkürzungen für scrextend
+
+r2802 2017-12-06 11:45:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scraddr.tex: Kosmetische
+ Verbesserungen
+
+r2801 2017-12-06 11:17:40 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: kleinere
+ Aktualisierungen
+
+r2800 2017-12-06 10:42:36 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: dimexpr and numexpr added to the keywords
+
+r2799 2017-12-06 10:27:11 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: minimale
+ Randnotizverschiebung
+
+r2798 2017-12-06 10:06:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ Verlinkung für scrlayer-scrpage
+
+r2797 2017-12-05 13:18:41 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: several
+ improvements
+
+r2796 2017-12-05 13:18:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ several improvements
+
+r2795 2017-12-05 12:37:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ das "definierten" war Unfug, denn man kann tatsächlich teilweise
+ auch
+ noch nicht definierte Seitenstile beeinflussen
+
+r2794 2017-12-05 09:05:38 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex: minimale
+ Anpassungen
+
+r2793 2017-12-05 08:37:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex:
+ zusätzliche Links
+
+r2792 2017-12-05 08:26:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: Umbruch
+ verbessert
+
+r2791 2017-12-04 12:36:25 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: und noch
+ eine Vereinheitlichung
+
+r2790 2017-12-04 12:33:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: noch ein
+ paar Vereinheitlichungen bezüglich der Verzeichnisoptionen
+
+r2789 2017-12-04 09:59:43 +0100 kohm:
+
+ * scrkernel-basics.dtx: last change fixed
+
+r2788 2017-12-04 09:50:18 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ listof=standardlevel
+
+r2787 2017-12-04 09:48:18 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-marginpar.tex:
+ Umbruchkorrekturtext aktiviert
+
+r2786 2017-12-04 09:31:33 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ listof|bibliography|index=standardlevel
+
+r2785 2017-12-04 09:25:29 +0100 kohm:
+
+ * scrkernel-listsof.dtx: comma in book/report dependency moved to
+ avoid empty element in
+ scrartcl case
+
+r2784 2017-12-04 09:24:13 +0100 kohm:
+
+ * scrkernel-basics.dtx: ignore completely empty elements in numerical
+ key lists
+
+r2783 2017-12-04 09:10:46 +0100 kohm:
+
+ * scrkernel-listsof.dtx: new listof=standardlevel
+
+r2782 2017-12-04 08:47:52 +0100 kohm:
+
+ * scrkernel-index.dtx: same numbered-options as listof and
+ bibliography
+
+r2781 2017-12-04 08:31:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ listof=leftaligntextentries korrigiert
+
+r2780 2017-12-03 22:49:27 +0100 kohm:
+
+ * doc/, doc/linkalias.tex: new alias
+ desc:maincls-experts.cmd.the/Zaehler/
+
+r2779 2017-12-03 22:44:49 +0100 kohm:
+
+ * doc/, doc/linkalias.tex: aliases for
+ desc:maincls-experts.cmd.thepage and
+ desc:maincls-experts.cmd.pagemark
+
+r2778 2017-12-03 22:27:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ multiply-defined labels
+
+r2777 2017-12-03 22:22:51 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Leerzeichen
+
+r2776 2017-12-03 22:22:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Leerzeichen
+
+r2775 2017-12-03 22:21:33 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Group Level Fehler
+
+r2774 2017-12-03 22:21:07 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrjura.tex: Leerzeichen
+
+r2773 2017-12-03 22:20:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex:
+ Quellcodeumbruch
+
+r2772 2017-12-03 22:17:46 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex:
+ Querverweise korrigiert
+
+r2771 2017-12-03 22:17:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: variablen Text
+ für scrextend korrigiert
+
+r2770 2017-12-03 21:17:05 +0100 kohm:
+
+ * doc/, doc/bin/, doc/bin/genhtmlidx.pl: adapted regular expressions
+ for new perl
+
+r2769 2017-12-03 11:56:06 +0100 kohm:
+
+ * scrkernel-bibliography.dtx: bibliography=notoc and
+ bibliography=totoc in scrartcl fixed
+
+r2768 2017-12-01 12:47:27 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Diverse
+ Modernisierungen und Anpassungen für scrletter
+
+r2767 2017-12-01 11:55:23 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Es wird Zeit
+ die Spuren von scrlettr zu beseitigen …
+
+r2766 2017-12-01 11:04:31 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex: Anpassungen für
+ scrletter
+
+r2765 2017-12-01 10:24:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: Anpassungen
+ für scrletter
+
+r2764 2017-12-01 09:41:54 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex:
+ Anpassungen an scrletter
+
+r2763 2017-11-30 15:53:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlttr2-experts.tex: diverse Verbesserungen zur besseren
+ Integration von scrletter
+
+r2762 2017-11-30 12:57:51 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-parmarkup.tex: Anpassungen
+ für scrletter
+
+r2761 2017-11-29 14:35:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex: diverse Verbesserungen für
+ scrletter
+
+r2760 2017-11-29 12:43:49 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex: Anpassungen
+ für scrletter
+
+r2759 2017-11-29 12:23:23 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: Anpassungen
+ für scrletter
+
+r2758 2017-11-29 10:43:48 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-typearea.tex: Anpassung für
+ scrletter
+
+r2757 2017-11-29 10:41:01 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-draftmode.tex: Anpassungen
+ für scrletter
+
+r2756 2017-11-29 10:37:42 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-compatibility.tex: missing
+ empty argument added
+
+r2755 2017-11-29 10:28:57 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-compatibility.tex: scrletter
+ behandelt
+
+r2754 2017-11-29 10:08:52 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: fehlendes
+ Leerzeichen ergänzt
+
+r2753 2017-11-29 09:58:32 +0100 kohm:
+
+ * scrkernel-pseudolengths.dtx: several \glueexpr added to improve
+ pseudo lengths
+
+r2752 2017-11-28 13:04:55 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ zusätzlicher Text für die Buchfassung
+
+r2751 2017-11-28 12:18:12 +0100 kohm:
+
+ * doc/, doc/guide.bib: imakeidx added
+
+r2750 2017-11-28 11:58:26 +0100 kohm:
+
+ * doc/, doc/guide.bib: supertabular added
+
+r2749 2017-11-28 11:58:07 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: kosmetische
+ Änderungen
+
+r2748 2017-11-28 11:57:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: diverse
+ Korrekturen und Verbesserungen
+
+r2747 2017-11-28 11:48:19 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: tiny source formatting change
+
+r2746 2017-11-28 11:03:16 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-parmarkup.tex: \important[i]
+ beseitigt
+
+r2745 2017-11-28 10:44:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: \important
+ without i
+
+r2744 2017-11-28 10:40:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: \important
+ verbessert
+
+r2743 2017-11-27 16:29:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Tippfehler und Stilkorrektur
+
+r2742 2017-11-27 16:28:15 +0100 kohm:
+
+ * TODO: undefined reference issue
+
+r2741 2017-11-27 12:02:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-lists.tex: Diverse
+ Verbesserungen
+
+r2740 2017-11-27 10:05:05 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: serveral keywords fixed
+
+r2739 2017-11-27 09:49:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: diverse
+ Verbesserungen
+
+r2738 2017-11-27 09:30:16 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: diverse
+ Verbesserungen
+
+r2737 2017-11-24 12:30:24 +0100 kohm:
+
+ * doc/, doc/guide.bib, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: einige Verbesserungen und
+ kleinere Erweiterungen
+
+r2736 2017-11-24 09:46:04 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: Erklärungen
+ teilweise verschoben
+
+r2735 2017-11-24 09:45:11 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: additional keywords
+
+r2734 2017-11-24 09:06:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex: Umbruch
+ für die Buchversion verbessert, Erklärungen gestrafft
+
+r2733 2017-11-23 13:34:18 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: zusätzliche Informationen
+ eingefügt
+
+r2732 2017-11-23 10:47:57 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-parmarkup.tex: zusätzliche
+ Marginalien
+
+r2731 2017-11-23 10:04:09 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: fixed default font setting for page numbers
+ in ToC of level chapter or
+ section (if chapter does not exist)
+
+r2730 2017-11-22 10:41:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ Dokumentation an einige Neuerungen angepasst und Umbruch für die
+
+ Buchausgabe verbessert
+
+r2729 2017-11-22 10:40:43 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: additional keywords
+
+r2728 2017-11-21 13:13:57 +0100 kohm:
+
+ * TODO: new missing translation
+
+r2727 2017-11-21 13:13:38 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: minimale,
+ stilistische Verbesserung
+
+r2726 2017-11-21 13:12:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: \frontispiece und
+ diverse Verbesserungen
+
+r2725 2017-11-21 12:50:05 +0100 kohm:
+
+ * scrkernel-title.dtx: new \frontispiece
+
+r2724 2017-11-21 12:07:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: zusätzliche
+ Marginalien
+
+r2723 2017-11-21 11:43:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex:
+ Umbruchoptimierung
+
+r2722 2017-11-21 11:24:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: Unklarheiten
+ beseitigt
+
+r2721 2017-11-21 11:04:37 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-typearea.tex: Umbruch
+ verbessert, Seitenzahl hinzugefügt
+
+r2720 2017-11-21 11:01:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex:
+ Ligaturauflösung
+
+r2719 2017-11-21 11:00:29 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Ligaturauflösung
+
+r2718 2017-11-21 10:59:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Ligaturauflösung
+
+r2717 2017-11-21 10:57:08 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ Ligaturauflösung
+
+r2716 2017-11-21 10:55:31 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Ligaturauflösung
+
+r2715 2017-11-21 10:55:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Ligaturauflösung
+
+r2714 2017-11-21 10:52:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex:
+ Ligaturauf"|lösung
+
+r2713 2017-11-21 10:41:42 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-draftmode.tex: documentation
+ of new option overfullrule
+
+r2712 2017-11-21 10:27:02 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: new option overfullrule
+
+r2711 2017-11-21 10:06:01 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: Wiederholung
+ leicht gekürzt
+
+r2710 2017-11-21 10:05:38 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-compatibility.tex: Umbruch
+ verbessert
+
+r2709 2017-11-21 09:03:52 +0100 kohm:
+
+ * tocbasic.dtx: tocbibind warning added
+
+r2708 2017-11-21 08:03:54 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: tocbibind warning
+
+r2707 2017-11-20 12:43:38 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ missing option descriptions added
+
+r2706 2017-11-20 11:38:54 +0100 kohm:
+
+ * TODO, tocbasic.dtx, doc/, doc/ngerman/, doc/ngerman/tocbasic.tex:
+ new options "setup" and "unset" for \DeclareNewTOC
+
+r2705 2017-11-16 15:42:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Tippfehler [gefunden
+ von Elke]
+
+r2704 2017-11-16 09:19:11 +0100 kohm:
+
+ * TODO: less cryptic entry
+
+r2703 2017-11-16 09:17:02 +0100 kohm:
+
+ * TODO: the classes do use \DeclareNewTOC for lof and lot
+
+r2702 2017-11-16 09:15:55 +0100 kohm:
+
+ * scrkernel-basics.dtx: the name and the value of the original options
+ are easily available inside @else@ option
+
+r2701 2017-11-15 15:02:01 +0100 kohm:
+
+ * scrkernel-floats.dtx, TODO, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: new \setcaptionalignment
+
+r2700 2017-11-15 08:19:59 +0100 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-floats.dtx,
+ scrkernel-letterclassoptions.dtx, TODO, scrkernel-miscellaneous.dtx:
+ \unskip\strut replaced by new \scr@endstrut
+
+r2699 2017-11-14 15:39:18 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Diverse kleinere und
+ größere Verbesserungen und Anpassungen an aktuelle
+ KOMA-Script-Versionen
+
+r2698 2017-11-14 15:04:34 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: \XeTeX added
+
+r2697 2017-11-14 12:59:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex, doc/english/,
+ doc/english/common-options.tex: note about the scope of \KOMAoption
+ and \KOMAoptions added
+
+r2696 2017-11-14 10:14:12 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/introduction.tex: revert last
+ changes
+
+r2695 2017-11-14 10:06:55 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/introduction.tex: Anpassung an die
+ lange vergangene Zeit
+
+r2694 2017-11-14 09:47:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/introduction.tex, doc/english/,
+ doc/english/introduction.tex: Same sections in German and English
+ guide
+
+r2693 2017-11-13 20:37:03 +0100 kohm:
+
+ * TODO: new issue
+
+r2692 2017-11-13 14:58:12 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-lists.tex: Links improved
+
+r2691 2017-11-13 14:09:40 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: righttopmark etc. added
+
+r2690 2017-11-13 13:04:34 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix: \FloatStyle in \PageStyle replaced by
+ \PageStyle
+
+r2689 2017-11-13 12:58:55 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/common-textmarkup.tex:
+ references fixed
+
+r2688 2017-11-13 10:15:20 +0100 kohm:
+
+ * doc/, doc/guide.bib, doc/ngerman/,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2-experts.tex: scrlettr linked to
+ koma-script-obsolete
+
+r2687 2017-11-13 09:36:26 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: \textnote inside \item
+ moved outside
+
+r2686 2017-11-13 09:35:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: \textnote inside
+ desclist deactivated
+
+r2685 2017-10-13 16:17:16 +0200 kohm:
+
+ * scrkernel-bibliography.dtx: new definition of \bibliography@heding
+ used by \bib@heading
+
+r2684 2017-10-13 15:35:13 +0200 kohm:
+
+ * scrkernel-index.dtx, scrlayer.dtx, scrkernel-bibliography.dtx,
+ scrmain.ins: \@mkright, \@mkleft, \@mkdouble added to and used by the
+ KOMA-Script classes
+
+r2683 2017-10-10 16:10:02 +0200 kohm:
+
+ * scrkernel-floats.dtx, scrkernel-listsof.dtx, tocbasic.dtx: major
+ change: table/table* reimplementation using \DeclareNewTOC
+
+r2682 2017-10-10 14:57:37 +0200 kohm:
+
+ * scrkernel-floats.dtx, scrkernel-listsof.dtx, tocbasic.dtx: major
+ change: figure/figure* reimplementation using \DeclareNewTOC
+
+r2681 2017-09-28 07:45:58 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ \DeclareSectionCommand attibute innerskip of chapter is
+ 0.5\baselineskip
+
+r2680 2017-09-28 07:45:12 +0200 kohm:
+
+ * scrkernel-paragraphs.dtx, tocbasic.dtx: typo fix
+
+r2679 2017-09-28 07:44:43 +0200 kohm:
+
+ * TODO: new nice to have
+
+r2678 2017-09-23 08:51:25 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex, doc/english/,
+ doc/english/scrwfile.tex: reference fixed
+
+r2677 2017-09-13 14:12:17 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: Typofix [TK]
+
+r2676 2017-09-07 17:43:34 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex:
+ \partlineswithprefixformat added
+
+r2675 2017-09-07 16:42:04 +0200 kohm:
+
+ * scrkernel-sections.dtx: new \partlineswithprefixformat
+
+r2674 2017-09-07 11:35:17 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.25 BETA
+
+r2673 2017-09-07 10:22:59 +0200 kohm:
+
+ * releaselist.txt: prepared for release v3.24
+
+r2672 2017-08-20 16:07:42 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: verhunzte
+ Formulierung seit der Umstellung der common-Dateien wieder
+ korrigiert
+
+r2671 2017-08-20 13:48:13 +0200 kohm:
+
+ * TODO: several nice-to-have added
+
+r2670 2017-08-11 11:31:30 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: consecutive \clearpage followed by breaking
+ notes result in flushing
+ to much notes
+
+r2669 2017-08-10 13:11:11 +0200 kohm:
+
+ * doc/, doc/scrpage2.tex: don't use package filecontents
+
+r2667 2017-08-10 13:04:15 +0200 kohm:
+
+ * doc/, doc/scrpage2.tex: \Xmp… added
+
+r2666 2017-08-10 12:24:54 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: fix: consecutive \clearpage result in
+ flushing to much notes
+
+r2665 2017-08-08 18:17:31 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex, doc/english/,
+ doc/english/guide-english.tex: unused strings removed; dedication
+ changed
+
+r2664 2017-08-08 14:38:15 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/typearea.tex: typofix
+
+r2663 2017-08-08 11:57:30 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: issue solved by changing the manual
+
+r2662 2017-08-08 11:47:52 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/ngerman/typearea.tex, doc/english/, doc/english/scrlayer.tex,
+ doc/english/typearea.tex: additional crossreferences and index entries
+ related to setspace.sty added
+
+r2661 2017-07-24 21:45:16 +0200 kohm:
+
+ * scrkernel-typearea.dtx, scrmain.ins: scrkernel-typearea.dtx
+ completely reorganized and mainly translated into English
+
+r2660 2017-07-24 21:31:57 +0200 kohm:
+
+ * scrhack.dtx: removed commands now defined by scrdoc.cls
+
+r2659 2017-07-23 19:42:18 +0200 kohm:
+
+ * scrdoc.dtx: change log generation fixed
+
+r2658 2017-06-25 16:32:43 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: new: possibility to diable package
+ usage warnings
+
+r2657 2017-06-24 13:28:34 +0200 kohm:
+
+ * releaselist.txt: missing v3.23 added
+
+r2656 2017-06-23 09:44:28 +0200 kohm:
+
+ * TODO: issue dynnumwidth vs. numwidth
+
+r2655 2017-06-23 09:35:45 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: defaults for new part commands
+
+r2654 2017-06-23 09:22:23 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex, doc/english/,
+ doc/english/common-options.tex: typofixes [Elke]
+
+r2653 2017-06-03 14:23:11 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: missing \ added
+
+r2652 2017-05-31 11:06:42 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: documentation of
+ option reference for the extended optional argument of a section
+ command
+
+r2651 2017-05-31 10:02:18 +0200 kohm:
+
+ * scrkernel-sections.dtx: trace information for extended optional
+ argument `reference' fixed
+
+r2650 2017-05-31 10:01:21 +0200 kohm:
+
+ * scrkernel-sections.dtx: trace informatinon for extended optional
+ argument `reference' fixed
+
+r2649 2017-05-29 11:39:43 +0200 kohm:
+
+ * scrkernel-language.dtx, scrjura.dtx, scrtime.dtx: languages
+ usenglish and ukenglish
+
+r2648 2017-05-29 08:20:06 +0200 kohm:
+
+ * TODO: new nive to have (obsolete \bprot@dottedtocline)
+
+r2647 2017-05-23 07:42:22 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: improved \headheight and \footheight warning
+
+r2646 2017-05-22 21:07:35 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: new global option singlespacing
+
+r2645 2017-05-22 21:04:42 +0200 kohm:
+
+ * scrlayer.dtx, scrlayer-scrpage.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlayer.tex, doc/english/, doc/english/scrlayer.tex: new
+ global option singlespacing
+
+r2644 2017-05-12 13:41:47 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/tocbasic.tex,
+ doc/english/scrbookreportarticle-experts.tex: typofix
+
+r2643 2017-05-11 15:48:59 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrextend.tex: typofix
+
+r2642 2017-05-10 10:48:59 +0200 kohm:
+
+ * README.in/: note about standard classes added
+
+r2641 2017-05-08 11:47:04 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex, doc/english/,
+ doc/english/scrjura.tex: scrjura is not longer beta
+
+r2640 2017-05-08 11:36:55 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-tocstyle.dtx,
+ scrkernel-compatibility.dtx, scrkernel-title.dtx, scrlogo.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx,
+ scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrlayer.dtx, scrkernel-circularletters.dtx,
+ scrkernel-bibliography.dtx, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx,
+ scrjura.dtx, scrkernel-listsof.dtx, scrkernel-letterclassoptions.dtx,
+ scrkernel-pseudolengths.dtx, scrhack.dtx, scrpage.dtx,
+ scrlayer-notecolumn.dtx, scrkernel-sections.dtx, japanlco.dtx,
+ scrkernel-miscellaneous.dtx, scrtime.dtx, scrlayer-scrpage.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scrlfile.dtx, tocbasic.dtx,
+ scrkernel-basics.dtx: version information for several dtx files
+ changed due to misinterpretation of a single distributor
+
+r2639 2017-05-08 08:54:21 +0200 kohm:
+
+ * scrlayer.dtx, TODO: \layer… macros using \dimexpr
+
+r2638 2017-05-06 19:17:09 +0200 kohm:
+
+ * Makefile: www.ctan.org replaced by mirror.ctan.org
+
+r2637 2017-05-06 19:15:01 +0200 kohm:
+
+ * scrlfile.dtx: standalone manual removed
+
+r2636 2017-05-06 19:03:59 +0200 kohm:
+
+ * scrstrip.inc: LaTeX link changed; Date 2017
+
+r2635 2017-05-06 18:53:59 +0200 kohm:
+
+ * README.in/: Requires changed
+
+r2634 2017-05-06 17:48:55 +0200 kohm:
+
+ * scrkernel-fonts.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: more robust
+ reimplementation of \use…ofkomafont
+
+r2633 2017-05-05 19:05:27 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ \addtokomafontonearglist
+
+r2632 2017-05-05 18:41:53 +0200 kohm:
+
+ * scrkernel-fonts.dtx: new \scr@komafontonearglist
+
+r2631 2017-05-04 10:22:57 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: improved bidi compatibility
+
+r2630 2017-05-04 10:17:15 +0200 kohm:
+
+ * scrlayer.dtx: copyright date fixed
+
+r2629 2017-05-04 10:14:57 +0200 kohm:
+
+ * scrkernel-basics.dtx: new \IfRTL and \IfLTR
+
+r2628 2017-05-02 12:18:33 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: Tippfehler
+
+r2627 2017-04-25 14:38:12 +0200 kohm:
+
+ * scrkernel-sections.dtx: \scr@chapter@innerskip
+
+r2626 2017-04-25 14:26:33 +0200 kohm:
+
+ * scrkernel-sections.dtx: new \DeclareSectionCommand default fixed
+
+r2625 2017-04-25 10:36:29 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ documentation of new needs/non-needs
+
+r2624 2017-04-25 10:18:13 +0200 kohm:
+
+ * scrkernel-sections.dtx: several errors replaced by default + warning
+
+r2623 2017-04-22 16:18:50 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ KOMA-Script 3.24 BETA
+
+r2622 2017-04-22 16:16:15 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: star variant of \AtEndOfFamilyOptions
+
+r2621 2017-04-22 15:44:17 +0200 kohm:
+
+ * scrlayer.dtx: missing comment
+
+r2620 2017-04-22 15:43:52 +0200 kohm:
+
+ * scrlayer.dtx: bidi code added
+
+r2619 2017-04-13 09:48:05 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex,
+ doc/english/, doc/english/common-footnotes.tex: documentation of
+ \raggedfootnotes
+
+r2618 2017-04-13 09:47:38 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea-experts.tex, doc/english/typearea.tex: influence
+ of options areasetadvanced, footlines and footheight to \areaset
+
+r2617 2017-04-03 15:56:55 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Somehow to strong warning replaced by an
+ info only
+
+r2616 2017-04-03 09:04:10 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: Typofix [Elke]
+
+r2615 2017-03-31 12:00:24 +0200 kohm:
+
+ * Makefile, scrhack.dtx, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrhack.tex, doc/english/, doc/english/scrhack.tex: new
+ scrhack to extend nomencl
+
+r2614 2017-03-27 10:13:25 +0200 kohm:
+
+ * TODO: docu issue \raggedfootnote
+
+r2613 2017-03-27 10:12:13 +0200 kohm:
+
+ * scrkernel-footnotes.dtx: new \raggedfootnote
+
+r2612 2017-03-27 10:08:30 +0200 kohm:
+
+ * scrkernel-listsof.dtx: checksum fixed
+
+r2611 2017-03-27 10:06:52 +0200 kohm:
+
+ * scrkernel-sections.dtx: checksum fixed
+
+r2610 2017-03-24 15:20:20 +0100 kohm:
+
+ * scrkernel-listsof.dtx, scrkernel-sections.dtx: usage of \ext@figure
+ and \ext@table instead of lof and lot
+
+r2609 2017-03-24 15:14:45 +0100 kohm:
+
+ * scrkernel-sections.dtx: improved minitoc code to not use lot and lof
+ but \ext@table and \ext@figure
+
+r2608 2017-03-22 09:50:43 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-compatibility.tex,
+ doc/english/, doc/english/common-compatibility.tex: missing \DescRef
+
+r2607 2017-03-03 12:19:29 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: almost nothing changed
+
+r2606 2017-03-03 11:39:16 +0100 kohm:
+
+ * scrkernel-typearea.dtx: wrong reaction to footsepline
+
+r2605 2017-02-23 20:27:27 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: load scrextend if needed
+
+r2604 2017-02-23 20:25:14 +0100 kohm:
+
+ * scrkernel-letterclassoptions.dtx: usage of
+ \ProvideUnknownPaperSizeError delayed
+
+r2603 2017-02-23 19:53:42 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: improved last fix
+
+r2602 2017-02-23 19:50:51 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: fix \is@thispageodd@setlabel resets
+ itself
+
+r2601 2017-02-23 17:26:09 +0100 kohm:
+
+ * scrkernel-basics.dtx: space mistake fixed
+
+r2600 2017-02-23 13:07:58 +0100 kohm:
+
+ * scrkernel-bibliography.dtx, scrjura.dtx, scrkernel-listsof.dtx,
+ tocstyle.dtx, tocbasic.dtx: indirect toc extension
+
+r2599 2017-02-22 12:09:23 +0100 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-typearea.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins,
+ scrkernel-miscellaneous.dtx: scrletter.sty can be used not only using
+ a KOMA-Script class. Nevertheless, using a KOMA-Script class is
+ still recommended
+
+r2598 2017-02-22 09:33:19 +0100 kohm:
+
+ * scrkernel-typearea.dtx: improved identification comments
+
+r2597 2017-02-22 09:19:52 +0100 kohm:
+
+ * scrkernel-typearea.dtx: copyright message removed
+
+r2596 2017-02-22 08:45:45 +0100 kohm:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx, scrmain.ins:
+ new init for scrkernel-compatibility.dtx
+
+r2595 2017-02-17 12:39:37 +0100 kohm:
+
+ * scrkernel-basics.dtx: \AtEndOfFamilyOptions improved
+
+r2594 2017-02-16 20:31:24 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: option recurse
+
+r2593 2017-02-16 20:26:03 +0100 kohm:
+
+ * doc/, doc/plength.dtx: deprecated option replaced
+
+r2592 2017-02-16 17:56:10 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-title.dtx, scrlogo.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-bibliography.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrjura.dtx, scrkernel-listsof.dtx,
+ scrhack.dtx, scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scrlfile.dtx, tocbasic.dtx:
+ internal usage of deprecated options eliminated
+
+r2591 2017-02-16 17:35:11 +0100 kohm:
+
+ * Makefile.baseinit: make optimization
+
+r2590 2017-02-16 15:55:25 +0100 kohm:
+
+ * scrkernel-basics.dtx: checksum fixed and change comment added
+
+r2589 2017-02-16 15:04:51 +0100 kohm:
+
+ * TODO: issue remove, missing docu note added
+
+r2588 2017-02-16 14:50:14 +0100 kohm:
+
+ * scrkernel-basics.dtx: new star variant \AtEndOfFamilyOptions
+
+r2587 2017-02-16 13:40:51 +0100 kohm:
+
+ * scrmain.ins, scrkernel-basics.dtx: nested \FamilyOptions fixed
+
+r2586 2017-02-16 10:10:27 +0100 kohm:
+
+ * scrkernel-basics.dtx: \FamilyExecuteOptions uses the correct after
+ hook
+
+r2585 2017-02-16 09:57:46 +0100 kohm:
+
+ * TODO: \AtEndOfFamilyOptions issue
+
+r2584 2017-02-14 07:39:21 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: \ifdvioutput with luatex >= 0.85
+
+r2583 2017-02-08 20:39:06 +0100 kohm:
+
+ * scrlayer-notecolumn.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlayer-notecolumn.tex, doc/english/,
+ doc/english/scrlayer-notecolumn.tex: new star variant \makenote*
+
+r2582 2017-02-08 19:40:25 +0100 kohm:
+
+ * scrlayer-notecolumn.dtx: restore \label, \index, \glossary in notes
+
+r2581 2017-02-06 08:28:26 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: minitoc warning not within scrextend
+
+r2580 2017-02-04 14:39:52 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: improved minitoc workaround
+ deactivation message
+
+r2579 2017-02-04 14:30:31 +0100 kohm:
+
+ * scrkernel-sections.dtx, scrkernel-miscellaneous.dtx: workaround for
+ one of the problems using minitoc
+
+r2578 2017-02-04 13:18:09 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.23 BETA
+
+r2577 2017-02-01 07:33:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: Fehlender
+ Halbsatz ergänzt [HV]
+
+r2576 2017-01-30 20:46:35 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/common-lists.tex: Roald Dahl's poem
+ replaced by Emma Lazarus' sonnet
+
+r2575 2017-01-16 09:00:06 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/preface.tex: file date
+
+r2574 2017-01-16 08:56:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/preface.tex: new German preface
+
+r2573 2017-01-16 07:48:29 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: Note about scrjura
+ changed
+
+r2572 2017-01-15 12:04:53 +0100 kohm:
+
+ * releaselist.txt: release 3.22
+
+r2571 2017-01-03 14:04:47 +0100 kohm:
+
+ * scrkernel-footnotes.dtx: new footnote text output mechanism
+
+r2570 2017-01-02 13:30:07 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/scrlayer-notecolumn-example.tex,
+ doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/expertpart.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/adrconvnote.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/common-draftmode.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrjura.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/authorpart.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/preface.tex, doc/ngerman/scrwfile.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbase.tex, doc/english/common-marginpar.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/expertpart.tex,
+ doc/english/guide-english.tex, doc/english/scrlayer-notecolumn.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/japanlco.tex, doc/english/common-options.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/tocbasic.tex,
+ doc/english/common-draftmode.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrhack.tex,
+ doc/english/scrlayer.tex, doc/english/scrjura.tex,
+ doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/authorpart.tex,
+ doc/english/scrlfile.tex, doc/english/common-titles.tex,
+ doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/preface.tex, doc/english/scrwfile.tex,
+ doc/english/scraddr.tex: changed copyright and translation date
+
+r2569 2017-01-02 13:27:16 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex, doc/english/,
+ doc/english/typearea-experts.tex: docu of options usegeometry and
+ areasetadvanced
+
+r2568 2016-12-31 13:08:29 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/common-dictum.tex,
+ doc/english/common-footnotes.tex, doc/english/common-lists.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/common-textmarkup.tex,
+ doc/english/scrjura.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-titles.tex: labels for and links to font elements
+
+r2567 2016-12-28 18:23:17 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/common-footnotes.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/scrjura.tex,
+ doc/english/common-pagestylemanipulation.tex: command renamed
+
+r2566 2016-12-28 18:22:56 +0100 kohm:
+
+ * TODO, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrjura.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-titles.tex: Links für Font-Elemente
+
+r2565 2016-12-21 18:25:47 +0100 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: chapter style commands
+ respect positive beforeskip values (indent of following paragraph)
+
+r2564 2016-12-21 11:43:41 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: fix: font changing of toname or toaddress
+ has to be restricted to
+ toname or toaddress
+
+r2563 2016-12-15 16:06:06 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: missing * in \cc added to print ccseparator
+ only if name is not empty
+
+r2562 2016-12-07 10:15:31 +0100 kohm:
+
+ * scrlayer.dtx: prepared for classes without \section or \subsection
+
+r2561 2016-12-05 19:06:33 +0100 kohm:
+
+ * doc/, doc/bin/, doc/bin/genhtmlidx.pl: option index improved
+
+r2560 2016-12-05 18:40:41 +0100 kohm:
+
+ * scrkernel-sections.dtx: new warning if
+ \begin{appendix}...\end{appendix} is used instead of
+
+ \appendix
+
+r2559 2016-12-02 09:03:11 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: missing \relax added to fix dynnumwidth
+ feature
+
+r2558 2016-12-01 12:28:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrlttr2-experts.tex: some links
+ in and into chapter 22
+
+r2557 2016-12-01 11:51:19 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex, doc/english/tocbasic.tex,
+ doc/english/scrbookreportarticle-experts.tex: some links in and into
+ chapter 21
+
+r2556 2016-12-01 11:16:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/typearea.tex,
+ doc/english/, doc/english/scrlayer-notecolumn.tex: some links in and
+ into chapter 20
+
+r2555 2016-12-01 11:01:34 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex,
+ doc/english/, doc/english/scrlayer-notecolumn.tex: serveral links in
+ and into chapter 19
+
+r2554 2016-12-01 10:49:52 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: serveral links in and into chapter 17
+
+r2553 2016-11-30 10:47:15 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/scrwfile.tex, doc/english/, doc/english/tocbasic.tex,
+ doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex: serveral links (not
+ only) in and into chapter 15
+
+r2552 2016-11-28 10:48:11 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex, doc/english/,
+ doc/english/tocbasic.tex, doc/english/scrwfile.tex: serveral links in
+ and into chapter 14
+
+r2551 2016-11-28 09:26:33 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex, doc/english/,
+ doc/english/scrlfile.tex: serveral links in chapter 13
+
+r2550 2016-11-28 09:10:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrjura.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbase.tex, doc/english/tocbasic.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/scrjura.tex,
+ doc/english/scrbookreportarticle-experts.tex: serveral links in and
+ into chapter 12
+
+r2549 2016-11-28 08:17:57 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex, doc/english/,
+ doc/english/scrjura.tex: serveral links in chapter 11
+
+r2548 2016-11-27 12:48:39 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrextend.tex, doc/english/,
+ doc/english/scrextend.tex: serveral links (not only) into chapter 10
+
+r2547 2016-11-27 12:38:29 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrlayer.tex,
+ doc/english/common-pagestylemanipulation.tex: serveral links (not
+ only) into chapter 5
+
+r2546 2016-11-26 13:05:11 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-fontsize.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-fontsize.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/scraddr.tex: serveral links (not only) into chapter 4
+
+r2545 2016-11-24 14:20:27 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrhack.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/scrlfile.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/tocbasic.tex,
+ doc/english/scrhack.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/scrlfile.tex: serveral links (not only) into chapter 3
+
+r2544 2016-11-23 18:33:55 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/scrlfile.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/tocbasic.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/typearea-experts.tex,
+ doc/english/scrlayer.tex, doc/english/scrjura.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/scrlfile.tex: serveral links (not only) into chapter 3
+
+r2543 2016-11-23 15:20:44 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/scrwfile.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrextend.tex,
+ doc/english/tocbasic.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/scrlayer.tex, doc/english/scrjura.tex,
+ doc/english/scrbookreportarticle-experts.tex: serveral links (not
+ only) into chapter 3
+
+r2542 2016-11-21 18:32:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbase.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrdatetime.tex,
+ doc/english/common-options.tex, doc/english/scrextend.tex,
+ doc/english/tocbasic.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrlayer.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/scrwfile.tex, doc/english/scraddr.tex: serveral links
+
+r2541 2016-11-21 12:05:13 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrjura.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/scrwfile.tex, doc/ngerman/scraddr.tex:
+ \autopageref{desc:…} replaced by \DescPageRef{…}
+
+r2540 2016-11-21 11:55:10 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-marginpar.tex, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrhack.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/scrjura.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/scrwfile.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-marginpar.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/common-options.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/tocbasic.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/typearea-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrlayer.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-titles.tex, doc/bin/, doc/bin/finddesc.sh: links
+ into typearea chapter
+
+r2539 2016-11-20 17:53:02 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/common-headfootheight.tex, doc/english/,
+ doc/english/common-parmarkup.tex,
+ doc/english/common-oddorevenpage.tex: old \IfCommon... commands
+ eliminated
+
+r2538 2016-11-20 17:40:30 +0100 kohm:
+
+ * manifest.txt, doc/, doc/linkalias.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrlayer.tex,
+ doc/english/common-pagestylemanipulation.tex: common-21.tex replaced
+ by common-pagestylemanipulation.tex without ommitting if already
+ printed in another chapter
+
+r2537 2016-11-20 12:47:03 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex, doc/ngerman/scrlayer.tex,
+ doc/english/, doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/scrlayer.tex:
+ common-21.tex replaced by common-headfootheight.tex without
+ ommitting if already printed in another chapter
+
+r2536 2016-11-20 12:13:59 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/scrextend.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex, doc/english/common-dictum.tex,
+ doc/english/scrextend.tex: common-15.tex replaced by common-dictum.tex
+ without ommitting if already printed in another chapter
+
+r2535 2016-11-18 18:10:13 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/common-titles.tex: fixed title pages example reference
+ text
+
+r2534 2016-11-18 17:49:54 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex, doc/english/scrextend.tex,
+ doc/english/common-titles.tex: common-14.tex replaced by
+ common-titles.tex without ommitting if already printed in another
+ chapter
+
+r2533 2016-11-18 15:43:43 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/common-draftmode.tex: initial
+ reference fixed
+
+r2532 2016-11-18 15:26:15 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrextend.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-marginpar.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/scrextend.tex:
+ common-13.tex replaced by common-marginpar.tex without ommitting if
+ already printed in another chapter
+
+r2531 2016-11-18 15:19:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: double ref fixed
+
+r2530 2016-11-18 14:23:30 +0100 kohm:
+
+ * manifest.txt, doc/, doc/linkalias.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex: common-12.tex replaced by
+ common-lists.tex without ommitting if already printed in another
+ chapter
+
+r2529 2016-11-18 14:17:38 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/common-interleafpage.tex: group
+ levels fixed
+
+r2528 2016-11-18 14:08:43 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: label
+ references fixed
+
+r2527 2016-11-18 11:49:29 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/adrconvnote.tex: typofix
+
+r2526 2016-11-18 11:48:27 +0100 kohm:
+
+ * manifest.txt, doc/, doc/linkalias.tex, doc/scrguide.cls,
+ doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/adrconvnote.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrjura.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/common-compatibility.tex, doc/ngerman/scrwfile.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbase.tex, doc/english/common-parmarkup.tex,
+ doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/common-options.tex, doc/english/common-footnotes.tex,
+ doc/english/scrextend.tex, doc/english/tocbasic.tex,
+ doc/english/common-draftmode.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrlayer.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-compatibility.tex, doc/english/scrwfile.tex,
+ doc/english/scraddr.tex: common-9.tex replaced by common-footnotes.tex
+ without ommitting if already printed in another chapter + listings
+ improvement
+
+r2525 2016-11-17 20:14:11 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/english/, doc/english/scrextend.tex:
+ improved colours
+
+r2524 2016-11-17 18:53:21 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/scrextend.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex, doc/english/common-options.tex,
+ doc/english/scrextend.tex: common-8.tex replaced by
+ common-interleafpage.tex without ommitting if already printed in
+ another chapter
+
+r2523 2016-11-17 17:25:53 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-oddorevenpage.tex,
+ doc/ngerman/common-compatibility.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrextend.tex, doc/english/common-oddorevenpage.tex,
+ doc/english/common-compatibility.tex: common-7.tex replaced by
+ common-oddorevenpage.tex without ommitting if already printed in
+ another chapter
+
+r2522 2016-11-17 16:49:53 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-draftmode.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/common-parmarkup.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-draftmode.tex: common-6.tex replaced by
+ common-parmarkup.tex without ommitting if already printed in another
+ chapter
+
+r2521 2016-11-17 15:55:53 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/common-fontsize.tex,
+ doc/english/scrlayer-scrpage.tex: typo fix: length
+
+r2520 2016-11-17 15:50:46 +0100 kohm:
+
+ * manifest.txt, doc/, doc/linkalias.tex, doc/scrguide.cls,
+ doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/common-textmarkup.tex,
+ doc/english/common-titles.tex: common-5.tex replaced by
+ common-textmarkup.tex without ommitting if already printed in
+ another chapter
+
+r2519 2016-11-16 18:51:28 +0100 kohm:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrextend.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/scrextend.tex:
+ common-4.tex replaced by common-fontsize.tex without ommitting if
+ already printed in another chapter
+
+r2518 2016-11-16 18:48:48 +0100 kohm:
+
+ * manifest.txt: common-4.tex replaced by common-fontsize.tex without
+ ommitting if already printed in another chapter
+
+r2517 2016-11-16 18:03:15 +0100 kohm:
+
+ * manifest.txt: common-3.tex replaced by common-typearea.tex without
+ ommitting if already printed in another chapter
+
+r2516 2016-11-16 18:00:45 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: index stack errors are not longer warnings
+
+r2515 2016-11-16 17:54:48 +0100 kohm:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-typearea.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/common-typearea.tex: common-3.tex replaced by
+ common-typearea.tex without ommitting if already printed in another
+ chapter
+
+r2514 2016-11-16 17:48:43 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-draftmode.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/common-options.tex,
+ doc/english/scrextend.tex, doc/english/common-draftmode.tex:
+ common-2.tex replaced by common-draftmode.tex without ommitting if
+ already printed in another chapter
+
+r2513 2016-11-16 17:47:54 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: index groups
+ fixed
+
+r2512 2016-11-15 18:43:41 +0100 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/common-compatibility.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrextend.tex, doc/english/typearea.tex,
+ doc/english/common-compatibility.tex: common-compatibility.tex
+ replaces common-1.tex without ommitting already shown information
+
+r2511 2016-11-15 17:22:04 +0100 kohm:
+
+ * manifest.txt: common-0.tex replaced by common-options.tex
+
+r2510 2016-11-15 17:20:01 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrjura.tex, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrdatetime.tex,
+ doc/english/common-options.tex, doc/english/scrextend.tex,
+ doc/english/scrhack.tex, doc/english/scrlayer.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex: early or late
+ options not omitted if already used
+
+r2509 2016-11-15 11:29:58 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/scrpage2.tex, doc/bin/,
+ doc/bin/genhtmlidx.pl: improved anchor generation and html index
+
+r2508 2016-11-14 21:06:12 +0100 kohm:
+
+ * doc/, doc/scrguide.cls, doc/scrpage2.tex, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/common-marginpar.tex,
+ doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrjura.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/scrwfile.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbase.tex, doc/english/common-marginpar.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/tocbasic.tex,
+ doc/english/common-draftmode.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/typearea-experts.tex, doc/english/common-textmarkup.tex,
+ doc/english/scrhack.tex, doc/english/scrlayer.tex,
+ doc/english/scrjura.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/preface.tex, doc/english/scrwfile.tex,
+ doc/english/scraddr.tex: several changes in scrguide.cls to improve
+ Declaration and label and index generation
+
+r2507 2016-11-04 09:03:12 +0100 kohm:
+
+ * doc/: deprecated source of old German manual removed
+
+r2506 2016-11-02 12:23:58 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix: index label generation delayed to get
+ correct page reference
+
+r2505 2016-11-02 12:09:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrwfile.tex, doc/english/, doc/english/tocbasic.tex,
+ doc/english/scrwfile.tex: fix: errornous usage of \AfterStartingTOC
+ replaced by \BeforeStartingTOC
+
+r2504 2016-10-27 18:27:25 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: typofix [Jan]
+
+r2503 2016-10-21 10:54:46 +0200 kohm:
+
+ * scrkernel-listsandtabulars.dtx: Summary: addmargin preserved \topsep
+ and \partopsep
+
+r2502 2016-10-03 13:50:19 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: docu fix of
+ toc=indexnumbered
+
+r2501 2016-09-28 07:55:32 +0200 kohm:
+
+ * scrkernel-fonts.dtx: Summary: deprecated font command message fixed
+
+r2500 2016-09-24 18:59:36 +0200 kohm:
+
+ * scrlayer.dtx, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/english/, doc/english/scrlayer.tex: fixed: foreground and
+ unrestricted and name of backandforeground
+
+r2499 2016-09-06 09:00:45 +0200 kohm:
+
+ * tocbasic.dtx: Summary: missing \removefromtoclist added
+
+r2498 2016-09-01 21:44:10 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: missing # added
+
+r2497 2016-09-01 21:21:37 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: workaround for \newline (and
+ \protect\\) in caption text
+
+r2496 2016-09-01 13:51:09 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: isodate in \caption workaround
+
+r2495 2016-08-09 18:02:12 +0200 kohm:
+
+ * tocbasic.dtx: Summary: saves the type of an extension; new
+ \owneroftoc
+
+r2494 2016-08-04 09:23:47 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Summary: preview detection info message
+ added
+
+r2493 2016-08-04 09:12:36 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Summary: preview workaround added
+
+r2492 2016-08-02 10:21:34 +0200 kohm:
+
+ * scrkernel-listsandtabulars.dtx: Summary: page break test at
+ addmargin* only if twoside is active
+
+r2491 2016-07-29 10:03:57 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-typearea.dtx, doc/, doc/ngerman/, doc/ngerman/typearea.tex,
+ doc/english/, doc/english/typearea.tex: change: from v3.22 the width
+ and the height value of option paper depend on the paper orientation
+
+r2490 2016-07-29 08:29:45 +0200 kohm:
+
+ * scrkernel-basics.dtx: Summary: added some \detokenize to obsolete
+ option warning message
+
+r2489 2016-07-29 08:20:45 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Summary: missing obsolete option warning
+ added
+
+r2488 2016-07-12 09:56:12 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: checksum
+
+r2487 2016-07-12 09:52:51 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: experimental compatibility with
+ titleref and zref-titleref
+
+r2486 2016-07-12 08:43:01 +0200 kohm:
+
+ * TODO: Summary: new nice to have
+
+r2485 2016-07-12 08:41:36 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: experimental sectioning commands
+ option `reference'
+
+r2484 2016-07-06 09:54:30 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: Grammarfix
+
+r2483 2016-06-28 09:36:58 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: Summary: fix grouping of luatex tests
+
+r2482 2016-06-21 08:20:17 +0200 kohm:
+
+ * INSTALLD.txt, INSTALL.txt: added installation info about hak files
+
+r2481 2016-06-17 09:37:56 +0200 kohm:
+
+ * releaselist.txt: Summary: Release 3.21
+
+r2480 2016-06-14 09:45:01 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex: additional
+ info about toc… options
+
+r2479 2016-06-14 09:11:22 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: additional info about tocentry… options
+
+r2478 2016-06-13 08:53:07 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Typofixes reported by
+ Elke
+
+r2477 2016-06-12 11:52:43 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx, tocbasic.dtx, doc/, doc/ngerman/,
+ doc/ngerman/tocbasic.tex, doc/english/, doc/english/tocbasic.tex:
+ prefix tocentry instead (or additional to) prefix toc
+
+r2476 2016-06-12 08:32:29 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: several page breaks prevented
+
+r2475 2016-06-09 09:51:01 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx: improved hyperref compatibility
+
+r2474 2016-06-06 16:41:04 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: handle also long \ragged…entry
+
+r2473 2016-06-06 16:38:21 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: Typofix \flushglue
+
+r2472 2016-06-06 11:12:11 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: new tocline attribute
+ raggedentrytext
+
+r2471 2016-06-06 11:02:57 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: \raggedchapterentry does
+ work again via new tocbasic's tocline attribute raggedentrytext
+
+r2470 2016-06-06 09:06:27 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: change entry date fixed
+
+r2469 2016-06-02 20:07:52 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: feature nobabel clarified
+
+r2468 2016-05-31 13:27:28 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: new implementation of \@@makecaption
+
+r2467 2016-05-27 20:35:47 +0200 kohm:
+
+ * scrkernel-basics.dtx: Summary: \scr@ifpdforluatex
+
+r2466 2016-05-27 20:34:55 +0200 kohm:
+
+ * scrkernel-basics.dtx: Summary: typofix
+
+r2465 2016-05-27 19:15:42 +0200 kohm:
+
+ * scrkernel-basics.dtx: Summary: em, ex and if pdf output of pdftex or
+ luatex is used also px are units
+
+r2464 2016-05-27 19:14:11 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Summary: missing \ before pagewidth and
+ pageheight added
+
+r2463 2016-05-19 09:27:47 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: Summary:
+ egregdoesnotlikesansseriftitles in scrletter only by class
+
+r2462 2016-05-19 09:18:47 +0200 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-miscellaneous.dtx:
+ Summary: scrlttr2 provides option egregdoesnotlikesansseriftitles
+ too
+
+r2461 2016-05-19 09:17:15 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.21 BETA
+
+r2460 2016-05-10 15:01:58 +0200 kohm:
+
+ * releaselist.txt: release 2016/05/10 v3.20
+
+r2459 2016-05-10 15:01:05 +0200 kohm:
+
+ * scrkernel-version.dtx: prepared for 3.20
+
+r2458 2016-05-10 14:02:52 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/scrjura.tex: typofixes by Elke
+
+r2457 2016-05-09 11:38:14 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrjura.tex: Summary: some typo
+ fixes
+
+r2456 2016-05-09 11:37:44 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Summary:
+ Überflüssiges \ProvidesFile entfernt
+
+r2455 2016-05-09 11:36:06 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: Summary: \Paragraph has been changed to
+ \Clause
+
+r2454 2016-05-09 10:57:53 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/guide-english.tex: Summary: typo
+ fixes
+
+r2453 2016-05-09 07:33:31 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: Summary: ready for the
+ release
+
+r2452 2016-05-08 10:45:54 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Summary:
+ typofix
+
+r2451 2016-05-07 20:11:55 +0200 kohm:
+
+ * scrhack.dtx: Summary: load each hack only once
+
+r2450 2016-05-07 19:47:53 +0200 kohm:
+
+ * README.in/: Summary: scrhack needs xpatch (for lscape hack)
+
+r2449 2016-05-07 15:50:41 +0200 kohm:
+
+ * scrhack.dtx: Summary: requires xpatch not only while lscape hack is
+ loaded but always
+
+r2448 2016-05-06 11:06:19 +0200 kohm:
+
+ * scrjura.dtx: Summary: docu removed from package source
+
+r2447 2016-05-06 11:05:08 +0200 kohm:
+
+ * scrstrip.inc: Summary: we have 2016
+
+r2446 2016-05-06 10:38:06 +0200 kohm:
+
+ * Makefile: do not make scrjura.pdf any longer
+
+r2445 2016-05-05 09:22:38 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: two more chapters are
+ translated
+
+r2444 2016-05-05 09:16:53 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrjura.tex: (almost) complete
+ translation of the scrjura chapter
+
+r2443 2016-05-04 10:34:46 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrjura.tex: Hinweis auf zusätzlich
+ unterstützte Sprachen
+
+r2442 2016-05-04 10:19:38 +0200 kohm:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrjura.tex,
+ doc/english/, doc/english/scrjura.tex: prepared to have a real chapter
+ about scrjura
+
+r2441 2016-04-30 08:43:16 +0200 kohm:
+
+ * doc/, doc/english/: support for more packages
+
+r2440 2016-04-29 17:59:32 +0200 kohm:
+
+ * tocbasic.dtx: Summary: empty option list bug in \DeclareNewTOC
+ [Elke]
+
+r2439 2016-04-29 07:56:21 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex: Summary:
+ fehlendes »Klasse« ergänzt
+
+r2438 2016-04-27 12:58:21 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-sections.dtx,
+ scrkernel-basics.dtx: Summary: distinguish between test and assignment
+ of values
+
+r2437 2016-04-27 07:57:47 +0200 kohm:
+
+ * obsolete/, obsolete/Makefile: Summary: back to RELEASEDATE instead
+ of RELEASE because its the version
+
+r2436 2016-04-27 07:48:45 +0200 kohm:
+
+ * obsolete/, obsolete/Makefile: Summary: using RELEASE instead of
+ RELEASEDATE for dist-tds
+
+r2435 2016-04-25 12:42:03 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: expand length/number options before
+ test
+
+r2434 2016-04-25 11:47:58 +0200 kohm:
+
+ * tocbasic.dtx: Summary: spelling of tocnumwidth in warning message
+
+r2433 2016-04-23 19:14:01 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: corrections
+ by Arndt and Elke
+
+r2432 2016-04-23 18:42:24 +0200 kohm:
+
+ * tocbasic.dtx: Summary: \DeclareNewTOC hang/indent -->
+ numwidth/indent [Elke]
+
+r2431 2016-04-13 07:40:50 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: Improvements
+ by A. S.
+
+r2430 2016-04-12 15:59:04 +0200 kohm:
+
+ * scrkernel-sections.dtx: Summary: issue using amsgen in combination
+ with \@startsection and spaces between the arguments fixed
+
+r2429 2016-04-12 14:10:19 +0200 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx, scrlayer.dtx,
+ scrkernel-typearea.dtx, scrjura.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrtime.dtx, scrlayer-scrpage.dtx,
+ scrlfile.dtx, tocbasic.dtx, scrkernel-basics.dtx: Summary: \@ifstr
+ replaced by \kernel@ifstr
+
+r2428 2016-04-12 12:31:07 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-floats.dtx,
+ scrkernel-variables.dtx, scrlayer.dtx, scrdoc.dtx, scrjura.dtx,
+ scrkernel-letterclassoptions.dtx, tocstyle.dtx, scrpage.dtx,
+ scrkernel-sections.dtx, scrlayer-scrpage.dtx, scrkernel-fonts.dtx,
+ scrlfile.dtx, tocbasic.dtx, scrkernel-basics.dtx: Summary: replaced
+ \@ifnextchar by \kernel@ifnextchar
+
+r2427 2016-04-12 09:33:09 +0200 kohm:
+
+ * scrjura.dtx, doc/, doc/ngerman/, doc/ngerman/scrjuraexample.tex,
+ doc/english/, doc/english/scrjuraexample.tex: Summary: Using
+ clausemark instead of paragraphmark
+
+r2426 2016-04-12 09:22:06 +0200 kohm:
+
+ * doc/, doc/Makefile, doc/Makefile.guide: Summary: prepare rule
+ extended (to make scrjura.tex if needed)
+
+r2425 2016-04-12 09:08:31 +0200 kohm:
+
+ * scrjura.dtx: Summary: paragraphmark has never been documented but
+ clausemark; so clausemark should exist
+
+r2424 2016-04-11 08:29:39 +0200 kohm:
+
+ * manifest.txt, doc/, doc/Makefile.guide: Summary: scrjura.tex could
+ be made from scrjura-non.tex
+
+r2423 2016-04-11 08:17:06 +0200 kohm:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrjuraexample.tex, doc/english/,
+ doc/english/scrjuraexample.tex: Summary: scrjuraexample.tex added
+
+r2422 2016-04-11 08:03:43 +0200 kohm:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/, doc/english/: Summary:
+ scrjura.tex can be made on-the-fly from scrjura-non.tex
+
+r2421 2016-04-10 12:16:08 +0200 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/tocbasic.tex: Summary: "helper
+ file" issue removed
+
+r2420 2016-04-09 20:02:52 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: Improved by
+ A. S.
+
+r2419 2016-04-07 17:04:37 +0200 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: fix of break after number bug
+
+r2418 2016-04-07 16:47:41 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: Elke's
+ corrections
+
+r2417 2016-04-07 11:16:58 +0200 kohm:
+
+ * tocstyle.dtx: Summary: \CheckSum
+
+r2416 2016-04-07 10:52:42 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: late caption position change provided
+
+r2415 2016-04-07 10:29:28 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: Summary: docu of
+ \setcapdynwidth
+
+r2414 2016-04-07 09:48:00 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ Summary: label fixed
+
+r2413 2016-04-07 09:19:47 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ Summary: change log entry fixed
+
+r2412 2016-04-07 09:17:22 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: Summary: first translation completed
+
+r2411 2016-04-06 19:07:59 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: some more
+ translation
+
+r2410 2016-04-06 19:07:42 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: typo fix
+
+r2409 2016-04-06 17:39:52 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: Tippfehler
+
+r2408 2016-04-06 16:35:25 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: docu of
+ \DeclareTOCStyleEntry
+
+r2407 2016-04-06 11:32:02 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: Small
+ improvements of new descriptions
+
+r2406 2016-04-06 11:31:00 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/tocbasic.tex: Summary: Some
+ translations added
+
+r2405 2016-04-05 11:15:47 +0200 kohm:
+
+ * TODO, tocbasic.dtx, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/tocbasic.tex: Summary: new features of \DeclareNewTOC
+
+r2404 2016-04-05 09:11:03 +0200 kohm:
+
+ * tocbasic.dtx: Summary: docu typo fix
+
+r2403 2016-04-01 13:34:57 +0200 kohm:
+
+ * scrkernel-notepaper.dtx: Summary: delayed loading of marvosym
+ improved
+
+r2402 2016-03-31 18:16:47 +0200 kohm:
+
+ * TODO: Summary: new feature need new docu
+
+r2401 2016-03-31 18:12:59 +0200 kohm:
+
+ * scrkernel-floats.dtx: Summary: \setcapdynwidth for Ulrike
+
+r2400 2016-03-31 09:51:17 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: Alle
+ TODO-Kommentare abgeleistet
+
+r2399 2016-03-30 13:34:21 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary:
+ \DeclareTOCEntryStyle dokumentiert
+
+r2398 2016-03-25 11:22:23 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrjura.dtx, tocstyle.dtx,
+ scrlayer-notecolumn.dtx, scrkernel-miscellaneous.dtx: Summary: writing
+ to aux-file improved
+
+r2397 2016-03-25 10:07:48 +0100 kohm:
+
+ * scrkernel-sections.dtx: Summary: \@altsecnumformattrue will not
+ break aux-file after class change
+
+r2396 2016-03-25 09:56:22 +0100 kohm:
+
+ * tocstyle.dtx: Summary: change information fixed
+
+r2395 2016-03-25 09:26:37 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, doc/, doc/ngerman/,
+ doc/ngerman/tocbasic.tex: Summary: new tocline feature
+ breakafternumber
+
+r2394 2016-03-24 15:45:04 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: Summary: titlesec workaround also for
+ v2.10.2 2016/03/21
+
+r2393 2016-03-24 10:47:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: Korrekturen
+ von Elke
+
+r2392 2016-03-23 12:56:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary:
+ \LastTOCLevelWas… and \TOCEntryStyle…InitCode
+
+r2391 2016-03-23 08:35:30 +0100 kohm:
+
+ * tocstyle.dtx: Summary: - package combination warning extended
+ - package status section added
+
+r2390 2016-03-22 20:07:43 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: Summary: titlesec workaround also for
+ titlesec 2016/03/15 v2.10.1
+
+r2389 2016-03-22 18:41:28 +0100 kohm:
+
+ * tocstyle.dtx: Summary: Better "cooperation" with new tocbasic
+
+r2388 2016-03-21 18:28:06 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: \usetocbasicnumberline should
+ temporary set \@tempdima
+
+r2387 2016-03-16 18:15:26 +0100 kohm:
+
+ * TODO: Summary: Need for change of \DeclareNewTOC
+
+r2386 2016-03-16 17:46:17 +0100 kohm:
+
+ * TODO: Summary: Verzeichnisstile Doc
+
+r2385 2016-03-15 15:50:30 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary:
+ \usetocbasicnumberline
+
+r2384 2016-03-15 12:58:53 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-listsof.dtx: Summary: enforce
+ usage of \scr@numberline whenever needed. Summary: usage of \autodot
+ indirekt
+
+r2383 2016-03-14 10:24:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: Docu fixes
+
+r2382 2016-03-14 09:37:24 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, TODO, doc/, doc/.ignore: Summary: replaced
+ \par by \@par in tocline to make \textit etc. work
+
+r2381 2016-03-13 09:38:02 +0100 kohm:
+
+ * TODO: Summary: missing entrytextformat attribute
+
+r2380 2016-03-12 20:23:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: documentation
+ of toc entry style attributes
+
+r2379 2016-03-12 19:46:51 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: \SetPenaltyByTOCLevel -->
+ \tocbasic@SetPenaltyByTOCLevel,
+
+ \DependOnPenaltyAndTOCLevel --> \tocbasic@DependOnPenaltyAndTOCLevel
+
+r2378 2016-03-12 19:09:37 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: attribute entryformat formats the
+ whole entry not only the number and
+ text
+
+r2377 2016-03-12 09:24:50 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: documentation
+ of several toc entry style attributes
+
+r2376 2016-03-11 14:46:30 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: documentation
+ of toc entry style numsep
+
+r2375 2016-03-11 14:26:50 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: some more
+ entry style attribute documentation
+
+r2374 2016-03-11 13:51:13 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: 6m replaced by 6em
+
+r2373 2016-03-11 13:16:33 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: documentation
+ of some \DeclareTOCStyleEntry attributes
+
+r2372 2016-03-11 09:47:22 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: figure for
+ TOC-entry style tocline
+
+r2371 2016-03-11 09:45:03 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: Summary: Usage of tikz and tikzlibrary calc
+
+r2370 2016-03-10 13:42:51 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: caption text
+ changed
+
+r2369 2016-03-10 13:37:58 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/tocbasic.tex: Summary: Illustrations added
+
+r2368 2016-03-10 11:20:56 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: remove errornous group level from
+ style largetocline
+
+r2367 2016-03-09 18:14:56 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Summary: neue
+ Trennausnahme für Eintragsebene
+
+r2366 2016-03-09 18:09:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/tocbasic.tex, doc/english/, doc/english/scrbase.tex:
+ Summary: serveral suggestions by Elke
+
+r2365 2016-03-09 12:30:58 +0100 kohm:
+
+ * TODO: Summary: Serveral TODOs removed
+
+r2364 2016-03-09 12:23:21 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Summary: documentation
+ of TOC entry styles started
+
+r2363 2016-03-09 09:03:32 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex, doc/english/,
+ doc/english/tocbasic.tex: Summary: documentation of \DeclareNewTOC
+ options atbegin and atend
+
+r2362 2016-03-09 08:53:27 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: Summary: documentation of special option
+ @else@
+
+r2361 2016-03-08 10:14:05 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: Summary: documentation
+ of \DeclareSectionCommand attribute tocstyle
+
+r2360 2016-03-01 17:02:36 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-listsof.dtx: change: \numberline
+ definition moved to scrkernel-tocstyle change: redefining
+ \numberline@box instead of \numberline to measure the entry number
+ width
+
+r2359 2016-03-01 09:15:48 +0100 kohm:
+
+ * releaselist.txt: RC without space
+
+r2358 2016-02-26 12:10:01 +0100 kohm:
+
+ * TODO: Summary: issue removed
+
+r2357 2016-02-26 10:39:21 +0100 kohm:
+
+ * TODO: issue note
+
+r2356 2016-02-25 07:56:41 +0100 kohm:
+
+ * TODO: Summary: new issue with combination of beta scrjura and
+ KOMA-Script prerelease
+
+r2355 2016-02-24 12:59:00 +0100 kohm:
+
+ * scrjura.dtx: Summary: new environment names may contain numbers
+
+r2354 2016-02-23 12:01:52 +0100 kohm:
+
+ * TODO, scrkernel-sections.dtx: Summary: serveral todo notes processed
+
+r2351 2016-02-22 09:20:29 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx, TODO: fix: first font change after
+ \begin{document} was always using \par@update@relative
+
+r2348 2016-02-19 11:53:14 +0100 kohm:
+
+ * TODO: new issue (parskip default)
+
+r2343 2016-02-17 12:23:24 +0100 kohm:
+
+ * doc/, doc/Makefile.latexinit: Summary: waste / removed
+
+r2342 2016-02-17 12:13:55 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: Summary: change log entry and copyright
+ date fixed
+
+r2341 2016-02-17 12:13:17 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: Summary: version information in change log
+ entries fixed
+
+r2340 2016-02-17 10:29:18 +0100 kohm:
+
+ * doc/: svn ignore list changed
+
+r2339 2016-02-17 10:27:13 +0100 kohm:
+
+ * doc/, doc/ngerman/: svn ignore list changed
+
+r2338 2016-02-17 10:26:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/.ignore: svn ignore list changed
+
+r2337 2016-02-17 10:25:04 +0100 kohm:
+
+ * doc/, doc/ngerman/: svn ignore list changed
+
+r2336 2016-02-17 10:24:36 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/.ignore: svn ignore list changed
+
+r2335 2016-02-17 10:24:02 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/.ignore: svn ignore list changed
+
+r2334 2016-02-17 10:19:31 +0100 kohm:
+
+ * doc/, doc/.ignore: svn ignore list changed
+
+r2333 2016-02-17 10:18:25 +0100 kohm:
+
+ * doc/, doc/.ignore: svn ignore list changed
+
+r2332 2016-02-17 10:15:15 +0100 kohm:
+
+ * obsolete/, obsolete/.ignore: svn ignore list changed
+
+r2330 2016-02-17 10:12:56 +0100 kohm:
+
+ * .globalignores, .ignore: svn ignore list changed
+
+r2326 2016-02-17 10:05:42 +0100 kohm:
+
+ * .ignore: ignore list changed
+
+r2324 2016-02-17 10:00:23 +0100 kohm:
+
+ * .globalignores, .ignore: svn ignore list changed
+
+r2323 2016-02-17 09:34:48 +0100 kohm:
+
+ * .globalignores, .ignore, tocbasic.dtx, README.in/, doc/,
+ doc/ngerman/, doc/english/: svn ignore list changed
+
+r2322 2016-02-16 17:25:20 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: Summary: emulatestandardclasses changes
+ font of headings also for scrartcl
+
+r2321 2016-02-16 16:35:29 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Summary: twocolumn-depending \sloppy and
+ \raggedbottom/\flushbottom delayed
+
+r2320 2016-02-06 13:55:29 +0100 kohm:
+
+ * scrjura.dtx: Summary: new \parformatseparation with default
+ \nobreakspace instead of hard coded \nobreakspace
+
+r2319 2016-02-06 13:18:07 +0100 kohm:
+
+ * scrkernel-basics.dtx: Summary: scrbase can be loaded before
+ \documentclass
+
+r2318 2016-01-29 12:40:15 +0100 kohm:
+
+ * scrkernel-listsandtabulars.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx: new: special option
+ egregdoesnotlikesansseriftitles
+
+r2317 2016-01-27 11:25:16 +0100 kohm:
+
+ * TODO: docu issue (missing options of \DeclareNewTOC)
+
+r2316 2016-01-19 09:46:48 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \section etc. have to change
+ \parfillskip if afterskip is > 0 not of beforeskip is < 0
+
+r2315 2016-01-15 16:14:15 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: Default of several level depening
+ settings changed
+
+r2314 2016-01-15 13:35:17 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: change: some commands deleted, some renamed,
+ one new length
+
+r2313 2016-01-15 12:44:20 +0100 kohm:
+
+ * scrkernel-basics.dtx: Summary: date
+
+r2312 2016-01-15 12:44:01 +0100 kohm:
+
+ * scrkernel-basics.dtx: Summary: Warning about usage of
+ \l@appto@macro@a and \l@preto@macro@a.
+
+r2311 2016-01-12 11:49:21 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: new: \@BeforeTOCEntry and \@AfterTOCEntry
+ for all toc entry styles
+
+r2310 2016-01-05 19:03:19 +0100 kohm:
+
+ * scrkernel-language.dtx: Summary: always define \captionsngerman,
+ \captionsaustrian, \captionsnaustrian, \captionsswiss and
+ \captionsnswiss if polyglossia an language german ist used
+
+r2309 2016-01-05 16:41:35 +0100 kohm:
+
+ * scrkernel-language.dtx: Summary: several tricks to make caption name
+ definitions or changes for ngerman, austrian, naustrian, swiss and
+ nswiss also work with polyglossia
+
+r2308 2015-12-23 09:33:52 +0100 kohm:
+
+ * scrkernel-sections.dtx: Summary: two times \parfillskip set to 0pt
+ plus 1fil instead of \fill
+
+r2307 2015-12-17 11:57:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: fix: undefined reference [Elke]
+
+r2306 2015-12-17 11:44:15 +0100 kohm:
+
+ * tocbasic.dtx: fix: Fammily [Elke]
+
+r2305 2015-12-16 13:19:31 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, tocbasic.dtx: new: \DeclareNewTOC
+ understands option tocentrystyle and provides all options of the toc
+ entry style
+
+r2304 2015-12-12 09:55:47 +0100 kohm:
+
+ * scrkernel-typearea.dtx, scrkernel-pagestyles.dtx: fix:
+ head/footsepline handling of typearea package
+
+r2303 2015-12-11 10:55:30 +0100 kohm:
+
+ * tocbasic.dtx: fix: usage of \scr@ifundefinedorrelax
+
+r2302 2015-12-11 10:53:59 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: property change
+
+r2301 2015-12-11 10:52:22 +0100 kohm:
+
+ * tocbasic.dtx: Summary: property change
+
+r2300 2015-12-11 10:49:30 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, tocbasic.dtx: tocbasic uses scrbase
+
+r2299 2015-12-09 09:25:56 +0100 kohm:
+
+ * Makefile, manifest.txt, scrmain.ins, tocbasic.dtx, doc/,
+ doc/english/, doc/english/Makefile, doc/english/tocbasic.tex: change:
+ scrkernel-tocbasic.dtx is mandatory not optional change: user manual
+ of package tocbasic is not longer part of tocbasic.dtx
+
+r2298 2015-12-08 09:27:34 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrmain.ins, tocbasic.dtx: change: most of
+ the TOC style features moved to tocbasic.sty, so tocbasic needs
+ scrbase now
+
+r2297 2015-12-07 18:48:04 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-sections.dtx: Summary: store the
+ toc entry style only once per symbolic entry level
+
+r2296 2015-12-07 16:16:54 +0100 kohm:
+
+ * TODO: note about TODOs in scrkernel-sections.dtx
+
+r2295 2015-12-07 16:08:18 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrmain.ins: new: TOC styles part, chapter,
+ section, subsection, default
+
+r2294 2015-12-07 13:06:51 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-sections.dtx: Summary:
+ \DeclareTOCEntryStyle syntax changed so it needs only one argument;
+ several commands became internal macros
+
+r2293 2015-12-01 08:28:49 +0100 kohm:
+
+ * scrkernel-sections.dtx: Summary: formatting code
+
+r2292 2015-11-29 17:35:46 +0100 kohm:
+
+ * scrkernel-sections.dtx: Summary: fix warning message
+
+r2291 2015-11-26 12:07:32 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: style options with (at most one)
+ argument
+
+r2290 2015-11-26 09:24:54 +0100 kohm:
+
+ * scrkernel-listsof.dtx: Summary: some preparation for cooperating
+ with scrkernel-tocstyle
+
+r2289 2015-11-25 21:42:33 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrkernel-basics.dtx: fix:
+ \TOCEntryStyleInitCode and \TOCEntryStyleStartInitCode
+
+r2288 2015-11-25 17:52:09 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: use my own box
+
+r2287 2015-11-25 15:43:36 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: \CloneTOCEntryStyle
+
+r2286 2015-11-25 15:14:59 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: \l@preto@macro and \l@preto@macro@a
+
+r2285 2015-11-25 14:22:21 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: options do not longer use @dte@ but
+ @tso@
+
+r2284 2015-11-25 10:53:52 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: change: restructutation of the source code
+ to avoid double implementation
+
+r2283 2015-11-24 13:49:50 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: usage of addpenalty in vmode only
+
+r2282 2015-11-24 09:35:27 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: several new options for toc entry style
+ tocline
+
+r2281 2015-11-23 14:10:31 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: options numberformat and
+ entryformat for entry style tocline
+
+r2280 2015-11-23 10:58:23 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrmain.ins: start of new (universal) toc
+ entry style tocline
+
+r2279 2015-11-23 10:46:01 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: missing % added
+
+r2278 2015-11-20 15:26:19 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrmain.ins: new: toc entry style
+ largetocline
+
+r2277 2015-11-20 12:39:09 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: new toc style undottedtocline
+
+r2276 2015-11-20 12:05:35 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: docu fixes
+
+r2275 2015-11-20 11:36:12 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: end of style conditional added
+
+r2274 2015-11-20 10:44:21 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrmain.ins: new: TOC styles gobble and
+ dottedtocline
+
+r2273 2015-11-20 10:43:55 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: \l@addto@macro@a
+
+r2272 2015-11-19 09:01:30 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: new: optional style init code
+
+r2271 2015-11-18 17:41:28 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: book|report condition
+
+r2270 2015-11-18 17:37:59 +0100 kohm:
+
+ * scrkernel-sections.dtx: checksum and unmasked trace output
+
+r2269 2015-11-18 17:35:18 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: not yet defined toc style
+ information handling removed
+
+r2268 2015-11-18 16:25:18 +0100 kohm:
+
+ * scrmain.ins: scrkernel-sections uses features of scrkernel-tocstyle
+
+r2267 2015-11-18 14:03:00 +0100 kohm:
+
+ * scrkernel-sections.dtx: todo notes added
+
+r2266 2015-11-18 10:41:05 +0100 kohm:
+
+ * scrkernel-sections.dtx: do not longer define a dummy option list but
+ use the special member option @else@
+
+r2265 2015-11-18 10:40:24 +0100 kohm:
+
+ * TODO, scrkernel-basics.dtx: \FamilyExecuteOptions has a special
+ handling für member option @else@
+
+r2264 2015-11-17 18:26:57 +0100 kohm:
+
+ * doc/, doc/Makefile: fix: distclean_local
+
+r2263 2015-11-17 18:10:58 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: change: usable \DeclareTOCEntryStyle and
+ usable \DeclareTOCStyleEntry
+
+r2262 2015-11-17 16:15:53 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: do not use
+ \DeclareSectionCommandDummyOption any longer
+
+r2261 2015-11-17 12:14:34 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: changes: Have a look at the TODO notes!
+
+r2260 2015-11-17 12:08:54 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \DeclareSectionCommandStyleNumberOption
+
+r2259 2015-11-17 11:47:54 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: Summary: optional TOC styles are ready to be
+ used
+
+r2258 2015-11-13 12:34:19 +0100 kohm:
+
+ * scrmain.ins: scrkernel-tocstyle prepare
+
+r2257 2015-11-13 12:19:37 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx: new: \DeclareTOCStyleEntry (currently
+ unused)
+
+r2256 2015-11-13 09:46:59 +0100 kohm:
+
+ * scrsource.tex: fix: generation without scrkernel-tocstyle.dtx
+
+r2255 2015-11-13 09:44:57 +0100 kohm:
+
+ * scrkernel-tocstyle.dtx, scrsource.tex, scrmain.ins,
+ scrkernel-sections.dtx, scrdocstrip.tex: change: KOMA-Script can be
+ implemented either with or without optional scrkernel-tocstyle.dtx
+
+r2254 2015-11-12 10:31:08 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: \DeclareSectionCommand etc. do only
+ accept options of the current style
+
+r2253 2015-11-12 09:21:34 +0100 kohm:
+
+ * scrdocstrip.tex: improved: beta message
+
+r2252 2015-11-12 09:01:36 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: empty style parameter at
+ \DeclareSectionCommand etc.
+
+r2251 2015-11-06 11:10:25 +0100 kohm:
+
+ * scrkernel-sections.dtx: new: toc entries for part, chapter and
+ section respect tocindent in the main classes
+
+r2250 2015-11-06 10:16:26 +0100 kohm:
+
+ * TODO, doc/, doc/guide.bib, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/english/, doc/english/scrlayer.tex: change: reference to picture
+ package (suggestion by rolf)
+
+r2249 2015-11-04 08:07:36 +0100 kohm:
+
+ * scrjura.dtx: Summary: detection of lists, minipages etc. before
+ \Sentence
+
+r2248 2015-11-03 10:31:16 +0100 kohm:
+
+ * scrjura.dtx: fix: \Sentence at start of paragraph creates wrong
+ reference
+
+r2247 2015-11-03 09:37:48 +0100 kohm:
+
+ * scrjura.dtx: fix: \@doendpe has been changed in LaTeX 2015/01/01
+
+r2246 2015-11-02 08:02:18 +0100 kohm:
+
+ * scrkernel-typearea.dtx: Fix: twoside executes \flushbottom but
+ twocolumn does not recognize twoside
+
+ and executes \raggedbottom at class option initialization.
+
+r2245 2015-10-21 10:21:22 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: deprecated options activate deprecated
+ font commands
+
+r2244 2015-10-21 10:02:33 +0200 kohm:
+
+ * scrkernel-fonts.dtx: change: improved deprecated font command
+ message
+
+r2243 2015-10-21 09:45:18 +0200 kohm:
+
+ * TODO: removed: \if… issue
+
+r2242 2015-10-21 09:44:26 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisglue reimplemented
+
+r2241 2015-10-20 11:06:45 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: reimplementation of \ifisinteger
+ improved
+
+r2240 2015-10-19 17:57:29 +0200 kohm:
+
+ * scrkernel-basics.dtx: new: \ifislengthprimitive
+
+r2239 2015-10-19 16:37:08 +0200 kohm:
+
+ * scrkernel-basics.dtx: fix: \newcommand instead of \renewcommand
+
+r2238 2015-10-19 16:35:35 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisinteger reimplemented
+
+r2237 2015-10-19 13:45:06 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifiscounter improved
+
+r2236 2015-10-19 12:40:09 +0200 kohm:
+
+ * scrkernel-basics.dtx: new: \ifisdefchar
+
+r2235 2015-10-19 12:15:34 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisnumexpr reimplemented
+
+r2234 2015-10-19 12:04:30 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisglueexpr reimplemented
+
+r2233 2015-10-19 11:53:52 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisdimexpr reimplemented
+
+r2232 2015-10-19 10:29:26 +0200 kohm:
+
+ * TODO: new general issue with \ifis…
+
+r2231 2015-10-19 10:13:54 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: reimplementation if \ifiscount
+
+r2230 2015-10-19 09:56:04 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: reimplementation of \ifisskip
+
+r2229 2015-10-19 09:35:54 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: reimplementation of \ifisdimen
+
+r2228 2015-10-15 14:15:09 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: Option counterwithin of
+ \DeclareSectionCommand etc.
+
+r2227 2015-10-14 16:31:04 +0200 kohm:
+
+ * scrkernel-title.dtx: fix: last fix improved
+
+r2226 2015-10-14 16:18:07 +0200 kohm:
+
+ * scrkernel-title.dtx: fix: overfull \hbox on title pages
+
+r2225 2015-10-14 11:19:36 +0200 kohm:
+
+ * scrkernel-fonts.dtx: change: old font commands throw errors by
+ default. You may use (already deprecated option)
+ enabledeprecatedfontcommands to change the error into a warning
+ message.
+
+r2224 2015-10-09 17:11:06 +0200 kohm:
+
+ * TODO, tocbasic.dtx, doc/, doc/ngerman/, doc/ngerman/tocbasic.tex:
+ change: docu of hyperref issue
+
+r2223 2015-10-08 13:53:29 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: typofix
+
+r2222 2015-10-08 08:18:34 +0200 kohm:
+
+ * scrkernel-notepaper.dtx: change: allow final line break in \closing
+
+r2221 2015-10-07 12:17:20 +0200 kohm:
+
+ * scrkernel-sections.dtx: new: \toclevel@… will be set by
+ \DeclareSectionCommand etc. if it could be usefull
+
+r2220 2015-10-07 09:30:29 +0200 kohm:
+
+ * scrkernel-typearea.dtx, TODO, scrlayer-notecolumn.dtx: changes:
+ ready for luaTeX 0.80.1/0.81
+
+r2219 2015-10-07 07:37:37 +0200 kohm:
+
+ * TODO: new issue because of luaTeX change
+
+r2218 2015-10-06 14:04:15 +0200 kohm:
+
+ * TODO: new nice to have
+
+r2217 2015-10-06 12:19:14 +0200 kohm:
+
+ * TODO: new to do
+
+r2216 2015-10-06 12:13:11 +0200 kohm:
+
+ * scrkernel-sections.dtx: new: \DeclareSectionCommand option tocstyle
+ with value one of part, chapter,
+ section, subsection
+
+r2215 2015-10-06 11:50:41 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.20 BETA
+
+r2214 2015-10-03 14:59:44 +0200 kohm:
+
+ * releaselist.txt: release 2015/10/03 v3.19a
+
+r2213 2015-10-03 14:59:03 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.19a
+
+r2212 2015-10-03 14:51:00 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: Chapter numberings in \frontmatter and
+ \backmatter are not suppressed [YD]
+
+r2211 2015-09-30 11:43:03 +0200 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/guide-ngerman.tex, doc/english/,
+ doc/english/guide-english.tex: \GuideCTANserver replaced by
+ mirror.ctan.org
+
+r2210 2015-09-29 10:31:05 +0200 kohm:
+
+ * scrkernel-version.dtx: switched back to development state
+
+r2209 2015-09-29 10:27:45 +0200 kohm:
+
+ * releaselist.txt: release 2015/09/29 v3.19
+
+r2208 2015-09-29 10:13:01 +0200 kohm:
+
+ * scrkernel-version.dtx: prepared for 3.19
+
+r2207 2015-09-27 10:14:13 +0200 kohm:
+
+ * TODO: new nice to have: TOC feature pagestyle
+
+r2206 2015-09-27 10:08:34 +0200 kohm:
+
+ * scrkernel-listsof.dtx: fix: typo in warning message
+
+r2205 2015-09-15 12:55:19 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Rechtschreibung
+
+r2204 2015-09-15 11:35:31 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: new: doc of layer mode and the commands of
+ new layer mode picture
+
+r2203 2015-09-15 11:32:08 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: fix: LenToUnit no LengthToUnit
+
+r2202 2015-09-14 10:57:28 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: neu: Doku für
+ mode=picture einschl. der dafür reservierten neuen Anweisungen new:
+ Doku für \layervalign und \layerhalign
+
+r2201 2015-09-14 10:54:18 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: version
+
+r2200 2015-09-14 10:53:49 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: added more moretexcs
+
+r2199 2015-09-14 10:33:00 +0200 kohm:
+
+ * doc/, doc/guide.bib: change: using new version of eso-pic
+
+r2198 2015-09-11 14:31:18 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ fix: counterwithout cancels counterwithin
+
+r2197 2015-09-10 07:56:45 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: new: doc of
+ \DeclareSectionCommand's counterwithout
+
+r2196 2015-09-09 08:02:50 +0200 kohm:
+
+ * TODO: need doc of \DeclareSectionCommand's counterwithout
+
+r2195 2015-09-09 08:01:54 +0200 kohm:
+
+ * scrkernel-sections.dtx: new: \DeclareSectionCommand attribute
+ "counterwithout"
+
+r2194 2015-09-04 17:26:05 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: added: note about the optional argument of
+ \areaset
+
+r2193 2015-09-03 10:08:20 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: doc:
+ \sectionlinesformat, \sectioncatchphraseformat
+
+r2192 2015-09-03 09:21:21 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: added extra group in
+ \sectionlinesformat
+
+r2191 2015-09-03 09:18:20 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: redundant change if
+ \interlinepenalty removed from \sectionlinesformat
+
+r2190 2015-08-29 19:21:55 +0200 kohm:
+
+ * scrkernel-basics.dtx: fix: \protected@edef new: \IfArgIsEmpty
+
+r2189 2015-08-29 12:11:08 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ fix: Doppelter Schlusspunkt
+
+r2188 2015-08-28 16:54:24 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ change: Stichwortverzeichniseinträge für Gliederungsstile
+
+r2187 2015-08-27 21:14:32 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: \sectionlinesformat and
+ \sectioncatchphraseformat has a new first
+ argument, level
+
+r2186 2015-08-27 11:10:36 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: new: \chapterlinesformat
+ and \chapterlineswithprefixformat
+
+r2185 2015-08-27 10:30:15 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: change: add new commands to moretexcs of
+ listings style KOMA
+
+r2184 2015-08-27 10:05:10 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: \raggedchapter moved and \@hangfrom
+ called with extra group
+
+r2183 2015-08-25 11:11:53 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: new: \letterpagestyle
+
+r2182 2015-08-25 11:10:08 +0200 kohm:
+
+ * scrkernel-title.dtx, scrkernel-index.dtx, scrkernel-sections.dtx:
+ change: use only defined non empty page styles
+
+r2181 2015-08-24 11:30:25 +0200 kohm:
+
+ * scrkernel-fonts.dtx: fix: \addtokomafontgobblelist uses wrong list
+ [Falk]
+
+r2180 2015-08-24 11:28:16 +0200 kohm:
+
+ * scrkernel-footnotes.dtx, doc/, doc/ngerman/,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/english/, doc/english/common-footnotes.tex,
+ doc/english/scrextend.tex: fix: scrextend does not use footnote rule
+ settings, so it should not provide setting them fix: scrextend uses
+ \providecommand instead of \newcommand to define
+ \multiplefootnotemark
+
+r2179 2015-08-22 08:36:48 +0200 kohm:
+
+ * scrkernel-paragraphs.dtx: fix: usage of \setlength and \addtolength
+ inside \par@update provocates an conflict with tikz
+
+r2178 2015-08-20 18:11:02 +0200 kohm:
+
+ * scrkernel-fonts.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: fix: usage of font names
+ with special characters with \usefontofkomafont etc.
+
+r2177 2015-08-20 09:23:35 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: - kind of translation of counter letter and
+ commands \thisletter and \letterlastpage
+
+r2176 2015-08-18 12:58:10 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: added: doc of
+ index=numbered and toc=indexnumbered
+
+r2175 2015-08-11 17:51:46 +0200 kohm:
+
+ * scrhack.dtx: fix: lscape hack with more than one landscape page
+
+r2174 2015-08-02 13:58:44 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx: new: commands \chapterlinesformat and
+ \chapterlineswithprefixformat
+
+r2173 2015-07-30 11:56:39 +0200 kohm:
+
+ * scrkernel-version.dtx: change: version date
+
+r2172 2015-07-30 11:39:05 +0200 kohm:
+
+ * scrlayer.dtx, TODO: removed: layer attribute picturecontents new:
+ layer attribute mode with predefined values text, raw and picture
+ new: inside layers \layerhalign and \layervalign can be used to
+ detect but not change the layer alignment
+
+r2171 2015-07-29 08:48:19 +0200 kohm:
+
+ * scrkernel-paragraphs.dtx: fix: \setparsizes uses \par@updaterelativ
+ until first \selectfont at \begin{document}
+
+r2170 2015-07-27 11:52:22 +0200 kohm:
+
+ * scrlayer.dtx, TODO: new: layer attribute picturecontents
+
+r2169 2015-07-26 12:14:32 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: new:
+ Dokumentation von Zähler letter und Anweisungen \thisletter und
+ \letterlastpage
+
+r2168 2015-07-26 11:32:03 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.19 BETA
+
+r2167 2015-07-26 11:18:40 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex,
+ doc/english/, doc/english/common-interleafpage.tex: doc-fix:
+ \cleardoubleoddpageusingstyle and \cleardoubleevenpageusingstyle
+
+r2166 2015-07-26 10:15:44 +0200 kohm:
+
+ * scrkernel-typearea.dtx: fix: pfdtex settings
+
+r2165 2015-07-26 08:26:14 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx: new: \sectionlinesformat and
+ \sectioncatchphraseformat
+
+r2164 2015-07-26 08:24:01 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: fix: Doku zu
+ \if@atdocument
+
+r2163 2015-07-15 18:39:57 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2-experts.tex: fix: \LetterOptionsNeedsPapersize
+ example
+
+r2162 2015-07-15 09:30:52 +0200 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-pagestyles.dtx, TODO: new:
+ \letterpagestyle can be used to auto-change the page style of
+ letters new: letters are numbered new: \thisletter gives the number
+ of the current letter with it's prefix new: \letterlastpage gives
+ the last page number of the current letter
+
+r2161 2015-07-08 14:05:44 +0200 kohm:
+
+ * scrkernel-pagestyles.dtx: fix: headinclude and footinclude at
+ headsepline and footsepline
+
+r2160 2015-07-08 11:06:35 +0200 kohm:
+
+ * Makefile: change: lscape.hak added
+
+r2159 2015-07-08 10:27:58 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrhack.tex, doc/english/,
+ doc/english/scrhack.tex: additional fixes of the new sections by Elke
+
+r2158 2015-07-08 09:10:34 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrhack.tex, doc/english/,
+ doc/english/scrhack.tex: improvement of new section
+
+r2157 2015-07-07 21:29:19 +0200 kohm:
+
+ * scrhack.dtx: new: lscape hack
+
+r2156 2015-07-07 21:28:34 +0200 kohm:
+
+ * scrsource.tex, scrhack.dtx, doc/, doc/guide.bib, doc/ngerman/,
+ doc/ngerman/scrhack.tex, doc/english/, doc/english/scrhack.tex: new:
+ lscape hack
+
+r2155 2015-07-07 08:42:29 +0200 kohm:
+
+ * scrkernel-basics.dtx: change: \ifisskip accepts \baselineskip or
+ \parskip as skip
+
+r2154 2015-07-06 18:18:47 +0200 kohm:
+
+ * scrkernel-basics.dtx: fix: Usage of \FamilyKeyStateProcessed
+
+r2153 2015-07-03 22:06:24 +0200 kohm:
+
+ * scrkernel-basics.dtx: fix: missing % in family keys without default
+ value added
+
+r2152 2015-07-03 22:03:38 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: start of new
+ beta
+
+r2151 2015-07-03 11:25:42 +0200 kohm:
+
+ * scrkernel-language.dtx: fix: emergency code for brain dead language
+ default settings (like hyphen.cfg of babel) now executes all
+ commands using \@nameuse and also executes \@nameuse{extra…}
+
+r2150 2015-07-02 10:10:21 +0200 kohm:
+
+ * releaselist.txt: release 2015/07/02 v3.18
+
+r2149 2015-07-02 10:07:30 +0200 kohm:
+
+ * scrkernel-version.dtx: prepared for 3.18
+
+r2148 2015-06-25 16:58:59 +0200 kohm:
+
+ * TODO: new nice to have
+
+r2147 2015-06-24 08:16:16 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: fix: pagestyle for scrlttr2 sets \lofoot und
+ \rofoot
+
+r2146 2015-06-20 08:38:46 +0200 kohm:
+
+ * tocbasic.dtx: change: \DeclareNewTOC option handling more compatible
+ with version 3.17
+
+r2145 2015-06-18 09:58:50 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex,
+ doc/english/, doc/english/common-pagestylemanipulation.tex: added:
+ notes about need of cooperation of the classes for e.g. running
+ heads at part level
+
+r2144 2015-06-17 17:38:01 +0200 kohm:
+
+ * scrkernel-bibliography.dtx: fix: checksum again
+
+r2143 2015-06-17 17:32:55 +0200 kohm:
+
+ * scrkernel-bibliography.dtx: fix: checksum
+
+r2142 2015-06-17 17:28:16 +0200 kohm:
+
+ * scrkernel-bibliography.dtx: fix: usage of \@mkdouble if available
+
+r2141 2015-06-17 13:12:54 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex: index fix
+
+r2140 2015-06-17 12:15:52 +0200 kohm:
+
+ * scrkernel-basics.dtx, doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/english/, doc/english/scrbase.tex: new: scrbase can be loaded
+ before \documentclass new: \BeforeFamilyProcessOptions
+
+r2139 2015-06-17 12:13:56 +0200 kohm:
+
+ * doc/, doc/scrguide.cls: change: new keywords
+
+r2138 2015-06-17 12:09:40 +0200 kohm:
+
+ * scrkernel-version.dtx: fix: \scr@clsextension
+
+r2137 2015-06-17 09:12:11 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: fix: line length of \setheadtopline,
+ \setheadsepline, \setfootsepline, and \setfootbotline
+
+r2136 2015-06-16 08:17:22 +0200 kohm:
+
+ * TODO: some new nice to haves
+
+r2135 2015-06-15 13:41:43 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex: fix: spelling [Elke]
+
+r2134 2015-06-15 13:34:28 +0200 kohm:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx,
+ scrkernel-listsof.dtx, TODO: change: usage of \@mkright and \@mkdouble
+ if available change: braindead options index=leveldown,
+ index=standardlevel, index=numbered, toc=indexnumbered
+
+r2133 2015-06-14 11:14:48 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: change:
+ explanation of \chaptermark, \sectionmark, \addchapmark, \addsecmark
+
+r2132 2015-06-12 12:27:11 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: change: section command
+ styles "part" and "chapter" completed
+
+r2131 2015-06-10 20:17:51 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: to many \chapterheadstartvskip in
+ \scr@@makechapterhead
+
+r2130 2015-06-10 11:36:46 +0200 kohm:
+
+ * scrkernel-pagestyles.dtx, TODO, scrkernel-sections.dtx: fix:
+ scrartcl needs \hy@insteadofrefstepcounter
+
+r2129 2015-06-09 19:00:46 +0200 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex: change: revert change of
+ \IfUsePrefixLine in \chapterformat
+
+r2128 2015-06-09 18:25:14 +0200 kohm:
+
+ * TODO: fixed: multicol issue
+
+r2127 2015-06-09 18:01:28 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: new:
+ \IfChapterUsesPrefixLine
+
+r2126 2015-06-09 11:26:36 +0200 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex: change: \IfUsePrefix defined
+ outside section command style despite the fact it should be used
+ only inside
+
+r2125 2015-06-09 09:58:46 +0200 kohm:
+
+ * scrlayer.dtx: change: usage of \parbox[b] instead if \parbox[t] at
+ \@oddhead and \@evenhead
+
+ to avoid strange problems using package multicol
+
+r2124 2015-06-09 08:25:28 +0200 kohm:
+
+ * scrmain.ins: fix: flags at scrextend generation
+
+r2123 2015-06-05 11:04:41 +0200 kohm:
+
+ * TODO: new issue and new docu need
+
+r2122 2015-06-03 10:05:35 +0200 kohm:
+
+ * scrkernel-letterclassoptions.dtx: change: error handling of
+ \RequirePackage or \usepackage inside lco-files
+
+r2121 2015-06-02 10:12:38 +0200 kohm:
+
+ * tocbasic.dtx: fix: expansion of \…name and \…listname
+
+r2120 2015-05-24 12:06:25 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: three quarters of the way to section
+ command style "part"
+
+r2119 2015-05-23 09:21:40 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: half way to section command style
+ "part"
+
+r2118 2015-05-22 17:34:34 +0200 kohm:
+
+ * scrhack.dtx: change: deactivate hyperref hack if
+ \hy@insteadofrefstepcounter has been
+
+ defined, i.e., by a KOMA-Script class ≥ 3.18.
+
+r2117 2015-05-22 16:22:03 +0200 kohm:
+
+ * TODO: no comment
+
+r2116 2015-05-22 16:02:58 +0200 kohm:
+
+ * scrmain.ins, scrkernel-sections.dtx: change: complete new
+ implementation of section command style "chapter"
+
+r2115 2015-05-21 15:48:01 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex, doc/english/,
+ doc/english/typearea-experts.tex: fix: spelling
+
+r2114 2015-05-21 10:36:19 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex,
+ doc/english/, doc/english/typearea-experts.tex: new:
+ \BeforeRestoreareas and \AfterRestoreareas
+
+r2113 2015-05-21 10:09:53 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: use of style in \@chapter and
+ \@schapter
+
+r2112 2015-05-21 09:46:12 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: twocolumn behaviour of chapter style
+ headings improved
+
+r2111 2015-05-21 09:25:14 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: CheckSum
+
+r2110 2015-05-21 09:24:43 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: \@makechapterhead uses \csname
+ \scr@dsc@current format\endcsname instead
+
+ of \chapterformat if chapterprefix is on
+
+r2109 2015-05-21 09:17:57 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: \addchap and \addsec should work fix:
+ workaround for several packages that use internal macros
+
+ \@makechapterhead or \@makeschapterhead
+
+r2108 2015-05-20 20:11:25 +0200 kohm:
+
+ * scrkernel-typearea.dtx, TODO: new: \BeforeRestoreareas and
+ \AfterRestoreareas
+
+r2107 2015-05-20 13:27:00 +0200 kohm:
+
+ * scrkernel-pagestyles.dtx, TODO, scrkernel-sections.dtx: new: section
+ command style "chapter" defined
+
+r2106 2015-05-19 11:08:32 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: fix: deactivatepagestylelayers=true
+
+r2105 2015-05-19 09:35:29 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/scrlayer.tex: new: \ForEachLayerOfPageStyle* new: serveral
+ new layer options to remove restrictions
+
+r2104 2015-05-18 09:40:29 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex,
+ doc/english/, doc/english/common-pagestylemanipulation.tex: fix: index
+
+r2103 2015-05-18 08:58:57 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrhack.tex: improvement bei A. S.
+
+r2102 2015-05-14 17:05:21 +0200 kohm:
+
+ * scrlayer.dtx: new: counterparts to restriction layer attributes
+
+r2101 2015-05-14 12:20:33 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx, scrlayer.dtx,
+ TODO: new: less local working star version of \ForEachLayerOfPageStyle
+
+r2100 2015-05-14 11:58:43 +0200 kohm:
+
+ * TODO: new: nice to have
+
+r2099 2015-05-13 18:44:00 +0200 kohm:
+
+ * releaselist.txt: release 2015/05/15 v3.17c
+
+r2098 2015-05-13 18:23:25 +0200 kohm:
+
+ * scrjura.dtx: fix: scrjura version
+
+r2097 2015-05-13 18:17:20 +0200 kohm:
+
+ * scrjura.dtx: fix: Irgendwann muss das doch mal funktionierten!
+
+r2096 2015-05-13 18:03:07 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.17c
+
+r2095 2015-05-13 18:00:16 +0200 kohm:
+
+ * scrjura.dtx: fix: \expandafter
+
+r2094 2015-05-13 08:44:15 +0200 kohm:
+
+ * scrjura.dtx: fix: change entry
+
+r2093 2015-05-13 08:29:59 +0200 kohm:
+
+ * scrjura.dtx: fix: change entries
+
+r2092 2015-05-13 08:28:07 +0200 kohm:
+
+ * scrjura.dtx: fix: use correct format for automatic numbered new
+ environments
+
+r2091 2015-05-11 09:45:36 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: fix: unbestimmter
+ Artikel [Maximilian B.]
+
+r2090 2015-05-06 08:58:30 +0200 kohm:
+
+ * releaselist.txt: release 2015/05/06 v3.17a
+
+r2089 2015-05-06 08:10:29 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ release 3.17a
+
+r2088 2015-05-03 11:09:14 +0200 kohm:
+
+ * scrkernel-typearea.dtx: change: option pagesize in preamble is
+ partly delayed until \begin{document}
+
+r2087 2015-05-03 09:11:15 +0200 kohm:
+
+ * scrkernel-typearea.dtx: fix: group level error with pagesize=false
+
+r2086 2015-05-01 21:40:11 +0200 kohm:
+
+ * scrjura.dtx: fix: automatic numbering of sub-clauses of new defined
+ environments
+
+r2085 2015-05-01 21:27:42 +0200 kohm:
+
+ * scrjura.dtx: fix: automatic numbering of new defines environments
+
+r2084 2015-04-26 14:49:41 +0200 kohm:
+
+ * scrkernel-notepaper.dtx: fix: font aliases title and subject
+
+r2083 2015-04-26 14:48:47 +0200 kohm:
+
+ * scrkernel-version.dtx: neue Beta-Version
+
+r2082 2015-04-23 10:00:56 +0200 kohm:
+
+ * releaselist.txt: v3.17 released
+
+r2081 2015-04-23 08:46:09 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ release 3.17
+
+r2080 2015-04-21 10:08:26 +0200 kohm:
+
+ * doc/, doc/guide.tex: changed: author
+
+r2079 2015-04-20 09:12:08 +0200 kohm:
+
+ * scrkernel-sections.dtx: new: \addpartmark analogous to \addchapmark
+
+r2078 2015-04-17 11:26:39 +0200 kohm:
+
+ * Makefile: setspace.hak added
+
+r2077 2015-04-17 10:18:40 +0200 kohm:
+
+ * scrkernel-notepaper.dtx: change: \setbox --> \sbox
+
+r2076 2015-04-17 10:17:52 +0200 kohm:
+
+ * TODO: new nice to have
+
+r2075 2015-04-17 10:05:16 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: replaced 0 by \z@ (two times)
+
+r2074 2015-04-16 18:05:17 +0200 kohm:
+
+ * README.in/, doc/, doc/ngerman/, doc/ngerman/scrhack.tex: fix: docu
+
+r2073 2015-04-16 10:41:14 +0200 kohm:
+
+ * scrhack.dtx, doc/, doc/ngerman/, doc/ngerman/scrhack.tex,
+ doc/english/, doc/english/scrhack.tex: new: setspace hack
+
+r2072 2015-04-13 17:39:00 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: doppelt
+ gemoppeltes \clearpage
+
+r2071 2015-04-13 10:01:12 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: change:
+ description of options open and headings=openany
+
+r2070 2015-04-08 11:02:19 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: fix: warnings for font elements "pagehead" and
+ "pagefoot"
+
+r2069 2015-04-08 10:55:30 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: fix: bug in "false" value of \reserved@b in
+ \sls@set@value
+
+r2068 2015-04-04 11:36:35 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: fix: \autoref
+
+r2067 2015-04-04 11:34:54 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: changed: translation is
+ a never ending story
+
+r2066 2015-04-04 11:18:50 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/common-textmarkup.tex,
+ doc/english/scrbookreportarticle-experts.tex: new: docu of
+ \addtokomafontrelaxlist
+
+r2065 2015-04-04 08:50:19 +0200 kohm:
+
+ * TODO: moved: \addtokomafontrelaxlist from nice to have to doc
+
+r2064 2015-04-03 14:04:50 +0200 kohm:
+
+ * scrkernel-sections.dtx: change: using \usefontofkomafont instead of
+ \usekomafont at initial font
+ setting of \@@makechapterhead
+
+r2063 2015-04-03 13:55:42 +0200 kohm:
+
+ * scrkernel-fonts.dtx: change: reimplementation of more robust
+ \usefontofkomafont etc. new: \addtokomafontrelaxlist
+
+r2062 2015-04-02 10:23:45 +0200 kohm:
+
+ * TODO: add: note about possible change of \usefontofkomafont etc.
+
+r2061 2015-04-02 09:27:25 +0200 kohm:
+
+ * TODO: added: nice to have completed section styles chapter and part
+
+r2060 2015-03-31 11:10:59 +0200 kohm:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/scrwfile.tex, doc/ngerman/scraddr.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbase.tex,
+ doc/english/common-marginpar.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-notecolumn.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/scrdatetime.tex,
+ doc/english/common-dictum.tex, doc/english/japanlco.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/common-draftmode.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/typearea-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrhack.tex,
+ doc/english/scrlayer.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/scrwfile.tex, doc/english/scraddr.tex: usage of new
+ \seclabel and \exlabel
+
+r2059 2015-03-31 10:01:37 +0200 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/common-fontsize.tex,
+ doc/english/, doc/english/common-fontsize.tex: documentation of
+ fontsize issue
+
+r2058 2015-03-31 09:04:03 +0200 kohm:
+
+ * scrkernel-sections.dtx: fix: \protect usage of \…format in
+ \@seccntformat
+
+r2057 2015-03-31 08:29:00 +0200 kohm:
+
+ * TODO: added: \…format issue
+
+r2056 2015-03-30 10:24:20 +0200 kohm:
+
+ * scrkernel-typearea.dtx: change: one more usage of \scr@ta@v@is@lt
+
+r2055 2015-03-30 09:36:27 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/english/, doc/english/scrbookreportarticle-experts.tex: fix:
+ spelling + one note
+
+r2054 2015-03-30 08:58:41 +0200 kohm:
+
+ * scrkernel-fonts.dtx: fix: using \par@updaterelative only if defined
+
+r2053 2015-03-27 10:25:57 +0100 kohm:
+
+ * TODO, doc/, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: change: missing
+ translations at \DeclareSectionCommand and \chapterhead…vskip
+
+r2052 2015-03-27 09:07:21 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex: change: Änderungen bei
+ der Doku von \DeclareSectionCommand und Auswirkungen auf
+ \chapterhead…vskip vervollständigt
+
+r2051 2015-03-27 09:06:19 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: fix: end of DIV=classic
+
+r2050 2015-03-26 11:54:11 +0100 kohm:
+
+ * TODO: more need for docu
+
+r2049 2015-03-26 11:52:40 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ change: Stilbeschreibung und Tabellen für stilabhängige
+ Einstellungen
+
+r2048 2015-03-26 10:51:38 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex: fix:
+ list of table entry in English
+
+r2047 2015-03-26 09:38:26 +0100 kohm:
+
+ * scrkernel-typearea.dtx: fix: using typeareas version comparisons
+
+r2046 2015-03-26 09:21:28 +0100 kohm:
+
+ * scrkernel-fonts.dtx: fix: scrfontsizes.sty also adds
+ \par@updaterelative
+
+r2045 2015-03-25 10:47:54 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx, scrkernel-fonts.dtx: change: last fix
+ should depend on KOMA-Script version
+
+r2044 2015-03-25 10:36:47 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx, scrkernel-fonts.dtx: fix: update of
+ paragraph lengths after fontsize changes was incomplete
+
+r2043 2015-03-25 10:34:46 +0100 kohm:
+
+ * TODO: new: some information about late fontsize changes
+
+r2042 2015-03-25 09:44:27 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: styles section, chapter, part use
+ the same variable macros for beforeskip, afterskip and innerskip
+
+r2041 2015-03-25 09:42:54 +0100 kohm:
+
+ * tocbasic.dtx: fix: moving \@mkboth, \@mkright, \@mkdouble caused
+ loosing \lastpenalty and \lastskip after heading; fixed by explicite
+ restoring them, but only in vertcial mode
+
+r2040 2015-03-24 17:58:57 +0100 kohm:
+
+ * TODO, scrkernel-sections.dtx: fix: \part can be configures (but but
+ not defined) using \DeclareSectionCommand
+
+r2039 2015-03-24 17:14:55 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \setlenght → \setlength
+
+r2038 2015-03-24 11:13:55 +0100 kohm:
+
+ * TODO: new: missing part features, missing doc
+
+r2037 2015-03-24 11:09:29 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: checksum
+
+r2036 2015-03-24 11:08:54 +0100 kohm:
+
+ * scrkernel-typearea.dtx: fix: \KOMA@kav@addkey → \KOMA@kav@add
+
+r2035 2015-03-24 11:02:05 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: parameters of (not yet defined)
+ section command style `chapter' can be set
+
+r2034 2015-03-24 09:39:48 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: early test for existing section
+ command styles
+
+r2033 2015-03-24 09:10:17 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: error message for
+ \DeclareSectionCommand without style
+
+r2032 2015-03-24 08:14:20 +0100 kohm:
+
+ * TODO: addmargin issue solved
+
+r2031 2015-03-24 08:11:27 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: of fix
+
+r2030 2015-03-23 19:23:53 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \DeclareSectionCommand's new option
+ expandtopt for tocindent and tocnumwidth
+
+r2029 2015-03-23 18:51:30 +0100 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: new:
+ \DeclareSectionCommand provides option expandtopt with default
+ false.
+
+r2028 2015-03-23 13:19:51 +0100 kohm:
+
+ * scrkernel-listsandtabulars.dtx, scrkernel-miscellaneous.dtx: fix:
+ addmargin* resulting in a page break should work now
+
+r2027 2015-03-23 12:29:03 +0100 kohm:
+
+ * TODO: change: nice to have about \providecaptionname rejected
+
+r2026 2015-03-23 11:45:37 +0100 kohm:
+
+ * tocbasic.dtx: fix: feature noparskipfake
+
+r2025 2015-03-23 11:42:35 +0100 kohm:
+
+ * tocbasic.dtx: fix: wrong change entry
+
+r2024 2015-03-23 11:41:38 +0100 kohm:
+
+ * tocbasic.dtx, doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: fix:
+ initial \parskip at the TOCs added unless feature noparskipfake has
+ been set
+
+r2023 2015-03-23 08:17:44 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex,
+ doc/english/scrbookreportarticle-experts.tex: changes: several
+ improvements of new docu by Arndt
+
+r2022 2015-03-23 08:00:03 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ changes: vor … zuvor war doppelt gemoppelt
+
+r2021 2015-03-22 11:09:00 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex:
+ changes: table of layers of page styles
+
+r2020 2015-03-22 10:52:08 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: change: docu improvement
+
+r2019 2015-03-20 09:35:36 +0100 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-pagestyles.dtx, TODO, doc/,
+ doc/ngerman/, doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2-experts.tex: new: \letterpagemark (scrletter
+ only) to solve the \pagemark issue of scrletter
+
+r2018 2015-03-19 11:32:54 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: changed: docu of
+ \DeclareSectionCommand, \chapterheadstartvskip, \partheadstartvskip
+ etc.
+
+r2017 2015-03-18 10:16:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: change: new reactivation
+ features for options twocolumn, twoside and parskip
+
+r2016 2015-03-18 09:29:06 +0100 kohm:
+
+ * scrkernel-typearea.dtx: fix: option twoside uses \cleardoubleoddpage
+ if available
+
+r2015 2015-03-18 09:24:52 +0100 kohm:
+
+ * scrkernel-typearea.dtx: fix: late option twoside uses
+ \cleardoublepage
+
+r2014 2015-03-18 09:16:01 +0100 kohm:
+
+ * TODO: change: since 3.17 \activateareas will also re-do parskip
+ settings if used
+ after \begin{document}
+
+r2013 2015-03-18 09:14:12 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-typearea.dtx: fix: orphan
+ \AtBeginDocument outside class and packages removed
+
+r2012 2015-03-18 08:29:48 +0100 kohm:
+
+ * TODO: twocolumn issue and similar twoside issue removed
+
+r2011 2015-03-17 12:39:55 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrkernel-notepaper.dtx, scrkernel-language.dtx,
+ scrkernel-footnotes.dtx, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scrkernel-basics.dtx: fix: \@pkgextenstion not
+ valid after \begin{document} fix: late setting of twoside or
+ twocolumn changes not only \if@twoside resp. \if@twocolumn but also
+ everything early options do, e.g. \sloppy, \flushbottom,
+ \raggedbottom, but only if version >= 3.17
+
+r2010 2015-03-17 10:56:13 +0100 kohm:
+
+ * TODO: parskip issue
+
+r2009 2015-03-17 10:55:01 +0100 kohm:
+
+ * TODO: one issue removed two new added
+
+r2008 2015-03-16 10:41:58 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: change: support for internal key and value
+ storage
+
+r2007 2015-03-16 09:44:20 +0100 kohm:
+
+ * scrkernel-basics.dtx: change: \KOMA@ncmdkey automatically replaces
+ the stored exclusive value
+
+r2006 2015-03-14 07:15:57 +0100 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-sections.dtx: fix: usage of
+ \KOMAClassFileName instead of combinations of name and extension
+
+r2005 2015-03-13 16:50:29 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: chapterprefix [Elke]
+
+r2004 2015-03-12 17:10:03 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: change: usage of internal key and value
+ storage
+
+r2003 2015-03-12 16:59:23 +0100 kohm:
+
+ * scrkernel-listsandtabulars.dtx: change: source unification (self
+ identification=
+
+r2002 2015-03-12 13:06:17 +0100 kohm:
+
+ * scrkernel-floats.dtx, scrkernel-typearea.dtx,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx: change: source unification (compatibility tests
+ aka version setting tests)
+
+r2001 2015-03-12 12:29:57 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrkernel-bibliography.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrkernel-pseudolengths.dtx,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scrkernel-basics.dtx: change: source unification
+ (spaces and comments)
+
+r2000 2015-03-12 11:59:19 +0100 kohm:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx,
+ scrkernel-listsof.dtx: change: source unification (file extensions
+ change: source unification (self identification) change:
+ \KOMAClassFileName change: internal key and value storage
+
+r1999 2015-03-12 11:58:30 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-footnotes.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-pseudolengths.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ scrkernel-basics.dtx: change: source unification (file extensions
+ change: source unification (self identification) change:
+ \KOMAClassFileName
+
+r1998 2015-03-11 23:09:38 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: fix: \scr@v@is@… added to scrextend
+
+r1997 2015-03-11 20:19:06 +0100 kohm:
+
+ * scrkernel-footnotes.dtx: fix: Warning messages
+
+r1995 2015-03-11 18:37:10 +0100 kohm:
+
+ * .ignore, doc/, doc/ngerman/, doc/english/: svn:ingore changed
+
+r1994 2015-03-11 18:15:19 +0100 kohm:
+
+ * scrkernel-footnotes.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-fonts.dtx: fix: Usage of \KOMAClassName and \ClassWarning in
+ scrextend
+
+r1993 2015-03-11 17:33:06 +0100 kohm:
+
+ * TODO: scrextend issue
+
+r1992 2015-03-11 12:52:08 +0100 kohm:
+
+ * scrkernel-footnotes.dtx: change: support for internal key and value
+ storage
+
+r1991 2015-03-11 12:07:29 +0100 kohm:
+
+ * scrkernel-floats.dtx: fix: Copyright date
+
+r1990 2015-03-11 12:07:11 +0100 kohm:
+
+ * scrkernel-floats.dtx: change: option caption does not change
+ anything with unknown value change: support for internal key and
+ value storage
+
+r1989 2015-03-10 13:07:41 +0100 kohm:
+
+ * scrkernel-pagestyles.dtx: change: key and value storage
+
+r1988 2015-03-10 12:49:18 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: fix: \unless removed
+
+r1987 2015-03-10 12:21:34 +0100 kohm:
+
+ * scrkernel-title.dtx: change: support for key and value storage
+
+r1986 2015-03-10 10:29:30 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx: change: support for internal key and value
+ list
+
+r1985 2015-03-10 10:14:29 +0100 kohm:
+
+ * scrkernel-fonts.dtx: change: support for internal key and value list
+
+r1984 2015-03-10 09:38:06 +0100 kohm:
+
+ * scrkernel-language.dtx: new: support for option value list
+
+r1983 2015-03-10 09:32:04 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: new: option value storage new: internal
+ \scr@v@is@… to check for compatibility
+
+r1982 2015-03-10 08:53:25 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: option value storage
+
+r1981 2015-03-09 14:14:31 +0100 kohm:
+
+ * scrkernel-sections.dtx: new: internal storage of option values
+
+r1980 2015-03-09 13:46:05 +0100 kohm:
+
+ * scrextend.dtx: new: support for option value list
+
+r1979 2015-03-09 10:44:10 +0100 kohm:
+
+ * scrjura.dtx: change: support for internal value list fix: option
+ state signals inside groups
+
+r1978 2015-03-09 09:36:05 +0100 kohm:
+
+ * scrhack.dtx: change: full support for internal option list
+
+r1977 2015-03-09 09:17:29 +0100 kohm:
+
+ * Makefile, manifest.txt, tocstyle.dtx: remove: scrbeta.dtx not needed
+ any longer
+
+r1976 2015-03-08 21:32:19 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: \chapterformat adds \enskip only in
+ non prefix line mode
+
+r1975 2015-03-08 21:26:09 +0100 kohm:
+
+ * TODO, tocbasic.dtx: change: a little bit more robust for not
+ recommended usage of \MakeUppercase at part of the chapter font
+
+r1974 2015-03-08 19:51:08 +0100 kohm:
+
+ * TODO: new: Todos of tocbasic
+
+r1973 2015-03-07 13:09:28 +0100 kohm:
+
+ * TODO: new: \chapterheadstartvskip etc. need docu change
+
+r1972 2015-03-05 08:48:33 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: change: warning of \date is used instead of
+ \setkomavar{date}
+
+r1971 2015-03-02 13:29:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: change: option pagesize is default
+
+r1970 2015-03-02 13:20:32 +0100 kohm:
+
+ * scrkernel-typearea.dtx: change: typearea supports internal
+ key-and-value storage list
+
+r1969 2015-03-02 13:13:11 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: initial value of new bool key
+
+r1968 2015-03-02 12:54:05 +0100 kohm:
+
+ * scrkernel-basics.dtx: change: improve storage of boolean key
+
+r1967 2015-03-02 10:47:44 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrlttr2-experts.tex,
+ doc/english/common-textmarkup.tex,
+ doc/english/common-pagestylemanipulation.tex: several fixes of
+ language [Elke+Arndt], labels [myself] and one double defined table
+ [myself]
+
+r1966 2015-03-01 11:00:49 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/english/, doc/english/scrlayer-scrpage-experts.tex: fix: command
+ name \DeclarePageStyleByLayers
+
+r1965 2015-03-01 10:51:52 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: change:
+ \othersectionlevelsformat is more or less obsolete
+
+r1964 2015-02-27 09:33:54 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: startup values of options stored at internal
+ key-and-value-list
+
+r1963 2015-02-27 09:04:57 +0100 kohm:
+
+ * scrkernel-basics.dtx: change: \KOMA@kav@x… uses \protected@edef
+ instead of \edef
+
+r1962 2015-02-26 09:34:33 +0100 kohm:
+
+ * scrlayer.dtx, scrkernel-basics.dtx: change: \KOMA@ifkey
+ automaticalle replaces the initial value if the switch was unknown
+ before new: \KOMAoptionOf[<command to be executed>]{<package or
+ class with extension>}{<option>}
+
+r1961 2015-02-25 14:53:12 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: \KOMAoptionsOf[<prefix command>]{package
+ or class with extension}
+
+r1960 2015-02-25 10:26:53 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: new: stores all options to internal list
+
+r1959 2015-02-25 09:08:37 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: two KOMA-Script internal macros
+
+r1958 2015-02-24 18:21:50 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: change: forgotten
+ paragraph removed; \endskip --> \enskip [Elke]
+
+r1957 2015-02-24 12:49:13 +0100 kohm:
+
+ * scrlayer.dtx: new: save all key-value pairs of member scrlayer of
+ family KOMA change: interfaces define scrlayer options only while
+ loading so they are not
+ longer called twice, if options are set by
+ \KOMAoption oder
+ \KOMAoptions
+
+r1956 2015-02-24 12:46:36 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: prepared to save the key-value pairs of
+ single members of family KOMA
+
+r1955 2015-02-23 17:55:49 +0100 kohm:
+
+ * scrkernel-compatibility.dtx, TODO, scrkernel-sections.dtx, doc/,
+ doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex: change: use \sectionformat …
+ \subparagraphformat instead of \othersectionlevelsformat if version
+ >= 3.17
+
+r1954 2015-02-23 17:53:40 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: new: some commands added to the list of
+ known names
+
+r1953 2015-02-23 17:50:44 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: new: some new commands added to list of
+ known names
+
+r1952 2015-02-23 16:25:55 +0100 kohm:
+
+ * scrkernel-fonts.dtx: new: \simple@changefontsizes is the real
+ calculation change: \changefontsizes will become
+ \simple@changefontsizes only if undefined
+
+r1951 2015-02-22 11:22:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: nur ein Tippfehler
+
+r1950 2015-02-22 10:31:36 +0100 kohm:
+
+ * TODO: What about \sectionformat etc.?
+
+r1949 2015-02-21 09:30:38 +0100 kohm:
+
+ * scrkernel-notepaper.dtx, TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/common-textmarkup.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-textmarkup.tex: change: resolved element conflict
+ of scrletter and KOMA-Script classes within elements subject and
+ title
+
+r1948 2015-02-20 11:06:26 +0100 kohm:
+
+ * scrkernel-fonts.dtx: fix: name of \useshapeofkomafont
+
+r1947 2015-02-20 08:51:32 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: change: once again \closing because of
+ braindead usage of variables
+
+r1946 2015-02-19 17:36:26 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: change: reimplementation of \closing due to
+ users who frivolously use \\
+ in fromname
+
+r1945 2015-02-17 12:40:21 +0100 kohm:
+
+ * scrmain.ins: new: Alpha of DIN5008A.lco and DIN5008B.lco
+
+r1944 2015-02-17 12:39:21 +0100 kohm:
+
+ * scrkernel-letterclassoptions.dtx: new: Alpha of DIN5008A.lco and
+ DIN5008B.lco
+
+r1943 2015-02-17 10:01:34 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: new: docu of addrfield=topaligned
+
+r1942 2015-02-16 17:42:29 +0100 kohm:
+
+ * TODO: need for docu
+
+r1941 2015-02-16 16:47:44 +0100 kohm:
+
+ * scrkernel-notepaper.dtx: new: addrfield=topaligned to suppress
+ vertical centering of the address
+
+ in the address part of the address field
+
+r1940 2015-02-14 13:03:15 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: fix: shift note in
+ captionbeside example
+
+r1939 2015-02-14 12:55:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2-experts.tex: changed: notes about page style
+ handling of scrletter
+
+r1938 2015-02-14 12:55:09 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: fix: notes about headsepline with page style
+ plain
+
+r1937 2015-02-13 09:54:38 +0100 kohm:
+
+ * TODO: several suggestions to scrletter and scrlayer(-scrpage)
+
+r1936 2015-02-13 09:30:39 +0100 kohm:
+
+ * TODO: problem with element and variable "subject" in beta package
+ scrletter [third party report, unfortunately without contact to the
+ original user]
+
+r1935 2015-02-11 12:45:42 +0100 kohm:
+
+ * scrkernel-fonts.dtx: fix: \footnotesize in scrfontsizes.sty
+
+r1934 2015-02-11 08:20:28 +0100 kohm:
+
+ * scrkernel-typearea.dtx: fix: page usage calculation with \footheight
+
+r1933 2015-02-10 09:39:27 +0100 kohm:
+
+ * doc/, doc/guide.bib: change: KOMA-Script book edition 5
+
+r1932 2015-02-09 10:40:31 +0100 kohm:
+
+ * scrkernel-typearea.dtx, TODO: new: option "usegeometry"
+
+r1931 2015-02-09 10:39:53 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: new 3.17 BETA
+ started
+
+r1930 2015-02-07 17:54:15 +0100 kohm:
+
+ * releaselist.txt: 3.16 released
+
+r1929 2015-02-07 15:32:58 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: version 3.16 added
+
+r1928 2015-02-07 14:50:35 +0100 kohm:
+
+ * TODO: dummy change
+
+r1927 2015-02-07 14:47:54 +0100 kohm:
+
+ * TODO: dummy change
+
+r1926 2015-02-07 14:38:11 +0100 kohm:
+
+ * scrkernel-version.dtx: ready for release 3.16
+
+r1925 2015-02-07 14:37:43 +0100 kohm:
+
+ * TODO: option usegeomentry not yet implemented
+
+r1924 2015-02-07 14:34:46 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: improved: documented
+ that \DeclareSectionCommand can change attributes of \part and
+ \chapter
+
+r1923 2015-02-05 08:53:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Fehlerkorrekturen [Elke]
+
+r1922 2015-02-05 08:47:19 +0100 kohm:
+
+ * TODO: need for more docu of \RedeclareSectionCommand
+
+r1921 2015-02-04 09:57:44 +0100 kohm:
+
+ * manifest.txt, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/english/: note about missing chapter about scrjura
+
+r1920 2015-02-03 08:27:01 +0100 kohm:
+
+ * TODO, doc/, doc/english/, doc/english/scrlayer.tex: translation of
+ the new features
+
+r1919 2015-02-02 11:25:23 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: avoid overfull vbox for empty preamble
+ fix: avoid overfull preamble warning for not overfull vbox
+
+r1918 2015-01-28 11:03:48 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/common-textmarkup.tex,
+ doc/english/common-pagestylemanipulation.tex: some translations and
+ equilisations of the English guide
+
+r1917 2015-01-28 08:32:30 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ fix: Fehler in den neuen Erklärungen beseitigt [Elke]
+
+r1916 2015-01-27 10:06:12 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: deutsche Erklärung
+ einiger Neuheiten ab Version 3.16
+
+r1915 2015-01-27 08:45:41 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix: version change
+
+r1914 2015-01-27 08:45:11 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: change: using scrlayer-scrpage instead of
+ scrpage2 new: manual can depend on the KOMA-Script version used to
+ generate it
+
+r1913 2015-01-26 21:12:39 +0100 kohm:
+
+ * TODO: fehlende Erklärungen in der Anleitung
+
+r1912 2015-01-26 21:11:06 +0100 kohm:
+
+ * scrlayer.dtx: new: \GetLayerContents new: additive layer attributes
+ addhoffset, addvoffset, addwidth, addheight,
+
+ addcontents, pretocontents
+
+r1911 2015-01-26 08:24:56 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/english/, doc/english/scrlayer-scrpage-experts.tex: fix: below
+ layers are below.line layers
+
+r1910 2015-01-22 08:52:15 +0100 kohm:
+
+ * scrkernel-version.dtx: back to beta of 3.15 bugfix release
+
+r1909 2015-01-22 08:50:30 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: wrong vertical alignment of \addpart
+ and \addpart* headings
+
+r1908 2015-01-22 08:34:15 +0100 kohm:
+
+ * scrjura.dtx: typo in documentation fixed without change of package
+ version
+
+r1907 2015-01-21 10:51:54 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \endskip must be \enskip
+
+r1906 2015-01-21 08:26:50 +0100 kohm:
+
+ * scrkernel-miscellaneous.dtx: Usage of `titleps` not recommended;
+ reasons for not recommended packages
+
+r1905 2015-01-15 18:10:05 +0100 kohm:
+
+ * scrlayer.dtx: new: while \currentpagestyle is always the real page
+ style, \toplevelpagestyle is the name of the topmost page style
+ activated by \pagestyle
+
+r1904 2015-01-15 09:45:05 +0100 kohm:
+
+ * TODO: note about \pagestyle inside a page style and consequences for
+ activating the page style without \pagestyle, i. e., using
+ \thispagestyle
+
+r1903 2015-01-14 08:52:04 +0100 kohm:
+
+ * scrlayer.dtx, TODO: new commands \righttopmark, \rightbotmark,
+ \rightfirstmark, \lefttopmark, \leftbotmark, \leftfirstmark
+
+r1902 2015-01-14 08:48:33 +0100 kohm:
+
+ * scrkernel-version.dtx: start of new BETA
+
+r1901 2015-01-14 08:47:44 +0100 kohm:
+
+ * releaselist.txt: 2015/01/14 3.15 released
+
+r1900 2015-01-14 08:16:26 +0100 kohm:
+
+ * scrkernel-version.dtx: prepared for 3.15
+
+r1899 2015-01-08 09:57:02 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: change: pairs of page styles use page style
+ aliasses instead of own \let constructs
+
+r1898 2015-01-08 08:11:34 +0100 kohm:
+
+ * TODO: question about page style aliases
+
+r1897 2015-01-02 13:04:12 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: allow \glueexpr in \FamilySetLengthKey
+ and \FamilySetLengthMacroKey
+
+r1896 2014-12-28 15:59:41 +0100 kohm:
+
+ * TODO: dummy ci
+
+r1895 2014-12-28 15:13:29 +0100 kohm:
+
+ * scrlayer.dtx, scrlayer-scrpage.dtx: fix: underfull \hbox in
+ twocolumn moe because of using \linewidth instead of \textwidth
+
+r1894 2014-12-28 11:50:52 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: fix: missing colon in call of
+ \sls@split@at@iicolons of option footwidth
+
+r1893 2014-12-23 19:38:55 +0100 kohm:
+
+ * TODO: dummy ci
+
+r1892 2014-12-23 18:57:43 +0100 kohm:
+
+ * TODO: dummy ci
+
+r1891 2014-12-23 18:19:04 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: not \…toclevel and not
+ \scr@…@tocdepth but \…toclevel
+
+r1890 2014-12-22 08:58:28 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: Schuberts' English
+ improvements
+
+r1889 2014-12-19 09:13:29 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ fix: missing but important "not" added
+
+r1888 2014-12-17 08:55:22 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: key state at \FamilyCounterMacroKey and
+ \FamilyLengthMacroKey
+
+r1887 2014-12-17 08:42:06 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex,
+ doc/english/scrbookreportarticle-experts.tex: improvements by Elke
+
+r1886 2014-12-16 17:58:36 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: some improvements by
+ Elke
+
+r1885 2014-12-16 17:56:47 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex: fix: index
+ entry scrletter
+
+r1884 2014-12-16 17:53:48 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: fix: index
+ entry scrletter
+
+r1883 2014-12-16 17:27:05 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: compatibility switch for \subparagraph
+ indent
+
+r1882 2014-12-16 09:34:04 +0100 kohm:
+
+ * doc/, doc/Makefile, doc/Makefile.guide: some more cleanup
+
+r1881 2014-12-16 09:22:04 +0100 kohm:
+
+ * Makefile, manifest.txt, scrmain.ins, README.in/, doc/,
+ doc/Makefile, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex,
+ doc/english/, doc/english/scrlttr2-experts.tex: scrletter is part of
+ KOMA-Script
+
+r1880 2014-12-16 08:45:26 +0100 kohm:
+
+ * TODO: dummy change
+
+r1879 2014-12-16 08:34:56 +0100 kohm:
+
+ * TODO: entry moved
+
+r1878 2014-12-15 08:01:19 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Neuer Anlauf für bereits verkorksten Satz.
+
+r1877 2014-12-12 09:55:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: added: docu of second offset of
+ options headwidth and footwidth
+
+r1876 2014-12-12 09:52:54 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: several corrections by
+ Elke
+
+r1875 2014-12-12 09:38:02 +0100 kohm:
+
+ * scrlayer-scrpage.dtx: change: user manual removed
+
+r1874 2014-12-11 14:46:00 +0100 kohm:
+
+ * scrtime.dtx: fix: default language had wrong order of day names
+
+r1873 2014-12-11 10:16:02 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: \SecDef,
+ \scr@startsection, \At@startsection, \Before@ssect, \Before@sect
+
+r1872 2014-12-10 13:51:37 +0100 kohm:
+
+ * scrkernel-listsof.dtx, scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-textmarkup.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex: improved: handling of part- and
+ chaper-entries to table of contents if it is the first entry added:
+ option chapterentrywithdots or sectionentrywithdots
+
+r1871 2014-12-10 10:06:20 +0100 kohm:
+
+ * scrkernel-sections.dtx, tocbasic.dtx: no more extra space between
+ chapter head of table of contents and topmost entry, if this is a
+ part entry
+
+r1870 2014-12-10 10:04:55 +0100 kohm:
+
+ * scrkernel-compatibility.dtx: fix: new compatibility level for
+ version 3.15
+
+r1869 2014-12-09 15:38:11 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: usage of titlesec is not recommended,
+ but doesn't force an error
+
+r1868 2014-12-09 13:45:22 +0100 kohm:
+
+ * scrkernel-title.dtx, scrmain.ins, scrkernel-sections.dtx: change:
+ code reordering new: \raggedchapter with default \raggedsection
+
+r1867 2014-12-08 11:18:07 +0100 kohm:
+
+ * doc/, doc/koma-script.html: fix: valid XHTML 1.1; needs only
+ us-ascii encoding
+
+r1866 2014-12-08 10:37:13 +0100 kohm:
+
+ * scrkernel-sections.dtx: improvement: handling of beforeskip and
+ afterskip of \chapter
+
+r1865 2014-12-08 09:10:00 +0100 kohm:
+
+ * scrkernel-sections.dtx: optimized: skips before and after heading of
+ \part
+
+r1864 2014-12-07 14:13:01 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ Some more relation to style=section for afterskip and beforeskip of
+ \DecareSectionCommand.
+
+r1863 2014-12-07 14:09:02 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Die Spezialbedeutungen negativer Werte von `beforeskip' und
+ `afterskip' bei `\DeclareSectionCommand' auf den Stil section
+ bezogen. Die Verwendung für chapter und part ohne Stil-Angabe
+ absichtlich noch nicht 100% klar dokumentiert.
+
+r1862 2014-12-05 08:12:21 +0100 kohm:
+
+ * TODO: tocstyle doesn't need \…toclevel
+
+r1861 2014-12-05 08:08:20 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: chapter skips with default setting
+ headings=big
+
+r1860 2014-12-03 12:30:49 +0100 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: new:
+ \DeclareSectionCommands, \DeclareNewSectionCommands,
+ \RedeclareSectionCommands, and \ProvideSectionCommands
+
+r1859 2014-12-03 11:37:52 +0100 kohm:
+
+ * scrkernel-basics.dtx, doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/english/, doc/english/scrbase.tex: new: \RelaxFamilyKey changed:
+ default value for \FamilyCounterKey, \FamilyCounterMacroKey,
+ \FamilyLengthKey, and \FamilyLengthMacroKey
+
+r1858 2014-12-03 08:23:49 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: doc typo
+
+r1857 2014-12-03 08:22:56 +0100 kohm:
+
+ * tocstyle.dtx: fix: doc typo without version change
+
+r1856 2014-12-02 11:02:19 +0100 kohm:
+
+ * TODO: \DeclareSectionCommand implications to tocstyle
+
+r1855 2014-12-02 10:47:08 +0100 kohm:
+
+ * scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: You may change \part and
+ \chapter using \DeclareSectionCommand and even may change the style
+ of them to "section".
+
+r1854 2014-12-01 09:11:23 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: diverse
+ Verbesserungen von Elke
+
+r1853 2014-11-28 11:38:45 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: neu:
+ Unterschiede zwischen scrlttr2 und scrletter dokumentiert
+
+r1852 2014-11-28 11:33:51 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: fix: change entries
+
+r1851 2014-11-27 16:34:35 +0100 kohm:
+
+ * scrmain.ins: the BETA-(SVN-)version generated a test version of
+ scrletter.sty, the release version still does not
+
+r1850 2014-11-27 09:34:41 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ fix: spelling
+
+r1849 2014-11-25 08:56:28 +0100 kohm:
+
+ * scrjura.dtx, TODO: Doc of \DeclareNewJuraEnvironment; one not needed
+ code line removed
+
+r1848 2014-11-24 17:42:29 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: translation of
+ \DeclareSectionCommand etc.
+
+r1847 2014-11-24 16:07:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: \DeclareSectionCommand
+ etc. moved to expert part
+
+r1846 2014-11-24 15:31:22 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrbookreportarticle-experts.tex: user manual of
+ \IfExistskomafont and \chapterheadmidvskip
+
+r1845 2014-11-24 13:03:50 +0100 kohm:
+
+ * TODO, scrkernel-sections.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: change: \DeclareSectionCommand
+ ready for Beta Test
+
+r1844 2014-11-24 12:29:22 +0100 kohm:
+
+ * scrkernel-basics.dtx: fix: \@tempskipa in \FamilySetLengthMacro
+
+r1843 2014-11-24 10:10:28 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix: \ChangedAt logic
+
+r1842 2014-11-24 08:28:36 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: \ChangedAt has an optional argument to mark
+ features beta for one year
+
+r1841 2014-11-23 12:06:40 +0100 kohm:
+
+ * scrjura.dtx: improvement: compatibility hack handling
+
+r1840 2014-11-22 14:13:28 +0100 kohm:
+
+ * scrjura.dtx: fix: error reaction to deprecated "Paragraph" commands
+
+r1839 2014-11-22 14:02:22 +0100 kohm:
+
+ * scrjura.dtx: fix: version date
+
+r1838 2014-11-22 13:49:26 +0100 kohm:
+
+ * scrjura.dtx: error message with change info if \Paragraph or
+ \SubPararaph is used
+
+r1837 2014-11-21 20:41:40 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \RedeclareSectionCommand
+
+r1836 2014-11-21 20:41:01 +0100 kohm:
+
+ * scrkernel-basics.dtx: new: \@removefromreset
+
+r1835 2014-11-21 16:33:15 +0100 kohm:
+
+ * scrkernel-sections.dtx: new: \DeclareNewSectionCommand,
+ \RedeclareSectionCommand, \ProvideSectionCommand
+
+r1834 2014-11-21 15:59:18 +0100 kohm:
+
+ * TODO: forgotten \IfExistskomafont
+
+r1833 2014-11-21 15:57:23 +0100 kohm:
+
+ * scrkernel-sections.dtx: change: using \DeclareSectionNumberDepth of
+ scrlayer if available
+
+r1832 2014-11-21 15:56:40 +0100 kohm:
+
+ * scrlayer.dtx: change: co-using \…numdepth of the KOMA-Script
+ classes instead of own \…level
+
+r1831 2014-11-21 12:47:37 +0100 kohm:
+
+ * scrkernel-compatibility.dtx, TODO, scrkernel-sections.dtx: new
+ command \DeclareSectionCommand
+
+r1830 2014-11-21 12:46:37 +0100 kohm:
+
+ * scrkernel-version.dtx: started new feature release 3.15
+
+r1829 2014-11-21 10:27:52 +0100 kohm:
+
+ * scrkernel-fonts.dtx: fix: logic error at \IfExistskomafont
+
+r1828 2014-11-21 09:53:45 +0100 kohm:
+
+ * scrkernel-fonts.dtx: new: \IfExistskomafont{element}{then}{else}
+ added
+
+r1827 2014-11-20 11:09:47 +0100 kohm:
+
+ * scrkernel-sections.dtx: new: \chapterheadmidvskip change:
+ \@@makechapterhead reimplemented
+
+r1826 2014-11-15 07:24:51 +0100 kohm:
+
+ * scrjura.dtx: Dokufix by Elke
+
+r1825 2014-11-14 09:23:17 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn-example.tex,
+ doc/ngerman/scrlayer-notecolumn.tex, doc/english/,
+ doc/english/scrlayer-notecolumn.tex: example uses new scrjura syntax
+
+r1824 2014-11-14 09:02:28 +0100 kohm:
+
+ * scrkernel-paragraphs.dtx: fix: Code generation grouping to re-add
+ \@list@extra code and initial call of
+ \@listi to the clo-files.
+
+r1823 2014-11-12 10:06:40 +0100 kohm:
+
+ * scrjura.dtx: canonified source, replaced \newjuraenvironment by
+ \DeclareNewJuraEnvironment
+
+r1822 2014-11-11 16:20:59 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: the correct name of is \ifinteger not
+ \ifisnumber
+
+r1821 2014-11-11 10:41:54 +0100 kohm:
+
+ * scrjura.dtx: improved user manual; fix of macrocode blocks
+
+r1820 2014-11-11 10:21:24 +0100 kohm:
+
+ * scrjura.dtx: change: renamed "Paragraph" --> "Clause" and all
+ depending terms
+
+r1819 2014-11-10 09:55:05 +0100 kohm:
+
+ * scrjura.dtx: \newjuraenvironment should work
+
+r1818 2014-11-04 10:06:02 +0100 kohm:
+
+ * scrjura.dtx: start of new command \newjuraenvironment (currently not
+ usable)
+
+r1817 2014-10-28 11:56:49 +0100 kohm:
+
+ * scrkernel-version.dtx: start a new beta
+
+r1816 2014-10-28 11:56:02 +0100 kohm:
+
+ * releaselist.txt: release 3.14 done
+
+r1815 2014-10-28 11:15:59 +0100 kohm:
+
+ * scrkernel-version.dtx: ready for release 3.14
+
+r1814 2014-10-28 11:06:00 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: ready for
+ version 3.14 BETA
+
+r1813 2014-10-27 08:39:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: Improvement by Elke
+
+r1812 2014-10-23 10:07:04 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: missing description of \lehead* etc.
+
+r1811 2014-10-21 08:31:54 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: improvement by Arne
+
+r1810 2014-10-20 09:35:25 +0200 kohm:
+
+ * scrlayer.dtx: change: layer declarations (and modifications) are
+ \long, so contents can have \par
+
+r1809 2014-10-17 10:02:00 +0200 kohm:
+
+ * scrkernel-basics.dtx: values of key=value are declared long, so they
+ can contain \par
+
+r1808 2014-10-16 08:49:35 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: Urgent search for
+ tocbasic translator
+
+r1807 2014-10-16 08:48:50 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrwfile.tex: additional improvement
+ by Jana
+
+r1806 2014-10-16 08:41:25 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: workaround for strange color stack warning of
+ pdftex and luatex
+
+r1805 2014-10-13 10:55:20 +0200 kohm:
+
+ * manifest.txt, scrwfile.dtx, doc/, doc/english/,
+ doc/english/Makefile, doc/english/preface.tex,
+ doc/english/scrwfile.tex: doc/english/scrwfile.tex is a real
+ translation and not a symlink to a generated file
+
+r1804 2014-10-10 08:44:55 +0200 kohm:
+
+ * scrkernel-bibliography.dtx: runnig head fixed at \bib@heading [Falk]
+
+r1803 2014-10-09 10:18:02 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: typo fix
+
+r1802 2014-10-09 10:17:20 +0200 kohm:
+
+ * scrkernel-miscellaneous.dtx: Workaround for a missing feature of
+ `titlesec`
+
+r1801 2014-10-09 08:08:31 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex:
+ Verbesserungsvorschläge von Elke
+
+r1800 2014-10-07 08:53:12 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: docu of new command \LoadLetterOptions
+
+r1799 2014-10-04 18:58:57 +0200 kohm:
+
+ * scrkernel-letterclassoptions.dtx: - improvement: \LoadLetterOption
+ ignores space tokens at begin and end - new: \LoadLetterOptions
+ similar to \LoadLetterOptions processing a list of
+
+ instead of only one file
+
+r1798 2014-10-04 15:59:37 +0200 kohm:
+
+ * scrkernel-notepaper.dtx, scrkernel-letterclassoptions.dtx, TODO:
+ fix: \@firsthead bug in DINmtext.lco
+
+r1797 2014-10-04 12:07:13 +0200 kohm:
+
+ * TODO: \@firsthead bug in DINmtext.lco
+
+r1796 2014-09-19 10:04:02 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: missing \defcaptionname
+
+r1795 2014-09-19 09:13:50 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: \ihead etc. has a star version that copies the
+ mandatory argument to the optional argument if the optional argument
+ has been omitted
+
+r1794 2014-09-19 08:43:43 +0200 kohm:
+
+ * scrlayer.dtx, scrlayer-scrpage.dtx: scrlayer and scrlayer-scrpage
+ use the version information of KOMA-Script
+
+r1793 2014-09-19 08:31:45 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/english/: ignore list updated
+
+r1792 2014-09-19 08:26:04 +0200 kohm:
+
+ * .ignore: ignore list updated
+
+r1791 2014-09-19 08:15:10 +0200 kohm:
+
+ * .ignore: ignore list updated
+
+r1790 2014-09-19 08:01:41 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: fix:
+ "Gleichzeitig" wurde falsch getrennt
+
+r1789 2014-09-11 15:44:12 +0200 kohm:
+
+ * TODO: need for docu
+
+r1788 2014-09-11 15:41:04 +0200 kohm:
+
+ * scrkernel-sections.dtx: three new hooks for Ulrike
+
+r1787 2014-09-11 11:03:42 +0200 kohm:
+
+ * TODO, scrkernel-sections.dtx: parsing of optional argument of
+ \section command (and others) deactivated if it is a copied
+ mandatoriy argument
+
+r1786 2014-09-11 08:43:46 +0200 kohm:
+
+ * TODO: Problem mit dem optionalen Argument von \section dokumentiert
+
+r1785 2014-09-10 08:24:01 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex: Tippfehler [Moritz F.]
+
+r1784 2014-08-31 11:40:21 +0200 kohm:
+
+ * scrlayer.dtx: fix: missing definition of \scr@current@layer in
+ \ModifyLayer
+
+r1783 2014-08-18 12:54:31 +0200 kohm:
+
+ * scrwfile.dtx: use ``…'' instead of »…«
+
+r1782 2014-08-18 12:48:22 +0200 kohm:
+
+ * tocbasic.dtx: docu language improvements by Arndt Schubert
+
+r1781 2014-08-18 12:23:36 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: fix: layer names …head.odd, …head.even,
+ …foot.odd, and …foot.even should
+
+ correspond with even and odd pages (see manual) [Elke]
+
+r1780 2014-08-13 13:54:23 +0200 kohm:
+
+ * scrkernel-basics.dtx: three times added % after } to remove
+ potentially space
+
+r1779 2014-08-13 09:15:56 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: index entry \setheadsepline fixed
+ [Elke]
+
+r1778 2014-08-07 11:59:50 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-sections.dtx: fix: vspace after \minisec if it follows
+ another section heading (only if version >= 3.13a)
+
+r1777 2014-07-31 12:49:32 +0200 kohm:
+
+ * tocbasic.dtx: change: \DeclareNewTOC adds \autodot only to the
+ format of hierachical counters
+
+r1776 2014-07-25 12:46:33 +0200 kohm:
+
+ * scrlayer.dtx: fix: \RemoveLayersFromPageStyle change: user manual
+ removed
+
+r1775 2014-07-07 09:57:00 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex: kleine Klarstellungen zu
+ Optionen footsepline und headsepline
+
+r1774 2014-07-07 09:15:22 +0200 kohm:
+
+ * scrkernel-pagestyles.dtx: option footsepline made wrong settings for
+ option headinclude and footinclude and also does a recalculation of
+ type area
+
+r1773 2014-07-06 09:17:30 +0200 kohm:
+
+ * scrwfile.dtx: only a type fix in the manual
+
+r1772 2014-07-02 08:58:12 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlayer-notecolumn.tex: two more
+ improvements by Jana
+
+r1771 2014-06-30 12:58:16 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: Fehler bei
+ \FamilyCounterMacroKey [Elke]
+
+r1770 2014-06-30 08:48:19 +0200 kohm:
+
+ * scrkernel-typearea.dtx: fix: missing \FamilyKeyStateProcessed at
+ redefinition of options DIV and BCOR
+ via \AtEndOfPackage
+
+r1769 2014-06-30 08:47:18 +0200 kohm:
+
+ * scrkernel-basics.dtx: Fix: missing \expandafter at info message
+ about unknown key state
+
+r1768 2014-06-27 07:40:22 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: correction
+ by Elke
+
+r1767 2014-06-26 11:20:18 +0200 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-letterclassoptions.dtx,
+ scrkernel-pseudolengths.dtx, scrkernel-miscellaneous.dtx: initial
+ preparation to make a letter package addition to the letter class
+
+r1766 2014-06-25 16:38:45 +0200 kohm:
+
+ * manifest.txt, doc/, doc/Makefile, doc/guide.tex, doc/scrpage2.tex,
+ doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/guide-ngerman.tex, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/typearea.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/common-textmarkup.tex,
+ doc/english/typearea.tex: scrpage2 removed from KOMA-Script manual
+
+r1765 2014-06-25 10:58:15 +0200 kohm:
+
+ * tocbasic.dtx: removed reference to scrpage2
+
+r1764 2014-06-23 08:38:43 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/typearea.tex: translation date
+ reference
+
+r1763 2014-06-23 08:38:00 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/typearea.tex: improvement of table
+ 2.1 [Elke]
+
+r1762 2014-06-23 08:29:54 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Tippfehler [Elke]
+
+r1761 2014-06-03 12:06:04 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlayer-notecolumn.tex:
+ Translator's names
+
+r1760 2014-06-03 10:28:36 +0200 kohm:
+
+ * scrlayer-notecolumn.dtx: user manual removed because there are is a
+ real translation at doc/english
+
+r1759 2014-06-03 09:48:38 +0200 kohm:
+
+ * TODO: helper file vs. help file
+
+r1758 2014-06-03 09:40:20 +0200 kohm:
+
+ * doc/, doc/english/, doc/english/scrlayer-notecolumn.tex: serveral
+ improvements by Mr. Schubert
+
+r1757 2014-04-09 11:36:26 +0200 kohm:
+
+ * scrlayer-scrpage.dtx: new: headwidth and footwidth supports two
+ offsets (first for odd pages, second for even pages)
+
+r1756 2014-04-09 09:53:11 +0200 kohm:
+
+ * scrkernel-typearea.dtx: Signalisierung bei Option twoside und Option
+ twocolumn korrigiert
+
+r1755 2014-04-06 08:40:37 +0200 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Trennung von
+ "Randeinstellungen"
+
+r1754 2014-03-26 09:15:32 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: one comma
+ added
+
+r1753 2014-03-25 09:00:17 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex:
+ suggestions by Jens
+
+r1752 2014-03-24 17:21:25 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/scrbookreportarticle.tex: some changes with help of Jana
+
+r1751 2014-03-21 08:30:44 +0100 kohm:
+
+ * TODO: remember very, very old idea
+
+r1750 2014-03-21 08:00:57 +0100 kohm:
+
+ * README.in/, README.in/README.scrartcl.cls,
+ README.in/README.scrlttr2.cls, README.in/README.scrreprt.cls,
+ README.in/README.scrdoc.cls, README.in/README.scrbook.cls: line skip
+ limit 75
+
+r1749 2014-03-21 07:31:14 +0100 kohm:
+
+ * obsolete/, obsolete/README: line break limited to 75 characters
+
+r1748 2014-03-20 11:22:43 +0100 kohm:
+
+ * INSTALLD.txt: Tippfehler
+
+r1747 2014-03-20 11:10:41 +0100 kohm:
+
+ * INSTALLD.txt, INSTALL.txt: original archive type is ZIP again
+
+r1746 2014-03-20 09:52:23 +0100 kohm:
+
+ * INSTALLD.txt, INSTALL.txt: new: note about
+ http://www.komascript.de/current
+
+r1745 2014-03-19 08:14:58 +0100 kohm:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.13
+
+r1744 2014-03-18 16:05:05 +0100 kohm:
+
+ * doc/, doc/scrguide.cls: fix: do not expand UTF8 umlauts in optional
+ argument of \KOMAProvidesFile
+
+r1743 2014-03-18 09:32:24 +0100 kohm:
+
+ * doc/, doc/linkalias.tex, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/typearea.tex: fix: labels
+
+r1742 2014-03-17 10:06:24 +0100 kohm:
+
+ * TODO: ugly translation of scrlayer-notecolumn
+
+r1741 2014-03-17 10:00:59 +0100 kohm:
+
+ * README.SVN, LIESMICH.SVN: the repository is not longer on BerliOS
+ but SourceForge
+
+r1740 2014-03-14 16:43:30 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/preface.tex: change of translations
+ status of scrlayer-notecolumn chapter
+
+r1739 2014-03-14 15:47:05 +0100 kohm:
+
+ * manifest.txt, scrlayer-notecolumn.dtx, doc/, doc/Makefile.guide,
+ doc/english/, doc/english/Makefile,
+ doc/english/scrlayer-notecolumn.tex: translated
+ scrlayer-notecolumn.tex instead of generated
+
+r1738 2014-03-14 08:22:55 +0100 kohm:
+
+ * TODO: new idea
+
+r1737 2014-03-13 17:33:07 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: Einträge
+ in einer Tabelle sortiert
+
+r1736 2014-03-13 08:41:11 +0100 kohm:
+
+ * README.in/: added new languages
+
+r1735 2014-03-12 13:21:08 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: translation of
+ \FamilyCounterKey…\FamilyLengthKey and elimination of
+ \Family@Options
+
+r1734 2014-03-12 12:19:07 +0100 kohm:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex:
+ translation base changed
+
+r1733 2014-03-12 12:11:20 +0100 kohm:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: translation of
+ user documentation of \partnumdepth … \subparagraphnumdepth,
+ \ifnumbered, \ifunnumbered
+
+r1732 2014-03-12 12:05:05 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: ein
+ \OnlyAt in der Erklärung zu tocdepth ergänzt
+
+r1731 2014-03-08 09:00:38 +0100 kohm:
+
+ * scrkernel-language.dtx: "Mobiltelefon" instead of "Mobiltelephon"
+ for all German languages but "german"
+
+r1730 2014-03-08 08:57:06 +0100 kohm:
+
+ * scrkernel-language.dtx: "Telefon" is back for all German languages
+ but "german"
+
+r1729 2014-03-07 13:04:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: improved:
+ "Rand rechts", "Rand links", "Rand innen", "Rand aussen"
+
+r1728 2014-03-07 09:42:08 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: fix: problem with
+ generated date
+
+r1727 2014-03-07 09:40:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: fix:
+ problem with generated date
+
+r1726 2014-03-07 09:39:28 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: fix: problem with
+ generated date
+
+r1725 2014-03-07 09:38:29 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: fix: problem with
+ generated date
+
+r1724 2014-03-07 09:37:00 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: fix:
+ problem with generated date
+
+r1723 2014-03-07 09:34:35 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-lists.tex,
+ doc/ngerman/typearea.tex: fix: problem with generated date
+
+r1722 2014-03-07 09:33:18 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/common-footnotes.tex: fix: problem with generated date
+
+r1721 2014-03-07 09:22:37 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/common-lists.tex: fix:
+ no more multiply defined labels
+
+r1720 2014-03-05 09:03:10 +0100 kohm:
+
+ * scrkernel-listsof.dtx: fix: to much "more" in warning about
+ deprecated float interface
+
+r1719 2014-03-03 18:28:10 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: Index optimiert
+
+r1718 2014-03-03 18:27:01 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: einmal Klasse -->
+ Paket [Elke]
+
+r1717 2014-03-01 17:21:37 +0100 kohm:
+
+ * scrkernel-pagestyles.dtx: cleardoublepage excepts value headings if
+ used as class option independ of whether or not the page style has
+ already been defined
+
+r1716 2014-03-01 16:38:49 +0100 kohm:
+
+ * scrjura.dtx, tocstyle.dtx, scrwfile.dtx: replaced a tex comment by a
+ doctex comment
+
+r1715 2014-03-01 13:05:30 +0100 kohm:
+
+ * TODO: cleardoublepage note
+
+r1714 2014-02-28 16:31:14 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: Index-Eintrag für
+ \ifstr verbessert
+
+r1713 2014-02-27 17:36:50 +0100 kohm:
+
+ * obsolete/, obsolete/scrlettr.dtx: do not need typearea.sty and
+ german.sty any longer
+
+r1710 2014-02-27 11:12:22 +0100 kohm:
+
+ * Makefile: ALPHA_DOC needs CLS_MAIN
+
+r1709 2014-02-27 10:48:40 +0100 kohm:
+
+ * Makefile: ALPHA_DOC needs scrdoc.cls
+
+r1708 2014-02-26 16:03:14 +0100 kohm:
+
+ * doc/, doc/plength.dtx: once again: babel instead of old ngerman
+
+r1707 2014-02-26 16:00:52 +0100 kohm:
+
+ * doc/, doc/plength.dtx: use babel instead of old ngerman
+
+r1706 2014-02-26 15:56:07 +0100 kohm:
+
+ * scrkernel-letterclassoptions.dtx: fix: Definition of KOMA font
+ letter
+
+r1705 2014-02-26 15:50:04 +0100 kohm:
+
+ * scrdoc.dtx: define \marginline if scrartcl unavailable
+
+r1704 2014-02-26 15:49:02 +0100 kohm:
+
+ * scrdoc.dtx: define labeling environment if scrartcl unavailable
+
+r1703 2014-02-26 15:47:22 +0100 kohm:
+
+ * scrdoc.dtx: define \addsec if not used with a KOMA-Script class
+
+r1702 2014-02-26 15:45:48 +0100 kohm:
+
+ * scrdoc.dtx: define \KOMAScript if not using a KOMA-Script class
+
+r1701 2014-02-26 11:04:57 +0100 kohm:
+
+ * scrtime.dtx: fixed: \dayname@slovak
+
+r1700 2014-02-26 08:52:24 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/scrlttr2-experts.tex: support for slovak
+
+r1699 2014-02-26 08:29:58 +0100 kohm:
+
+ * scrkernel-language.dtx: support for slovak [Elke Schubert]
+
+r1698 2014-02-26 08:25:13 +0100 kohm:
+
+ * scrtime.dtx: support for slovak added [Elke Schubert]
+
+r1697 2014-02-21 18:21:16 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: fetten Indexeintrag
+ für den Bundsteg durch einen normalen ersetzt
+
+r1696 2014-02-17 10:22:47 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: noch mehr
+ Korrekturen von Torsten
+
+r1695 2014-02-17 10:10:45 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: Korrekturen
+ von Torsten
+
+r1694 2014-02-17 08:20:04 +0100 kohm:
+
+ * doc/, doc/plength.dtx: firstfoot and firsthead are variable now
+ [patch by Michael Käufl]
+
+r1693 2014-02-17 08:18:44 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Leerzeichenfehler
+ [Michael Käufl]
+
+r1692 2014-02-14 08:09:57 +0100 kohm:
+
+ * scrkernel-sections.dtx: extra svn:keyword Revision
+
+r1691 2014-02-14 08:08:07 +0100 kohm:
+
+ * scrkernel-sections.dtx: fix: \set@preamble@vpox -->
+ \set@preamble@vpos fix: \part@preamble@u --> \part@u@preamble fix:
+ \part@preamble@o --> \part@o@preamble
+
+r1690 2014-02-13 08:30:22 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Index-Eintrag für
+ Kopf- und Fuß-Höhe
+
+r1689 2014-02-13 08:29:19 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: Index-Eintrag
+ für Fuß-Breite
+
+r1688 2014-02-13 08:28:20 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex:
+ Index-Eintrag für Kopf- und Fuß-Höhe
+
+r1687 2014-02-12 15:28:07 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Eintrag
+ ins Abbildungsverzeichnis korrigiert [Elke]
+
+r1686 2014-02-12 15:04:23 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Indexeintrag
+ @everystyle@ korrigiert
+
+r1685 2014-02-12 15:02:53 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Indexeintrag
+ für version=2.9t und version=2.9u entfernt
+
+r1684 2014-02-10 10:14:06 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Tschechisch in
+ der Liste der Sprachen aufgeführt
+
+r1683 2014-02-10 10:10:37 +0100 kohm:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Doku für
+ Tschechisch
+
+r1682 2014-02-10 10:01:35 +0100 kohm:
+
+ * scrkernel-language.dtx: change: czech added (Elke Schubert)
+
+r1681 2014-02-05 09:38:41 +0100 kohm:
+
+ * scrlayer-notecolumn.dtx: fix: redeclaration of a notecolumn must not
+ add it again to @everystyle@
+
+r1680 2014-02-03 15:34:33 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex: Korrektur
+ von Elke
+
+r1679 2014-02-03 15:32:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn-example.tex,
+ doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/scrlttr2-experts.tex: Korrekturen von Elke
+
+r1678 2014-02-03 13:39:48 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle-experts.tex:
+ Korrekturen von Elke
+
+r1677 2014-02-03 12:07:06 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex: Korrekturen
+ von Elke
+
+r1676 2014-02-03 12:06:37 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Index-/Labelerzeugung
+ korrigiert
+
+r1675 2014-02-03 08:37:48 +0100 mjk:
+
+ * scrkernel-title.dtx: fix: typeset incompatibility to versions < 3.12
+
+r1674 2014-01-31 13:18:11 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex:
+ Korrekturen und Wünsche von Elke
+
+r1673 2014-01-31 13:17:07 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Trennausnahme
+ für Hintergrundebene(n)
+
+r1672 2014-01-30 15:13:25 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: Korrekturen von Elke
+
+r1671 2014-01-30 14:38:17 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: jetzt aber
+
+r1670 2014-01-30 13:25:27 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: noch zwei kleine
+ Änderungen auf Elkes Hinweise
+
+r1669 2014-01-30 13:17:20 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: Korrektur von Elke
+
+r1668 2014-01-30 13:16:01 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrhack.tex: Korrekturen von Elke
+
+r1667 2014-01-30 13:11:54 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Korrekturen von Elke
+
+r1666 2014-01-30 13:11:16 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex: Noch ein Tippfähler
+
+r1665 2014-01-30 12:45:14 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: new keyword \ifundefinedorrelax
+
+r1664 2014-01-30 12:38:00 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Trennausnahme:
+ Dateinamenerweiterungen (Elke)
+
+r1663 2014-01-30 12:04:28 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex: diverse Korrekturen
+ von Elke und eine Ergänzung von mir
+
+r1662 2014-01-30 11:44:20 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: diverse Korrekturen
+ von Elke
+
+r1661 2014-01-30 11:18:51 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: diverse Korrekturen
+ aufgrund von Elkes Anmerkungen
+
+r1660 2014-01-28 16:36:02 +0100 mjk:
+
+ * scrjura.dtx: fix: missing \nobreak before \hskip\z@ added
+
+r1659 2014-01-28 10:27:05 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: date update
+
+r1658 2014-01-28 10:26:38 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: one more keyword
+
+r1657 2014-01-28 10:22:37 +0100 mjk:
+
+ * doc/, doc/guide.bib: Update of serveral links and edition
+ information
+
+r1656 2014-01-28 09:11:31 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scraddr.tex: Ein Kommafehler von
+ Torsten gemeldet
+
+r1655 2014-01-28 08:46:12 +0100 mjk:
+
+ * scrjura.dtx: \contract@sentence verwendet nun \textsuperscript und
+ ermöglicht die Trennung des erstes Wortes nach einer Satzmarkierung
+
+r1654 2014-01-24 19:11:48 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/common-titles.tex: Umbruch wieder korrigiert
+
+r1653 2014-01-24 18:39:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/common-titles.tex:
+ Korrekturen von Torsten und Elke
+
+r1652 2014-01-24 14:08:15 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex:
+ several improvements by Jana
+
+r1651 2014-01-24 12:41:09 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: improvements
+ by Jens
+
+r1650 2014-01-24 09:28:21 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: added: one step
+ expansion
+
+r1649 2014-01-24 09:26:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: einfache Expansion
+ betont
+
+r1648 2014-01-24 09:25:51 +0100 mjk:
+
+ * scrkernel-basics.dtx: fix: space errors in horizontal mode
+
+r1647 2014-01-23 16:22:54 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrdatetime.tex: fix: two attention
+ marks added
+
+r1646 2014-01-23 16:20:41 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: fix: two attention
+ marks added
+
+r1645 2014-01-23 16:11:19 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex, doc/english/,
+ doc/english/scrdatetime.tex: fix: dutch was missing in the language
+ list
+
+r1644 2014-01-23 11:44:14 +0100 mjk:
+
+ * scrstrip.inc: 2014
+
+r1643 2014-01-23 10:50:01 +0100 mjk:
+
+ * TODO: some translations done
+
+r1642 2014-01-23 10:47:46 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrdatetime.tex: all changes of the
+ German chapter(s) about scrtime and scrdate
+
+r1641 2014-01-23 10:40:04 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: Sprachliste
+ sortiert
+
+r1640 2014-01-23 10:17:18 +0100 mjk:
+
+ * scrtime.dtx: fix: support for several dialects of English, French,
+ and German added
+
+r1639 2014-01-23 09:22:10 +0100 mjk:
+
+ * scrtime.dtx: - new: czech added - fix: message texts - change: use
+ info instead of warning for unset languages
+
+r1638 2014-01-23 09:17:26 +0100 mjk:
+
+ * scrlayer.dtx, scrlayer-notecolumn.dtx, scrlayer-scrpage.dtx: fix:
+ package date was DD/MM/YYYY instead of YYYY/MM/DD
+
+r1637 2014-01-22 16:16:02 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: Korrekturen von Elke
+
+r1636 2014-01-22 09:26:50 +0100 mjk:
+
+ * scrlayer-scrpage.dtx: fix of option pagestyleset respecitvely
+ automatic usage of a pagestyle set if the option hasn't been used
+
+r1635 2014-01-22 09:10:16 +0100 mjk:
+
+ * scrkernel-basics.dtx: Declaration of deprecated options and standard
+ class options improved and handling of option version fixed
+
+r1634 2014-01-21 10:30:39 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/common-textmarkup.tex:
+ Korrekturen und Vorschläge von Elke
+
+r1633 2014-01-21 09:03:32 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/scrlayer-notecolumn-example.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlayer.tex: Korrekturen von Benjamin und mir
+
+r1632 2014-01-20 17:18:42 +0100 mjk:
+
+ * scrkernel-basics.dtx: use \setkeys{…}{{\CurrentOption}} instead if
+ \setkeys{…}{\CurrentOption}
+
+r1631 2014-01-20 10:27:14 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/scrlayer-scrpage.tex:
+ diverse Korrekturen von Elke
+
+r1630 2014-01-20 09:45:29 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/common-textmarkup.tex: Einige Verbesserungsvorschläge von
+ Elke und ein paar Umbruchänderungen
+
+r1629 2014-01-17 11:58:39 +0100 mjk:
+
+ * scrkernel-listsof.dtx: fixed: \KOMAoptions{listof=chaptergapsmall}
+ results in an error. Same happens with several other options, that
+ are implemented by other options
+
+r1628 2014-01-17 11:17:07 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: RELEASE assignment fixed
+
+r1627 2014-01-16 13:50:27 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/introduction.tex: Hinweis auf die
+ Pakete auf komascript.de
+
+r1626 2014-01-16 12:43:39 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ Beispielseite mit einer verfügbaren Abbildung aus Paket mwe.
+
+r1625 2014-01-16 10:00:54 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrlayer.tex:
+ kleinere Anpassungen (Indexeinträge)
+
+r1624 2014-01-15 10:31:27 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-dictum.tex: noch ein paar Tippfehler
+
+r1623 2014-01-15 09:03:50 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: noch zwei
+ Tippfehler
+
+r1622 2014-01-15 07:51:44 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ Korrekturen [Elke]
+
+r1621 2014-01-14 18:45:56 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: \clearpage vor
+ \yourrefname
+
+r1620 2014-01-14 18:42:00 +0100 mjk:
+
+ * manifest.txt: common-10.tex and common-11.tex removed
+
+r1619 2014-01-14 18:40:42 +0100 mjk:
+
+ * scrkernel-language.dtx: checksum fixed
+
+r1618 2014-01-14 18:37:24 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-footnotes.tex: noch eine
+ Korrektur von Elke
+
+r1617 2014-01-14 18:14:29 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/common-footnotes.tex,
+ doc/ngerman/common-oddorevenpage.tex: noch ein paar Verbesserungen von
+ Elke
+
+r1616 2014-01-14 17:52:03 +0100 mjk:
+
+ * doc/, doc/Makefile.guide, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/common-compatibility.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex: several
+ improvements of the manuals
+
+r1615 2014-01-14 17:35:21 +0100 mjk:
+
+ * scrkernel-language.dtx: fixed date format of canadien, canadian,
+ australien
+
+r1614 2014-01-14 12:11:32 +0100 mjk:
+
+ * scrkernel-sections.dtx: replaced one `%% \fi' by `% \fi'
+
+r1613 2014-01-13 11:35:13 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: "Last Changed Rev" needs -f4 instead
+ of -f2
+
+r1612 2014-01-13 11:29:50 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: usage of "Last Changed Rev:" instead
+ of "Revision:" to get the current revision
+
+r1611 2014-01-13 08:12:47 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx, scrlayer-scrpage.dtx: warning about font
+ elements pagehead and pagefoot fixed
+
+r1610 2014-01-10 15:51:11 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-notecolumn.tex,
+ doc/ngerman/typearea-experts.tex: Korrekturen der Korrekturen
+
+r1609 2014-01-10 15:03:54 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrlayer-notecolumn.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: diverse Korrekturen und
+ Verbesserungen
+
+r1608 2014-01-10 13:04:21 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: the notecolumn example needs more pdflatex
+ runs
+
+r1607 2014-01-09 15:42:40 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex: noch
+ ne Korrektur
+
+r1606 2014-01-09 11:50:16 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: diverse Korrekturen und
+ Optimierungen für die nächste Auflage
+
+r1605 2014-01-09 09:55:07 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: gleich noch das Datum
+ geändert
+
+r1604 2014-01-09 09:54:44 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: ein paar Korrekturen
+ von Elke
+
+r1603 2014-01-07 14:47:56 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: make-tds generates version information
+ in TDS archive
+
+r1602 2014-01-07 14:30:19 +0100 mjk:
+
+ * obsolete/, obsolete/README: I'll set a version while automatic
+ release
+
+r1601 2014-01-07 12:34:09 +0100 mjk:
+
+ * scrkernel-language.dtx, TODO, scrtime.dtx: Support for Polish and
+ several new dialects of English and German
+
+r1600 2014-01-07 11:52:46 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: \FamilyUnknownKeyValue
+ [Falk]
+
+r1599 2014-01-03 21:43:24 +0100 mjk:
+
+ * scrkernel-basics.dtx: \detokenize added in info message about
+ unknown key state
+
+r1598 2014-01-03 21:21:57 +0100 mjk:
+
+ * scrkernel-basics.dtx: missing \scr@KV@err defined
+
+r1597 2014-01-03 13:57:42 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex,
+ doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: diverse Optimierungen
+
+r1596 2014-01-02 20:00:08 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/, doc/ngerman/scrlayer.tex:
+ diverse Anpassungen für kritische Umbrüche in der nächsten
+ Buchauflage
+
+r1595 2014-01-02 11:36:25 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/ngerman/common-marginpar.tex, doc/ngerman/tocbasic.tex: wieder
+ einige Korrekturen und Anregunden von Elke
+
+r1594 2014-01-01 15:56:30 +0100 mjk:
+
+ * TODO, doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlfile.tex: einige
+ Erklärungen ergänzt und den Umbruch für die nächste Buchauflage
+ optimiert
+
+r1593 2013-12-31 12:58:50 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex: serveral improvements
+ by Jana and some by myself
+
+r1592 2013-12-29 00:50:08 +0100 mjk:
+
+ * README.in/: missing README source added
+
+r1591 2013-12-28 19:02:53 +0100 mjk:
+
+ * tocstyle.dtx, scrwfile.dtx: README compatible version information
+
+r1590 2013-12-28 18:49:40 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/Makefile: alreay removed files do
+ not result in an error at clean
+
+r1589 2013-12-28 18:42:14 +0100 mjk:
+
+ * scrlayer.dtx, scrlayer-notecolumn.dtx, scrlayer-scrpage.dtx:
+ improved SCRLAYERVERSION
+
+r1588 2013-12-28 18:31:16 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: Leerzeichen
+ zwischen "scrlayer-scrpage" und "oder" in der ersten Zeile des
+ vierten Absatzes der ersten Seite des Kapitels [Herbert]
+
+r1587 2013-12-28 18:27:14 +0100 mjk:
+
+ * Makefile.baseinit, doc/, doc/english/, doc/english/Makefile: clean
+ rules extended
+
+r1586 2013-12-28 18:17:15 +0100 mjk:
+
+ * scrextend.dtx: usage of %!KOMAScriptVersion
+
+r1585 2013-12-28 17:57:29 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2examples.dtx, doc/english/:
+ current ghostscript does not find Charter but Bitstream-Charter
+
+r1584 2013-12-28 16:29:11 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx, TODO: \fi-Fehler in Seitenstil headings
+ von scrartcl [Clemens]
+
+r1583 2013-12-28 16:27:34 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: Umbruch für die
+ nächste Buchauflage
+
+r1582 2013-12-24 11:13:55 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: CTAN does not want the tds archive any
+ longer
+
+r1581 2013-12-23 13:59:54 +0100 mjk:
+
+ * scrlayer-scrpage.dtx: fix several \ifnum errors at the scrlttr2 code
+
+r1580 2013-12-23 13:57:16 +0100 mjk:
+
+ * scrkernel-version.dtx: start of new BETA
+
+r1579 2013-12-23 13:01:56 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: fix: rule dist is more CTAN compatible
+
+r1578 2013-12-21 13:07:33 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: Korrekturen [Elke]
+
+r1577 2013-12-20 12:56:01 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: several new moretexcs
+
+r1576 2013-12-20 12:55:31 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: Umbruchkorrekturen
+
+r1575 2013-12-20 11:39:20 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: added ellipsispar and parellipsis to
+ moretexcs
+
+r1574 2013-12-20 11:08:54 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: Umbruch scrextend
+
+r1573 2013-12-20 10:59:10 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: Umbruch scrextend
+
+r1572 2013-12-20 10:45:17 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-textmarkup.tex: markup für
+ \color
+
+r1571 2013-12-20 09:51:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scraddr.tex: Warnung bezüglich
+ \KOMAoptions und \KOMAoption
+
+r1570 2013-12-20 09:48:29 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: Codierung
+
+r1569 2013-12-20 09:26:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ Umbruch korrigiert
+
+r1568 2013-12-19 11:28:13 +0100 mjk:
+
+ * releaselist.txt: release 2013/12/19 v3.12
+
+r1567 2013-12-19 11:27:08 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: name of tds archive in dist archive
+ fixed
+
+r1566 2013-12-19 11:08:18 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: fixed: rule dist
+
+r1565 2013-12-19 10:55:50 +0100 mjk:
+
+ * obsolete/, obsolete/Makefile: new
+
+r1564 2013-12-19 10:36:41 +0100 mjk:
+
+ * obsolete/, obsolete/scrpage-obsolete.dtx: only line breaking of
+ manual
+
+r1563 2013-12-19 10:29:59 +0100 mjk:
+
+ * obsolete/, obsolete/scrlettr.dtx: only the title of the manual
+ changed
+
+r1562 2013-12-19 08:51:16 +0100 mjk:
+
+ * Makefile, scrstrip.inc, scrjura.dtx, tocstyle.dtx, scrwfile.dtx,
+ scrcounter.dtx: prepared for 3.12
+
+r1560 2013-12-19 08:13:30 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.12
+
+r1559 2013-12-18 07:42:31 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: einige Korrekturen von
+ Elke
+
+r1558 2013-12-17 14:46:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-pagestylemanipulation.tex: einige Verbesserungen
+ für die nächste Buchauflage
+
+r1557 2013-12-17 12:05:35 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: fix: of last commit
+
+r1556 2013-12-17 12:05:13 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: markup for some additional KOMA-Script
+ commands
+
+r1555 2013-12-17 09:01:58 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex: fix:
+ label-Fehler
+
+r1554 2013-12-17 08:45:48 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex: einige
+ Formulierungen verbessert und Teile der Einleitung als ergänzende
+ Informationen formatiert
+
+r1553 2013-12-16 18:08:48 +0100 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ \partnumdepth, \chapternumdepth … \subparagraphnumdepth,
+ \ifnumbered, \ifunnumbered auf Deutsch dokumentiert
+
+r1552 2013-12-16 17:51:32 +0100 mjk:
+
+ * scrkernel-sections.dtx: don't define \chapternumdepth in
+ scrartcl.cls
+
+r1551 2013-12-16 15:02:13 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx, TODO, scrkernel-sections.dtx: new:
+ \partnumdepth, \chapternumdepth … \subparagraphnumdepth,
+ \ifnumbered, \ifunnumbered
+
+r1550 2013-12-16 09:10:28 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: einen scrpage2-Verweis
+ ergänzt
+
+r1549 2013-12-14 18:44:34 +0100 mjk:
+
+ * TODO: \@pageat bei Verwendung von scrlayer-scrpage mit scrlttr2
+ berücksichtigen
+
+r1548 2013-12-14 18:36:23 +0100 mjk:
+
+ * scrlayer-scrpage.dtx: support for scrlttr2 added
+
+r1547 2013-12-14 18:23:38 +0100 mjk:
+
+ * scrpage.dtx: fix for \rohead if page number left at head and
+ scrlttr2
+
+r1546 2013-12-13 17:39:21 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex: several changes by
+ Jana and some by myself
+
+r1545 2013-12-13 16:32:18 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: "There is not a …"
+ --> "There is no …"
+
+r1544 2013-12-13 12:13:03 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrdatetime.tex: brace fix
+
+r1543 2013-12-13 12:11:01 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbase.tex, doc/english/common-marginpar.tex,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/expertpart.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex, doc/english/scrdatetime.tex,
+ doc/english/common-dictum.tex, doc/english/japanlco.tex,
+ doc/english/common-footnotes.tex, doc/english/scrextend.tex,
+ doc/english/common-lists.tex, doc/english/common-draftmode.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/typearea-experts.tex,
+ doc/english/common-textmarkup.tex, doc/english/scrhack.tex,
+ doc/english/scrlayer.tex, doc/english/typearea.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-pagestylemanipulation.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/preface.tex, doc/english/scraddr.tex: uniformation of
+ serveral terms
+
+r1542 2013-12-13 10:31:29 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: line break
+
+r1541 2013-12-13 10:18:28 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: a lot of improvements
+ by Melvin
+
+r1540 2013-12-12 19:57:43 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: some of Melvin's
+ improvements
+
+r1539 2013-12-12 16:57:36 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex: Tippfehler [Elke]
+
+r1538 2013-12-12 12:01:33 +0100 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/common-compatibility.tex: noch ein paar Änderungen für
+ das nächste Buch
+
+r1537 2013-12-11 20:21:09 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/typearea.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex: diverse Änderungen für die
+ nächste Auflage
+
+r1536 2013-12-11 10:18:01 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/common-options.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/introduction.tex: einige Anpassungen für die nächste
+ Buchauflage
+
+r1535 2013-12-11 08:22:22 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Künftig wird die
+ Anleitung nur noch einen Autor haben (sobald das Kapitel über
+ scrpage2 ausgelagert ist)
+
+r1534 2013-12-10 19:50:34 +0100 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/htmlsetup,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/htmlsetup, doc/bin/, doc/bin/genhtmlidx.pl: some tiny
+ steps towards a new book
+
+r1533 2013-12-10 19:06:14 +0100 mjk:
+
+ * tocbasic.dtx: usage of default placement (option floatpos of
+ \DeclareNewTOC) fixed
+
+r1532 2013-12-10 11:28:56 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: einige Dinge
+ sind für scrlayer etc. unerheblich
+
+r1531 2013-12-10 10:57:42 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: notecolumn example source added to
+ DIST_SRC
+
+r1530 2013-12-09 09:13:47 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex: language
+
+r1529 2013-12-03 08:36:57 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: titlesec breaks some KOMA-Script
+ features
+
+r1528 2013-11-25 09:39:27 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex: more fixes by Jens
+
+r1527 2013-11-24 11:40:41 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex: improvement by Jana
+
+r1526 2013-11-24 10:49:38 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex, doc/english/,
+ doc/english/scrlfile.tex: kleinere Tippfehler [Elke]
+
+r1525 2013-11-22 13:57:29 +0100 mjk:
+
+ * scrlfile.dtx, doc/, doc/ngerman/, doc/ngerman/scrlfile.tex,
+ doc/english/, doc/english/scrlfile.tex: new:
+ \UnPreventPackageFromLoading
+
+r1524 2013-11-22 12:04:59 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: fix: docu loop
+
+r1523 2013-11-22 11:52:58 +0100 mjk:
+
+ * scrlfile.dtx, doc/, doc/ngerman/, doc/ngerman/scrlfile.tex,
+ doc/english/, doc/english/scrlfile.tex: new: optional argument for
+ \PreventPackageFromLoading fix: spaces in package lists destroyed
+
+r1522 2013-11-22 09:11:42 +0100 mjk:
+
+ * scrkernel-listsof.dtx: \numberline uses \numberline@numberformat
+ only if the argument expands to a non-empty string and #1 else
+
+r1521 2013-11-22 09:06:08 +0100 mjk:
+
+ * scrkernel-listsof.dtx: \numberline@format doesn't output anything if
+ #1 is empty
+
+r1520 2013-11-21 16:22:43 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: onehalfspacing example improved
+
+r1519 2013-11-21 16:13:48 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-titles.tex: date of
+ translated file
+
+r1518 2013-11-21 15:54:26 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/common-titles.tex: fix: cover page margin macros [Falk]
+
+r1517 2013-11-21 14:02:39 +0100 mjk:
+
+ * scrkernel-title.dtx, doc/, doc/ngerman/,
+ doc/ngerman/common-titles.tex, doc/english/,
+ doc/english/common-titles.tex: new option titlepage=firstiscover
+
+r1516 2013-11-19 09:06:20 +0100 mjk:
+
+ * tocbasic.dtx: fix: \@addxcontentsline had wrong logic and used
+ optional instead of mandatory second argument at add#2#1entry case
+
+r1515 2013-11-15 11:26:00 +0100 mjk:
+
+ * scrlfile.dtx, doc/, doc/ngerman/, doc/ngerman/scrlfile.tex,
+ doc/english/, doc/english/scrlfile.tex: - renamed \ReplaceFile into
+ \ReplaceInput - new commands: \UnReplaceInput, \UnReplacePackage,
+ \UnReplaceClass
+
+r1514 2013-11-15 09:23:09 +0100 mjk:
+
+ * scrlayer-notecolumn.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage.tex, doc/ngerman/scrlayer.tex,
+ doc/english/, doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrlayer-scrpage.tex, doc/english/scrlayer.tex,
+ doc/english/common-pagestylemanipulation.tex: more fixes by several
+ translators
+
+r1513 2013-11-11 11:36:34 +0100 mjk:
+
+ * TODO: emulatestandardclasses
+
+r1512 2013-11-11 11:35:04 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx:
+ emulatestandardclasses not for scrlttr2
+
+r1511 2013-11-11 11:21:33 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx,
+ scrkernel-sections.dtx: new option emulatestandardclasses
+
+r1510 2013-11-11 07:46:10 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/scrlayer.tex: minor fixes, e.g., references
+
+r1509 2013-11-11 07:34:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: Umlaut
+
+r1508 2013-11-09 15:33:06 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: first
+ corrections by Jens
+
+r1507 2013-11-07 18:44:10 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex,
+ doc/english/common-pagestylemanipulation.tex: additional typo and
+ grammer fixes by Elke
+
+r1506 2013-11-07 17:41:36 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-interleafpage.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/common-interleafpage.tex: fix:
+ \KOMAoption --> \KOMAoptions
+
+r1505 2013-11-07 12:23:38 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex,
+ doc/english/common-headfootheight.tex,
+ doc/english/common-pagestylemanipulation.tex: peinliche Fehler
+ korrigiert
+
+r1504 2013-11-07 08:26:20 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex,
+ doc/english/common-pagestylemanipulation.tex: some more suggestions by
+ Jana
+
+r1503 2013-11-06 12:44:59 +0100 mjk:
+
+ * scrkernel-language.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbase.tex, doc/english/, doc/english/scrbase.tex: doc of
+ changes of \defcaptionname, \providecaptionname, \newcaptionname,
+ and \renewcaptionname
+
+r1502 2013-11-06 12:00:12 +0100 mjk:
+
+ * scrkernel-floats.dtx, scrkernel-typearea.dtx,
+ scrkernel-listsandtabulars.dtx, scrjura.dtx, tocstyle.dtx,
+ scrpage.dtx, scrlayer-notecolumn.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-basics.dtx: implementation doc
+ fixed: missing backslash at argument of macro environmant
+
+r1501 2013-11-06 11:48:33 +0100 mjk:
+
+ * scrkernel-language.dtx: change: allow spaces in the language lists
+
+r1500 2013-11-06 10:22:28 +0100 mjk:
+
+ * scrkernel-basics.dtx: better usage of \FamilyUnknownKeyValue
+
+r1499 2013-11-05 18:22:29 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: change: test for correct paper
+ size with tolerance of ± 0.1 mm
+
+r1498 2013-11-05 17:00:39 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: option version sets
+ \FamilyKeyStateProcessed
+
+r1497 2013-11-05 16:39:50 +0100 mjk:
+
+ * TODO: new: \FamilyCounterKey, \FamilySetCounter,
+ \FamilyCounterMacroKey, \FamilySetCounterMacro, \FamilyLengthKey,
+ \FamilySetLength, \FamilyLengthMacroKey, \FamilySetLengthMacro
+
+r1496 2013-11-05 16:20:41 +0100 mjk:
+
+ * scrkernel-basics.dtx: new: \FamilyCounterKey, \FamilySetCounter,
+ \FamilyCounterMacroKey, \FamilySetCounterMacro, \FamilyLengthKey,
+ \FamilySetLength, \FamilyLengthMacroKey, \FamilySetLengthMacro
+
+r1495 2013-11-05 15:51:50 +0100 mjk:
+
+ * Makefile: scrdocstrip.tex isn't a CLS_FILE
+
+r1494 2013-11-05 12:31:16 +0100 mjk:
+
+ * scrkernel-basics.dtx, doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/english/, doc/english/scrbase.tex: new: \ifisdimension, \ifisglue,
+ \ifisnumber
+
+r1493 2013-11-05 12:04:57 +0100 mjk:
+
+ * scrkernel-basics.dtx: two new internal macros renamed
+
+r1492 2013-11-05 10:22:47 +0100 mjk:
+
+ * scrkernel-basics.dtx, doc/, doc/ngerman/, doc/ngerman/scrbase.tex,
+ doc/english/, doc/english/scrbase.tex: new commands \ifstrstart,
+ \ifisdimen, \ifisskip, \ifiscount, \ifiscounter, \ifisdimexpr,
+ \ifisglueexpr, \ifisnumexpr
+
+r1491 2013-11-05 08:11:30 +0100 mjk:
+
+ * TODO: one item removed
+
+r1490 2013-11-04 16:42:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: Elke told me,
+ that only Jana does translation suggestions
+
+r1489 2013-11-04 16:38:30 +0100 mjk:
+
+ * scrjura.dtx: angepasst an Signalisierung mit \FamilyKeyState in
+ scrbase.sty
+
+r1488 2013-11-04 11:44:34 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: missing footlines and
+ footheight
+
+r1487 2013-11-04 11:44:15 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/common-headfootheight.tex,
+ doc/english/common-pagestylemanipulation.tex: Korrekturen von Fam.
+ Schuster
+
+r1486 2013-11-04 11:38:49 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: footlines korrigiert
+ (Bezüge zur Kopfzeile)
+
+r1485 2013-11-04 11:37:58 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: Usage of
+ automatic date
+
+r1484 2013-11-04 11:35:45 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: - type-area --> type
+ area - description of footheight and footlines
+
+r1483 2013-10-31 16:12:30 +0100 mjk:
+
+ * scrkernel-fonts.dtx: change: usage of old font commands is
+ deprecated
+
+r1482 2013-10-31 11:08:48 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer.tex: fix: two references
+
+r1481 2013-10-31 11:00:19 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer.tex: do not generate or use
+ generated user manual
+
+r1480 2013-10-31 11:00:02 +0100 mjk:
+
+ * scrlayer.dtx, doc/, doc/english/, doc/english/scrlayer.tex: do not
+ generate or use generated user manual
+
+r1479 2013-10-31 08:55:56 +0100 mjk:
+
+ * scrkernel-title.dtx: file date
+
+r1478 2013-10-31 08:52:14 +0100 mjk:
+
+ * scrkernel-title.dtx, doc/, doc/english/, doc/english/scrlayer.tex:
+ start with English translation of scrlayer.tex
+
+r1477 2013-10-31 08:48:26 +0100 mjk:
+
+ * scrdocstrip.tex: fix: Line break in error message
+
+r1476 2013-10-31 08:34:11 +0100 mjk:
+
+ * scrdocstrip.tex: fix: error message for missing files
+
+r1475 2013-10-30 19:00:11 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: revert last check in
+
+r1474 2013-10-30 18:17:43 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: classes do not longer support
+ parsed options like BCOR<value> (instead of BCOR=<value>), but
+ typearea does still provide them, so most users should not see any
+ difference
+
+r1473 2013-10-30 12:29:25 +0100 mjk:
+
+ * scrkernel-basics.dtx: new: \ifintnumber{string}{if string is an
+ integer}{if string isn't an integer}
+
+r1472 2013-10-29 13:34:04 +0100 mjk:
+
+ * README.in/: more README sourced
+
+r1471 2013-10-29 10:20:28 +0100 mjk:
+
+ * TODO, doc/, doc/english/, doc/english/preface.tex: the drafts of
+ several translations have been finished
+
+r1470 2013-10-29 10:15:06 +0100 mjk:
+
+ * scrlayer-notecolumn.dtx: initial label fixed
+
+r1469 2013-10-29 10:06:32 +0100 mjk:
+
+ * manifest.txt, doc/, doc/ngerman/, doc/ngerman/scrlayer.tex,
+ doc/english/, doc/english/Makefile,
+ doc/english/common-pagestylemanipulation.tex: draft translation of
+ scrlayer.tex
+
+r1468 2013-10-28 18:05:25 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex: draft
+ translation of all sections
+
+r1467 2013-10-28 17:01:06 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage-experts.tex: draft
+ translation of one more section
+
+r1466 2013-10-28 10:55:12 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/english/, doc/english/scrlayer-scrpage-experts.tex: draft
+ translation of one more section
+
+r1465 2013-10-28 10:40:23 +0100 mjk:
+
+ * scrlayer-scrpage.dtx: fix: typo \providepairofpagestyle -->
+ \providepairofpagestyles
+
+r1464 2013-10-28 07:37:21 +0100 mjk:
+
+ * TODO: addmargin issue
+
+r1463 2013-10-26 17:53:02 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: New: warning, if a "addmargin*"
+ environment's begin and end are not on the same page
+
+r1462 2013-10-24 11:10:06 +0200 mjk:
+
+ * manifest.txt, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/scrlayer-scrpage-experts.tex,
+ doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage-experts.tex,
+ doc/english/scrlayer-scrpage.tex: chapter about scrlayer splitted into
+ an author and an expert chapter
+
+r1461 2013-10-24 09:17:58 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/scrlayer-scrpage.tex: draft translation of section 6.4
+ finished
+
+r1460 2013-10-23 18:57:19 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ ein paar Korrekturen von Elke
+
+r1459 2013-10-23 18:51:46 +0200 mjk:
+
+ * TODO: Paket/Paketes
+
+r1458 2013-10-23 11:35:31 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex,
+ doc/english/common-pagestylemanipulation.tex: a kind of translation
+
+r1457 2013-10-23 11:34:02 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ Umbruch
+
+r1456 2013-10-23 11:16:09 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ fehlendes Beispiel für \GenericMarkFormat
+
+r1455 2013-10-23 09:58:56 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ einige zustätzliche Index-Einträge
+
+r1454 2013-10-23 09:21:29 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \nentry fixed
+
+r1453 2013-10-23 09:19:07 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ string --> Text
+
+r1452 2013-10-22 18:42:26 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: only a comment
+
+r1451 2013-10-22 18:41:02 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: a kind of
+ translation of some parts
+
+r1450 2013-10-22 18:40:01 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/common-pagestylemanipulation.tex: a
+ kind of translation of some parts
+
+r1449 2013-10-22 11:23:23 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/common-pagestylemanipulation.tex:
+ only note about untranslated state
+
+r1448 2013-10-22 11:17:09 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-pagestylemanipulation.tex:
+ \ProvidesFile --> \KOMAProvidesFile
+
+r1447 2013-10-22 10:39:40 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: ein paar
+ kleine Fehlerkorrekturen
+
+r1446 2013-10-22 10:38:47 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlayer-scrpage.tex: some
+ translations of German scrlayer-scrpage.tex
+
+r1445 2013-10-18 15:18:41 +0200 mjk:
+
+ * scrlayer-scrpage.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage.tex, doc/english/, doc/english/Makefile,
+ doc/english/common-headfootheight.tex: start of translation of
+ scrlayer-scrpage chapter
+
+r1444 2013-10-18 12:21:16 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: forgotte \newcommand
+
+r1443 2013-10-18 12:20:49 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \KOMAProvidesFile fixed
+
+r1442 2013-10-18 11:02:10 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: Dieses Kapitel
+ stammt von Markus Kohm und wird auch von ihm verwaltet.
+
+r1441 2013-10-18 10:56:55 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-headfootheight.tex: some more
+ index entries
+
+r1440 2013-10-18 09:03:54 +0200 mjk:
+
+ * Makefile: typo fix
+
+r1439 2013-10-18 09:03:09 +0200 mjk:
+
+ * doc/, doc/Makefile: file date
+
+r1438 2013-10-18 09:02:49 +0200 mjk:
+
+ * doc/, doc/Makefile: new html links for new packages
+
+r1437 2013-10-18 08:57:59 +0200 mjk:
+
+ * Makefile: installation installs also scrdocstrip.tex
+
+r1436 2013-10-18 08:55:34 +0200 mjk:
+
+ * Makefile.baseinit: INSTALLTEXDIR added (currently unused)
+
+r1435 2013-10-17 11:09:09 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: zwei Tippfehler (Elke)
+
+r1434 2013-10-16 16:25:26 +0200 mjk:
+
+ * TODO: german manual of scrlayer-notecolumn add
+
+r1433 2013-10-16 16:24:20 +0200 mjk:
+
+ * manifest.txt, scrlayer-notecolumn.dtx, doc/, doc/guide.tex,
+ doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlayer-notecolumn-example.tex,
+ doc/ngerman/scrlayer-notecolumn.tex, doc/english/,
+ doc/english/Makefile: user manual of scrlayer-notecolumn added
+
+r1432 2013-10-16 13:10:21 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Erklärung, die
+ bereits in Abschnitt 2.4 zu finden ist, wieder entfernt
+
+r1431 2013-10-16 13:05:21 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: fix: mainindex -->
+ indexmain
+
+r1430 2013-10-16 13:01:50 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/scrlayer.tex, doc/ngerman/typearea.tex: Berücksichtigung
+ von scrlayer-scrpage bei typearea
+
+r1429 2013-10-16 12:10:43 +0200 mjk:
+
+ * manifest.txt, TODO, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/scrlayer.tex, doc/english/,
+ doc/english/Makefile: user manual for scrlayer added to part II of the
+ KOMA-Script guide
+
+r1428 2013-10-16 11:48:56 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex: line break
+ change
+
+r1427 2013-10-16 11:47:53 +0200 mjk:
+
+ * doc/, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage.tex: new \KOMAProvidesFile to avoid
+ forgotten file date changes
+
+r1426 2013-10-16 11:45:39 +0200 mjk:
+
+ * scrlayer.dtx: doc generation fixed
+
+r1425 2013-10-16 11:19:06 +0200 mjk:
+
+ * manifest.txt: scrlayer-scrpage.tex added
+
+r1424 2013-10-16 08:56:53 +0200 mjk:
+
+ * manifest.txt, doc/, doc/Makefile.guide, doc/ngerman/,
+ doc/ngerman/scrlayer-scrpage.tex,
+ doc/ngerman/common-headfootheight.tex,
+ doc/ngerman/common-pagestylemanipulation.tex, doc/english/,
+ doc/english/common-headfootheight.tex,
+ doc/english/common-pagestylemanipulation.tex: Anleitung für
+ scrlayer-scrpage
+
+r1423 2013-10-15 10:17:36 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: documentation of changed BCOR interpreataion
+ with "twoside=semi"
+
+r1422 2013-10-15 09:11:07 +0200 mjk:
+
+ * Makefile, Makefile.baseinit, Makefile.baserules: generate
+ scrsource.pdf instead of scrsource.dvi to check source integrity
+
+r1421 2013-10-15 09:00:17 +0200 mjk:
+
+ * scrkernel-typearea.dtx: without compatibility < 3.12 binding
+ correction will alternate using twoside=semi
+
+r1420 2013-10-14 18:03:55 +0200 mjk:
+
+ * scrlayer-scrpage.dtx, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/scrlayer-scrpage.tex, doc/english/,
+ doc/english/Makefile: preparations for adding the user manual of
+ scrlayer-scrpage
+
+r1419 2013-10-14 11:07:52 +0200 mjk:
+
+ * scrlayer.dtx, scrlayer-notecolumn.dtx, scrlayer-scrpage.dtx: package
+ generation issues fixed (Elke)
+
+r1418 2013-10-08 18:14:06 +0200 mjk:
+
+ * TODO: missing docu
+
+r1417 2013-10-08 18:12:40 +0200 mjk:
+
+ * Makefile, scrlayer.dtx, manifest.txt, scrmain.ins,
+ scrlayer-notecolumn.dtx, scrlayer-scrpage.dtx: scrlayer,
+ scrlayer-scrpage, and scrlayer-notecolumn have been added to
+ KOMA-Script
+
+r1416 2013-10-08 17:43:26 +0200 mjk:
+
+ * scrlayer.dtx, scrlayer-notecolumn.dtx, scrlayer-scrpage.dtx: first
+ integrated version of scrlayer-notecolumn
+
+r1415 2013-10-08 17:33:01 +0200 mjk:
+
+ * scrlayer.dtx, scrlayer-scrpage.dtx: first integrated version of
+ scrlayer-scrpage
+
+r1414 2013-10-08 17:18:47 +0200 mjk:
+
+ * scrlayer.dtx: initial integrated version of new package scrlayer
+
+r1413 2013-10-08 17:06:47 +0200 mjk:
+
+ * tocbasic.dtx: use scrdocstrip instead of docstrip
+
+r1412 2013-10-08 12:50:05 +0200 mjk:
+
+ * TODO: calculation of \intextsep fixed
+
+r1411 2013-10-08 12:45:17 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: fehlendes
+ Leerzeichen ergänzt (zweiter Absatz open=Methode)
+
+r1410 2013-10-08 12:30:47 +0200 mjk:
+
+ * scrkernel-fonts.dtx: if compytibility >= 3.12 the calculations of
+ the callback solution of option fontsize have been changed
+
+r1409 2013-10-08 10:28:00 +0200 mjk:
+
+ * scrkernel-compatibility.dtx: version 3.12 is a new compatibility
+ level
+
+r1408 2013-10-08 09:19:41 +0200 mjk:
+
+ * scrkernel-fonts.dtx: double defined \partopsep removed one time
+
+r1407 2013-10-08 08:34:19 +0200 mjk:
+
+ * TODO: is \intextsep correct?
+
+r1406 2013-10-05 13:05:50 +0200 mjk:
+
+ * README.in/: more README sources
+
+r1405 2013-10-05 12:56:56 +0200 mjk:
+
+ * tocbasic.dtx: fix: spacing in the abstract of the user manual
+
+r1404 2013-10-05 12:31:12 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-textmarkup.tex: Kopier- bzw. Tippfehler [Elke]
+
+r1403 2013-10-04 19:33:44 +0200 mjk:
+
+ * README.in/: more README sources
+
+r1402 2013-10-04 18:51:05 +0200 mjk:
+
+ * scrkernel-fonts.dtx: improved package version generation
+
+r1401 2013-10-04 13:14:32 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2-experts.tex: the third visualization style is
+ "edges" not "edge"
+
+r1400 2013-10-02 20:45:58 +0200 mjk:
+
+ * Makefile: improved README generation while release build
+
+r1399 2013-10-02 20:45:51 +0200 mjk:
+
+ * README.in/, README.in/README.scrlttr2.cls,
+ README.in/README.scrreprt.cls, README.in/README.scrbook.cls: typo
+ fixed
+
+r1398 2013-10-02 20:35:25 +0200 mjk:
+
+ * README.in/, README.in/README.scrartcl.cls,
+ README.in/README.scrdoc.cls, README.in/README.scrbook.cls: more basic
+ READMEs
+
+r1397 2013-10-02 19:01:51 +0200 mjk:
+
+ * README.in/, README.in/README.scrartcl.cls,
+ README.in/README.scrlttr2.cls, README.in/README.scrreprt.cls,
+ README.in/README.scrdoc.cls, README.in/README.scrbook.cls: some files
+ with basic package and class descriptions
+
+r1396 2013-10-02 19:01:06 +0200 mjk:
+
+ * Makefile: fix of missing files for docstrip
+
+r1395 2013-10-02 18:37:13 +0200 mjk:
+
+ * manifest.txt: scrdocstrip.tex added
+
+r1394 2013-10-02 11:12:48 +0200 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/tocbasic.tex: \addxcontentsline…,
+ \tocbasic@addxcontentsline, \nonumberline, Eigenschaft "numberline"
+ und die Klassenoptionen in diesem Zusammenhang dokumentiert
+
+r1393 2013-10-02 08:40:56 +0200 mjk:
+
+ * scrjura.dtx, TODO: additional languages for scrjura
+
+r1392 2013-10-02 07:57:31 +0200 mjk:
+
+ * README.SVN: some information for users without make
+
+r1391 2013-10-01 19:27:20 +0200 mjk:
+
+ * scrdocstrip.tex: usage of \getlastextension fixed
+
+r1390 2013-10-01 18:16:36 +0200 mjk:
+
+ * manifest.txt: wrong # replaced by %
+
+r1389 2013-10-01 18:06:04 +0200 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-variables.dtx, manifest.txt,
+ scrmain.ins: renamed scrkvars.dtx into scrkernel-variables.dtx
+
+r1388 2013-10-01 18:03:42 +0200 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrmain.ins,
+ scrkernel-pseudolengths.dtx: renamed scrkplen.dtx into
+ scrkernel-pseudolengths.dtx
+
+r1387 2013-10-01 18:00:49 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: renamed scrklist.dtx into
+ scrkernel-listsandtabulars.dtx
+
+r1386 2013-10-01 18:00:20 +0200 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-listsandtabulars.dtx,
+ manifest.txt, scrmain.ins: renamed scrklists.dtx into
+ scrkernel-listsandtabulars.dtx
+
+r1385 2013-10-01 17:56:01 +0200 mjk:
+
+ * Makefile, manifest.txt, scrkernel-letterclassoptions.dtx,
+ scrmain.ins: renamed scrklco.dtx into scrkernel-letterclassoptions.dtx
+
+r1384 2013-10-01 17:51:14 +0200 mjk:
+
+ * Makefile, scrkernel-circularletters.dtx, manifest.txt, scrmain.ins:
+ renamed scrkcile.dtx into scrkernel-circularletters.dtx
+
+r1383 2013-10-01 17:44:28 +0200 mjk:
+
+ * scrkernel-version.dtx, Makefile, komabug.tex, scrsource.tex,
+ scrkernel-typearea.dtx, manifest.txt, scrmain.ins, scrhack.dtx,
+ scrpage.dtx, scrtime.dtx, scrlfile.dtx, tocbasic.dtx,
+ scrkernel-basics.dtx: renamed scrkvers.dtx into scrkernel-version.dtx
+
+r1382 2013-10-01 17:37:45 +0200 mjk:
+
+ * scrdocstrip.tex: new extension of docstrip.tex
+
+r1381 2013-10-01 17:33:08 +0200 mjk:
+
+ * tocstyle.dtx, scrpage.dtx, scrwfile.dtx, scrtime.dtx, tocbasic.dtx:
+ usage of keyword substitution
+
+r1380 2013-10-01 17:31:55 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrkernel-bibliography.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrjura.dtx, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, tocstyle.dtx,
+ scrkernel-pseudolengths.dtx, scrhack.dtx, scrpage.dtx, scrwfile.dtx,
+ scrkernel-sections.dtx, japanlco.dtx, scrkernel-miscellaneous.dtx,
+ scrtime.dtx, scrkernel-fonts.dtx, scrextend.dtx, scraddr.dtx,
+ scrlfile.dtx, tocbasic.dtx, scrkernel-basics.dtx: usage of keyword
+ substitution
+
+r1379 2013-10-01 17:02:47 +0200 mjk:
+
+ * scrkernel-version.dtx, Makefile, scrstrop.inc, scrstrip.inc,
+ scrkernel-typearea.dtx, manifest.txt, scrmain.ins, scrhack.dtx,
+ scrpage.dtx, scrtime.dtx, scraddr.dtx, scrlfile.dtx, tocbasic.dtx,
+ scrkernel-basics.dtx: using ins=dtx for package generation
+
+r1378 2013-09-30 17:42:35 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrkernel-bibliography.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrdoc.dtx, scrjura.dtx,
+ scrkernel-listsof.dtx, scrkernel-letterclassoptions.dtx,
+ scrkxflo.dtx, scrkernel-pseudolengths.dtx, missing.dtx, scrhack.dtx,
+ scrcounter.dtx, scrkernel-sections.dtx, japanlco.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx, scrextend.dtx,
+ scraddr.dtx, scrlfile.dtx, scrkernel-basics.dtx: svn keyword
+ substitution activated
+
+r1377 2013-09-25 09:17:02 +0200 mjk:
+
+ * scrkernel-listsof.dtx: changed warnings about \float@addlist and
+ \float@listhead
+
+r1376 2013-09-24 19:08:23 +0200 mjk:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx, scrjura.dtx,
+ scrkernel-listsof.dtx, TODO, scrwfile.dtx, scrkernel-sections.dtx,
+ tocbasic.dtx: new tocbasic feature "numberline" to indent text entries
+ without number; new options "toc=numberline", "toc=nonumberline",
+ "listof=numberline", "listof=nonumberline"
+
+r1375 2013-09-24 17:22:51 +0200 mjk:
+
+ * scrjura.dtx: usage of tocbasic and \addcontentslinedefault
+
+r1374 2013-09-19 11:16:26 +0200 mjk:
+
+ * scrjura.dtx: Replacement of \PackageErrorNoLine by \PackageError
+
+r1373 2013-09-19 11:13:14 +0200 mjk:
+
+ * scrkernel-basics.dtx: new command \PackageErrorNoLine
+
+r1372 2013-09-12 09:09:12 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: fix: new \scr@package@not@recommended
+
+r1371 2013-08-28 14:03:11 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: tabularx added
+
+r1370 2013-08-28 13:46:00 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Copyright Datum
+
+r1369 2013-08-28 13:45:40 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Gegenüberstellung von
+ remarkbox und figure und ein Beispiel für die Verwendung von
+ remarkbox
+
+r1368 2013-08-28 13:44:19 +0200 mjk:
+
+ * tocbasic.dtx: improvement of example
+
+r1367 2013-08-28 13:38:33 +0200 mjk:
+
+ * tocbasic.dtx: Improvement of manual part: - comparision of example
+ environment remarkbox with figure - example of usage of example
+ environment remarkbox
+
+r1366 2013-08-26 18:26:25 +0200 mjk:
+
+ * scrkernel-typearea.dtx: missing \FamilyKeyStateProcessed
+
+r1365 2013-08-26 18:25:41 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx, scrkernel-listsof.dtx, TODO,
+ scrkernel-sections.dtx: \KOMA@options replaced either by
+ \KOMAExecuteOptions or \KOMAoptions
+
+r1364 2013-08-26 17:50:23 +0200 mjk:
+
+ * TODO: one more note about the renewed option interface
+
+r1363 2013-08-25 12:55:07 +0200 mjk:
+
+ * README.SVN: spezial note for developers using MiKTeX
+
+r1362 2013-08-11 14:05:03 +0200 mjk:
+
+ * tocstyle.dtx: usage of new font elements of KOMA-Script at style
+ KOMAlike
+
+r1361 2013-08-08 18:11:24 +0200 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/common-options.tex,
+ doc/english/: Note about problems using lengths as option value with
+ \documentclass or \usepackage
+
+r1360 2013-08-05 18:42:32 +0200 mjk:
+
+ * scrwfile.dtx, doc/, doc/guide.bib, doc/english/,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/preface.tex:
+ improvements of the English guide (by Hendrik M. and KOMA)
+
+r1359 2013-07-31 13:06:37 +0200 mjk:
+
+ * scrkernel-notepaper.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/common-textmarkup.tex,
+ doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-textmarkup.tex: new font element placeanddate
+
+r1358 2013-07-30 12:34:32 +0200 mjk:
+
+ * scrkernel-language.dtx: \defcaptionname etc. can handle empty
+ language arguments
+
+r1357 2013-07-30 12:15:12 +0200 mjk:
+
+ * scrkernel-language.dtx: new: \defcaptionname reimplemented:
+ \newcaptionname, \renewcaptionname, \providecaptionname
+
+r1356 2013-07-24 17:35:15 +0200 mjk:
+
+ * TODO, tocbasic.dtx: no more need for a patch of tocbasic, because if
+ hyperref
+
+r1355 2013-07-24 12:38:18 +0200 mjk:
+
+ * scrwfile.dtx: fix hyperref workaround
+
+r1354 2013-07-24 12:16:00 +0200 mjk:
+
+ * scrwfile.dtx: work around for unfriendly redefinition of \@starttoc
+ by hyperref
+
+r1353 2013-07-22 18:38:26 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrlttr2-experts.tex: Kleinere
+ Ergänzungen und Korrekturen
+
+r1352 2013-07-09 15:01:26 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: empty test with wrong argumnent in new
+ \scr@package@not@recommended
+
+r1351 2013-07-09 08:22:42 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ Angezeigter Code stimmt mit Abbildung überein [Epllus]
+
+r1350 2013-07-08 12:48:52 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: several package warnings
+
+r1349 2013-06-23 18:01:33 +0200 mjk:
+
+ * TODO: problems with hyperref's \AtBeginDocument-redefinition of
+ \@starttoc
+
+r1348 2013-06-12 08:23:25 +0200 mjk:
+
+ * scrkernel-floats.dtx: replaced \capfont by \usekomafont{caption} and
+ \caplabelfont by \usekomafont{captionlabel}
+
+r1347 2013-06-12 08:21:59 +0200 mjk:
+
+ * scrkernel-fonts.dtx: \use…ofkomafont internally doesn't set the
+ color
+
+r1346 2013-06-09 10:33:26 +0200 mjk:
+
+ * scrjura.dtx: new: definition of \toclevel@cpar for usage with
+ hyperref
+
+r1345 2013-06-07 18:50:20 +0200 mjk:
+
+ * scrjura.dtx: new: font element parnumber
+
+r1344 2013-06-06 18:27:36 +0200 mjk:
+
+ * scrjura.dtx: fix: if \thepar is not only an arabic number, output
+ the par numbers always
+
+r1343 2013-06-04 14:27:25 +0200 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex, doc/english/,
+ doc/english/scrlttr2.tex: frommobilephone (option and variable) and
+ symbolicnames (option) described
+
+r1342 2013-05-31 15:53:50 +0200 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-textmarkup.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrextend.tex, doc/english/common-textmarkup.tex: user
+ manual of \usefontofkomafont etc. added
+
+r1341 2013-05-31 12:02:05 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea-experts.tex: fix: \indent
+ before \rule{…}{…} to show the typing area correctly
+
+r1340 2013-05-31 11:59:06 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex: fix: Einzug
+ vor den Satzspiegelboxen im \storeareas-Beispiel
+
+r1339 2013-05-29 17:55:00 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: fix of symbolicnames
+
+r1338 2013-05-29 17:54:43 +0200 mjk:
+
+ * scrkernel-basics.dtx: Fix of \AtEndOfFamilyOptions
+
+r1337 2013-05-29 14:15:48 +0200 mjk:
+
+ * scrkernel-notepaper.dtx, scrkernel-language.dtx, TODO: new option
+ and variable "frommobilephone" new option "symbolicnames"
+
+r1336 2013-05-29 14:14:03 +0200 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrmain.ins: renamed
+ scrklang.dtx into scrkernel-language.dtx
+
+r1335 2013-05-29 12:30:52 +0200 mjk:
+
+ * scrkernel-title.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/common-titles.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/common-titles.tex: new font elements "titlehead",
+ "author", "date", "publishers", "dedication"
+
+r1334 2013-05-23 18:16:45 +0200 mjk:
+
+ * scrjura.dtx: new: \thisparnumber{<manuelle Nummer>}
+
+r1333 2013-05-23 17:43:10 +0200 mjk:
+
+ * scrjura.dtx: fix: sentence number with \parnumberfalse
+
+r1332 2013-05-10 19:51:12 +0200 mjk:
+
+ * scrkernel-typearea.dtx: deactivate the dvips hack, if \XeTeXversion
+ is defined
+
+r1331 2013-05-03 10:49:14 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: new: requires picture package
+
+r1330 2013-05-03 09:24:27 +0200 mjk:
+
+ * tocbasic.dtx: fix: \DeclareNewTOC also defines
+ \listof<extension>entryname
+
+r1329 2013-05-02 11:44:08 +0200 mjk:
+
+ * scrjura.dtx: new: \ellipsispar and \parellipsis
+
+r1328 2013-05-02 10:32:23 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-options.tex: scrlayer und
+ scrlayer-scrpage mit aufgenommen
+
+r1327 2013-04-28 11:04:44 +0200 mjk:
+
+ * scrjura.dtx: fix: hanging indent with indent after the space after
+ the number
+
+r1326 2013-04-20 19:02:04 +0200 mjk:
+
+ * scrkernel-basics.dtx: date
+
+r1325 2013-04-20 18:36:17 +0200 mjk:
+
+ * scrkernel-basics.dtx: When I've decided to name a macro
+ \l@addto@macro in 2001, I've tested, whether or not the macro name
+ is unused. Unforunatly in the meantime other package authors also
+ defined macro name \l@addto@macro potentially incompatible. If I
+ detect such an incompatibility while loading scrbase, the package
+ throws a warning message.
+
+r1324 2013-04-19 07:45:44 +0200 mjk:
+
+ * scrjura.dtx: experimental support for several paragraphs with same
+ number
+
+r1323 2013-04-16 16:12:57 +0200 mjk:
+
+ * scrjura.dtx: - \newmaxpar sets #1@Paragraphformat to \@firstofone -
+ \contract@paragraph with option number also uses
+ \contract@Paragraphformat
+
+r1322 2013-04-16 11:37:01 +0200 mjk:
+
+ * doc/, doc/Makefile.guide: $(DOCDIR) at TEX_MISC replaced by relative
+ directory
+
+r1321 2013-04-16 11:34:30 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: fix: one
+ \OptionValue
+
+r1320 2013-04-16 11:13:52 +0200 mjk:
+
+ * scrjura.dtx: \paragraphformat renamed into \Paragraphformat
+
+r1319 2013-04-10 15:32:01 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: changed CTAN: prefix from ftp: to http:
+
+r1318 2013-04-10 15:28:24 +0200 mjk:
+
+ * scrkernel-fonts.dtx: missing brace added
+
+r1317 2013-04-10 15:10:59 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Codierungsmurks
+ beseitigt
+
+r1316 2013-04-10 08:53:55 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \NTS added
+
+r1315 2013-03-30 16:15:12 +0100 mjk:
+
+ * TODO, scrkernel-fonts.dtx: new: \usesizeofkomafont,
+ \useencodingofkomafont, \usefamilyofkomafont, \useshapeofkomafont,
+ \useseriesofkomafont, \usefontofkomafont
+
+r1314 2013-03-28 09:47:28 +0100 mjk:
+
+ * TODO: Die KOMA-Script-Klassen müssen bezüglich \footheight nichts
+ beachten, da sie die Linie ohnehin immer über dem Fuß einfügen.
+
+r1313 2013-03-26 12:15:09 +0100 mjk:
+
+ * TODO: classes and \footheight
+
+r1312 2013-03-26 12:11:24 +0100 mjk:
+
+ * scrkernel-version.dtx: new version date
+
+r1311 2013-03-26 12:09:18 +0100 mjk:
+
+ * scrkernel-typearea.dtx: support for \footheight
+
+r1310 2013-03-07 10:47:24 +0100 mjk:
+
+ * doc/, doc/guide.bib: entry manual:eTeX added
+
+r1309 2013-03-05 16:35:54 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: delegate options headinclude and
+ footinclude to package typearea, if the package hasn't been loaded
+ yet
+
+r1308 2013-03-05 16:22:40 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.12 BETA
+
+r1307 2013-03-05 15:08:12 +0100 mjk:
+
+ * scrextend.dtx: usage of option execution state signals
+
+r1306 2013-03-05 15:02:53 +0100 mjk:
+
+ * scrhack.dtx: usage of option execution state signals
+
+r1305 2013-03-05 14:57:18 +0100 mjk:
+
+ * Makefile, scrkernel-notepaper.dtx, scrsource.tex, manifest.txt,
+ scrmain.ins: scrkpap.dtx renamed into scrkernel-notepaper.dtx
+
+r1304 2013-03-05 14:54:08 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: usage of option execution state signals
+
+r1303 2013-03-05 14:29:56 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, Makefile, scrsource.tex, manifest.txt,
+ scrmain.ins: scrkcomp.dtx renamed into scrkernel-compatibility.dtx
+
+r1302 2013-03-05 14:13:43 +0100 mjk:
+
+ * scrkernel-typearea.dtx: usage of option execution state signals
+
+r1301 2013-03-05 13:59:25 +0100 mjk:
+
+ * scrkernel-sections.dtx: usage of option execution state signals
+
+r1300 2013-03-05 13:02:49 +0100 mjk:
+
+ * Makefile, scrkernel-paragraphs.dtx, scrsource.tex, manifest.txt,
+ scrmain.ins: scrkpar.dtx renamed into scrkernel-paragraphs.dtx
+
+r1299 2013-03-05 12:58:41 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: usage of option execution state signals
+
+r1298 2013-03-05 12:22:46 +0100 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-pagestyles.dtx, manifest.txt,
+ scrmain.ins, scrkernel-miscellaneous.dtx: scrkpage.dtx renamed into
+ scrkernel-pagestyles.dtx
+
+r1297 2013-03-05 12:19:32 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: usage of option execution state signals
+
+r1296 2013-03-05 12:07:01 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: usage of option execution state signals
+
+r1295 2013-03-05 12:02:49 +0100 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrkernel-listsof.dtx,
+ scrmain.ins: scrkliof.dtx renamed into scrkernel-listsof.dtx
+
+r1294 2013-03-05 11:57:40 +0100 mjk:
+
+ * scrkernel-listsof.dtx: usage of options execution states
+
+r1293 2013-03-05 11:47:13 +0100 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-index.dtx, manifest.txt,
+ scrmain.ins: scrkidx.dtx renamed into scrkernel-index.dtx
+
+r1292 2013-03-05 11:44:45 +0100 mjk:
+
+ * scrkernel-index.dtx: usage of \FamilyKeyState
+
+r1291 2013-03-05 11:41:18 +0100 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-footnotes.dtx, manifest.txt,
+ scrmain.ins: scrkftn.dtx renamed into scrkernel-footnotes.dtx
+
+r1290 2013-03-05 11:37:39 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: usage of \FamilyKeyStateProcessed
+
+r1289 2013-03-05 11:33:44 +0100 mjk:
+
+ * scrkernel-fonts.dtx: usage of \FamilyKeyStateProcessed
+
+r1288 2013-03-05 11:22:09 +0100 mjk:
+
+ * scrkernel-bibliography.dtx: options use \FamilyKeyStateProcessed
+
+r1287 2013-03-05 11:05:55 +0100 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrmain.ins,
+ scrkernel-fonts.dtx: scrkfont.dtx renamed into scrkernel-fonts.dtx
+
+r1286 2013-03-05 11:01:05 +0100 mjk:
+
+ * scrkernel-fonts.dtx: double 11pt test with missing 12pt test fixed
+ [Falk]
+
+r1285 2013-03-05 10:48:08 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex, doc/english/,
+ doc/english/scrbase.tex: description of new state signals with
+ \FammilyKeyState and of the new command \AtEndOfFamilyOptions
+
+r1284 2013-03-05 08:27:48 +0100 mjk:
+
+ * Makefile, scrkernel-floats.dtx, scrsource.tex, manifest.txt,
+ scrmain.ins, TODO, scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ scrkernel-basics.dtx: - reimplementation of the key=value interface -
+ scrkfloa.dtx renamed into scrkernel-floats.dtx - scrkbase.dtx
+ renamed into scrkernel-basics.dtx - several \@tempa, \@tempb,
+ \@tempc replaced by \reserved@a, \reserved@b, and \reserved@c
+
+r1283 2013-03-01 09:48:48 +0100 mjk:
+
+ * scrkernel-floats.dtx: fix of option captions=figureheading
+
+r1282 2013-02-26 12:01:00 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: description of
+ \addchapmark and \addsecmark added
+
+r1281 2013-02-26 11:33:30 +0100 mjk:
+
+ * scrkernel-sections.dtx: new commands \addchapmark and \addsecmark
+ using \chaptermark and \sectionmark
+
+r1280 2013-02-18 13:28:30 +0100 mjk:
+
+ * scrkernel-fonts.dtx: fix: \newkomafont should define the optional
+ warning as an macro with one argument
+
+r1279 2013-02-14 16:23:59 +0100 mjk:
+
+ * scrkernel-title.dtx, Makefile, scrsource.tex, manifest.txt,
+ scrmain.ins: renamed scrktitl.dtx to scrkernel-title.dtx
+
+r1278 2013-02-14 16:18:04 +0100 mjk:
+
+ * scrkernel-title.dtx: several bugs with \thanks and twocolumn mode at
+ \maketitle fixed
+
+r1277 2013-02-13 18:40:31 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/english/, doc/english/scrbookreportarticle.tex: description of
+ "bibliography=leveldown"
+
+r1276 2013-02-13 17:52:06 +0100 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrmain.ins,
+ scrkernel-sections.dtx: scrksect.dtx renamed to scrkernel-sections.dtx
+
+r1275 2013-02-13 17:23:42 +0100 mjk:
+
+ * scrkernel-sections.dtx: unused \chapterheadstartvskip and
+ \chapterheadenedvskip should not be in scrartcl
+
+r1274 2013-02-12 14:22:49 +0100 mjk:
+
+ * tocbasic.dtx: copyright date changed
+
+r1273 2013-02-12 14:14:52 +0100 mjk:
+
+ * tocbasic.dtx: arguments of optional argument `atbegin' and `atend'
+ may be empty at \DeclareNewTOC
+
+r1272 2013-02-06 11:00:20 +0100 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-bibliography.dtx, manifest.txt,
+ scrmain.ins: scrkbib.dtx renamed to scrkernel-bibliography.dtx support
+ for bibliography=leveldown and bibliography=standardlevel
+
+r1271 2013-02-06 10:59:02 +0100 mjk:
+
+ * scrkernel-typearea.dtx: fix of \let\if@tempswa\if@dvips when
+ \if@dvips may be undefined
+
+r1270 2013-02-06 08:35:07 +0100 mjk:
+
+ * scrkernel-typearea.dtx: line break at \ProvidesFile added
+
+r1269 2012-12-28 15:40:07 +0100 mjk:
+
+ * scrkernel-language.dtx: made language selection more robust for
+ newer versions of babel's hyphen.cfg
+
+r1268 2012-11-23 09:39:15 +0100 mjk:
+
+ * scrkernel-typearea.dtx, TODO: changed dvi/ps paper size update code
+ to avoid pdfTeX messages about unsupported specials
+
+r1267 2012-11-23 09:16:49 +0100 mjk:
+
+ * Makefile, scrsource.tex, scrkernel-typearea.dtx, manifest.txt,
+ scrmain.ins: renamed 8+3 file scrktare.dtx into scrkernel-typearea.dtx
+
+r1266 2012-11-23 08:16:07 +0100 mjk:
+
+ * TODO: special-Problem
+
+r1265 2012-11-07 09:41:48 +0100 mjk:
+
+ * scrmain.ins: scrlettr moved to obsolete
+
+r1264 2012-11-07 09:40:27 +0100 mjk:
+
+ * scrpage.dtx: only documentation changes
+
+r1263 2012-11-07 08:43:22 +0100 mjk:
+
+ * Makefile, manifest.txt, obsolete/, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx, obsolete/README: scrlettr moved to obsolete
+
+r1262 2012-11-07 08:33:00 +0100 mjk:
+
+ * obsolete/, obsolete/scrpage-obsolete.dtx: message fixed
+
+r1261 2012-11-07 08:26:41 +0100 mjk:
+
+ * obsolete/, obsolete/scrpage-obsolete.dtx: The Work definition fixed
+
+r1260 2012-11-07 08:20:44 +0100 mjk:
+
+ * obsolete/, obsolete/README: new README for KOMA-Script obsolete
+
+r1259 2012-11-06 18:45:47 +0100 mjk:
+
+ * Makefile, scrpage.dtx: Obsolete package scrpage has been removed
+ from KOMA-Script.
+
+r1258 2012-11-06 18:27:26 +0100 mjk:
+
+ * obsolete/, obsolete/scrpage-obsolete.dtx: new subdirectory for
+ obsolete sources
+
+r1257 2012-11-02 10:55:29 +0100 mjk:
+
+ * scrpage.dtx: Heuristic to detect manual or automatic runnig head
+ improved
+
+r1256 2012-10-16 18:09:55 +0200 mjk:
+
+ * scrkernel-sections.dtx: vertical heading preamble position may also
+ be `t' (instead of `o') or `b' (instead of `u')
+
+r1255 2012-10-16 09:25:56 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: fix: one \Option
+ instead of \OptionValue
+
+r1254 2012-10-15 09:14:20 +0200 mjk:
+
+ * scrjura.dtx: error message fixed
+
+r1253 2012-10-13 17:09:33 +0200 mjk:
+
+ * doc/, doc/guide.bib: 4th edition of the KOMA-Script book
+
+r1252 2012-10-08 09:27:49 +0200 mjk:
+
+ * scrjura.dtx: Fix: \Paragraph und \SubParagraph funktionierten nur im
+ vertikalen Modus erzeugten aber fälschlich keinen Absatz am Anfang
+ [Timon Geppert]
+
+r1251 2012-09-22 09:04:00 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: drei
+ identische Grammatikfehler korrigiert
+
+r1250 2012-09-19 08:59:20 +0200 mjk:
+
+ * TODO: documentation of \PreventPackageFromLoading*
+
+r1249 2012-09-19 08:59:08 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea-experts.tex: change entry
+ added
+
+r1248 2012-09-19 08:54:20 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex, doc/english/,
+ doc/english/scrlfile.tex: documentation of \PreventPackageFromLoading*
+
+r1247 2012-09-19 08:53:22 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea-experts.tex: change entry
+ added
+
+r1246 2012-07-29 11:24:02 +0200 mjk:
+
+ * releaselist.txt: release 2012/07/29 v3.11b
+
+r1245 2012-07-29 11:12:46 +0200 mjk:
+
+ * scrkernel-sections.dtx: checksum fixed
+
+r1244 2012-07-29 10:50:47 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-sections.dtx: Fix: vertical alignment of \addpart differed
+ from \part [mrpiggi]
+
+r1243 2012-07-22 12:12:56 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: Fix: two times
+ \PParameter for BCOR replaced by \POParameter
+
+r1242 2012-07-22 12:11:28 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Zweimal \PParameter
+ für BCOR in \POParameter korrigiert.
+
+r1241 2012-07-17 09:13:20 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/introduction.tex: Hinweis, dass
+ (auch ungünstige) Voreinstellungen keine Fehler darstellen.
+
+r1240 2012-07-17 08:54:45 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Von Axel Berger
+ gewünschter expliziter Hinweis auf das Offensichtliche ergänzt.
+
+r1239 2012-07-07 13:32:45 +0200 mjk:
+
+ * doc/, doc/ngerman/: Fixed: ein »sind« zuviel [Stephan Opfer]
+
+r1238 2012-07-05 10:29:01 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.12 BETA
+
+r1237 2012-07-05 10:28:17 +0200 mjk:
+
+ * releaselist.txt: release 2012/07/05 v3.11a
+
+r1235 2012-07-05 09:32:36 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.11a
+
+r1234 2012-06-29 17:54:11 +0200 mjk:
+
+ * TODO: Don't forget changes
+
+r1233 2012-06-15 20:59:39 +0200 mjk:
+
+ * scrlfile.dtx: improvement for last extension
+
+r1232 2012-06-15 20:53:02 +0200 mjk:
+
+ * TODO, scrlfile.dtx: \PreventPackageFromLoading* added (uses info
+ instead of warning)
+
+r1231 2012-06-13 16:03:03 +0200 mjk:
+
+ * scrlfile.dtx: one write fault error fixed [MHP]
+
+r1230 2012-06-12 12:03:42 +0200 mjk:
+
+ * scrlfile.dtx: Fixed: \PreventPackageFromLoading prevents only last
+ package [reported by MHP]
+
+r1229 2012-06-11 10:43:49 +0200 mjk:
+
+ * scrkernel-basics.dtx: \FamilyProcessOptions inside of classes do not
+ longer report unknown values to known keys a error, but as info only
+ and maybe as unused global option.
+
+r1228 2012-05-28 14:35:47 +0200 mjk:
+
+ * scrkernel-basics.dtx: make last fix more robust
+
+r1227 2012-05-28 13:46:29 +0200 mjk:
+
+ * scrkernel-basics.dtx: \FamilySetNumerical does not longer consume
+ known global options with unknown values
+
+r1226 2012-05-25 11:34:01 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.11a BETA
+
+r1225 2012-05-25 11:31:55 +0200 mjk:
+
+ * scrkernel-basics.dtx: Error/Info Message for unkown bool values at
+ \FamilySetBool fixed.
+
+r1224 2012-05-15 15:21:01 +0200 mjk:
+
+ * Makefile.baseinit, doc/, doc/Makefile: fix installation of
+ executables for v3.11
+
+r1223 2012-05-15 14:34:55 +0200 mjk:
+
+ * doc/, doc/Makefile, doc/Makefile.guide: fix structural changes for
+ v3.11
+
+r1222 2012-05-15 14:23:23 +0200 mjk:
+
+ * releaselist.txt: release 2012/05/15 v3.11
+
+r1221 2012-05-15 14:23:06 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.11
+
+r1220 2012-05-15 14:17:51 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/common-titles.tex:
+ broken links fixed
+
+r1219 2012-05-15 14:06:09 +0200 mjk:
+
+ * Makefile, Makefile.baseinit, manifest.txt, doc/, doc/guide.tex,
+ doc/linkalias.tex, doc/scrguide.cls, doc/Makefile.guide,
+ doc/ngerman/, doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/english/, doc/english/guide-english.tex: structural improvement
+
+r1218 2012-05-15 09:38:39 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/preface.tex: Told a little bit more
+ about the current work of translators and editors.
+
+r1217 2012-05-15 09:25:59 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/common-parmarkup.tex,
+ doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex, doc/english/common-dictum.tex,
+ doc/english/common-footnotes.tex, doc/english/common-lists.tex,
+ doc/english/common-draftmode.tex, doc/english/common-textmarkup.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/common-titles.tex,
+ doc/english/common-typearea.tex: Several improvements by Krickette
+ Murabayashi
+
+r1216 2012-05-11 10:08:07 +0200 mjk:
+
+ * scrcounter.dtx: first design and implementation of new package
+ scrcounter
+
+r1215 2012-04-24 14:38:51 +0200 mjk:
+
+ * scrkernel-sections.dtx: \addpart fixed [reported by Ulrike Fischer]
+
+r1214 2012-04-20 09:57:19 +0200 mjk:
+
+ * scrkernel-sections.dtx: docu fix
+
+r1213 2012-04-17 10:13:15 +0200 mjk:
+
+ * scrkernel-typearea.dtx, TODO, doc/, doc/ngerman/,
+ doc/ngerman/typearea-experts.tex, doc/english/,
+ doc/english/typearea-experts.tex: new \AfterSettingArea similar to
+ \AfterCalculatingArea but for \areaset
+
+r1212 2012-04-16 09:45:21 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrwfile.tex: »Verzeichnissn« -->
+ »Verzeichnissen« [gemeldet von Jonas Stein]
+
+r1211 2012-04-08 11:14:11 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/common-compatibility.tex:
+ translation improvement
+
+r1210 2012-04-04 14:37:56 +0200 mjk:
+
+ * tocbasic.dtx: Problems with undefined \autodot fixed.
+
+r1209 2012-04-02 09:54:42 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/common-compatibility.tex:
+ improvement by Krickette Murabayashi
+
+r1208 2012-04-02 09:24:24 +0200 mjk:
+
+ * doc/, doc/english/: improvement by Krickette Murabayashi
+
+r1207 2012-04-02 09:12:03 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: improvement by
+ Krickette Murabayashi
+
+r1206 2012-04-02 08:47:08 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/authorpart.tex: improvement by
+ Krickette Murabayashi
+
+r1204 2012-03-15 16:46:57 +0100 mjk:
+
+ * TODO: translation entries removed, scrwfile entry removed
+
+r1203 2012-03-15 16:45:32 +0100 mjk:
+
+ * LIESMICH.SVN: Informationen für Entwickler mit Mac OS X oder
+ Windows hinzugefügt
+
+r1201 2012-03-15 16:13:55 +0100 mjk:
+
+ * Makefile, doc/, doc/Makefile, doc/Makefile.guide, doc/ngerman/: rule
+ bindist fixed to work from scratch even
+
+r1200 2012-03-15 11:58:10 +0100 mjk:
+
+ * Makefile, Makefile.baseinit, doc/, doc/Makefile: rules distclean and
+ maintainclean improved
+
+r1198 2012-03-14 16:56:28 +0100 mjk:
+
+ * tocbasic.dtx, doc/, doc/english/, doc/english/preface.tex: primary
+ English documentation of package tocbasic completed
+
+r1197 2012-03-14 15:24:14 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Fehler, der während
+ der Ãœbersetzung entdeckt wurde, behoben.
+
+r1196 2012-03-14 09:34:56 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: coding changed
+ into us-ascii
+
+r1195 2012-03-14 09:30:32 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/guide-english.tex: auto-references
+ to parts use "part" instead of "Part"
+
+r1194 2012-03-14 09:29:31 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: translation
+ improvement by Krickette Murabayashi
+
+r1193 2012-03-13 17:27:23 +0100 mjk:
+
+ * tocbasic.dtx: one more step to an english manual
+
+r1192 2012-03-13 11:10:03 +0100 mjk:
+
+ * tocbasic.dtx: one more step to a complete English translation of the
+ manual
+
+r1191 2012-03-13 08:21:18 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: fix for loading everysel while
+ \begin{document}
+
+r1190 2012-03-13 08:20:24 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.10b BETA
+
+r1189 2012-03-12 10:43:56 +0100 mjk:
+
+ * README.SVN: same information for Windows or OS X users added
+
+r1188 2012-03-09 17:42:29 +0100 mjk:
+
+ * doc/, doc/plength.dtx: "%&latex" added to the generated tex files to
+ improve changes of using latex format
+
+r1187 2012-03-09 13:12:03 +0100 mjk:
+
+ * tocbasic.dtx: manual change only for one more step to an complete
+ translation of the German manual
+
+r1186 2012-03-09 13:11:11 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: fehlende Erklärung zu
+ noprotrusion
+
+r1185 2012-03-09 08:46:33 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: removed non-free files
+
+r1184 2012-03-09 08:46:20 +0100 mjk:
+
+ * doc/, doc/ngerman/: removed non-free files
+
+r1183 2012-03-09 08:33:38 +0100 mjk:
+
+ * manifest.txt, doc/, doc/ngerman/, doc/ngerman/scrwfile.tex,
+ doc/english/, doc/english/expertpart.tex, doc/english/scrhack.tex,
+ doc/english/authorpart.tex: these files should have been part of the
+ repository for several weeks
+
+r1182 2012-03-08 12:40:30 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-index.dtx: brackets at \idx@heading fixed [Jürgen
+ Spitzmüller]
+
+r1181 2012-03-06 18:08:46 +0100 mjk:
+
+ * manifest.txt, scrmain.ins, doc/, doc/ngerman/,
+ doc/ngerman/scrhack.tex, doc/english/, doc/english/Makefile,
+ doc/english/preface.tex: English scrhack.tex became a new translation
+ of the German scrhack.tex
+
+r1180 2012-03-05 19:01:48 +0100 mjk:
+
+ * scrhack.dtx, scrwfile.dtx, doc/, doc/guide.tex, doc/ngerman/,
+ doc/ngerman/scrbase.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex: some changes made while
+ translation of German manual into English
+
+r1179 2012-03-05 19:00:21 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/guide-english.tex, doc/english/common-draftmode.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex:
+ one more step to an english manual
+
+r1178 2012-03-05 18:59:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/preface.tex: one more
+ step to an english manual
+
+r1177 2012-02-29 13:37:04 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex: one more step
+ to an english manual
+
+r1176 2012-02-29 13:17:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex: one more step
+ to an english manual
+
+r1175 2012-02-29 10:40:08 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2-experts.tex: one more step
+ to an english manual
+
+r1174 2012-02-28 14:25:37 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex,
+ doc/english/preface.tex: one more chapter up-to-date
+
+r1173 2012-02-28 13:07:26 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ one more step to an english manual
+
+r1172 2012-02-27 13:37:21 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ one more step to an english manual
+
+r1171 2012-02-27 08:21:14 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle-experts.tex:
+ one more step to an english manual
+
+r1170 2012-02-26 16:57:34 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/guide-english.tex,
+ doc/english/scrbookreportarticle-experts.tex: one more step to an
+ english manual
+
+r1169 2012-02-26 16:11:55 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/common-marginpar.tex, doc/english/common-parmarkup.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/common-dictum.tex,
+ doc/english/scrextend.tex, doc/english/common-lists.tex,
+ doc/english/scrlttr2-experts.tex, doc/english/typearea-experts.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/preface.tex: one more step to an english manual
+
+r1168 2012-02-26 16:11:03 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-interleafpage.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/scrlfile.tex,
+ doc/english/scraddr.tex: ein paar kleinere Verbesserungen, die
+ während der Übersetzung aufgefallen sind
+
+r1167 2012-02-26 16:10:51 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/adrconvnote.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/scraddr.tex: ein paar kleinere Verbesserungen, die
+ während der Übersetzung aufgefallen sind
+
+r1166 2012-02-26 16:09:33 +0100 mjk:
+
+ * doc/, doc/guide.bib, doc/guide.tex, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/guide-ngerman.tex, doc/english/,
+ doc/english/guide-english.tex: one more step for the english manual
+
+r1165 2012-02-17 10:10:38 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: some more translations
+ and structural changes
+
+r1164 2012-02-16 19:27:20 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-textmarkup.tex: some more translations and
+ structural changes
+
+r1163 2012-02-16 19:26:31 +0100 mjk:
+
+ * doc/, doc/linkalias.tex, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/common-lists.tex:
+ some more translations and structural changes
+
+r1162 2012-02-16 18:35:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: some more translations
+ and structural changes
+
+r1161 2012-02-16 15:26:51 +0100 mjk:
+
+ * tocbasic.dtx: some more translations and structural changes
+
+r1160 2012-02-16 15:25:34 +0100 mjk:
+
+ * scrmain.ins, doc/, doc/Makefile, doc/guide.tex, doc/Makefile.guide,
+ doc/english/, doc/english/scrlttr2.tex, doc/english/Makefile,
+ doc/english/scrextend.tex, doc/english/preface.tex: some more
+ translations and structural changes
+
+r1159 2012-02-16 15:21:35 +0100 mjk:
+
+ * scrhack.dtx: docu macro \counter renamed into \Counter
+
+r1158 2012-02-16 10:51:20 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/common-draftmode.tex, doc/english/scrlttr2-experts.tex:
+ some more translations and structural changes
+
+r1157 2012-02-16 09:49:58 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrlttr2-experts.tex: some more translations and
+ structural changes
+
+r1156 2012-02-16 09:46:08 +0100 mjk:
+
+ * doc/, doc/guide.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrlttr2-experts.tex: some more translations and
+ structural changes
+
+r1155 2012-02-15 09:52:04 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1154 2012-02-15 09:26:21 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1153 2012-02-14 12:13:48 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1152 2012-02-14 09:56:23 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-marginpar.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1151 2012-02-14 09:35:15 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1150 2012-02-09 12:07:53 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1149 2012-02-09 10:35:02 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/common-lists.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1148 2012-02-08 16:57:47 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/common-dictum.tex: some more translations and structural
+ changes
+
+r1147 2012-02-08 15:27:28 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1146 2012-02-08 11:33:08 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1145 2012-02-07 13:47:54 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1144 2012-02-07 10:14:03 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex,
+ doc/english/common-footnotes.tex: some more translations and
+ structural changes
+
+r1143 2012-02-06 16:47:49 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/common-interleafpage.tex: some more translations and
+ structural changes
+
+r1142 2012-02-06 10:04:42 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-oddorevenpage.tex: some more translations and
+ structural changes
+
+r1141 2012-02-05 16:44:18 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-parmarkup.tex,
+ doc/english/scrbookreportarticle.tex: some more translations and
+ structural changes
+
+r1140 2012-02-05 13:23:36 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structural changes
+
+r1139 2012-02-05 11:40:19 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ translations and structural changes
+
+r1138 2012-02-05 11:11:34 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-textmarkup.tex, doc/english/common-titles.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex: some
+ more translations, structural changes and typografical optimizations
+
+r1137 2012-02-03 16:25:43 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: einige
+ Querverweise ergänzt
+
+r1136 2012-02-03 16:25:19 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: ein Leerzeichen
+ korrgiert
+
+r1135 2012-02-02 17:14:01 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex: some more translations and
+ structure changes
+
+r1134 2012-02-01 16:48:19 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/scrbookreportarticle-experts.tex,
+ doc/english/common-typearea.tex: some more translations and structure
+ changes
+
+r1133 2012-02-01 13:03:02 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-draftmode.tex: section
+ heading translated
+
+r1132 2012-02-01 13:01:54 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-draftmode.tex: date update
+
+r1131 2012-02-01 13:00:44 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-draftmode.tex: some more
+ translations and structure changes
+
+r1130 2012-02-01 12:58:18 +0100 mjk:
+
+ * doc/, doc/guide.tex, doc/english/,
+ doc/english/scrbookreportarticle.tex,
+ doc/english/common-draftmode.tex,
+ doc/english/scrbookreportarticle-experts.tex: some more translations
+ and structure changes
+
+r1129 2012-01-31 15:19:29 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: translation complete
+
+r1128 2012-01-31 14:50:22 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbase.tex,
+ doc/english/typearea-experts.tex, doc/english/typearea.tex,
+ doc/english/common-compatibility.tex, doc/english/introduction.tex:
+ some additions to the translation and some completely new
+ translations
+
+r1127 2012-01-13 10:44:09 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: updated
+ translation
+
+r1126 2012-01-13 10:43:45 +0100 mjk:
+
+ * doc/, doc/guide.tex: a very small step to update the structure of
+ the english user guide
+
+r1125 2012-01-12 11:31:42 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: missing \ at \Unit
+ fixed
+
+r1124 2012-01-12 11:24:09 +0100 mjk:
+
+ * scrmain.ins: conditional betas and beta releases should not be mixed
+ into same \generate
+
+r1123 2012-01-12 11:09:49 +0100 mjk:
+
+ * scrwfile.dtx, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/english/, doc/english/Makefile: use generated scrwfile.tex at
+ english guide
+
+r1122 2012-01-10 15:48:18 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for KOMA-Script 3.10
+
+r1121 2012-01-10 09:37:54 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ scrjura.dtx, manifest.txt, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, tocstyle.dtx, scrkernel-pseudolengths.dtx,
+ scrhack.dtx, scrpage.dtx, scrwfile.dtx, scrkernel-sections.dtx,
+ japanlco.dtx, scrkernel-miscellaneous.dtx, scrtime.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scraddr.dtx, scrlfile.dtx,
+ tocbasic.dtx, scrkernel-basics.dtx, doc/, doc/scrguide.ist,
+ doc/guide.bib, doc/Makefile, doc/guide.tex, doc/linkalias.tex,
+ doc/scrguide.gst, doc/scrguide.cls, doc/plength.dtx,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/ngerman/,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/guide-ngerman.tex, doc/ngerman/common-fontsize.tex,
+ doc/ngerman/expertpart.tex, doc/ngerman/common-interleafpage.tex,
+ doc/ngerman/scrdatetime.tex, doc/ngerman/adrconvnote.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/scrhack.tex, doc/ngerman/typearea.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/authorpart.tex,
+ doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/preface.tex, doc/ngerman/scraddr.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/common-marginpar.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/common-interleafpage.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/japanlco.tex, doc/english/common-footnotes.tex,
+ doc/english/common-lists.tex, doc/english/common-draftmode.tex,
+ doc/english/common-textmarkup.tex, doc/english/typearea.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx: Copyright -2012
+
+r1120 2012-01-10 09:07:15 +0100 mjk:
+
+ * manifest.txt, doc/, doc/guide.bib, doc/scrguide.cls, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/common-marginpar.tex, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/guide-ngerman.tex, doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2examples.dtx, doc/ngerman/common-draftmode.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/common-textmarkup.tex, doc/ngerman/scrhack.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/common-titles.tex, doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/preface.tex, doc/ngerman/scraddr.tex: documentation update
+ for KOMA-Script 3.10
+
+r1119 2011-10-26 14:55:03 +0200 mjk:
+
+ * scrkernel-basics.dtx: \ignorespaces at end of \begin{document}
+
+r1118 2011-09-30 10:34:57 +0200 mjk:
+
+ * scrjura.dtx: support for languages austrian and naustrian
+
+r1117 2011-09-30 10:11:56 +0200 mjk:
+
+ * scrjura.dtx: fix: broken par numbering with option number new: font
+ element contract.Paragraph changes: several minor KOMA-Script
+ compatibility changes
+
+r1116 2011-09-29 16:16:32 +0200 mjk:
+
+ * scrjura.dtx: ref=onlyparagraph added
+
+r1115 2011-09-29 12:14:00 +0200 mjk:
+
+ * scrjura.dtx: new options juratocindent and juratocnumberwidth for
+ configuration of indentation and number width of the entries at
+ table of contents
+
+r1114 2011-09-29 11:47:58 +0200 mjk:
+
+ * scrjura.dtx: option juratotoc allowes level values additional to
+ switches
+
+r1113 2011-09-29 11:11:14 +0200 mjk:
+
+ * scrjura.dtx: new option parnumber
+
+r1112 2011-09-28 10:56:37 +0200 mjk:
+
+ * Makefile, scrmain.ins, scrhack.dtx: scrhack has a new hack floatrow
+
+r1111 2011-09-28 08:53:11 +0200 mjk:
+
+ * scrkernel-paragraphs.dtx: fix: options parskip if package everysel
+ or tracefnt was loaded
+
+r1110 2011-09-27 08:56:10 +0200 mjk:
+
+ * scrkernel-sections.dtx: changed toc entry creation fixed
+
+r1109 2011-09-27 08:54:42 +0200 mjk:
+
+ * scrkernel-footnotes.dtx: fix: footnotes=multiple may be a class or
+ package option fix: footnotes=multiple with scrextend and standard
+ classes
+
+r1108 2011-09-22 11:02:23 +0200 mjk:
+
+ * Makefile, manifest.txt, doc/, doc/Makefile: scrwfile is part of
+ KOMA-Script
+
+r1107 2011-09-20 10:52:29 +0200 mjk:
+
+ * scrkernel-typearea.dtx: \storeareas stores \marginparwidth and
+ \marginparsep too
+
+r1106 2011-09-16 13:34:41 +0200 mjk:
+
+ * obsolete/scrlettr.dtx: \cite (war nur noch einer) beseitigt
+
+r1105 2011-09-16 12:54:46 +0200 mjk:
+
+ * scrmain.ins: visualize is not longer a permanent beta
+
+r1104 2011-09-13 16:57:43 +0200 mjk:
+
+ * scrkernel-typearea.dtx: new command \storeareas to store and restore
+ the current type area and margins
+
+r1103 2011-09-13 08:19:42 +0200 mjk:
+
+ * scrkernel-footnotes.dtx: fix: Option footnotes=multiple may be used
+ as class option workaround: Package setspace destroys
+ footnote=multiple
+
+r1102 2011-09-12 11:05:56 +0200 mjk:
+
+ * scrkernel-basics.dtx: unknown values for global options are not
+ longer errors and not longer removed from list of unknown global
+ options
+
+r1101 2011-09-11 18:14:15 +0200 mjk:
+
+ * scrwfile.dtx: several docu fixes by Patrick Häcker
+
+r1100 2011-09-09 11:53:12 +0200 mjk:
+
+ * scrkernel-sections.dtx: missing \par added
+
+r1099 2011-09-05 10:16:07 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: using \providecommand instead of
+ \newcommand at definition of \@textsubscript
+
+r1098 2011-09-02 13:46:49 +0200 mjk:
+
+ * scrkernel-floats.dtx: new environment: captionofbeside
+
+r1097 2011-09-02 10:26:53 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: new \dictumrule
+
+r1096 2011-09-01 12:07:38 +0200 mjk:
+
+ * doc/, doc/guide.bib: entry package:selinput
+
+r1095 2011-08-31 11:25:04 +0200 mjk:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx,
+ scrkernel-pagestyles.dtx, scrjura.dtx, scrkernel-listsof.dtx,
+ scrkernel-sections.dtx: Using \MakeMarkcase
+
+r1094 2011-08-30 12:55:46 +0200 mjk:
+
+ * doc/, doc/guide.bib: microtype entry
+
+r1093 2011-08-30 12:54:45 +0200 mjk:
+
+ * scrkernel-sections.dtx: Extension of optional argument of \part,
+ \chapter etc. activated by option headings=optiontotocandhead,
+ headings=optiontoheadandtoc, headings=optiontohead or
+ headings=optiontotoc. If the extension is activated and no = is at
+ the optional argument of \part, \chapter etc. the optional argument
+ will be used for running head and table of contents depending on the
+ value of headings:
+
+ - optiontotocandhead|optionstoheadandtoc: running head and table of contents;
+
+ - optiontohead: running head only;
+
+ - optiontotoc: table of contents only. If there is a = in the optional
+ argument of \part, \chapter etc. it will be interpreted as
+ key=value list with keys:
+
+ - tocentry=<value>: use <value> at table of contents;
+
+ - head=<value>: use <value> at running head. If the table of contents
+ argument is empty, no entry at table of contents will be
+ generated!
+
+r1092 2011-08-30 12:47:27 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: start 3.10 BETA
+
+r1091 2011-06-16 09:26:43 +0200 mjk:
+
+ * releaselist.txt: release 2011/06/16 v3.09a
+
+r1090 2011-06-16 09:26:10 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.09a
+
+r1089 2011-06-16 09:24:50 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/typearea.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex, doc/ngerman/introduction.tex:
+ some minor steps to the next book release
+
+r1088 2011-06-16 09:10:09 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \important
+
+r1087 2011-06-16 09:06:56 +0200 mjk:
+
+ * scrkernel-basics.dtx: new usage of \unexpanded fixed
+
+r1086 2011-06-07 08:33:40 +0200 mjk:
+
+ * scrkernel-basics.dtx: \FamilyOptions uses e-TeX command \unexpanded
+ to be more robust
+
+r1085 2011-05-30 15:29:06 +0200 mjk:
+
+ * tocbasic.dtx: fixed: floats may have an optional argument
+
+r1084 2011-04-13 10:13:57 +0200 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ \captionof, \captionaboveof und \captionbelowof dokumentiert
+
+r1083 2011-04-13 09:20:52 +0200 mjk:
+
+ * scrkernel-floats.dtx: fix: new \captionof feature
+
+r1082 2011-04-13 09:15:33 +0200 mjk:
+
+ * scrkernel-floats.dtx: \captionof sets \@captionabovetrue depending
+ on \csname if@\@captype captionabove\endcsname
+
+r1081 2011-04-12 10:40:47 +0200 mjk:
+
+ * tocbasic.dtx: again do not explicite mark if the TOC is numbered
+
+r1080 2011-04-12 10:40:09 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.09a BETA
+
+r1079 2011-04-05 09:05:02 +0200 mjk:
+
+ * releaselist.txt: release 2011/04/02 v3.09
+
+r1077 2011-04-05 08:58:11 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.09
+
+r1076 2011-04-05 08:52:55 +0200 mjk:
+
+ * TODO, doc/, doc/guide.bib, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: neue Werte für Option captions
+ dokumentiert
+
+r1075 2011-04-02 07:54:03 +0200 mjk:
+
+ * scrkernel-floats.dtx: new values for option "captions"
+
+r1074 2011-04-01 10:27:22 +0200 mjk:
+
+ * scrkernel-basics.dtx: fix: \Family@@Numical@@Key -->
+ \Family@@String@@Key
+
+r1073 2011-03-31 10:27:18 +0200 mjk:
+
+ * tocstyle.dtx: one comment changed
+
+r1072 2011-03-31 10:24:16 +0200 mjk:
+
+ * scrtime.dtx: one % added
+
+r1071 2011-03-31 10:21:23 +0200 mjk:
+
+ * scrkernel-variables.dtx: only indents changed
+
+r1070 2011-03-31 10:19:27 +0200 mjk:
+
+ * scrkernel-pseudolengths.dtx: only one indent changed
+
+r1069 2011-03-31 10:08:05 +0200 mjk:
+
+ * scrkernel-basics.dtx: \FamilyStringKey and \FamilyNumericalKey fixed
+ (thanks to Michael Pock)
+
+r1068 2011-03-23 19:10:35 +0100 mjk:
+
+ * TODO: neue Optionen und Anweisungen
+
+r1067 2011-03-23 19:03:00 +0100 mjk:
+
+ * tocbasic.dtx: todays change fixed
+
+r1066 2011-03-23 18:51:49 +0100 mjk:
+
+ * scrkernel-floats.dtx: new options `captions=top', `captions=bot',
+ `captions=figureabove', `captions=figurebelow' new commands
+ `\captionaboveof' and `\captionsbelowof'
+
+r1065 2011-03-23 15:46:02 +0100 mjk:
+
+ * tocbasic.dtx: *** empty log message ***
+
+r1064 2011-03-23 15:45:43 +0100 mjk:
+
+ * tocbasic.dtx: options "atbegin" and "atend" added to \DeclareNewTOC
+
+r1063 2011-03-10 09:38:30 +0100 mjk:
+
+ * TODO: new entry
+
+r1062 2011-03-10 09:37:34 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: Neue Sprache,
+ naustrian, dokumentiert
+
+r1061 2011-03-10 09:28:23 +0100 mjk:
+
+ * scrkernel-language.dtx: scrlttr2 supports language naustrian
+
+r1060 2011-03-09 12:46:48 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: Dokumentation von
+ \AfterClass!, \AfterPackage!, \AfterAtEndOfClass,
+ \AfterAtEndOfPackage
+
+r1059 2011-03-09 12:44:04 +0100 mjk:
+
+ * scrlfile.dtx: new: \AfterClass!, \AfterPackage!, \AfterAtEndOfClass,
+ \AfterAtEndOfPackage
+
+r1058 2011-03-08 19:48:43 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: Tippfehler korrigiert
+
+r1057 2011-03-08 18:29:55 +0100 mjk:
+
+ * scrlfile.dtx, doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: new
+ commands \AfterClass+ and \AfterPackage+ that wait until loading of
+ class or package has been finished
+
+r1056 2011-03-07 10:50:55 +0100 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: alte
+ Font-Elemente refname und refvalue dokumentiert; neue Werte
+ dateleft, dateright, nodate für Option refline dokumentiert
+
+r1055 2011-03-07 09:38:43 +0100 mjk:
+
+ * scrkernel-notepaper.dtx, TODO: new values dateleft, dateright, and
+ nodate for option refline
+
+r1054 2011-03-06 11:14:05 +0100 mjk:
+
+ * TODO: missing docu of font elements `refname' and `refvalue'
+
+r1053 2011-03-01 13:45:55 +0100 mjk:
+
+ * tocbasic.dtx: loop in using \@currext fixed
+
+r1051 2011-02-23 18:48:29 +0100 mjk:
+
+ * Makefile, scrmain.ins, scrkernel-fonts.dtx: new package
+ scrfontsizes.sty for generation of KOMA-Script compatible font
+ sizefiles
+
+r1050 2011-02-22 11:56:51 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: scrdate supports
+ austrian and naustrian now
+
+r1049 2011-02-22 11:39:28 +0100 mjk:
+
+ * scrtime.dtx, doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex,
+ doc/english/, doc/english/scrdatetime.tex: scrdate supports austrian
+ and naustrian now
+
+r1048 2011-02-22 10:15:41 +0100 mjk:
+
+ * scrkernel-fonts.dtx: \@listiv, \@listv, and \listvi fixed at
+ \changefontsizes
+
+r1046 2011-02-22 09:40:35 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.08b BETA
+
+r1045 2011-02-19 10:50:59 +0100 mjk:
+
+ * releaselist.txt: release 2011/02/19 v3.08a
+
+r1044 2011-02-19 10:49:40 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.08a
+
+r1043 2011-02-11 08:59:34 +0100 mjk:
+
+ * scrlfile.dtx: internal \@gobbleopt renamed due to a compatibility
+ issue with ntheorem [once again reported by Rolf Niepraschk]
+
+r1042 2011-02-09 18:51:45 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Neue Variablen
+ firsthead, firstfoot, nexthead, nextfoot und die Empfehlung die
+ überholten Anweisungen \firshead, \firstfoot, \nexthead, \nextfoot
+ nicht mehr zu verwenden.
+
+r1041 2011-02-09 18:37:55 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Variablen firsthead,
+ firstfoot, nexthead, nextfoot dokumentiert
+
+r1040 2011-01-25 18:10:52 +0100 mjk:
+
+ * scrkernel-typearea.dtx: file date changed
+
+r1039 2011-01-25 18:05:51 +0100 mjk:
+
+ * scrkernel-typearea.dtx: missing % at one \AtBeginDocument added
+
+r1038 2011-01-25 18:04:26 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.08a BETA
+
+r1037 2011-01-25 09:02:16 +0100 mjk:
+
+ * releaselist.txt: release 2011/01/25 v3.08
+
+r1036 2011-01-25 09:00:57 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.08
+
+r1035 2011-01-25 08:58:29 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: last change of \nexthead fixed
+
+r1034 2011-01-22 12:56:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: Tippfehler
+ bei listof=entryprefix korrigiert
+
+r1033 2011-01-20 11:37:25 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ scrjura.dtx, scrkernel-listsof.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, tocstyle.dtx, scrkernel-pseudolengths.dtx,
+ scrhack.dtx, scrpage.dtx, scrwfile.dtx, scrkernel-sections.dtx,
+ japanlco.dtx, scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ scrextend.dtx, scraddr.dtx, scrlfile.dtx, tocbasic.dtx,
+ scrkernel-basics.dtx, doc/, doc/scrguide.ist, doc/Makefile,
+ doc/guide.tex, doc/linkalias.tex, doc/scrguide.cls, doc/plength.dtx,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/common-marginpar.tex, doc/ngerman/common-parmarkup.tex,
+ doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/common-fontsize.tex, doc/ngerman/expertpart.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/adrconvnote.tex,
+ doc/ngerman/common-dictum.tex, doc/ngerman/common-options.tex,
+ doc/ngerman/common-footnotes.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2examples.dtx, doc/ngerman/common-draftmode.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/authorpart.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/preface.tex, doc/ngerman/scraddr.tex, doc/english/,
+ doc/english/common-marginpar.tex, doc/english/common-parmarkup.tex,
+ doc/english/Makefile, doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/common-interleafpage.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/japanlco.tex, doc/english/common-footnotes.tex,
+ doc/english/common-lists.tex, doc/english/common-draftmode.tex,
+ doc/english/common-textmarkup.tex, doc/english/typearea.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx: Update of Copyright date
+
+r1032 2011-01-20 11:08:24 +0100 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ Font-Element "chapterprefix", das seit Version 2.96a existiert,
+ dokumentiert.
+
+r1031 2011-01-20 10:33:04 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: Anweisungen
+ \PreventPackageFromLoading, \StorePreventPackageFromLoading,
+ \ResetPreventPackageFromLoading dokumentiert
+
+r1030 2011-01-20 09:01:41 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: compilation error
+ fixed
+
+r1029 2011-01-20 09:00:32 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: scrlttr2 supports
+ swedish (Benjamin Hell)
+
+r1028 2011-01-20 08:56:03 +0100 mjk:
+
+ * scrkernel-language.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrlttr2-experts.tex: scrlttr2 supports swedish (Benjamin
+ Hell)
+
+r1027 2011-01-18 12:50:07 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: Dank Benjamin Hell
+ werden nun auch Schwedisch und Dänish von scrdate unterstützt.
+
+r1026 2011-01-18 12:43:01 +0100 mjk:
+
+ * scrtime.dtx: new languages swedish and danish (Benjamin Hell)
+
+r1025 2011-01-10 15:06:24 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: output of fields address and
+ location fixed at visualize.lco
+
+r1024 2010-12-14 11:20:44 +0100 mjk:
+
+ * tocbasic.dtx: \tocbasicautomode fixed
+
+r1023 2010-12-14 10:51:53 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx, doc/, doc/ngerman/,
+ doc/ngerman/common-parmarkup.tex: new option parskip=never to avoid
+ vertical stretching of paragraphs with \flushbottom
+
+r1022 2010-12-14 10:38:13 +0100 mjk:
+
+ * scrkernel-basics.dtx: checksum fixed
+
+r1021 2010-12-14 10:37:40 +0100 mjk:
+
+ * scrkernel-basics.dtx: - empty element at options list fixed -
+ warning for unexpected usage of \AfterKOMAoptions fixed
+
+r1020 2010-11-22 17:50:57 +0100 mjk:
+
+ * doc/, doc/guide.bib: fixed: Johannes Braams [thanks to Dietrich
+ Grau]
+
+r1019 2010-11-05 16:13:02 +0100 mjk:
+
+ * TODO: new entries
+
+r1018 2010-11-05 16:11:17 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: \FamilyStringKey
+ dokumentiert
+
+r1017 2010-11-05 15:37:31 +0100 mjk:
+
+ * scrkernel-basics.dtx: fix for \Family@@String@@Key
+
+r1016 2010-11-05 15:24:59 +0100 mjk:
+
+ * scrkernel-basics.dtx: new: \FamilyStringKey
+
+r1015 2010-11-05 12:22:30 +0100 mjk:
+
+ * scrkernel-basics.dtx: Allow empty elements at option list of
+ \KOMAoptions and \FamilyOptions and value list of \KOMAoption and
+ \FamilyOption. CAVEAT: BREAKS SPECIFICATION!
+
+r1014 2010-11-05 11:52:31 +0100 mjk:
+
+ * scrlfile.dtx: file date fixed
+
+r1013 2010-11-05 11:51:56 +0100 mjk:
+
+ * scrlfile.dtx: allow \PreventPackageFromLoading,
+ \ResetPreventPackageFromLoading, and \StorePreventPackageFromLoading
+ at preamble only
+
+r1012 2010-11-05 11:28:52 +0100 mjk:
+
+ * scrwfile.dtx: Options documentation fixed
+
+r1011 2010-11-04 13:23:17 +0100 mjk:
+
+ * scrlfile.dtx: new \PreventPackageFromLoading,
+ \ResetPreventPackageFromLoading, \StorePreventPackageFromLoading
+
+r1010 2010-11-04 10:46:27 +0100 mjk:
+
+ * scrkernel-floats.dtx: space needed for captionbeside should be
+ independent of vertical alignment
+
+r1009 2010-11-04 10:40:11 +0100 mjk:
+
+ * scrkernel-floats.dtx: vertical alignment of captionbeside in case of
+ t- or b-placement fixed
+
+r1008 2010-11-01 21:13:17 +0100 mjk:
+
+ * scrkernel-listsof.dtx, scrkernel-sections.dtx: new:
+ \addchaptertocentry, \addparttocentry
+
+r1007 2010-10-28 11:55:30 +0200 mjk:
+
+ * scrkernel-compatibility.dtx: checksum fixed
+
+r1006 2010-10-28 11:55:02 +0200 mjk:
+
+ * scrkernel-compatibility.dtx: 3.07a removed because never existed
+
+r1005 2010-10-28 11:54:00 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.08 BETA
+
+r1004 2010-10-28 11:51:40 +0200 mjk:
+
+ * scrlfile.dtx: don't care about already existing
+ \protected@immediate@write, just define it
+
+r1003 2010-10-28 11:49:47 +0200 mjk:
+
+ * scrkernel-notepaper.dtx, scrkernel-variables.dtx,
+ scrkernel-pagestyles.dtx: \firsthead, \nexthead, \firtfoot, \nextfoot
+ are deprecated and replaced by variables
+
+r1002 2010-10-20 10:49:11 +0200 mjk:
+
+ * Makefile: fix last change
+
+r1001 2010-10-20 10:48:46 +0200 mjk:
+
+ * Makefile: prepare replaces indirect \ifbeta definition too
+
+r1000 2010-10-20 10:41:44 +0200 mjk:
+
+ * scrwfile.dtx: block order changed at dtx file
+
+r999 2010-10-19 09:28:00 +0200 mjk:
+
+ * scrwfile.dtx: internal command prefix `tst@' replaced by `scrwfile@'
+
+r998 2010-10-05 09:15:57 +0200 mjk:
+
+ * scrwfile.dtx: added BerliOS to release sources
+
+r997 2010-10-04 15:45:41 +0200 mjk:
+
+ * scrwfile.dtx: first alpha of new package scrwfile
+
+r996 2010-09-30 15:13:22 +0200 mjk:
+
+ * scrlfile.dtx: \protected@immediate@write added
+
+r995 2010-09-30 10:58:13 +0200 mjk:
+
+ * scrmain.ins: usage of tocbasic rule load extension
+
+r994 2010-09-30 10:57:24 +0200 mjk:
+
+ * tocbasic.dtx: load rule extended: may be used by package load rules
+ too
+
+r993 2010-09-30 10:56:40 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ KOMA-Script 3.07a BETA
+
+r992 2010-09-17 18:10:51 +0200 mjk:
+
+ * TODO: translation leak added
+
+r991 2010-09-17 11:11:10 +0200 mjk:
+
+ * releaselist.txt: release 2010/09/17 v3.07
+
+r990 2010-09-17 10:55:45 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.07
+
+r989 2010-09-17 10:20:13 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: pagestyle bug fixed at
+ \cleardoubleoddpageusingstyle, \cleardoubleevenpageusingstyle,
+ \cleardoublepageusingstyle
+
+r988 2010-09-14 12:41:11 +0200 mjk:
+
+ * doc/, doc/linkalias.tex, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex: neues Font-Element
+ "footnoterule" dokumentiert
+
+r987 2010-09-14 11:55:32 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ KOMA-Script 3.07 BETA
+
+r986 2010-09-14 11:51:44 +0200 mjk:
+
+ * scrkernel-footnotes.dtx: new font element footnoterule to allow
+ color changes of the foot note separation rule
+
+r985 2010-09-14 11:30:57 +0200 mjk:
+
+ * tocbasic.dtx: expand the arguments of \addtotoclist while adding
+ them to the internal list of known pairs of extensions and owners
+
+r984 2010-09-02 17:15:55 +0200 mjk:
+
+ * scrkernel-version.dtx, scrmain.ins, scrextend.dtx: scrextend
+ identification added
+
+r983 2010-08-24 15:17:25 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Fehler in
+ Faltmarkentabelle korrigiert [gemeldet von Adrian Devries]
+
+r982 2010-07-29 20:29:14 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: vertical alignment of addresse with parskip
+ setting different from false fixed
+
+r981 2010-06-30 10:51:52 +0200 mjk:
+
+ * doc/, doc/Makefile: scrbase.html and tocbasic.html added
+
+r980 2010-06-30 10:51:31 +0200 mjk:
+
+ * manifest.txt: scrbase.html and tocbasic.html added
+
+r979 2010-06-17 11:14:29 +0200 mjk:
+
+ * scrjura.dtx: copyright date of generated files fixed
+
+r976 2010-06-17 10:44:55 +0200 mjk:
+
+ * scrjura.dtx: "beta" removed from version number to not compromise
+ the LPPL
+
+r975 2010-06-17 09:54:01 +0200 mjk:
+
+ * releaselist.txt: release 2010/06/17 v3.06
+
+r974 2010-06-17 09:53:42 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.06
+
+r973 2010-06-17 09:52:53 +0200 mjk:
+
+ * TODO: updated
+
+r972 2010-06-09 10:52:24 +0200 mjk:
+
+ * tocbasic.dtx: documentation of noprotrusion changed
+
+r971 2010-06-09 10:33:04 +0200 mjk:
+
+ * scrkernel-sections.dtx: usage of font element "sectioning" replaced
+ by usage of font element "disposition"
+
+r970 2010-06-09 10:32:03 +0200 mjk:
+
+ * tocbasic.dtx: deactivate protrusion at TOCs if microtype was loaded
+ and feature "noprotrusion" was not set
+
+r969 2010-06-07 16:47:10 +0200 mjk:
+
+ * scrjura.dtx: \changes hinzugefügt bzw. korrigiert
+
+r968 2010-06-07 16:26:51 +0200 mjk:
+
+ * scrjura.dtx: Neue Optionen "ref=nopar" (schaltet die Ausgabe der
+ Absatznummer bei \ref und \refPar ab), "ref=nosentence" (schaltet
+ die Ausgabe der Satznummer bei \ref und \refSentence ab),
+ "ref=OnlyParagraph" (kombiniert nopar und nosentence).
+
+r967 2010-06-02 17:31:34 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/tocbasic.tex: neue Anweisungen dokumentiert
+
+r966 2010-06-02 17:30:45 +0200 mjk:
+
+ * scrkernel-sections.dtx: setting of feature chapteratlist moved to
+ scrkliof.dtx
+
+r965 2010-06-02 17:28:54 +0200 mjk:
+
+ * doc/, doc/ngerman/: neue Anweisung \setfootnoterule dokumentiert
+
+r964 2010-06-02 17:21:21 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Trennung von
+ "Papierformatumschaltung" korrigiert
+
+r963 2010-06-02 15:20:55 +0200 mjk:
+
+ * scrkernel-listsof.dtx: settings of option "listof" (also indirekt
+ via toc) are valid for all "list of"s of tocbasic owner float, even
+ if they are not yet defined
+
+r962 2010-06-02 12:07:57 +0200 mjk:
+
+ * scrpage.dtx: \if@twoside load time dependency changed into
+ \if@twoside run time dependency
+
+r961 2010-06-02 12:05:46 +0200 mjk:
+
+ * tocbasic.dtx: new command \DeclareNewTOC
+
+r960 2010-06-02 11:43:45 +0200 mjk:
+
+ * scrkernel-listsof.dtx: new option "listof=entryprefix"; new internal
+ macros \numberline@prefix, \numberline@postfix,
+ \numberline@numberformat, \numberline@box, that may be used to
+ change the behaviour of \numberline
+
+r959 2010-04-29 12:55:13 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: vertical alignment of addmargin
+ after \par with \parskip>0 fixed
+
+r958 2010-04-28 10:56:17 +0200 mjk:
+
+ * scrjura.dtx: write the type of a label into the label
+
+r957 2010-04-28 10:00:14 +0200 mjk:
+
+ * scrjura.dtx: error message fixed
+
+r956 2010-04-28 09:59:52 +0200 mjk:
+
+ * scrjura.dtx: error message fixed
+
+r955 2010-04-28 09:59:26 +0200 mjk:
+
+ * scrjura.dtx: some optimizations and one missing error message added
+
+r954 2010-04-26 11:13:43 +0200 mjk:
+
+ * scrjura.dtx: some optimizations at writing \newmaxpars into aux and
+ at \getmaxpars
+
+r953 2010-04-23 10:51:25 +0200 mjk:
+
+ * doc/, doc/guide.tex, doc/scrguide.cls, doc/Makefile.guide,
+ doc/ngerman/: link to other language using package bookmark
+
+r952 2010-04-05 19:31:04 +0200 mjk:
+
+ * scrjura.dtx: version number (patch level) increased
+
+r951 2010-04-05 19:30:07 +0200 mjk:
+
+ * scrjura.dtx: new option juratitlepagebreak
+
+r950 2010-04-03 19:40:32 +0200 mjk:
+
+ * scrkernel-footnotes.dtx: new command \setfootnoterule and some
+ helper macros for the new command
+
+r949 2010-03-24 09:25:03 +0100 mjk:
+
+ * Makefile: scrtime.ins does not longer exist
+
+r948 2010-03-24 09:22:20 +0100 mjk:
+
+ * scrmain.ins, scrkernel-fonts.dtx: \setkomafont, \addtokomafont,
+ \usekomafton, \newkomafont, \aliaskomafont moved to package scrkbase
+
+r947 2010-03-18 16:01:23 +0100 mjk:
+
+ * scrkernel-typearea.dtx, doc/, doc/ngerman/,
+ doc/ngerman/typearea.tex: option pagesize supports new output driver
+ dvipdfmx
+
+r946 2010-03-18 15:40:08 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: usage of package marginnote to set the
+ change marks
+
+r945 2010-03-18 12:33:32 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: 3.05a is not a new compatibility level
+
+r944 2010-03-18 12:32:36 +0100 mjk:
+
+ * scrkernel-typearea.dtx: remove not correct working geometry change
+
+r943 2010-03-18 11:54:38 +0100 mjk:
+
+ * scrkernel-typearea.dtx: file date an version fixed
+
+r942 2010-03-18 11:54:00 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx: if
+ compatibility is at least 3.05a typearea shares binding correction
+ with binding offset of package geometry
+
+r941 2010-03-14 10:08:21 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlfile.tex: fehlende \ChangedAt
+ und fehlende Doku zu \AfterReadingMainAux ergänzt
+
+r940 2010-03-12 11:48:23 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: Ein paar Fehlerchen
+ korrigiert und Kritik von Alexander umgesetzt.
+
+r939 2010-03-11 11:20:56 +0100 mjk:
+
+ * TODO, doc/, doc/ngerman/, doc/ngerman/scrdatetime.tex: Die
+ Anweisungen \CenturyPart, \DecadePart, \DayNumber,
+
+ \ISODayNumber, \DayName, \ISODayName, \DayNameByNumber, \ISOToday,
+
+ \IsoToday, \todaysnumber sind dokumentiert (scrdate). Die Änderung
+ bezüglich Option 12h ist dokumentiert (scrtime).
+
+r938 2010-03-11 09:46:00 +0100 mjk:
+
+ * scrtime.dtx: New command \todaysnumber
+
+r937 2010-03-11 08:42:19 +0100 mjk:
+
+ * scrtime.dtx: new command \IsoToday
+
+r936 2010-03-10 19:21:09 +0100 mjk:
+
+ * TODO: undocumented commands added
+
+r935 2010-03-10 19:18:39 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbase.tex: \XdivY und \XmodY
+ dokumentiert
+
+r934 2010-03-10 18:45:25 +0100 mjk:
+
+ * scrtime.dtx: New commands \CenturyPart, \DecadePart, \DayNumber,
+ \ISODayNumber, \DayName, \ISODayName, \DayNameByNumber, \ISOToday at
+ package scrdate
+
+r933 2010-03-10 18:27:23 +0100 mjk:
+
+ * manifest.txt: scrtime.ins is not longer part of KOMA-Script
+
+r932 2010-03-10 15:33:59 +0100 mjk:
+
+ * scrmain.ins, scrtime.dtx, scrkernel-basics.dtx: scrtime and new
+ written scrdate handled by scrmain.ins, \XdivY and \XmodY added to
+ scrbase (used by scrdate)
+
+r931 2010-03-10 13:03:30 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.05a BETA
+
+r930 2010-02-15 11:49:41 +0100 mjk:
+
+ * releaselist.txt: release 2010/02/15 v3.05
+
+r929 2010-02-15 11:48:37 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.05
+
+r928 2010-02-15 11:38:37 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: missing
+ \ChangedAt entries added
+
+r927 2010-02-09 10:41:50 +0100 mjk:
+
+ * TODO: some TODOs removed
+
+r926 2010-02-09 10:38:52 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-listsandtabulars.dtx, scrdoc.dtx, scrjura.dtx,
+ scrkernel-listsof.dtx, scrkernel-letterclassoptions.dtx, scrmain.ins,
+ scrkxflo.dtx, Makefile.baserules, tocstyle.dtx,
+ scrkernel-pseudolengths.dtx, scrpage.dtx, scrkernel-sections.dtx,
+ japanlco.dtx, scrkernel-miscellaneous.dtx, scrtime.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scraddr.dtx, scrlfile.dtx,
+ tocbasic.dtx, doc/, doc/scrguide.ist, doc/koma-script.html,
+ doc/guide.bib, doc/Makefile, doc/guide.tex, doc/linkalias.tex,
+ doc/scrguide.cls, doc/plength.dtx, doc/Makefile.guide,
+ doc/Makefile.latexinit, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbase.tex, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/common-fontsize.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/expertpart.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/adrconvnote.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/common-lists.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2examples.dtx,
+ doc/ngerman/common-draftmode.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/authorpart.tex,
+ doc/ngerman/scrlfile.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex, doc/ngerman/introduction.tex,
+ doc/ngerman/preface.tex, doc/ngerman/scraddr.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/common-marginpar.tex,
+ doc/english/common-parmarkup.tex, doc/english/Makefile,
+ doc/english/common-fontsize.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/common-interleafpage.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/common-dictum.tex,
+ doc/english/japanlco.tex, doc/english/common-footnotes.tex,
+ doc/english/common-lists.tex, doc/english/common-draftmode.tex,
+ doc/english/common-textmarkup.tex, doc/english/typearea.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/scrlfile.tex,
+ doc/english/common-titles.tex, doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx: * it's 2010 * user documentation of pseudo
+ lengths "firstheadhpos" and "firstheadvpos" added
+
+r925 2010-02-05 09:20:36 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: \pagemark changed to allow last element of
+ pagenumber may expect an argument
+
+r924 2010-02-02 09:18:46 +0100 mjk:
+
+ * scrkernel-basics.dtx: improved stability of \FamilyExecuteOptions
+
+r923 2010-01-29 15:25:24 +0100 mjk:
+
+ * scrkernel-basics.dtx: some \edef replaced by \protected@edef to fix
+ e.g. \ifstr and \FamilyOptions
+
+r922 2010-01-26 10:13:44 +0100 mjk:
+
+ * scrhack.dtx: deactivation of hyperref hack if hyperref since v6.79h
+ detected
+
+r921 2010-01-18 12:26:40 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-parmarkup.tex: parskip table
+ fixed [reported by Aradan]
+
+r920 2010-01-05 16:20:01 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: Tippfehler korrigiert
+
+r919 2010-01-05 16:19:36 +0100 mjk:
+
+ * tocbasic.dtx: \BeforeStartingTOC, \AfterStartingTOC, \BeforeTOCHead,
+ \AfterTOCHead fixed [error reported by Rolf Niepraschk]
+
+r918 2009-12-15 08:44:51 +0100 mjk:
+
+ * scrhack.dtx: several docu fixes by Jens Kubieziel
+
+r917 2009-11-28 12:00:45 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/common-typearea.tex:
+r916 2009-11-28 11:57:23 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrbookreportarticle.tex: Ligaturverhinderung im Index
+ wegen neuer hyperref-Version geändert
+
+r915 2009-11-28 11:53:56 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/common-marginpar.tex,
+ doc/english/common-parmarkup.tex, doc/english/common-fontsize.tex,
+ doc/english/common-interleafpage.tex, doc/english/common-dictum.tex,
+ doc/english/common-footnotes.tex, doc/english/common-lists.tex,
+ doc/english/common-draftmode.tex, doc/english/common-textmarkup.tex,
+ doc/english/common-oddorevenpage.tex, doc/english/common-titles.tex,
+ doc/english/common-compatibility.tex,
+ doc/english/common-typearea.tex: common.tex splitted
+
+r914 2009-11-28 11:53:21 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/common-marginpar.tex,
+ doc/ngerman/common-parmarkup.tex, doc/ngerman/common-fontsize.tex,
+ doc/ngerman/common-interleafpage.tex, doc/ngerman/common-dictum.tex,
+ doc/ngerman/common-options.tex, doc/ngerman/common-footnotes.tex,
+ doc/ngerman/common-lists.tex, doc/ngerman/common-draftmode.tex,
+ doc/ngerman/common-textmarkup.tex,
+ doc/ngerman/common-oddorevenpage.tex, doc/ngerman/common-titles.tex,
+ doc/ngerman/common-compatibility.tex,
+ doc/ngerman/common-typearea.tex: common.tex splitted
+
+r913 2009-11-28 11:35:29 +0100 mjk:
+
+ * Makefile.baseinit: workaround for behaviour change (bug?) of
+ kpsewhich 5.0.0
+
+r912 2009-11-28 11:16:05 +0100 mjk:
+
+ * scrkernel-basics.dtx: spellfix: internally
+
+r911 2009-11-11 16:44:30 +0100 mjk:
+
+ * tocstyle.dtx: improve handling of standard classes
+
+r910 2009-11-11 11:33:18 +0100 mjk:
+
+ * tocstyle.dtx, scrpage.dtx, scrkernel-sections.dtx: part is always
+ level -1
+
+r909 2009-11-11 10:35:40 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: checksum fixed
+
+r908 2009-11-11 09:38:32 +0100 mjk:
+
+ * TODO: TODO entries about "firstheadhpos" and "firstfoothpos"
+
+r907 2009-11-09 16:28:43 +0100 mjk:
+
+ * scrkernel-notepaper.dtx, scrkernel-letterclassoptions.dtx: new
+ pseudo lengths supported
+
+r906 2009-11-09 16:04:39 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: New pseudo-lengths "firstheadhpos" and
+ "firstfoothpos".
+
+r905 2009-11-09 11:48:51 +0100 mjk:
+
+ * tocstyle.dtx: fix: toc indentation should use parent max values but
+ will terminate later
+
+r904 2009-11-09 10:25:24 +0100 mjk:
+
+ * scrhack.dtx: load hyperref hack earlier (after loading hyperref and
+ the hyperref driver files)
+
+r903 2009-09-05 15:45:26 +0200 mjk:
+
+ * TODO: microtype-TODO für tocbasic aufgenommen
+
+r902 2009-08-05 11:43:27 +0200 mjk:
+
+ * scrhack.dtx: changed order of options and commands to make it more
+ robust for different package loading orders
+
+r901 2009-08-05 11:41:44 +0200 mjk:
+
+ * scrkernel-basics.dtx: version number at \changes fixed
+
+r900 2009-08-05 11:40:51 +0200 mjk:
+
+ * scrkernel-floats.dtx: version number at \changed fixed
+
+r899 2009-08-05 11:40:00 +0200 mjk:
+
+ * scrkernel-listsof.dtx: version number at \changed fixed
+
+r898 2009-07-24 19:54:31 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.05 BETA
+
+r897 2009-07-24 19:32:25 +0200 mjk:
+
+ * releaselist.txt: release v3.04a 2009/07/24
+
+r896 2009-07-24 17:48:46 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.04a
+
+r895 2009-07-24 15:53:30 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx: generation of KOMAold fixed
+
+r894 2009-07-24 11:59:07 +0200 mjk:
+
+ * tocstyle.dtx: documentation of commands \showtoc, \aliastoc,
+ \tocstyleTOC, \tocstyleAliasTOC, \tocstyledepth, and \iftochasdepth
+ added.
+
+r893 2009-07-15 16:53:14 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: new comment for pdfborderstyle={/S/U/W 1}
+
+r892 2009-07-15 11:22:44 +0200 mjk:
+
+ * manifest.txt: common.tex splitted into single common-<nr>.tex files
+
+r891 2009-07-15 11:21:06 +0200 mjk:
+
+ * doc/, doc/scrguide.cls, doc/Makefile.guide, doc/ngerman/,
+ doc/english/: common.tex splitted into single common-<nr>.tex files
+
+r890 2009-07-14 10:01:30 +0200 mjk:
+
+ * scrkernel-title.dtx: Option titlepage may be changed after loading
+ using \KOMAoptions.
+
+r889 2009-07-10 15:41:10 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: documentation of
+ element "pagefoot" in table and description changed
+
+r888 2009-07-08 10:30:58 +0200 mjk:
+
+ * TODO: update of the much to old TODO list
+
+r887 2009-07-08 10:25:15 +0200 mjk:
+
+ * scrkernel-floats.dtx: \captionof added
+
+r886 2009-07-08 09:16:19 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.05 BETA
+
+r885 2009-07-07 18:23:22 +0200 mjk:
+
+ * releaselist.txt: Release 2009/07/07 3.04
+
+r884 2009-07-07 17:54:28 +0200 mjk:
+
+ * scrstrip.inc: beta comment changed
+
+r881 2009-07-07 11:48:32 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx, scrmain.ins:
+ some files may be beta but nevertheless may be distributed since
+ KOMA-Script 3.04
+
+r880 2009-07-07 11:00:10 +0200 mjk:
+
+ * scrmain.ins: UScommercial9.lco and UScommercial9DW.lco are still
+ beta
+
+r879 2009-07-07 10:15:05 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex: ChangeLog
+ entry for visualize.lco fixed
+
+r878 2009-07-07 10:14:10 +0200 mjk:
+
+ * scrkernel-compatibility.dtx: version number of 3.03, 3.03a, and
+ 3.03b fixed
+
+r876 2009-06-30 16:08:16 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex: deutsche Dokumentation von
+ UScommercial9.lco UScommercial9DW.lco und visualize.lco
+
+r875 2009-06-30 13:06:19 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx: CheckSum fixed
+
+r874 2009-06-30 12:31:53 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx: \showfieldcolor replaced by font
+ element field
+
+r873 2009-06-30 12:24:02 +0200 mjk:
+
+ * Makefile, scrkernel-letterclassoptions.dtx, scrmain.ins: Do not
+ longer create USletter2w.lco; renamed USletterC9DW.lco into
+ UScommercial9DW.lco; new LCO UScommercial9.lco.
+
+r872 2009-06-30 08:33:44 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: spelling of ``addressee'' fixed
+
+r871 2009-06-29 18:59:41 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx, scrmain.ins: new LCO USletterC9DW
+
+r870 2009-06-26 14:01:27 +0200 mjk:
+
+ * Makefile, scrkernel-letterclassoptions.dtx, scrmain.ins: new lco
+ files visualize.lco and USletter2w.lco startet
+
+r869 2009-06-25 11:09:46 +0200 mjk:
+
+ * scrkernel-notepaper.dtx, scrkernel-letterclassoptions.dtx:
+ implementation of sender and addressee field fits documentation
+ (sender does not longer increase height of addresse)
+
+r868 2009-06-25 10:21:40 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: vertical alignment of addressee and usage
+ of \@savevbox fixed
+
+r867 2009-06-12 12:20:48 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: lco files sorted
+
+r866 2009-06-12 11:13:49 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Reihenfolge der
+ NF-Dateien korrigiert
+
+r865 2009-06-09 11:46:44 +0200 mjk:
+
+ * scrkernel-sections.dtx: workaround for undocumented problem of
+ hyperref with \relax at \the<Counter>
+
+r864 2009-06-08 09:24:37 +0200 mjk:
+
+ * tocbasic.dtx: typo fixed at usage of \doforeachtocfile
+
+r863 2009-05-11 12:09:06 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: scrextend has font elements
+ labelinglabel and labelingseparator
+
+r862 2009-04-21 10:48:00 +0200 mjk:
+
+ * Makefile: new Letter Class Option NF.lco
+
+r861 2009-04-21 10:45:52 +0200 mjk:
+
+ * scrkernel-letterclassoptions.dtx, scrmain.ins, doc/, doc/guide.bib,
+ doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex, doc/english/,
+ doc/english/scrlttr2.tex: new Letter Class Option NF.lco
+
+r860 2009-04-21 09:06:07 +0200 mjk:
+
+ * tocbasic.dtx: one indirect message changed
+
+r859 2009-04-21 08:56:43 +0200 mjk:
+
+ * scrkernel-sections.dtx: One »~« replaced by »\nobreakspace« to
+ improve compatibility with Spanish (babel).
+
+r858 2009-04-21 08:55:07 +0200 mjk:
+
+ * scrkernel-sections.dtx: one »~« replaced by »\nobreakspace«
+
+r857 2009-04-12 19:55:30 +0200 mjk:
+
+ * scrhack.dtx: \ProvidesFile for the hak-files fixed
+
+r856 2009-04-12 19:55:05 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.03b BETA
+
+r855 2009-04-06 09:07:57 +0200 mjk:
+
+ * Makefile: missing *.hak files added
+
+r854 2009-04-03 16:48:18 +0200 mjk:
+
+ * releaselist.txt: release 2009/04/03 v3.03a
+
+r853 2009-04-03 16:17:23 +0200 mjk:
+
+ * scrpage.dtx: no real changes
+
+r852 2009-04-03 09:40:47 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.03a
+
+r851 2009-04-02 11:31:08 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: Bug at calculation of width of
+ labeling label fixed
+
+r850 2009-04-02 11:30:28 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.03a BETA
+
+r849 2009-03-30 10:29:16 +0200 mjk:
+
+ * releaselist.txt: release 2009/04/01 v3.03
+
+r848 2009-03-30 09:49:35 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.03
+
+r846 2009-03-25 10:47:43 +0100 mjk:
+
+ * scrstrip.inc: german comment changed
+
+r845 2009-03-25 10:46:36 +0100 mjk:
+
+ * scrlfile.dtx: new command \AfterReadingMainAux
+
+r844 2009-03-24 10:22:26 +0100 mjk:
+
+ * scrjura.dtx: Alexanders Doku-Änderungen
+
+r843 2009-03-19 11:01:11 +0100 mjk:
+
+ * lppl.txt, scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, komabug.tex, scrlogo.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx, Makefile.baseinit,
+ scrsource.tex, scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ scrjura.dtx, manifest.txt, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, tocstyle.dtx, scrkernel-pseudolengths.dtx,
+ scrhack.dtx, lppl-de.txt, scrpage.dtx, scrkernel-sections.dtx,
+ japanlco.dtx, scrkernel-miscellaneous.dtx, scrtime.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scraddr.dtx, scrlfile.dtx,
+ tocbasic.dtx, scrkernel-basics.dtx, doc/, doc/scrguide.ist,
+ doc/koma-script.html, doc/Makefile, doc/guide.tex, doc/linkalias.tex,
+ doc/scrguide.gst, doc/scrguide.cls, doc/plength.dtx,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/expertpart.tex,
+ doc/ngerman/scrdatetime.tex, doc/ngerman/adrconvnote.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2examples.dtx, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/htmlsetup,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/authorpart.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/introduction.tex, doc/ngerman/preface.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/Makefile, doc/english/scrbookreportarticle.tex,
+ doc/english/guide-english.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/japanlco.tex,
+ doc/english/htmlsetup, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, doc/bin/, doc/bin/genhtmlidx.pl,
+ doc/bin/genindex.pl, obsolete/scrlettr.ins, obsolete/scrlettr.dtx:
+ switched from LPPL 1.3b to LPPL 1.3c
+
+r842 2009-03-18 11:32:48 +0100 mjk:
+
+ * scrstrip.inc: You are not allowed to change this file
+
+r841 2009-03-18 11:28:05 +0100 mjk:
+
+ * scrstrip.inc: link to LaTeX base added
+
+r840 2009-03-17 10:22:07 +0100 mjk:
+
+ * scrmain.ins: hack for listings added
+
+r839 2009-03-17 10:21:01 +0100 mjk:
+
+ * scrhack.dtx: hack for listings added
+
+r838 2009-03-16 17:54:36 +0100 mjk:
+
+ * Makefile, scrsource.tex, manifest.txt, scrmain.ins, tocbasic.dtx:
+ new packages
+
+r837 2009-03-16 17:51:50 +0100 mjk:
+
+ * scrhack.dtx: new package hacking other packages
+
+r836 2009-03-16 15:07:38 +0100 mjk:
+
+ * scrjura.dtx: Option paragraphmark fixed
+
+r835 2009-03-16 10:09:44 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex: Peter heißt jetzt
+ einheitlich Musterfrau während Petra Mustermann heißt.
+
+r834 2009-03-16 10:07:02 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: \ifstr usage at \ChangedAt fixed
+
+r833 2009-03-12 08:59:13 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/Makefile: provide overwriting of a
+ non symlink tocbasic.tex at temporary rule tocbasic.tex
+
+r832 2009-03-12 08:55:06 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/Makefile: temporary rule for
+ generation of tocbasic.tex added
+
+r831 2009-03-04 19:19:04 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2.tex,
+ doc/ngerman/scrlttr2-experts.tex: Erlärung der neuen Möglichkeiten
+ von scrlttr2 3.03 bis 2009/03/04
+
+r830 2009-03-04 19:17:55 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx, japanlco.dtx: set term for
+ "fromzipcode"
+
+r829 2009-03-04 18:41:27 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: "ECONOMAY" --> "ECONOMY"
+
+r828 2009-03-04 11:43:37 +0100 mjk:
+
+ * scrkernel-variables.dtx: new command \ifkomavar and reimplementation
+ of \ifkomavarempty
+
+r827 2009-03-04 11:25:28 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: new addresse modes "PP", "backgroundimage",
+ "image" with several new font elements and pseudo-lengths
+
+r826 2009-03-02 17:24:10 +0100 mjk:
+
+ * doc/, doc/linkalias.tex, doc/ngerman/: Option "version" wird
+ neuerdings bereits im Kapitel über typearea eingeführt, also
+ müssen die Links in den freien Versionen darauf zeigen.
+
+r825 2009-02-27 09:45:52 +0100 mjk:
+
+ * doc/, doc/ngerman/: "Abstandsart" --> "Methode" vereinheitlicht
+
+r824 2009-02-19 10:03:05 +0100 mjk:
+
+ * scrkernel-basics.dtx: Error if not e-TeX, at least version 2, is
+ used
+
+r823 2009-02-17 11:15:39 +0100 mjk:
+
+ * scrkernel-language.dtx: made the already-defined test more robust
+
+r822 2009-02-17 10:13:46 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: Information to `final' fixed at
+ scrextend
+
+r821 2009-02-14 11:03:08 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: 3.02c ist not the same like 3.02b
+
+r820 2009-02-14 10:47:50 +0100 mjk:
+
+ * scrkernel-typearea.dtx: some implementation docu added
+
+r819 2009-02-14 10:22:53 +0100 mjk:
+
+ * scrkernel-typearea.dtx: PostScript code added to change page size at
+ the document
+
+r818 2009-02-13 18:45:23 +0100 mjk:
+
+ * scrkernel-typearea.dtx: paper=seascape implemented
+
+r817 2009-02-11 12:35:36 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: one comment changed
+
+r816 2009-02-04 15:19:47 +0100 mjk:
+
+ * scrjura.dtx: some more additions to reference commands
+
+r815 2009-02-04 13:02:45 +0100 mjk:
+
+ * scrjura.dtx: several changes for improving references and usage of
+ KOMA options
+
+r814 2009-02-04 12:31:06 +0100 mjk:
+
+ * scrkernel-basics.dtx: \KOMA@ifkey and \KOMA@ncmdkey does also define
+ the family member
+
+r813 2009-01-30 17:08:24 +0100 mjk:
+
+ * scrlogo.dtx: date changed
+
+r812 2009-01-30 17:07:40 +0100 mjk:
+
+ * scrlogo.dtx: intro comment changed
+
+r811 2009-01-28 08:41:40 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-listsandtabulars.dtx: bug at new labeling feature from
+ version 3.02 fixed (reported by Werner Lemberg)
+
+r810 2009-01-26 10:39:25 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex:
+ \BeginIndex{Option}{DIV~=areaset} fixed
+
+r809 2009-01-24 11:51:36 +0100 mjk:
+
+ * releaselist.txt: release 2009/01/24 v3.02b
+
+r808 2009-01-24 11:49:14 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.02b
+
+r807 2009-01-24 11:34:08 +0100 mjk:
+
+ * scrkernel-floats.dtx: One more fix of vertical alignment of one line
+ captions
+
+r806 2009-01-23 15:44:17 +0100 mjk:
+
+ * scrkernel-basics.dtx: version number fixed
+
+r805 2009-01-23 15:39:38 +0100 mjk:
+
+ * scrkernel-basics.dtx: problem using amsmath fixed
+
+r804 2009-01-20 18:46:00 +0100 mjk:
+
+ * doc/, doc/ngerman/: {} hinter \nopagebreak eingefügt (Danke an
+ Torsten Krüger)
+
+r803 2009-01-20 12:12:55 +0100 mjk:
+
+ * tocbasic.dtx: no explicite marks if ``numbered''
+
+r802 2009-01-20 11:50:00 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex:
+ "scrreport" durch "scrreprt" ersetzt (Dank an Marco Daniel)
+
+r801 2009-01-06 18:32:15 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: common.tex added
+
+r800 2009-01-06 18:25:58 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex, doc/english/,
+ doc/english/typearea.tex: Many changes by GH
+
+r799 2009-01-02 16:00:25 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: changes by GH
+
+r798 2009-01-02 10:03:38 +0100 mjk:
+
+ * releaselist.txt: release 2009/01/01 v3.02
+
+r797 2009-01-02 10:02:45 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.02
+
+r796 2009-01-02 09:41:42 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, komabug.tex, scrlogo.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrdoc.dtx, scrjura.dtx, manifest.txt,
+ scrkernel-listsof.dtx, scrkernel-letterclassoptions.dtx, scrmain.ins,
+ scrkxflo.dtx, Makefile.baserules, tocstyle.dtx,
+ scrkernel-pseudolengths.dtx, scrpage.dtx, japanlco.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx, scrextend.dtx,
+ scraddr.dtx, scrlfile.dtx, tocbasic.dtx, scrkernel-basics.dtx, doc/,
+ doc/scrguide.ist, doc/Makefile, doc/guide.tex, doc/linkalias.tex,
+ doc/scrguide.gst, doc/scrguide.cls, doc/plength.dtx,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/expertpart.tex, doc/ngerman/scrdatetime.tex,
+ doc/ngerman/adrconvnote.tex, doc/ngerman/scrextend.tex,
+ doc/ngerman/tocbasic.tex, doc/ngerman/scrlttr2examples.dtx,
+ doc/ngerman/scrlttr2-experts.tex, doc/ngerman/typearea-experts.tex,
+ doc/ngerman/htmlsetup, doc/ngerman/typearea.tex,
+ doc/ngerman/authorpart.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/introduction.tex, doc/ngerman/preface.tex,
+ doc/ngerman/scraddr.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/Makefile, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/adrconvnote.tex,
+ doc/english/japanlco.tex, doc/english/htmlsetup,
+ doc/english/typearea.tex, doc/english/scrlfile.tex,
+ doc/english/introduction.tex, doc/english/scraddr.tex,
+ obsolete/scrlettr.ins, obsolete/scrlettr.dtx: prepared for 2009
+
+r795 2009-01-02 08:59:35 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex,
+ doc/ngerman/scrdatetime.tex, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/scrdatetime.tex: documentation of the new features of rev.
+ 792-794
+
+r794 2009-01-02 08:57:34 +0100 mjk:
+
+ * scrkernel-listsandtabulars.dtx: new font elements "labelinglabel"
+ and "labelingseparator"
+
+r793 2009-01-02 08:56:28 +0100 mjk:
+
+ * scrkernel-language.dtx, scrtime.dtx: new language norsk (by Sveinung
+ Heggen)
+
+r792 2009-01-02 08:54:37 +0100 mjk:
+
+ * scrkernel-sections.dtx: new macro \partheademptypage
+
+r791 2008-12-09 12:33:28 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.01c BETA
+
+r790 2008-12-09 11:11:14 +0100 mjk:
+
+ * releaselist.txt: release 2008/12/09 v3.01b
+
+r789 2008-12-09 11:09:51 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.01b
+
+r788 2008-12-09 11:07:02 +0100 mjk:
+
+ * scrkernel-title.dtx, scrextend.dtx: scrextend does work without
+ enabled extended title feature
+
+r787 2008-12-09 11:06:16 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx, scrmain.ins,
+ doc/, doc/ngerman/, doc/ngerman/typearea.tex: option version at
+ typearea avaible to improve option "paper"; warning messages
+ improved; option "paper" improved
+
+r786 2008-12-08 11:48:52 +0100 mjk:
+
+ * scrpage.dtx, doc/, doc/ngerman/: Options "headinclude",
+ "headexclude", "footinclude" and "footexclude" are deprecated at
+ scrpage2
+
+r785 2008-12-08 11:47:02 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/guide-ngerman.tex: Verbesserungen
+ beim Änderungsverzeichnis berücksichtigt
+
+r784 2008-12-08 11:46:07 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: sort of change list improved
+
+r783 2008-12-08 11:34:24 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: \ChangedAt improved
+
+r782 2008-12-08 11:18:24 +0100 mjk:
+
+ * doc/, doc/ngerman/: \ChangedAt-Einträge korrigiert
+
+r781 2008-12-07 13:54:17 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: vertikale Abstände
+ nach listings verbessert
+
+r780 2008-12-07 13:53:42 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: horizontal spacing for listings improved
+
+r779 2008-12-07 13:51:55 +0100 mjk:
+
+ * scrkernel-language.dtx: missing \let #2\undefined\relax added at
+ \(new|renew|provide)captionname
+
+r778 2008-11-28 08:09:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: erste Korrekturen und
+ Vorschläge von Torsten
+
+r777 2008-11-25 14:50:13 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex: Beispiel korrigiert
+
+r776 2008-11-24 09:20:03 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.01b BETA
+
+r775 2008-11-23 15:50:26 +0100 mjk:
+
+ * releaselist.txt: release 2008/11/23 v3.01a
+
+r774 2008-11-23 15:08:06 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.01a
+
+r770 2008-11-22 08:06:54 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: fix: \@footenotetext must be long!
+
+r769 2008-11-21 09:24:20 +0100 mjk:
+
+ * doc/, doc/ngerman/: geänderte Voreinstellung für »version«
+ dokumentiert
+
+r768 2008-11-21 09:03:06 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-title.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx, scrkernel-index.dtx,
+ scrkernel-bibliography.dtx, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsof.dtx,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-basics.dtx, doc/, doc/scrguide.cls: - improved messages at
+ usage of standard options or usage of deprecated
+
+ KOMA-Script-specific options - some options became deprecated instead of
+ simply obsolete - pre-setting of version is last - usage of any
+ deprecated option switchs to version=first
+
+r767 2008-11-20 11:56:43 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.01a BETA
+
+r766 2008-11-19 15:20:19 +0100 mjk:
+
+ * scrpage.dtx: fatal bug with \if@mainmatter (instead of \csname
+ if@mainmatter\endcsname at message fixed
+
+r765 2008-11-14 10:04:59 +0100 mjk:
+
+ * releaselist.txt: release 2008/11/14 v3.01
+
+r764 2008-11-14 09:04:09 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 3.01
+
+r763 2008-11-13 12:51:55 +0100 mjk:
+
+ * scrkernel-listsof.dtx, scrmain.ins, scrkernel-sections.dtx,
+ tocbasic.dtx, doc/, doc/ngerman/, doc/ngerman/tocbasic.tex: fixes and
+ extensions at tocbasic
+
+r762 2008-11-13 12:51:19 +0100 mjk:
+
+ * scrstrip.inc: do not ask for overwrite any longer
+
+r761 2008-11-13 12:49:56 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: missing usage of \@listi at
+ scrsizeXXpt.clo added (reported by Alexander Niske)
+
+r760 2008-11-13 09:48:02 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrlttr2-experts.tex:
+ \ChangedAt-Einträge korrigiert
+
+r759 2008-11-12 16:21:03 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/scrbookreportarticle.tex: von Thomas
+ Jerge gemeldete Fehler beseitigt
+
+r758 2008-11-12 16:18:27 +0100 mjk:
+
+ * tocbasic.dtx: fix: \twocolumne --> \twocolumn
+
+r757 2008-11-11 14:48:50 +0100 mjk:
+
+ * tocbasic.dtx: \@addtotoclist renamed to \scr@addtotoclist because of
+ package flowfram
+
+r756 2008-11-03 17:37:07 +0100 mjk:
+
+ * scrkernel-notepaper.dtx, doc/, doc/plength.dtx, doc/ngerman/,
+ doc/ngerman/scrlttr2-experts.tex: new pseudo-lengths: subjectvpos,
+ subjectbeforevskip, subjectaftervskip
+
+r755 2008-11-03 15:48:41 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: nix geändert
+
+r754 2008-11-03 15:06:03 +0100 mjk:
+
+ * scrkernel-version.dtx: Ready for 3.01 BETA
+
+r753 2008-11-03 11:10:19 +0100 mjk:
+
+ * Makefile: dtx = ins fixed
+
+r752 2008-11-03 10:49:39 +0100 mjk:
+
+ * Makefile: symlinks should work now
+
+r751 2008-11-03 09:32:11 +0100 mjk:
+
+ * Makefile: exit 1 removed
+
+r748 2008-11-03 07:52:55 +0100 mjk:
+
+ * releaselist.txt: release 2008/11/03 v3.00
+
+r747 2008-11-03 07:51:55 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.00
+
+r746 2008-10-31 09:02:21 +0100 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/typearea.tex,
+ doc/ngerman/preface.tex: Ligaturen in den Bookmarks drin lassen
+
+r745 2008-10-20 10:29:35 +0200 mjk:
+
+ * tocbasic.dtx: only build changes
+
+r744 2008-10-20 09:50:04 +0200 mjk:
+
+ * tocstyle.dtx: \if@tocleft test fixed
+
+r743 2008-10-16 09:59:20 +0200 mjk:
+
+ * scrkernel-index.dtx, scrkernel-bibliography.dtx,
+ scrkernel-listsof.dtx, doc/, doc/ngerman/,
+ doc/ngerman/scrbookreportarticle.tex: toc and notoc values of options
+ listof, index and bibliography equalized
+
+r740 2008-10-14 16:52:03 +0200 mjk:
+
+ * Makefile: handling of DTX_IS_INS files fixed
+
+r739 2008-10-08 09:17:21 +0200 mjk:
+
+ * scrkernel-typearea.dtx: layout information not only with \typearea
+ but also \areaset
+
+r738 2008-10-07 17:45:50 +0200 mjk:
+
+ * releaselist.txt: release 2008/10/07 v3.00RC2
+
+r737 2008-10-07 17:02:01 +0200 mjk:
+
+ * scrkernel-version.dtx: Prepared for 3.00RC2
+
+r736 2008-10-07 16:58:36 +0200 mjk:
+
+ * scrkernel-sections.dtx: \@autodottrue and \@autodotfalse work global
+ to make autodot feature group level independant
+
+r735 2008-10-07 12:17:42 +0200 mjk:
+
+ * scrkernel-version.dtx: Ready for 2008/10/07 3.00 RC1
+
+r734 2008-10-07 12:11:13 +0200 mjk:
+
+ * doc/, doc/guide.tex, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/typearea.tex,
+ doc/english/scraddr.tex: minor changes for KOMA-Script 3
+
+r733 2008-10-06 12:07:42 +0200 mjk:
+
+ * tocbasic.dtx, doc/, doc/guide.tex, doc/Makefile.guide,
+ doc/english/, doc/english/scrbookreportarticle.tex,
+ doc/english/guide-english.tex, doc/english/typearea.tex: minor changes
+ for english documentation
+
+r732 2008-09-27 10:51:05 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx, scrkernel-sections.dtx: \frontmatter,
+ \mainmatter and \backmatter use \cleardoubleoddpage
+
+r731 2008-09-24 14:35:34 +0200 mjk:
+
+ * doc/, doc/ngerman/, doc/ngerman/Makefile: Vorbereitungen fuer das
+ Buch
+
+r730 2008-09-23 17:00:45 +0200 mjk:
+
+ * manifest.txt, doc/, doc/Makefile, doc/ngerman/: usage of new german
+ guide
+
+r729 2008-09-23 14:23:54 +0200 mjk:
+
+ * doc/, doc/Makefile, doc/linkalias.tex, doc/scrguide.cls,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/ngerman/,
+ doc/ngerman/scrlttr2.tex, doc/ngerman/scrbase.tex,
+ doc/ngerman/Makefile, doc/ngerman/guide-ngerman.tex,
+ doc/ngerman/scrbookreportarticle.tex, doc/ngerman/expertpart.tex,
+ doc/ngerman/scrdatetime.tex, doc/ngerman/adrconvnote.tex,
+ doc/ngerman/scrextend.tex, doc/ngerman/tocbasic.tex,
+ doc/ngerman/scrlttr2examples.dtx, doc/ngerman/scrlttr2-experts.tex,
+ doc/ngerman/typearea-experts.tex, doc/ngerman/htmlsetup,
+ doc/ngerman/typearea.tex,
+ doc/ngerman/scrbookreportarticle-experts.tex,
+ doc/ngerman/authorpart.tex, doc/ngerman/scrlfile.tex,
+ doc/ngerman/introduction.tex, doc/ngerman/preface.tex,
+ doc/ngerman/scraddr.tex, doc/bin/, doc/bin/genhtmlidx.pl:
+ Modifications for new german guide (KOMA-Script-Buch 3. Auflage)
+
+r728 2008-09-19 11:04:34 +0200 mjk:
+
+ * doc/, doc/guide.bib, doc/guide.tex, doc/scrguide.cls,
+ doc/plength.dtx, doc/english/, doc/english/guide-english.tex,
+ doc/english/htmlsetup, doc/bin/, doc/bin/genhtmlidx.pl: preparation to
+ add the new german guide
+
+r727 2008-09-09 09:45:40 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 3.00 BETA
+
+r726 2008-09-09 09:42:06 +0200 mjk:
+
+ * tocbasic.dtx: spell fix
+
+r725 2008-08-05 11:14:56 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: \partpagestyle not defined at scrartcl any
+ longer, because not used
+
+r724 2008-07-11 12:56:15 +0200 mjk:
+
+ * tocstyle.dtx: part with \hfill leaders
+
+r723 2008-07-09 20:05:52 +0200 mjk:
+
+ * scrlfile.dtx: \newpage only temporary not allowed at
+ \BeforeCloseMainAux
+
+r722 2008-07-09 12:44:12 +0200 mjk:
+
+ * scrkernel-typearea.dtx, doc/: new value "semi" for option "twoside"
+
+r721 2008-07-05 13:36:49 +0200 mjk:
+
+ * tocbasic.dtx: some \Macro{\@currext} replaced by \Macro{@currext}
+
+r720 2008-07-04 16:42:44 +0200 mjk:
+
+ * scrsource.tex: tocbasic removed because of \if-level problem
+
+r719 2008-07-04 16:19:04 +0200 mjk:
+
+ * scrsource.tex: tocbasic added
+
+r718 2008-07-04 16:01:21 +0200 mjk:
+
+ * scrkernel-listsof.dtx, scrkernel-sections.dtx, tocbasic.dtx:
+ vertical space or chapter entry for chapters to list of ... using
+ tocbasic
+
+r717 2008-07-04 13:26:14 +0200 mjk:
+
+ * scrkernel-listsof.dtx, scrmain.ins, tocbasic.dtx: toc, lof and lot
+ created using tocbasic (code at scrksect.dtx still has to be changed
+
+r716 2008-07-01 10:53:35 +0200 mjk:
+
+ * scrkernel-sections.dtx: some ugly hyperref hacks lack of an
+ interface for class and package authors
+
+r715 2008-07-01 09:59:19 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-sections.dtx: \relax added at compatibility tests
+
+r714 2008-06-19 11:47:45 +0200 mjk:
+
+ * scrkernel-title.dtx, scrmain.ins, scrkernel-miscellaneous.dtx,
+ scrextend.dtx: scrextend activates features with option
+ "extendedfeature" not longer with e.g. option "titlepage=KOMA"
+
+r713 2008-06-06 11:50:57 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: option `foldmarks' fixed
+
+r712 2008-05-28 09:23:26 +0200 mjk:
+
+ * scrkernel-basics.dtx: FamilyNumericalKey fixed
+
+r711 2008-05-14 11:47:38 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: option "draft" also at scrextend
+
+r710 2008-05-06 14:26:43 +0200 mjk:
+
+ * doc/: Wort korrigiert
+
+r709 2008-05-06 09:28:23 +0200 mjk:
+
+ * scrkernel-basics.dtx: Most \Family... commands have an optional
+ argument for the member
+
+r708 2008-05-02 16:46:18 +0200 mjk:
+
+ * TODO: new packages scrbase and scrextend
+
+r707 2008-05-02 16:43:26 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-title.dtx, Makefile,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrsource.tex, scrkernel-footnotes.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx,
+ scrmain.ins, scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scrextend.dtx, scrkernel-basics.dtx: new packages
+ scrbase and scrextend
+
+r706 2008-04-30 09:52:59 +0200 mjk:
+
+ * doc/: diverse Neuerungen inbesondere bezüglich der Optionen
+ dokumentiert
+
+r705 2008-04-30 09:52:22 +0200 mjk:
+
+ * doc/, doc/guide.bib: some additional references
+
+r704 2008-04-30 09:15:14 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: Explain improved; obsolete LM fixes removed
+
+r703 2008-04-30 09:13:50 +0200 mjk:
+
+ * scrkernel-sections.dtx: more aliases for option numbers
+
+r702 2008-04-17 11:51:49 +0200 mjk:
+
+ * README.SVN, LIESMICH.SVN: README.SVN and LIESMICH.SVN for tester of
+ the svn version.
+
+r701 2008-04-17 11:35:20 +0200 mjk:
+
+ * README.SVN: Need for Makefile revision removed; VERBOSE note added
+
+r700 2008-04-17 11:25:02 +0200 mjk:
+
+ * Makefile.baserules: spell fix
+
+r699 2008-04-17 11:23:44 +0200 mjk:
+
+ * Makefile, Makefile.baserules, doc/, doc/Makefile,
+ doc/Makefile.guide: new rules: prepare, prepare_recursive,
+ prepare_local
+
+r698 2008-04-16 11:45:23 +0200 mjk:
+
+ * scrkernel-listsof.dtx: bib-values for option `toc'
+
+r697 2008-04-11 12:08:52 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: indentation and page break after environment
+ "Declaration" avoided
+
+r696 2008-04-11 10:15:46 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-pagestyles.dtx: default for
+ \cleardoublepage changed depeding on "version"
+
+r695 2008-04-10 11:43:54 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/guide-english.tex: missing % at
+ \GuideLanguageExtensions added
+
+r694 2008-04-10 11:43:09 +0200 mjk:
+
+ * doc/: missing % at \GuideLanguageExtensions added
+
+r693 2008-04-09 16:39:33 +0200 mjk:
+
+ * TODO: documentation leaks
+
+r692 2008-04-09 16:18:30 +0200 mjk:
+
+ * scrkernel-typearea.dtx: Replacement for option `dvips' changed
+
+r691 2008-04-09 08:57:00 +0200 mjk:
+
+ * scrkernel-typearea.dtx: new option `headheight'
+
+r690 2008-04-08 12:11:07 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \OptionValue does not longer generate an
+ additional desc:[...].option.[...] label
+
+r689 2008-04-08 11:33:37 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: new: \OptionValue
+
+r688 2008-04-04 09:55:09 +0200 mjk:
+
+ * doc/: Gernot in die Danksagung aufgenommen
+
+r687 2008-04-04 09:37:50 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 2.98c BETA
+
+r686 2008-04-03 12:01:09 +0200 mjk:
+
+ * tocbasic.dtx: one more fix of beta handling
+
+r685 2008-04-03 10:42:17 +0200 mjk:
+
+ * tocbasic.dtx: beta generation fixed
+
+r683 2008-04-03 10:37:04 +0200 mjk:
+
+ * tocbasic.dtx: scrbeta used
+
+r681 2008-03-27 10:16:07 +0100 mjk:
+
+ * TODO: already existing note about using "version" only at class
+ loading removed
+
+r680 2008-03-27 09:13:23 +0100 mjk:
+
+ * scrkernel-version.dtx: date changed
+
+r679 2008-03-27 09:10:54 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/Makefile,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/adrconvnote.tex,
+ doc/english/japanlco.tex, doc/english/htmlsetup,
+ doc/english/typearea.tex, doc/english/scrlfile.tex,
+ doc/english/introduction.tex, doc/english/scraddr.tex: unknown change
+
+r678 2008-03-27 09:09:02 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: only option "version"
+ may not be set using \KOMAoptions
+
+r677 2008-03-27 09:08:08 +0100 mjk:
+
+ * doc/: "version" ist die einzige Option, die nicht per \KOMAoptions
+ gesetzt werden kann
+
+r676 2008-03-27 08:41:40 +0100 mjk:
+
+ * scrjura.dtx: ask is false
+
+r675 2008-03-27 08:40:45 +0100 mjk:
+
+ * Makefile, scrkernel-paragraphs.dtx, scrmain.ins,
+ scrkernel-fonts.dtx: new font size files scrsize10pt.clo,
+ scrsize11pt.clo, scrsize12pt.clo
+
+r674 2008-03-27 08:40:38 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: options "headsepline" and "footsepline"
+ improved
+
+r673 2008-03-26 15:30:52 +0100 mjk:
+
+ * TODO: \@ifpackageloaded problem solved
+
+r672 2008-03-26 14:41:51 +0100 mjk:
+
+ * TODO: one documentation and one implementation fault
+
+r671 2008-03-25 14:49:35 +0100 mjk:
+
+ * README.SVN: new instruction for installation from svn
+
+r670 2008-03-24 11:30:01 +0100 mjk:
+
+ * Makefile: scrjura added
+
+r669 2008-03-24 11:12:19 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 2.98c BETA
+
+r668 2008-03-24 11:10:35 +0100 mjk:
+
+ * Makefile: improved handling of alpha files, that should be part of
+ distribution
+
+r667 2008-03-24 11:06:00 +0100 mjk:
+
+ * tocstyle.dtx: <feature> etc. replaced by !<feature!> etc.
+
+r666 2008-03-24 07:38:50 +0100 mjk:
+
+ * Makefile: Warning for missing ChangeLog changed
+
+r665 2008-03-22 16:58:33 +0100 mjk:
+
+ * TODO: broken option fixed
+
+r664 2008-03-22 16:56:04 +0100 mjk:
+
+ * scrkernel-fonts.dtx: option `Xpt' does work again
+
+r663 2008-03-20 19:01:44 +0100 mjk:
+
+ * TODO: broken option
+
+r662 2008-03-18 14:38:42 +0100 mjk:
+
+ * tocbasic.dtx: auto mode added
+
+r661 2008-03-18 14:16:42 +0100 mjk:
+
+ * tocbasic.dtx: documentation
+
+r660 2008-03-18 12:14:31 +0100 mjk:
+
+ * tocbasic.dtx: some more features, some bug fixes and some more
+ documentation
+
+r659 2008-03-17 14:07:21 +0100 mjk:
+
+ * tocbasic.dtx: some more documentation
+
+r658 2008-03-17 09:39:00 +0100 mjk:
+
+ * tocbasic.dtx: some more documentation
+
+r657 2008-03-14 18:59:48 +0100 mjk:
+
+ * tocbasic.dtx: implementation of most features (untested) and some
+ parts of documentation
+
+r656 2008-03-13 13:29:28 +0100 mjk:
+
+ * tocbasic.dtx: start of a new package for class and packages authors
+ creating toc files
+
+r655 2008-03-12 09:50:59 +0100 mjk:
+
+ * scrkernel-basics.dtx: new command \KOMAoption{<key>}{<valuelist>}
+
+r654 2008-03-12 09:50:24 +0100 mjk:
+
+ * scrkernel-floats.dtx: vertical alignment at captionsbeside fixed
+
+r653 2008-03-10 10:06:41 +0100 mjk:
+
+ * scrkernel-sections.dtx: new values for option `headings' to set
+ options `chapterprefix' and `appendixprefix'
+
+r652 2008-03-10 09:52:26 +0100 mjk:
+
+ * scrkernel-sections.dtx, scrkernel-miscellaneous.dtx: new option
+ `headings' with values `big', `normal', `small', `openany',
+ `openright', and `openleft'; option `bigheadings', `normalheadings',
+ and `smallheadings' are obsolete; `headings=big' is default
+
+r651 2008-03-10 09:27:32 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: missing `v' at version argument of changes
+ entry added
+
+r650 2008-03-10 09:25:02 +0100 mjk:
+
+ * obsolete/scrlettr.dtx: missing `v' at version argument of changes
+ entry added
+
+r649 2008-03-10 09:23:43 +0100 mjk:
+
+ * scrkernel-index.dtx: missing `v' at version argument of changes
+ entry added
+
+r648 2008-03-10 09:23:16 +0100 mjk:
+
+ * scrkernel-floats.dtx: missing `v' at version argument of changes
+ entry added
+
+r647 2008-03-10 09:22:50 +0100 mjk:
+
+ * scrkernel-basics.dtx: missing `v' at version argument of changes
+ entry added
+
+r646 2008-03-07 10:25:13 +0100 mjk:
+
+ * scrkernel-sections.dtx: new option `number' with values `auto',
+ `enddot', `noenddot' instead of obsolete options `pointednumbers'
+ and `pointlessnumbers'; options `pointednumber' and
+ `pointlessnumber' removed
+
+r645 2008-03-06 11:42:46 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: \def\cleardoublepage to make option
+ `open=left' work even without usage of option `cleardoublepage'
+
+r644 2008-03-06 11:28:25 +0100 mjk:
+
+ * scrkernel-sections.dtx: new value 'left' for option `open'
+
+r643 2008-03-06 11:22:57 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: new macros `\cleardoubeoddstandardpage',
+ `\cleardoubleevenstandardpage', `\cleardoubleoddusingstyle',
+ `\cleardoubleevenusingstyle', `\cleardoubleoddemptypage',
+ `\cleardoubleevenemptypage', `\cleardoubleoddplainpage',
+ `\cleardoubleevenplainpage'
+
+r642 2008-03-06 11:09:25 +0100 mjk:
+
+ * scrkernel-sections.dtx: new option `open' with values `any' and
+ `right'
+
+r641 2008-03-06 10:55:11 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: `wlocfield' and `slocfield' are simple
+ obsolete options
+
+r640 2008-03-05 09:56:41 +0100 mjk:
+
+ * scrkernel-listsof.dtx: new values `nolistof', 'listof', and
+ 'listofnumbered' to option 'toc'
+
+r639 2008-03-05 09:38:36 +0100 mjk:
+
+ * scrkernel-listsof.dtx: new `toc=flat', `toc=graduated' instead of
+ obsolete `tocleft', `tocindent'; new `listof=notoc', `listof=totoc',
+ `listof=numbered', `listof=flat', `listof=graduated' instead of
+ obsolete `liststotoc', `liststotocnumbered', `listsleft',
+ `listsindent'; new `listof=chapterentry', `listof=nochaptergap',
+ `listof=chaptergapsmall', `listof=chaptergapline'
+
+r638 2008-03-04 17:31:23 +0100 mjk:
+
+ * scrkernel-listsof.dtx: new option `toc=index' and `toc=noindex' uses
+ `index=totoc' and `index=notoc' internally
+
+r637 2008-03-04 17:30:28 +0100 mjk:
+
+ * scrkernel-index.dtx: options `index=notoc' and `index=totoc'
+ replaces obsolete `idxtotoc'
+
+r636 2008-03-03 14:41:39 +0100 mjk:
+
+ * scrkernel-floats.dtx: deprecated handling for caption package
+ removed
+
+r635 2008-03-03 11:56:07 +0100 mjk:
+
+ * scrkernel-floats.dtx: Option `captions=oneline' instead of obsolete
+ `onelinecaptions', option `captions=nooneline' instead if obsolete
+ `noonelinecaptions'; values `topbeside', `bottombeside',
+ `centeredbeside', `rightbeside', `leftbeside', `innerbeside',
+ `outerbeside' for option `captions' to set default placement of
+ `captionsbeside' environment
+
+r634 2008-03-03 10:49:58 +0100 mjk:
+
+ * scrkernel-floats.dtx: date fixed
+
+r633 2008-03-03 10:24:13 +0100 mjk:
+
+ * scrkernel-floats.dtx: works with caption 3.1g
+
+r632 2008-02-29 16:19:13 +0100 mjk:
+
+ * scrpage.dtx: usage of \if@mainmatter (instead of \ifmainmatter) at
+ scrpage.sty fixed
+
+r631 2008-02-29 13:13:13 +0100 mjk:
+
+ * scrkernel-floats.dtx: use \captionsetup* instead of \captionsetup
+
+r630 2008-02-18 11:13:30 +0100 mjk:
+
+ * scrkernel-floats.dtx: new option "captions"; "captions=tableheading"
+ replaces "tablecaptionabove"; "captions=tablesignature" replaces
+ "tablecaptionbelow"
+
+r629 2008-02-18 10:45:12 +0100 mjk:
+
+ * scrkernel-basics.dtx: Obsolete option messages are messages of the
+ classes or packages that declare the option not of scrkbase.
+
+r628 2008-02-18 09:13:04 +0100 mjk:
+
+ * scrkernel-bibliography.dtx: \AtBeginBibliography renamed to
+ \AfterBibliographyPreamble because of biblatex
+
+r627 2008-02-16 11:42:17 +0100 mjk:
+
+ * TODO: biblatex compatiblitity note
+
+r626 2008-02-15 15:25:26 +0100 mjk:
+
+ * scrkernel-version.dtx: date changed
+
+r625 2008-02-15 12:51:39 +0100 mjk:
+
+ * scrkernel-bibliography.dtx: options "bibtotoc" and
+ "bibtotocnumbered" replaced by "bibliography=totoc" and
+ "bibliography=totocnumbered"; option "bibliography=nottotoc" added;
+ new commands \AtBeginBibliography, \AtEndBibliography and
+ \BreakBibliography
+
+r624 2008-02-15 10:15:38 +0100 mjk:
+
+ * scrkernel-bibliography.dtx: Option "openbib" replaced by
+ "bibliography=openstyle"; option "bibliography=oldstyle" added; new
+ command \newbibstyle
+
+r623 2008-02-15 10:12:30 +0100 mjk:
+
+ * scrkernel-title.dtx, scrkernel-sections.dtx: \ClassInfo replaced by
+ \ClassInfoNoLine at usage of \KOMA@DeclareObsoleteOption
+
+r622 2008-02-15 10:09:07 +0100 mjk:
+
+ * scrkernel-basics.dtx: \ClassInfoNoLine defined
+
+r621 2008-02-15 08:32:25 +0100 mjk:
+
+ * scrkernel-basics.dtx: missing \end{macrocode} added
+
+r620 2008-02-14 16:17:47 +0100 mjk:
+
+ * scrpage.dtx: some changes about font elements `pagehead' and
+ `pagefoot'
+
+r619 2008-02-14 16:17:34 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: some changes about font elements
+ `pagehead' and `pagefoot'
+
+r618 2008-02-14 15:40:51 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: new font element `pageheadfoot'; font
+ element `pagehead' is only an alias for `pageheadfoot'
+
+r617 2008-02-14 15:39:43 +0100 mjk:
+
+ * scrpage.dtx: new font element pagefoot
+
+r616 2008-02-14 15:20:49 +0100 mjk:
+
+ * scrpage.dtx: \footfont added
+
+r615 2008-02-14 15:07:31 +0100 mjk:
+
+ * tocstyle.dtx: support for deprecated TOC styles and KOMAScript is
+ deprecated (use KOMAlike instead of)
+
+r614 2008-02-14 12:53:27 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: no unwanted warnings of footmisc package
+
+r613 2008-02-14 12:22:35 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: footnote solution is compatible to footmisc
+
+r612 2008-02-14 11:22:39 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: multifootnote does work unless using
+ bigfoot, manyfoot etc. Special handling for footmisc does not longer
+ produce a warning message.
+
+r611 2008-02-14 10:51:58 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: docu fix
+
+r610 2008-02-01 12:13:17 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: new option "multifootnotes" and new command
+ "\footref"
+
+r609 2008-02-01 09:07:06 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 2.98c BETA
+
+r608 2008-01-30 11:10:16 +0100 mjk:
+
+ * releaselist.txt: release 2008/01/30 v2.98b
+
+r607 2008-01-30 10:26:17 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for 2008/01/30 2.98b
+
+r606 2008-01-30 10:01:30 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 2.98b BETA
+
+r605 2008-01-30 10:00:17 +0100 mjk:
+
+ * tocstyle.dtx: it's not a beta, it's an alpha
+
+r604 2008-01-30 09:51:41 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: fix: \firsthead does not longer deactivate
+ "location"
+
+r603 2008-01-26 16:05:53 +0100 mjk:
+
+ * scrjura.dtx: docu improvement
+
+r602 2008-01-25 11:26:24 +0100 mjk:
+
+ * scrjura.dtx: First offizial alpha of a new package (german docu
+ only)
+
+r601 2008-01-11 11:24:01 +0100 mjk:
+
+ * releaselist.txt: release 2008/01/11 v2.98a
+
+r600 2008-01-11 11:21:50 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, komabug.tex, scrlogo.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx, Makefile.baseinit,
+ scrsource.tex, scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ manifest.txt, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, tocstyle.dtx, scrkernel-pseudolengths.dtx,
+ README, scrpage.dtx, scrkernel-sections.dtx, japanlco.dtx,
+ scrkernel-miscellaneous.dtx, scrtime.dtx, scrkernel-fonts.dtx,
+ scraddr.dtx, scrlfile.dtx, scrkernel-basics.dtx, doc/,
+ doc/scrguide.ist, doc/Makefile, doc/guide.tex, doc/scrguide.gst,
+ doc/scrguide.cls, doc/plength.dtx, doc/Makefile.guide,
+ doc/Makefile.latexinit, obsolete/scrlettr.ins, obsolete/scrlettr.dtx:
+ prepared for 2008/01/11 2.98a
+
+r598 2008-01-11 09:14:15 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: behaviour of location field with
+ "fromalign=center" changed to the one before 2.98
+
+r597 2008-01-08 11:41:53 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: prepared for 2.98a BETA
+
+r596 2008-01-08 11:39:47 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-typearea.dtx: twocolumn option
+ fixed at classes
+
+r595 2008-01-08 11:37:35 +0100 mjk:
+
+ * Makefile: prepared for dtx that are ins too
+
+r594 2007-12-21 11:15:13 +0100 mjk:
+
+ * scrkernel-version.dtx: version bug fixed
+
+r593 2007-12-21 11:03:40 +0100 mjk:
+
+ * releaselist.txt: release 2007/12/24 v2.98
+
+r592 2007-12-21 11:03:07 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 2.98
+
+r591 2007-12-21 10:59:43 +0100 mjk:
+
+ * tocstyle.dtx: note about scrlfile.dtx changed to note about
+ tocstyle.dtx at ins-part
+
+r590 2007-12-21 10:54:24 +0100 mjk:
+
+ * Makefile: support packaging of alpha packages
+
+r589 2007-12-18 18:58:02 +0100 mjk:
+
+ * scrlfile.dtx: spellfix and loading packages outside of any \if...\fi
+ to avoid errors in \if...\fi nesting of packages are reported as
+ errors of scrlfile
+
+r588 2007-12-17 09:00:09 +0100 mjk:
+
+ * TODO: almost all done
+
+r587 2007-12-17 08:54:59 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: german
+ partentrypagenumber description at table of elements removed
+
+r585 2007-12-17 08:47:03 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/japanlco.tex: some additional translation and improvements
+ by GH and MJK
+
+r584 2007-12-15 15:57:37 +0100 mjk:
+
+ * TODO: Gernot has done a lot of the TODOs
+
+r583 2007-12-15 15:51:52 +0100 mjk:
+
+ * doc/: Tabelle der vordefinierten lco-Dateien um die Japanischen
+ lco-Dateien ergänzt
+
+r582 2007-12-15 15:42:28 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: \oentry added
+
+r581 2007-12-15 13:30:50 +0100 mjk:
+
+ * manifest.txt: japanlco.tex added for english only
+
+r580 2007-12-15 13:27:17 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: japanlco.tex added for english only
+
+r579 2007-12-15 13:23:06 +0100 mjk:
+
+ * doc/, doc/guide.tex, doc/scrguide.cls, doc/english/,
+ doc/english/japanlco.tex: new appendix for englisch guide
+
+r578 2007-12-15 13:18:13 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some new
+ translations by GH
+
+r577 2007-12-15 12:58:50 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: translations added by
+ GH
+
+r576 2007-12-07 10:46:47 +0100 mjk:
+
+ * tocstyle.dtx: Alpha note added
+
+r575 2007-12-07 10:04:44 +0100 mjk:
+
+ * TODO, doc/: Änderung bezüglich der Nummerierung in "\frontmatter"
+ dokumentiert
+
+r574 2007-12-07 09:27:54 +0100 mjk:
+
+ * TODO, doc/: "location"-Werte für Option "fromalign" dokumentiert
+
+r573 2007-12-07 09:24:24 +0100 mjk:
+
+ * doc/, doc/english/: \ChangedAt entries fixed
+
+r572 2007-12-07 09:23:01 +0100 mjk:
+
+ * doc/: \ChangedAt-Einträge korrigiert
+
+r571 2007-12-07 08:27:39 +0100 mjk:
+
+ * TODO, doc/: Optionen "firsthead" und "firstfoot" dokumentiert
+ (einschl. Auswirkungen auf Pseudolänge "firstfootvpos")
+
+r570 2007-12-04 12:05:53 +0100 mjk:
+
+ * TODO: tocstyle wird erwähnt
+
+r569 2007-12-04 12:04:15 +0100 mjk:
+
+ * TODO, doc/: Pseudo-Längen "lochpos", "locvpos", "locheight"
+ dokumentiert
+
+r568 2007-12-04 11:46:01 +0100 mjk:
+
+ * TODO: rechter Einzug bei toaddrindent ist bereits dokumentiert
+
+r567 2007-12-04 11:44:02 +0100 mjk:
+
+ * TODO, doc/: name of lco file != name of option
+
+r566 2007-12-04 11:36:59 +0100 mjk:
+
+ * TODO, doc/: neue Werte für Option "subject"; Tabelle der
+ Pseudo-Längen sortiert
+
+r565 2007-11-30 13:06:11 +0100 mjk:
+
+ * TODO, doc/: environment documentation changed; font elements for
+ address field
+
+r564 2007-11-29 12:35:39 +0100 mjk:
+
+ * TODO: partentry, partentrypagenumber, chapterentry,
+ chapterentrypagenumber, sectionentry, sectionentrypagenumber
+ dokumentiert aber noch nicht übersetzt.
+
+r563 2007-11-29 12:33:47 +0100 mjk:
+
+ * doc/: Font Elemente "partentry", "partentrypagenumber",
+ "chapterentry", "chapterentrypagenumber", "sectionentry",
+ "sectionentrypagenumber" dokumentiert
+
+r562 2007-11-29 10:40:12 +0100 mjk:
+
+ * TODO: one more missing translation
+
+r561 2007-11-29 10:13:50 +0100 mjk:
+
+ * TODO: some translations done
+
+r560 2007-11-29 10:11:56 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: Some (but not all)
+ translations of changes at german file 2007/11/28 added by Gernot
+ Hassenpflug
+
+r559 2007-11-28 12:44:30 +0100 mjk:
+
+ * doc/: Angabe von \datefinish korrigiert, \Unit verwendet
+
+r558 2007-11-28 12:38:42 +0100 mjk:
+
+ * TODO, doc/: Dokumentation der Font-Elemente "subject" und
+ "subtitle", sowie der neuen Anweisung \subtitle
+
+r557 2007-11-28 12:35:00 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: remove guide.md5 at rule $(GUIDENAME).pdf
+
+r556 2007-11-28 10:06:03 +0100 mjk:
+
+ * doc/: Erklärung zu Option "foldmarks" verbessert
+
+r555 2007-11-27 12:36:05 +0100 mjk:
+
+ * TODO, doc/: Pseudo-Länge "fromrulewidth" dokumentiert
+
+r554 2007-11-27 12:27:16 +0100 mjk:
+
+ * TODO, doc/: Font element "fromrule" dokumentiert
+
+r553 2007-11-27 10:00:28 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: 2.97e is not compatible to 2.97d
+
+r552 2007-11-27 09:50:51 +0100 mjk:
+
+ * TODO, doc/: Die neuen Möglichkeiten für die Konfigurierung der
+ Faltmarken dokumentiert
+
+r551 2007-11-26 13:10:17 +0100 mjk:
+
+ * TODO, doc/: Erklärung zur Option "foldmarks" erweitert
+
+r550 2007-11-26 12:23:35 +0100 mjk:
+
+ * doc/: Font-Element "backaddress" dokumentiert.
+
+r549 2007-11-26 11:56:12 +0100 mjk:
+
+ * TODO, doc/: documentation of new values for option "backaddress"
+
+r548 2007-11-26 11:53:02 +0100 mjk:
+
+ * scrkernel-floats.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx: scrbook uses \thechapter at \thesection,
+ \thefigure, \thetable, and \theequation only at main matter (depends
+ on option "version")
+
+r547 2007-11-26 11:31:42 +0100 mjk:
+
+ * scrkernel-typearea.dtx: You can set "paper=<height>:<width>"
+
+r546 2007-11-23 13:03:03 +0100 mjk:
+
+ * scrpage.dtx: TeX-master fixed
+
+r545 2007-11-23 10:52:01 +0100 mjk:
+
+ * scrkernel-typearea.dtx: Some users asked for twoside-handling by the
+ class additional to the typearea package. So I've changed this for
+ twoside, oneside, twocolumn, and onecolumn. Disadvantage of the
+ change is, that type area recalculation will be done twice after
+ \begin{document}.
+
+r544 2007-11-23 09:59:51 +0100 mjk:
+
+ * TODO: Japanese letters
+
+r543 2007-11-23 09:50:56 +0100 mjk:
+
+ * Makefile, scrmain.ins, japanlco.dtx: new lco file "NipponRL.lco" for
+ Japanese envelopes with window on the right side
+
+r542 2007-11-22 18:04:33 +0100 stephan-hennig:
+
+ * doc/, doc/plength.dtx: M doc/plength.dtx
+
+ * Renamed internal varibles 'Xfoldmarkwidth' to match the name of new pseudo
+ lengths 'Xfoldmarklength'.
+
+r541 2007-11-22 12:00:36 +0100 mjk:
+
+ * TODO: new options and pseudo-lengths
+
+r540 2007-11-22 11:58:07 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: new option
+ "firstfoot=(yes|on|true|no|off|false)" and fix of
+ "fromalign=(locationright|locationleft)"
+
+r539 2007-11-22 11:36:53 +0100 mjk:
+
+ * Makefile, scrkernel-notepaper.dtx, manifest.txt, scrmain.ins,
+ japanlco.dtx: new Japanese lco files and new option
+ "firsthead=(yes|on|true|no|off|false)"
+
+r538 2007-11-20 17:42:55 +0100 mjk:
+
+ * japanlco.dtx: locheight fixed
+
+r537 2007-11-20 17:38:03 +0100 mjk:
+
+ * japanlco.dtx: 65mmm --> 65mm fixed
+
+r536 2007-11-20 17:35:20 +0100 mjk:
+
+ * Makefile, scrkernel-notepaper.dtx, scrsource.tex,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, japanlco.dtx: new lco
+ files for Japanese letters
+
+r535 2007-11-13 10:55:46 +0100 mjk:
+
+ * scrmain.ins: fix: lco files check and set the version not only use
+ the version of the class
+
+r534 2007-11-13 09:44:02 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: two new values for option "fromalign":
+ "locationleft" aligns the from ragged right at the location;
+ "locationright" aligns the from ragged left at the location. No
+ logos are set in these cases, no user defined location is set in
+ these cases.
+
+r533 2007-11-12 15:15:16 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: default of locheight fixed
+ (backaddrtoheight added)
+
+r532 2007-11-10 11:25:07 +0100 mjk:
+
+ * TODO: neue Pseudo-Längen
+
+r531 2007-11-10 11:22:39 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: - new pseudo length "tfoldmarklength",
+ "mfoldmarklength", "bfoldmarklength" - new optional vertical fold
+ marks with pseudo length "foldmarkvpos",
+
+ "lfoldmarkhpos", "lfoldmarklength" - new values for option "foldmarks"
+
+r530 2007-11-10 08:53:30 +0100 mjk:
+
+ * scrkernel-basics.dtx: spaces before and after keys and values are
+ ignored at \KOMAoptions
+
+r529 2007-11-08 11:29:28 +0100 mjk:
+
+ * TODO: einige Änderungen bei den Faltmarken
+
+r528 2007-11-08 11:27:59 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: - new pseudo length mfoldmarkvpos (0pt =
+ middle!) - single fold marks may be (de)activated by option
+ "foldmarks"
+
+r527 2007-11-07 10:43:25 +0100 mjk:
+
+ * TODO: some more to do (plength)
+
+r526 2007-11-07 10:42:24 +0100 mjk:
+
+ * scrkernel-notepaper.dtx, doc/, doc/plength.dtx: new pseudo-length
+ "lochpos", "locvpos", "locheight"
+
+r525 2007-11-07 10:16:07 +0100 mjk:
+
+ * doc/, doc/Makefile.guide, doc/Makefile.latexinit: sed call added to
+ fix problem with BibTeX line breaks after \btxurlfont
+
+r524 2007-10-23 08:53:48 +0200 mjk:
+
+ * scrkernel-typearea.dtx: fix: \isopaper pays attention to landscape
+
+r523 2007-10-23 07:25:38 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: Typofix
+
+r522 2007-10-12 11:58:49 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for v2.97e BETA
+
+r521 2007-10-12 11:58:09 +0200 mjk:
+
+ * releaselist.txt: 2007/10/12 v2.97d
+
+r520 2007-10-12 11:37:39 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 2007/10/12 v2.97d
+
+r519 2007-10-12 11:36:16 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: undefined
+ references fixed
+
+r518 2007-10-12 11:35:19 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: overfull \hbox and \vbox fixed
+
+r517 2007-10-12 11:11:26 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: forgotten \show removed [Stephan Hennig]
+
+r516 2007-10-09 15:46:27 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: vertical spacing of date field fixed
+
+r515 2007-10-09 14:56:29 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-notepaper.dtx: setting for
+ font element `refvalue' fixed
+
+r514 2007-10-04 14:51:20 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: space after \GuideListAnd fixed
+
+r513 2007-10-03 11:02:36 +0200 mjk:
+
+ * scrkernel-paragraphs.dtx, scrkernel-language.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ scrkernel-basics.dtx: New \PackageInfoNoLine
+
+r512 2007-10-03 10:43:06 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 2.97d BETA
+
+r511 2007-10-01 11:52:58 +0200 mjk:
+
+ * releaselist.txt: 2007/09/28 v2.97c
+
+r510 2007-10-01 09:18:44 +0200 mjk:
+
+ * scrkernel-version.dtx: version number fixed
+
+r509 2007-09-28 10:01:05 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: version fixed
+
+r508 2007-09-28 09:45:33 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ v2.97c
+
+r507 2007-09-27 09:42:11 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/adrconvnote.tex, doc/english/typearea.tex,
+ doc/english/scraddr.tex: index fixed
+
+r506 2007-09-26 16:44:56 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex: improved by GH
+
+r505 2007-09-26 09:23:54 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex: improved by GH
+
+r503 2007-09-25 09:05:04 +0200 mjk:
+
+ * scrmain.ins: no logo at lco files
+
+r502 2007-09-25 08:34:49 +0200 mjk:
+
+ * tocstyle.dtx: docu fix
+
+r501 2007-09-25 08:32:57 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: date fixed
+
+r500 2007-09-25 08:32:30 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: warning \scr@fnt@wrn@pagehead changed
+
+r499 2007-09-21 09:06:57 +0200 mjk:
+
+ * doc/, doc/koma-script.html: name of english guide fixed [Stephan
+ Hennig]
+
+r498 2007-09-20 15:08:33 +0200 mjk:
+
+ * doc/, doc/english/: two more translators added
+
+r497 2007-09-18 12:04:55 +0200 mjk:
+
+ * doc/, doc/guide.tex, doc/scrguide.cls, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/scrbookreportarticle.tex,
+ doc/english/guide-english.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/scrlfile.tex,
+ doc/english/introduction.tex, doc/english/scraddr.tex: new command
+ \translator at the guide
+
+r496 2007-09-18 11:52:41 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: \translator added
+
+r495 2007-09-18 10:37:10 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: sectioning --> disposition
+
+r494 2007-09-17 12:46:21 +0200 mjk:
+
+ * scrkernel-pseudolengths.dtx: it's save but not compatible not to use
+ e-TeX
+
+r493 2007-09-17 12:45:25 +0200 mjk:
+
+ * scrkernel-fonts.dtx: test for needed e-TeX feature
+
+r492 2007-09-17 12:31:34 +0200 mjk:
+
+ * scrkernel-pseudolengths.dtx: less functionality, if eTeX not used
+
+r491 2007-09-17 11:57:42 +0200 mjk:
+
+ * scrkernel-floats.dtx: there where to many \scr@smashdp
+
+r490 2007-09-17 11:48:43 +0200 mjk:
+
+ * scrkernel-floats.dtx: use of \scr@smashdp fixed
+
+r489 2007-09-17 11:48:28 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: macro name fixed
+
+r488 2007-09-17 11:46:47 +0200 mjk:
+
+ * scrkernel-basics.dtx: Warning message break changed
+
+r487 2007-09-17 11:35:22 +0200 mjk:
+
+ * scrkernel-floats.dtx: \@@makecaption uses \scr@smashdp
+
+r486 2007-09-17 11:34:48 +0200 mjk:
+
+ * scrkernel-basics.dtx: date fixed
+
+r485 2007-09-17 11:34:33 +0200 mjk:
+
+ * scrkernel-basics.dtx: new: scr@smashdp
+
+r484 2007-09-17 10:13:55 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scraddr.tex: improved by GH
+
+r483 2007-09-17 10:12:16 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r482 2007-09-17 10:06:30 +0200 mjk:
+
+ * doc/: Kleinere Verbesserungen
+
+r481 2007-09-12 17:05:12 +0200 mjk:
+
+ * TODO: change about lco files
+
+r480 2007-09-12 17:03:04 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-letterclassoptions.dtx: loading of
+ lco file via \documentclass option fixed
+
+r479 2007-09-12 12:47:27 +0200 mjk:
+
+ * doc/: Tabellenüberschrift für Tabelle 6.18 (Datumsbefehle und
+ Ausgabebeispiel) ergänzt [GH]
+
+r478 2007-09-12 12:44:45 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r477 2007-09-06 11:05:54 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r476 2007-09-06 11:01:22 +0200 mjk:
+
+ * doc/: Fehlende schließende Klammer ergänzt
+
+r475 2007-09-06 10:55:26 +0200 mjk:
+
+ * doc/: toaddrindent etwas genauer dokumentiert
+
+r474 2007-09-04 11:48:13 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: translated
+ german file changed
+
+r473 2007-09-04 11:46:50 +0200 mjk:
+
+ * doc/: Gesucht sind linksbündige Fußnotenmarkierungen, nicht
+ linksb+ndige Fußnoten
+
+r472 2007-09-04 11:31:06 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r471 2007-09-04 11:26:21 +0200 mjk:
+
+ * doc/: Vertippser korrigiert [GH]
+
+r470 2007-09-02 11:16:22 +0200 mjk:
+
+ * doc/, doc/plength.dtx: some english terms changed [GH]
+
+r469 2007-08-31 11:41:50 +0200 mjk:
+
+ * scrkernel-title.dtx: back side of title pages should use page style
+ empty
+
+r468 2007-08-31 09:29:35 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r467 2007-08-22 11:58:23 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r466 2007-08-22 11:33:32 +0200 mjk:
+
+ * doc/: Adresse von Markus korrigiert
+
+r465 2007-08-20 10:36:52 +0200 mjk:
+
+ * doc/, doc/english/: one more fix
+
+r464 2007-08-19 12:38:46 +0200 mjk:
+
+ * doc/, doc/english/: \EndIndex{Cmd}{page style} changed to
+ \EndIndex{Cmd}{pagestyle}
+
+r463 2007-08-19 12:35:00 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: One
+ \BeginIndex{}{circular letters} changed into \EndIndex{}{circular
+ letters}
+
+r462 2007-08-19 12:31:40 +0200 mjk:
+
+ * doc/, doc/english/: \EndIndex{Page style}{useheadings} fixed (must
+ be \EndIndex{Pagestyle}{useheadings})
+
+r461 2007-08-19 12:26:22 +0200 mjk:
+
+ * doc/: Verbesserung von Gernot Hassenpflug
+
+r460 2007-08-19 12:22:13 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: improved by GH
+
+r459 2007-08-19 12:15:31 +0200 mjk:
+
+ * doc/, doc/english/: improved by GH
+
+r458 2007-08-10 18:55:58 +0200 mjk:
+
+ * scrkernel-language.dtx: text of \languagename warning changed
+ [Stephan Hennig]
+
+r457 2007-08-09 17:30:26 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: index improved by GH
+
+r456 2007-08-09 17:22:02 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: coding changed
+
+r455 2007-08-09 17:19:29 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/guide-english.tex: improved by GH
+
+r454 2007-08-09 17:13:37 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrdatetime.tex: encoding info
+ changed
+
+r453 2007-08-09 17:08:00 +0200 mjk:
+
+ * doc/, doc/english/: improved by GH
+
+r452 2007-08-07 13:22:59 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlfile.tex: german version
+ extended to english version
+
+r451 2007-08-07 13:14:42 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlfile.tex: improved by Gernot
+ Hassenpflug
+
+r450 2007-08-07 12:54:26 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrdatetime.tex: improved by Gernot
+ Hassenpflug
+
+r449 2007-08-07 12:44:15 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: overfull change
+
+r448 2007-08-07 12:41:56 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scraddr.tex: two fixes
+
+r447 2007-08-07 12:28:04 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scraddr.tex: improved by Gernot
+ Hassenpflug
+
+r446 2007-08-07 12:12:25 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/adrconvnote.tex: improved by Gernot
+ Hassenpflug
+
+r445 2007-07-30 11:49:20 +0200 mjk:
+
+ * tocstyle.dtx: loading redefines \@starttoc, \@starttoc redefines
+ \@dottedtocline and \l@..., \@dottedtocline redefines \numberline
+
+r444 2007-07-30 10:55:56 +0200 mjk:
+
+ * tocstyle.dtx: all options renamed
+
+r443 2007-07-26 11:22:41 +0200 mjk:
+
+ * tocstyle.dtx: Checksum and one \z --> \z@
+
+r442 2007-07-25 09:41:22 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for 2.97c BETA
+
+r441 2007-07-24 11:37:42 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: smib GH
+
+r440 2007-07-24 10:53:54 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: mib GH and
+ MK
+
+r439 2007-07-23 11:12:39 +0200 mjk:
+
+ * scrpage.dtx: a lot of % added and removed
+
+r438 2007-07-23 09:33:21 +0200 mjk:
+
+ * tocstyle.dtx: \l@part uses level -1 at chapter classes and 0 at no
+ chapter classes
+
+r437 2007-07-23 09:27:58 +0200 mjk:
+
+ * scrkernel-sections.dtx: revert to: \partlevel is -1 at chapter
+ classes and 0 at no chapter classes
+
+r436 2007-07-23 09:21:31 +0200 mjk:
+
+ * scrpage.dtx: revert to: \partlevel is -1 at chapter classes and 0 at
+ no chapter classes
+
+r435 2007-07-23 09:02:33 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: smib GH
+
+r434 2007-07-22 10:58:23 +0200 mjk:
+
+ * doc/: Typofix [Gernot Hassenpflug]
+
+r433 2007-07-22 10:57:05 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ improvements by Gernot Hassenpflug
+
+r432 2007-07-21 09:48:15 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: some more
+ improvements by Gernot Hassenpflug
+
+r431 2007-07-19 15:27:54 +0200 mjk:
+
+ * scrkernel-pseudolengths.dtx: \useplength may be used with factor
+ prefix (e.g. .5\useplength{firstheadwidth})
+
+r430 2007-07-18 09:44:04 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-miscellaneous.dtx: The classes and typearea.sty allow to set
+ option twoside to a new value at the document's body.
+
+r429 2007-07-18 09:12:39 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: change: the classes should tolerate late
+ changes of option twoside
+
+r428 2007-07-17 18:59:20 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: one more
+ change by Gernot Hassenpflug
+
+r427 2007-07-16 14:44:41 +0200 mjk:
+
+ * scrkernel-sections.dtx: several \nobreak after \sectfont added
+
+r426 2007-07-14 07:52:26 +0200 mjk:
+
+ * TODO: new feature
+
+r425 2007-07-10 17:20:29 +0200 mjk:
+
+ * scrkernel-fonts.dtx, scrkernel-basics.dtx: \l@addto@macro moved to
+ scrkbase
+
+r424 2007-07-10 10:29:58 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: many
+ improvements by Gernot Hassenpflug
+
+r423 2007-07-10 10:15:02 +0200 mjk:
+
+ * doc/: einige Fehler korrigiert [Gernot Hassenpflug]
+
+r422 2007-07-06 16:09:52 +0200 mjk:
+
+ * scrkernel-notepaper.dtx, TODO: new values for option subject:
+ underlined, left, right, centered
+
+r421 2007-07-06 15:33:02 +0200 mjk:
+
+ * TODO: new font elements
+
+r420 2007-07-06 15:04:14 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: new font elements: specialmail, addressee,
+ toname, toaddress, and internal use of \specialmail@format.
+
+r419 2007-07-06 12:24:58 +0200 mjk:
+
+ * tocstyle.dtx: version and date fixed
+
+r418 2007-07-06 12:24:27 +0200 mjk:
+
+ * tocstyle.dtx: more user documentation
+
+r417 2007-07-06 11:59:05 +0200 mjk:
+
+ * tocstyle.dtx: two macros renamed and documentation added
+
+r416 2007-07-06 11:46:38 +0200 mjk:
+
+ * tocstyle.dtx: - you may deactivate tocstyle for all or single tocs
+ now - some documentation added
+
+r415 2007-07-06 10:03:31 +0200 mjk:
+
+ * scrpage.dtx: fix: \partlevel is always -1 even if no chapter level
+ is available
+
+r414 2007-07-06 09:57:57 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex:
+ secnumdepth fixed
+
+r413 2007-07-06 09:56:01 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: lots of
+ improvements and new translations by Gernot Hassenpflug
+
+r412 2007-07-06 09:52:07 +0200 mjk:
+
+ * doc/: Bei scrartcl haben die Gliederungsebenen dieselben Nummern wie
+ bei scrbook und scrreprt.
+
+r411 2007-07-06 09:17:18 +0200 mjk:
+
+ * doc/: typo fix [Gernot Hassenpflug]
+
+r410 2007-07-05 18:56:09 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: several
+ improvements by our famous translator Gernot Hassenpflug
+
+r409 2007-07-04 17:16:12 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-fonts.dtx: initialize more font
+ size dependent lengths
+
+r408 2007-07-02 18:15:54 +0200 mjk:
+
+ * tocstyle.dtx: fix: use depth 0 at \l@chapter
+
+r406 2007-07-02 10:11:25 +0200 mjk:
+
+ * tocstyle.dtx: new package, that may be used outside KOMA-Script, too
+
+r405 2007-06-28 17:57:23 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: lots of
+ modifications by Gernot Hassenpflug
+
+r404 2007-06-27 08:28:01 +0200 mjk:
+
+ * TODO: new feature
+
+r399 2007-06-21 13:20:21 +0200 mjk:
+
+ * scrkernel-sections.dtx: \l@chapter and \l@section reimplemented to
+ make \raggedchapterentry and \raggedsectionentry work
+
+r398 2007-06-21 11:07:34 +0200 mjk:
+
+ * doc/: tex-master changed
+
+r397 2007-06-21 11:06:08 +0200 mjk:
+
+ * TODO, scrkernel-sections.dtx: new font elements: partentry,
+ partentrypagenumber, chapterentry, chapterentrypagenumber,
+ sectionentry, sectionentrypagenumber
+
+r396 2007-06-21 10:55:34 +0200 mjk:
+
+ * scrpage.dtx: \if@mainmatter test fixed
+
+r395 2007-06-20 11:10:51 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: Date fixed
+
+r394 2007-06-20 11:10:25 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: serveral
+ improvement by Gernot Hassenpflug
+
+r393 2007-06-20 10:53:58 +0200 mjk:
+
+ * scrkernel-basics.dtx: renamed \scr@ifvtex to \scr@ifVTeX and \ifvtex
+ to \ifVTeX
+
+r392 2007-06-20 10:21:09 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-typearea.dtx,
+ scrkernel-fonts.dtx, scrkernel-basics.dtx: \scr@ifundefined renamed to
+ \scr@ifundefinedorrelax, \ifundefined renamed to \ifundefinedorrelax
+
+r391 2007-06-20 09:28:05 +0200 mjk:
+
+ * scrkernel-title.dtx, TODO: new title command \subtitle with font
+ element subtitle
+
+r390 2007-06-14 09:56:35 +0200 mjk:
+
+ * scrpage.dtx: more robust definition of \if@mainmatter and support of
+ article classes with \if@mainmatter
+
+r389 2007-06-06 09:32:40 +0200 mjk:
+
+ * doc/: "Es wird auch kein zusätzlicher vertikaler Abstand vor und
+ nach der Umgebung eingefügt." added at declaration of addmargin
+
+r388 2007-06-06 09:28:51 +0200 mjk:
+
+ * scrkernel-floats.dtx: vertical alignment of captions fixed by adding
+ \unskip\strut
+
+r387 2007-06-06 08:40:10 +0200 mjk:
+
+ * doc/: more hyphenations [Stephan Hennig]
+
+r386 2007-06-05 09:03:45 +0200 mjk:
+
+ * doc/: one more hyphenation [Stephan Hennig]
+
+r385 2007-05-31 10:33:27 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: many
+ corrections by Gernot Hassenpflug
+
+r384 2007-05-30 15:26:34 +0200 mjk:
+
+ * TODO: Noch zwei Dinge zu tun
+
+r383 2007-05-30 15:24:01 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: two references fixed
+ (Stephan Hennig)
+
+r382 2007-05-29 16:59:52 +0200 mjk:
+
+ * doc/: scrlettr --> scrlttr2
+
+r381 2007-05-29 16:57:50 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: scrrprt
+ --> scrreprt
+
+r380 2007-05-29 16:56:36 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: many
+ corrections and new translations by Gernot Hassenpflug
+
+r379 2007-05-28 14:53:53 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: many corrections by
+ Gernot Hassenpflug, new file date, some more fixes
+
+r378 2007-05-28 12:13:28 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for new 2.97c BETA
+
+r377 2007-05-28 12:11:20 +0200 mjk:
+
+ * scrkernel-fonts.dtx: fix: use of \KOMA@UseObsolete replaced
+
+r376 2007-05-25 12:19:59 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: typo fix
+ [reported by Beat Birkofer]
+
+r375 2007-05-22 17:39:37 +0200 mjk:
+
+ * doc/: fix: one \KOMAoption --> \KOMAoptions
+
+r374 2007-05-17 10:30:34 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: file date fixed
+
+r373 2007-05-17 10:30:11 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: new: \flushbottom uses \stopletter to
+ deactivate itself at the last page
+
+r372 2007-05-14 18:30:12 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: new: font elements "refname" and "refvalue"
+
+r371 2007-05-12 18:20:38 +0200 mjk:
+
+ * scrkernel-compatibility.dtx: checksum fixed
+
+r370 2007-05-12 18:04:15 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ 2.97c BETA
+
+r369 2007-05-08 11:56:13 +0200 mjk:
+
+ * TODO: new features
+
+r368 2007-05-08 11:18:59 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: font (color) and thickness of foldmarks and
+ fromrule configurable using font elements "foldmark" and "fromrule"
+ and pseudo lengths "foldmarkthickness" and "fromrulethickness"
+
+r367 2007-04-19 17:15:07 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-basics.dtx: New implementation
+ of option execution
+
+r366 2007-04-17 09:33:44 +0200 mjk:
+
+ * scrkernel-basics.dtx: - changed: message text about obsolete options
+ etc.
+
+r365 2007-03-30 12:56:32 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: `locfield=narrow' and `locfield=wide' fixed
+
+r364 2007-03-25 11:13:12 +0200 mjk:
+
+ * scrkernel-version.dtx: Pepared for new BETA
+
+r363 2007-03-25 11:12:55 +0200 mjk:
+
+ * releaselist.txt: Release 2007/03/25 v2.97b
+
+r362 2007-03-25 10:48:11 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ release 2.97b
+
+r361 2007-03-09 15:22:09 +0100 mjk:
+
+ * scrkernel-sections.dtx: bug at \@@makechapterhead using
+ chapterprefix fixed
+
+r360 2007-03-08 11:49:23 +0100 mjk:
+
+ * scrkernel-basics.dtx: use of \ifcsname for definition of
+ \scr@ifundefined fixed
+
+r359 2007-03-07 11:07:50 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for new BETA
+
+r358 2007-03-07 11:07:29 +0100 mjk:
+
+ * releaselist.txt: Release 2007/03/07 v2.97a
+
+r357 2007-03-07 10:47:26 +0100 mjk:
+
+ * Makefile: renamed komascript-texmf.zip to komascript.tds.zip
+
+r356 2007-03-07 10:40:27 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx: prepared for
+ version 2.97a
+
+r355 2007-03-07 10:39:55 +0100 mjk:
+
+ * scrlfile.dtx: fix: \@loadwithoptions was broken
+
+r353 2007-03-02 12:13:00 +0100 mjk:
+
+ * releaselist.txt: Revision fixed
+
+r352 2007-03-02 12:11:57 +0100 mjk:
+
+ * doc/: fix: reference to sec:maincls.compatiblityOptions
+
+r351 2007-03-02 11:50:10 +0100 mjk:
+
+ * releaselist.txt: Revision fixed
+
+r350 2007-03-02 11:47:35 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: v2.97 added
+
+r349 2007-03-02 11:33:19 +0100 mjk:
+
+ * scrkernel-version.dtx: new beta
+
+r348 2007-03-02 11:32:35 +0100 mjk:
+
+ * releaselist.txt: Release 2007/03/02 v2.97
+
+r347 2007-03-02 09:39:10 +0100 mjk:
+
+ * scrkernel-version.dtx: prepared for release 2.97
+
+r346 2007-03-02 09:37:06 +0100 mjk:
+
+ * README: it's 2007
+
+r345 2007-02-27 13:01:29 +0100 mjk:
+
+ * scrkernel-floats.dtx: fix: min. caption width is 0pt
+
+r344 2007-01-24 17:49:13 +0100 mjk:
+
+ * scrkernel-sections.dtx: fix: \@seccntformat gives
+ \othersectionlevelsformat \csname the#1\endcsname, that will be used
+ by the default \othersectionlevelformat with 3 (instead of 1)
+ arguments. With this \automark{subsubsection} will give correct
+ numbers at head.
+
+r343 2007-01-12 09:57:36 +0100 mjk:
+
+ * doc/: fix: No space before \and at \ChangedAt
+
+r341 2007-01-09 19:07:25 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, komabug.tex, scrlogo.dtx,
+ scrkernel-notepaper.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx, Makefile.baseinit,
+ scrsource.tex, scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ manifest.txt, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, scrkernel-pseudolengths.dtx, scrpage.dtx,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx, scrtime.dtx,
+ scrkernel-fonts.dtx, scraddr.dtx, scrlfile.dtx, scrkernel-basics.dtx,
+ doc/, doc/scrguide.ist, doc/Makefile, doc/guide.tex,
+ doc/scrguide.gst, doc/scrguide.cls, doc/plength.dtx,
+ doc/Makefile.guide, doc/Makefile.latexinit, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/Makefile,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/adrconvnote.tex,
+ doc/english/htmlsetup, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx: copyright end date changed to 2007
+
+r340 2007-01-09 11:41:16 +0100 mjk:
+
+ * TODO, doc/, doc/english/, doc/english/scrbookreportarticle.tex:
+ documentation of page break changes at toc
+
+r339 2007-01-09 11:39:44 +0100 mjk:
+
+ * scrkernel-sections.dtx: fix: element "minisec" may not be an alias
+ element and a real element
+
+r338 2007-01-08 10:44:47 +0100 mjk:
+
+ * TODO, doc/: Dokumentation von \part verbessern
+
+r337 2007-01-08 10:05:37 +0100 mjk:
+
+ * doc/: - documentation of font aliases - documentation of font
+ element minisec - 'sectioning' is an alias of 'disposition' only
+
+r336 2007-01-08 09:45:33 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: helper rule to start editor with guide
+ sources
+
+r335 2007-01-06 18:14:46 +0100 mjk:
+
+ * TODO: fixed problem removed
+
+r334 2007-01-06 18:14:21 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: fix: \@mparswitchfalse added
+
+r333 2007-01-05 11:18:42 +0100 mjk:
+
+ * TODO: more problems
+
+r332 2007-01-04 11:54:55 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: fix:
+ \refloatstyle --> \restylefloat
+
+r331 2007-01-04 11:53:49 +0100 mjk:
+
+ * doc/: fix: \refloatstyle --> \restylefloat
+
+r330 2007-01-03 12:46:55 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: fix for option cleardoublepage, value
+ current
+
+r329 2007-01-02 11:06:17 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: replacement for option cleardoublestandard
+ fixed
+
+r328 2006-12-12 10:30:56 +0100 mjk:
+
+ * doc/: Neue Optionen "version" und "chapteratlists"
+
+r327 2006-12-12 10:30:21 +0100 mjk:
+
+ * doc/: Dokumentation der Option "version" erweitert
+
+r326 2006-12-07 11:50:19 +0100 mjk:
+
+ * TODO, scrkernel-sections.dtx: bug with automatic set dot at end of
+ numbers fixed
+
+r325 2006-12-07 10:56:31 +0100 mjk:
+
+ * TODO: known bug added
+
+r324 2006-12-07 10:54:29 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: option cleardoubleplain added
+
+r323 2006-12-07 09:58:16 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: bugfix: refline=wide was narrow and
+ refline=narrow was wide
+
+r322 2006-12-07 09:53:17 +0100 mjk:
+
+ * scrkernel-sections.dtx: typo fix at use of command \scr@v@2.96
+
+r321 2006-12-03 12:00:28 +0100 mjk:
+
+ * TODO: needs for documentation added
+
+r320 2006-12-03 11:58:12 +0100 mjk:
+
+ * scrkernel-listsof.dtx, scrkernel-sections.dtx: new option
+ "chapteratlists" with values entry or amount of vertical space
+
+r319 2006-12-03 09:24:15 +0100 mjk:
+
+ * scrkernel-sections.dtx: New font element "minisec" and not needed
+ \nobreak at font selection of headings removed with the result that
+ the last entry of an font element may need an argument. \caps from
+ soul may not be used because of implementation of \@sect and \@ssect
+ at the LaTeX kernel.
+
+r318 2006-12-02 11:41:37 +0100 mjk:
+
+ * scrkernel-sections.dtx: last command of font elements part,
+ partnumber, chapter and chapterprefix (new) may need an argument
+ that does not effect \baselineskip. To make command \caps of package
+ soul work also default of \chapterformat was changed (\mbox added).
+
+r317 2006-12-02 11:38:22 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: options changed ("version" and
+ "smallheadings" added)
+
+r316 2006-12-02 11:37:12 +0100 mjk:
+
+ * scrkernel-typearea.dtx: - new hook at end of \typearea and new
+ command \AfterCalculatingTypearea to
+ handle the hook
+
+ - mew command \activateareas to activate changes of layout parameters even
+
+ after \begin{document}
+
+r315 2006-12-02 11:33:29 +0100 mjk:
+
+ * scrmain.ins: all classes have option "version"
+
+r314 2006-11-30 19:57:36 +0100 mjk:
+
+ * scrkernel-sections.dtx: extended the page break algorithm at toc
+ from part down to chapter or section down to subparagraph
+
+r313 2006-11-29 16:38:15 +0100 mjk:
+
+ * doc/: two \begin{Explain} moved
+
+r312 2006-11-29 16:29:25 +0100 mjk:
+
+ * doc/: one \begin{Explain} moved
+
+r311 2006-11-28 11:50:17 +0100 mjk:
+
+ * scrkernel-sections.dtx: Mit Option version (ohne Wert oder mit Wert
+ ab 2.96a) erfolgt im Inhaltsverzeichnis kein Seitenumbruch mehr
+ zwischen part- und chapter-, bzw. part- und section-, bzw. chapter-
+ und section-, bzw. section- und subsection-Eintrag. Das genau
+ Verhalten ist von der Klasse abhängig.
+
+r310 2006-11-28 09:26:08 +0100 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-sections.dtx: New version
+ will behave different in section etc. headings with parskip options
+ used. -- Dssss und die folgenden Zeilen werden ignoriert --
+
+ M scrksect.dtx M scrkcomp.dtx
+
+r309 2006-11-26 11:38:02 +0100 mjk:
+
+ * scrkernel-version.dtx: new BETA
+
+r308 2006-11-26 11:37:27 +0100 mjk:
+
+ * releaselist.txt: Release 2006/11/26 v2.96
+
+r307 2006-11-26 11:30:55 +0100 mjk:
+
+ * scrkernel-version.dtx: Release: 2006/11/26 v2.96
+
+r306 2006-11-26 11:29:27 +0100 mjk:
+
+ * TODO: think about a new option
+
+r305 2006-11-26 11:27:07 +0100 mjk:
+
+ * scrkernel-basics.dtx: Commands, that have an internal and an
+ external name (defined using \let@as@internal@defined) may optional
+ be defined only internal (using option internalonly). The backslash
+ of the macro name has to be replaced by a slash at the option
+ argument (e. g. "internalonly=/ifvtex/ifundefined").
+
+r304 2006-09-12 09:57:55 +0200 mjk:
+
+ * TODO: two already done items removed
+
+r303 2006-09-12 09:57:18 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/typearea.tex: fix: line number at
+ \areaset example
+
+r302 2006-09-12 09:55:01 +0200 mjk:
+
+ * scrkernel-typearea.dtx: fix: set \topskip
+
+r301 2006-09-10 08:42:55 +0200 mjk:
+
+ * TODO: two problems added
+
+r300 2006-08-30 10:09:32 +0200 mjk:
+
+ * scrkernel-version.dtx: ready for release of 2.96 BETA
+
+r299 2006-08-27 09:20:08 +0200 mjk:
+
+ * doc/: Tippfehler korrigiert [gemeldet von Stefan Meier]
+
+r298 2006-08-21 12:51:18 +0200 mjk:
+
+ * scrkernel-typearea.dtx: new: warn if \typearea is used at any group
+
+r297 2006-08-21 12:17:06 +0200 mjk:
+
+ * scrkernel-sections.dtx, scrkernel-miscellaneous.dtx: change: some
+ more options changed to use keyval
+
+r296 2006-08-21 12:16:03 +0200 mjk:
+
+ * scrkernel-title.dtx: fix: \maketitle sets \parskip etc.
+
+r295 2006-08-20 12:10:53 +0200 mjk:
+
+ * scrkernel-basics.dtx: fix: \ProcessOptions added
+
+r294 2006-08-20 12:05:29 +0200 mjk:
+
+ * scrkernel-basics.dtx: new: \AfterKOMAoptions
+
+r293 2006-08-20 12:03:59 +0200 mjk:
+
+ * scrkernel-fonts.dtx: fix: change entries
+
+r292 2006-08-20 12:03:01 +0200 mjk:
+
+ * scrkernel-typearea.dtx: fix: typos at change entries
+
+r291 2006-08-20 10:27:41 +0200 mjk:
+
+ * scrkernel-basics.dtx: fix: preserve \CurrentOption from being
+ destroyed by xkeyval`s \setkeys
+
+r290 2006-08-18 17:05:25 +0200 mjk:
+
+ * scrkernel-typearea.dtx: changed: \ProcessOptions* instead of
+ \ProcessOptions
+
+r289 2006-08-18 17:03:14 +0200 mjk:
+
+ * scrkernel-basics.dtx: fix: \DeclareKeyValOption works if xkeyval was
+ loaded; unused macros removed
+
+r288 2006-08-18 10:46:42 +0200 mjk:
+
+ * scrkernel-fonts.dtx: Fix: \usekomafont of an alias element
+
+r287 2006-08-12 09:34:36 +0200 mjk:
+
+ * TODO: need for docu
+
+r286 2006-08-12 09:33:28 +0200 mjk:
+
+ * scrkernel-version.dtx: Version with new features not only bug fixes
+
+r285 2006-08-12 09:31:59 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-fonts.dtx: every font size may be
+ set up
+
+r284 2006-08-12 09:25:46 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, scrkernel-basics.dtx: internal use of
+ \scr@ifundefined instead of \ifundefined
+
+r283 2006-08-11 12:37:15 +0200 mjk:
+
+ * scrkernel-pagestyles.dtx: Fix: arguments of \PassOptionsToPackage
+ exchanged at headinclude and footinclude
+
+r274 2006-08-09 08:50:14 +0200 mjk:
+
+ * TODO: scrcover
+
+r272 2006-08-03 12:16:01 +0200 mjk:
+
+ * scrkernel-paragraphs.dtx: fix: set \parsep at \@list@extra instead
+ of \parskip
+
+r271 2006-08-02 09:44:51 +0200 mjk:
+
+ * TODO: missing docu note
+
+r270 2006-08-02 09:43:15 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: new: option backaddress has two new values:
+ underlines (default) to underline the back sending address, plain to
+ set the back sending address plain
+
+r269 2006-08-02 09:36:18 +0200 mjk:
+
+ * TODO: updated
+
+r268 2006-08-02 09:35:29 +0200 mjk:
+
+ * scrlfile.dtx: new: \ReplaceClass, \ReplacePackage, \ReplaceInput
+
+r267 2006-07-30 11:39:17 +0200 mjk:
+
+ * scrkernel-version.dtx: 2.95c BETA
+
+r266 2006-07-30 11:38:37 +0200 mjk:
+
+ * releaselist.txt: 2.95b
+
+r265 2006-07-30 11:19:37 +0200 mjk:
+
+ * scrkernel-version.dtx: prepared for new release v2.95b
+
+r264 2006-07-30 11:17:26 +0200 mjk:
+
+ * scrkernel-sections.dtx: replaces sectioning by new term disposition;
+ sectioning is a font alias for disposition, now
+
+r263 2006-07-30 11:15:44 +0200 mjk:
+
+ * scrkernel-fonts.dtx: Breaking of some messages improved
+
+r262 2006-07-28 18:10:07 +0200 mjk:
+
+ * scrkernel-miscellaneous.dtx: \ifthispageodd fixed, it uses basics of
+ the LaTeX label mechanism now, so ``run again'' detection of several
+ TeX shells should work
+
+r261 2006-07-22 07:53:58 +0200 mjk:
+
+ * scrkernel-version.dtx: new BETA
+
+r260 2006-07-22 07:53:28 +0200 mjk:
+
+ * releaselist.txt: 2006/07/22 v2.95a
+
+r259 2006-07-22 07:46:10 +0200 mjk:
+
+ * scrkernel-version.dtx: v2.95a
+
+r258 2006-07-22 07:42:14 +0200 mjk:
+
+ * scrkernel-listsof.dtx: switching off options tocleft or listsleft
+ will not longer result in an error
+
+r257 2006-07-22 07:41:17 +0200 mjk:
+
+ * scrkernel-sections.dtx: new: \partheadstartvskip, \partheadmidvskip,
+ \partheadendvskip, \raggedpart
+
+r256 2006-07-20 09:46:55 +0200 mjk:
+
+ * scrkernel-listsandtabulars.dtx: \@listdepth at addmargin fixed
+
+r255 2006-07-20 09:46:11 +0200 mjk:
+
+ * scrkernel-typearea.dtx: \normalsize to \typearea added; expressions
+ for big font sizes improved
+
+r254 2006-07-13 10:36:46 +0200 mjk:
+
+ * scrkernel-floats.dtx: fix: vertical alignment of multi line captions
+ same like single line caption does not longer depend on (x)color
+ package
+
+r253 2006-07-13 10:35:15 +0200 mjk:
+
+ * TODO: fixed bug removed
+
+r252 2006-07-13 09:19:09 +0200 mjk:
+
+ * TODO: Note about vtop color bug
+
+r251 2006-07-06 15:14:55 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: some fixes by Stephan
+ Hennig and ispell
+
+r248 2006-07-05 10:16:16 +0200 mjk:
+
+ * scrkernel-version.dtx: next beta
+
+r247 2006-07-05 10:15:02 +0200 mjk:
+
+ * releaselist.txt: 2006/07/05 v2.95
+
+r246 2006-07-05 10:03:37 +0200 mjk:
+
+ * README: SVN comment added
+
+r243 2006-07-05 09:39:06 +0200 mjk:
+
+ * doc/: missing brace added
+
+r241 2006-07-05 09:08:45 +0200 mjk:
+
+ * scrkernel-version.dtx: Release: 2006/07/05 v2.95 KOMA-Script
+
+r240 2006-07-05 09:07:03 +0200 mjk:
+
+ * releaselist.txt: rc3
+
+r239 2006-07-04 18:15:00 +0200 mjk:
+
+ * scrkernel-sections.dtx: at \appendix replaced \newcommand* by
+ \cs{gdef}
+
+r238 2006-07-04 09:43:32 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: new translation by
+ Kevin Pfeiffer
+
+r237 2006-07-03 10:05:49 +0200 mjk:
+
+ * scrkernel-floats.dtx: unused assignment at \@@makecaption removed
+ [Moss]
+
+r236 2006-07-01 09:21:32 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: *** empty log message ***
+
+r235 2006-07-01 09:20:48 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: at free version use listings with breaklines
+
+r234 2006-07-01 09:06:22 +0200 mjk:
+
+ * doc/: Dateinamen angepasst
+
+r233 2006-07-01 09:01:25 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: readme.txt -->
+ README INSTALL.TXT --> INSTALL LEGAL.TXT --> lppl.txt LEGALDE.TXT
+ --> lppl-de.txt
+
+r232 2006-07-01 08:59:02 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: LEGAL.TXT --> lppl.txt
+
+r231 2006-07-01 08:55:43 +0200 mjk:
+
+ * doc/, doc/english/: references fixed
+
+r230 2006-07-01 08:53:43 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: references
+ fixed
+
+r229 2006-07-01 08:44:48 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: \cite fix
+
+r228 2006-07-01 08:41:54 +0200 mjk:
+
+ * doc/, doc/guide.bib: UK:FAQ: date removed
+
+r227 2006-07-01 08:36:28 +0200 mjk:
+
+ * doc/, doc/guide.bib: added key to UK:FAQ
+
+r226 2006-07-01 08:32:43 +0200 mjk:
+
+ * doc/, doc/guide.bib: protect \KOMAScript
+
+r225 2006-07-01 08:30:31 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: \cite fix
+
+r224 2006-07-01 08:27:57 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/introduction.tex: \cite fix
+
+r223 2006-06-27 10:07:40 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: translation of pseudo
+ length table [Stephan Hennig]
+
+r222 2006-06-27 09:52:02 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: declaration of
+ fromrulewidth added [Stephan Hennig]
+
+r221 2006-06-27 09:42:10 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: lots of changes
+ assigned by Stephan Hennig 2004(!!!) merged
+
+r220 2006-06-20 09:19:08 +0200 mjk:
+
+ * scrkernel-version.dtx: ready for 2.95 RC3
+
+r219 2006-06-14 10:34:22 +0200 mjk:
+
+ * TODO: updated
+
+r218 2006-06-14 10:31:10 +0200 mjk:
+
+ * manifest.txt: TODO removed
+
+r217 2006-06-14 10:28:46 +0200 mjk:
+
+ * manifest.txt: notes about not existing files removed
+
+r216 2006-06-14 10:26:48 +0200 mjk:
+
+ * Makefile: added release preparation option
+
+r215 2006-06-14 10:26:17 +0200 mjk:
+
+ * INSTALLD.txt, INSTALL.txt: added some more refresh notes
+
+r212 2006-06-07 13:04:01 +0200 mjk:
+
+ * releaselist.txt: 2006/06/07 v2.95 RC2
+
+r211 2006-06-07 12:57:14 +0200 mjk:
+
+ * scrkernel-version.dtx: Ready for release 2.95 RC2
+
+r210 2006-06-06 10:39:42 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: fix: foldmarks should not depenand on type
+ area
+
+r209 2006-06-02 12:10:07 +0200 mjk:
+
+ * scrkernel-fonts.dtx: \l@addto@macro improved
+
+r208 2006-06-01 13:32:57 +0200 mjk:
+
+ * scrkernel-language.dtx: fix: Define \today default at all classes
+
+r207 2006-06-01 10:54:36 +0200 mjk:
+
+ * scrkernel-version.dtx: Beta on the way to RC2
+
+r206 2006-06-01 10:52:07 +0200 mjk:
+
+ * scrmain.ins: fix: scrkmisc (body) must be after scrksect (body)
+
+r204 2006-05-31 09:43:38 +0200 mjk:
+
+ * releaselist.txt: 203 2006/05/27 v2.95 RC1
+
+r203 2006-05-31 09:32:40 +0200 mjk:
+
+ * Makefile: bindist: copy ChangeLog to root-zip
+
+r202 2006-05-31 09:30:52 +0200 mjk:
+
+ * scrkernel-version.dtx, Makefile, README: Almost ready for release
+ 2.95 RC1
+
+r200 2006-05-27 08:22:36 +0200 mjk:
+
+ * Makefile, INSTALLD.txt, INSTALL.txt, README: release candidate 1
+
+r199 2006-05-10 14:13:39 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/guide-english.tex: Licence note
+ fixed
+
+r198 2006-05-10 12:56:11 +0200 mjk:
+
+ * Makefile: ChangeLog: fixed
+
+r197 2006-05-10 12:42:44 +0200 mjk:
+
+ * doc/: usage of komabug replaced by longer description
+
+r196 2006-05-04 09:25:36 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: KOMA key pagenumber fixed [Henk Jongbloets]
+
+r195 2006-05-03 16:11:07 +0200 mjk:
+
+ * Makefile, komabug.tex, manifest.txt: komabug.tex added
+
+r194 2006-05-02 10:19:59 +0200 mjk:
+
+ * doc/, doc/english/, doc/english/scrlttr2.tex: Translators added to
+ initial comment
+
+r193 2006-04-24 16:24:06 +0200 mjk:
+
+ * doc/: Komma korrigiert [Stephan Hennig]
+
+r192 2006-04-24 12:06:05 +0200 mjk:
+
+ * Makefile: spellbug fixed
+
+r191 2006-04-24 12:04:59 +0200 mjk:
+
+ * doc/, doc/bin/: genchangelog.pl moved to developers directory
+
+r190 2006-04-24 12:02:55 +0200 mjk:
+
+ * Makefile, doc/, doc/bin/: improved ChangeLog processing
+
+r189 2006-04-24 11:06:32 +0200 mjk:
+
+ * ChangeLog.cvs, doc/, doc/bin/: Old ChangeLog changed into
+ ChangeLog.cvs
+
+r188 2006-04-24 11:04:42 +0200 mjk:
+
+ * ChangeLog.cvs: Switch line added
+
+r187 2006-04-21 10:13:43 +0200 mjk:
+
+ * scrkernel-fonts.dtx: \newkomafont fixed (define \scr@fnt@<element>
+ not longer as \csname @<element>font\endcsname but at
+ \@<element>font)
+
+r186 2006-04-20 14:09:24 +0200 mjk:
+
+ * scrkernel-fonts.dtx: \setkomafont fixed
+
+r185 2006-04-20 10:41:12 +0200 mjk:
+
+ * scrkernel-version.dtx: new date of beta release
+
+r184 2006-04-20 08:09:46 +0200 mjk:
+
+ * scrkernel-sections.dtx: \@@makechapterhead fixed: brace moved
+
+r183 2006-04-14 15:40:32 +0200 mjk:
+
+ * scrkernel-paragraphs.dtx: work around for everysel added
+
+r182 2006-04-14 12:36:58 +0200 mjk:
+
+ * scrkernel-notepaper.dtx: option "subject" fixed: old garbage code
+ removed
+
+r181 2006-04-11 11:18:24 +0200 mjk:
+
+ * Makefile.baseinit, doc/, doc/Makefile, doc/Makefile.guide:
+ installation using links
+
+r180 2006-04-10 12:04:55 +0200 mjk:
+
+ * TODO, README: README changed
+
+r179 2006-04-08 12:01:51 +0200 mjk:
+
+ * Makefile: INSTALL.txt and INSTALLD.txt added
+
+r178 2006-04-08 12:01:25 +0200 mjk:
+
+ * manifest.txt, doc/, doc/Makefile: some guide wrappers added
+
+r177 2006-04-08 11:44:09 +0200 mjk:
+
+ * scrstrip.inc, manifest.txt, TODO: manifest test added
+
+r176 2006-03-31 14:09:18 +0200 mjk:
+
+ * TODO, INSTALL.txt: english translation of INSTALLD.txt
+
+r175 2006-03-31 13:56:27 +0200 mjk:
+
+ * TODO, doc/, doc/koma-script.html, doc/Makefile: koma-script.html and
+ generated aliases added
+
+r174 2006-03-31 11:06:56 +0200 mjk:
+
+ * scrkernel-compatibility.dtx, TODO: \@setif implemented iff option
+ version was set to a value less than 2.95
+
+r173 2006-03-30 18:51:43 +0200 mjk:
+
+ * TODO: komascr
+
+r172 2006-03-30 18:35:59 +0200 mjk:
+
+ * INSTALLD.txt: Deutsche Installationsanleitung
+
+r170 2006-03-30 16:25:37 +0200 mjk:
+
+ * manifest.txt: scrtime added
+
+r169 2006-03-30 16:24:27 +0200 mjk:
+
+ * Makefile, scrmain.ins, scrtime.dtx: scrtime added
+
+r168 2006-03-30 13:04:36 +0200 mjk:
+
+ * manifest.txt: Readd missing contents
+
+r167 2006-03-30 12:14:18 +0200 mjk:
+
+ * TODO: Release Entscheidung entfernt
+
+r166 2006-03-30 12:08:16 +0200 mjk:
+
+ * Makefile: bindist fixed
+
+r165 2006-03-30 12:04:05 +0200 mjk:
+
+ * Makefile, Makefile.baseinit: rules dist-, install-, uninstall-, and
+ bindist-rules updated
+
+r164 2006-03-30 12:02:08 +0200 mjk:
+
+ * Makefile, Makefile.baseinit, doc/, doc/Makefile,
+ doc/Makefile.guide: rules dist-, install-, uninstall-, and
+ bindist-rules updated
+
+r163 2006-03-30 10:19:06 +0200 mjk:
+
+ * Makefile: rule maintain fixed
+
+r162 2006-03-29 11:12:47 +0200 mjk:
+
+ * TODO: pdfcprot entry removed
+
+r161 2006-03-29 11:10:52 +0200 mjk:
+
+ * scrkernel-basics.dtx: undefine \ifpdftex before loading pdfcprot and
+ redefine after loading pdfcprot
+
+r160 2006-03-29 11:09:45 +0200 mjk:
+
+ * scrmain.ins: load scrlfile at scrkbase
+
+r159 2006-03-29 10:26:53 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, Makefile, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-variables.dtx, scrkernel-footnotes.dtx,
+ scrkernel-index.dtx, scrkernel-circularletters.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ manifest.txt, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrmain.ins, scrkxflo.dtx,
+ Makefile.baserules, scrkernel-pseudolengths.dtx, scrpage.dtx,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scraddr.dtx, scrlfile.dtx, scrkernel-basics.dtx,
+ doc/, doc/Makefile, doc/guide.tex, doc/scrguide.gst,
+ doc/scrguide.cls, doc/plength.dtx, doc/Makefile.guide, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/Makefile,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/adrconvnote.tex,
+ doc/english/htmlsetup, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, doc/bin/, doc/bin/genhtmlidx.pl,
+ doc/bin/genindex.pl, obsolete/scrlettr.ins, obsolete/scrlettr.dtx: fix
+ of initial comment
+
+r158 2006-03-29 10:12:51 +0200 mjk:
+
+ * Makefile, scrmain.ins, obsolete/scrlettr.ins,
+ obsolete/scrlettr.dtx: obsolete scrlettr added
+
+r157 2006-03-29 09:42:59 +0200 mjk:
+
+ * Makefile: scrpage/scrpage2 added
+
+r156 2006-03-29 09:41:30 +0200 mjk:
+
+ * scrmain.ins, scrpage.dtx: scrpage/scrpage2 added
+
+r153 2006-03-28 09:30:06 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrkernel-bibliography.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrkxflo.dtx,
+ scrkernel-pseudolengths.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx, scraddr.dtx,
+ scrlfile.dtx, scrkernel-basics.dtx: character table test activated
+
+r152 2006-03-28 09:13:39 +0200 mjk:
+
+ * TODO: TODO list
+
+r151 2006-03-28 08:59:06 +0200 mjk:
+
+ * scrstrip.inc: set switches only at top level
+
+r150 2006-03-27 12:17:35 +0200 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-basics.dtx: some commands moved
+ from scrktare to scrkbase and fixed
+
+r149 2006-03-27 09:57:45 +0200 mjk:
+
+ * Makefile, scrmain.ins, scraddr.dtx: scraddr added
+
+r148 2006-03-25 10:42:41 +0100 mjk:
+
+ * manifest.txt: some files added one removed
+
+r147 2006-03-25 10:32:59 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrlogo.dtx, scrkernel-notepaper.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, scrkernel-variables.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-circularletters.dtx, scrkernel-bibliography.dtx,
+ scrkernel-typearea.dtx, scrkernel-pagestyles.dtx,
+ scrkernel-listsandtabulars.dtx, scrkernel-listsof.dtx,
+ scrkernel-letterclassoptions.dtx, scrkxflo.dtx,
+ scrkernel-pseudolengths.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx, scrlfile.dtx,
+ scrkernel-basics.dtx: Version number set to 2.95
+
+r146 2006-03-25 08:49:38 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: fix: Define \LCOWarning(NoLine)
+ using \providecommand
+
+r145 2006-03-25 08:48:42 +0100 mjk:
+
+ * scrkernel-language.dtx: \dateenglish defined if undefined
+
+r144 2006-03-24 13:00:38 +0100 mjk:
+
+ * scrkernel-version.dtx: version date changed
+
+r143 2006-03-24 12:59:55 +0100 mjk:
+
+ * scrmain.ins: lco file generation
+
+r142 2006-03-24 12:58:50 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: lco part with lco and KOMAold switch
+
+r141 2006-03-24 12:58:16 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: \LCOWarningNoLine and \LCOWarning
+
+r138 2006-03-24 11:23:38 +0100 mjk:
+
+ * scrkernel-fonts.dtx: fixed: too many \expandafters at \setkomafont
+
+r137 2006-03-24 11:14:23 +0100 mjk:
+
+ * doc/, doc/Makefile.latexinit: PDFLATEX changed
+
+r135 2006-03-23 12:11:28 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: version 2.95 added
+
+r134 2006-03-23 12:07:59 +0100 mjk:
+
+ * scrsource.tex: scrlttr2 parts added
+
+r133 2006-03-23 12:05:25 +0100 mjk:
+
+ * Makefile: dtx files of scrlttr2 added
+
+r132 2006-03-23 12:03:58 +0100 mjk:
+
+ * scrmain.ins: scrlttr2 generation
+
+r131 2006-03-23 12:03:05 +0100 mjk:
+
+ * scrkernel-variables.dtx: koma variables
+
+r130 2006-03-23 12:02:34 +0100 mjk:
+
+ * scrkernel-pseudolengths.dtx: pseudo length
+
+r129 2006-03-23 12:02:03 +0100 mjk:
+
+ * scrkernel-letterclassoptions.dtx: lco part of scrlltr2
+
+r128 2006-03-23 12:01:39 +0100 mjk:
+
+ * scrkernel-circularletters.dtx: circular letter part
+
+r127 2006-03-23 12:01:14 +0100 mjk:
+
+ * scrkernel-version.dtx: scrlttr2 name fixed
+
+r126 2006-03-23 12:00:49 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: trace log fixed
+
+r125 2006-03-23 12:00:21 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: Default parskip=false added
+
+r124 2006-03-23 11:59:08 +0100 mjk:
+
+ * scrkernel-notepaper.dtx: note paper and letter environment
+
+r123 2006-03-23 11:58:00 +0100 mjk:
+
+ * scrdoc.dtx: New type KOMAfonts added
+
+r122 2006-03-23 10:17:35 +0100 mjk:
+
+ * scrkernel-fonts.dtx: letter class uses default font size of 12 pt
+
+r121 2006-03-22 15:16:40 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: Use of \aliaskomafont
+
+r120 2006-03-22 15:11:54 +0100 mjk:
+
+ * scrkernel-fonts.dtx: font aliases will produce infos not warnings or
+ errors
+
+r119 2006-03-22 14:47:25 +0100 mjk:
+
+ * scrkernel-fonts.dtx: Fix: \aliadkomafont --> \aliaskomafont
+
+r118 2006-03-22 14:35:11 +0100 mjk:
+
+ * scrkernel-sections.dtx: Use of \aliaskomafont
+
+r117 2006-03-22 14:31:50 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: Use of \newkomafont
+
+r116 2006-03-22 11:00:30 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: Call of \DeclareKeyValOption extended
+ for scrlttr2
+
+r115 2006-03-22 09:27:23 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-compatibility.dtx,
+ scrkernel-title.dtx, scrlogo.dtx, scrkernel-paragraphs.dtx,
+ scrkernel-floats.dtx, scrkernel-language.dtx,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx,
+ scrkernel-bibliography.dtx, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx,
+ scrkernel-listsof.dtx, scrkxflo.dtx, scrkernel-sections.dtx,
+ scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ scrkernel-basics.dtx: german --> ngerman
+
+r113 2006-03-22 09:24:57 +0100 mjk:
+
+ * scrdoc.dtx: Defining terms if babel was loaded
+
+r112 2006-03-22 09:22:13 +0100 mjk:
+
+ * scrsource.tex: german --> ngerman, new files added
+
+r111 2006-03-20 10:59:13 +0100 mjk:
+
+ * scrkernel-language.dtx: numerical date and language definitions for
+ letters added
+
+r110 2006-03-16 15:37:57 +0100 mjk:
+
+ * scrkernel-compatibility.dtx: New part to set up compatibility
+
+r109 2006-03-16 15:27:24 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: brace error at pagestyle plain fixed
+
+r107 2006-03-15 17:12:10 +0100 mjk:
+
+ * scrstrip.inc: copyright years changed
+
+r106 2006-03-15 17:11:42 +0100 mjk:
+
+ * scrstrop.inc: message changed
+
+r105 2006-03-15 17:09:59 +0100 mjk:
+
+ * scrstrip.inc: preamble changed
+
+r104 2006-03-15 15:14:56 +0100 mjk:
+
+ * scrlogo.dtx: auctex mode doctex
+
+r103 2006-03-15 15:14:13 +0100 mjk:
+
+ * scrlfile.dtx: auctex mode doctex
+
+r102 2006-03-15 14:32:28 +0100 mjk:
+
+ * scrkernel-listsandtabulars.dtx: scrlttr2 integration
+
+r101 2006-03-15 14:29:11 +0100 mjk:
+
+ * scrkernel-index.dtx: scrlttr2 integration
+
+r100 2006-03-15 14:27:49 +0100 mjk:
+
+ * scrkernel-bibliography.dtx: scrlttr2 integration
+
+r99 2006-03-15 14:25:35 +0100 mjk:
+
+ * scrkernel-listsof.dtx: scrlttr2 integrated
+
+r98 2006-03-15 14:23:58 +0100 mjk:
+
+ * scrkernel-sections.dtx: scrlttr2 integration
+
+r97 2006-03-15 14:21:07 +0100 mjk:
+
+ * scrkernel-title.dtx: scrlttr2 integration
+
+r96 2006-03-15 14:17:34 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: scrlttr2 integration
+
+r95 2006-03-15 12:51:02 +0100 mjk:
+
+ * scrkernel-pagestyles.dtx: scrlttr2 integration
+
+r94 2006-03-15 12:14:00 +0100 mjk:
+
+ * scrkernel-footnotes.dtx: auctex mode doctex
+
+r93 2006-03-15 12:10:49 +0100 mjk:
+
+ * scrkernel-floats.dtx: scrlttr2 integration
+
+r92 2006-03-15 11:22:48 +0100 mjk:
+
+ * scrkernel-typearea.dtx: Option paper has no default value
+
+r91 2006-03-15 10:59:11 +0100 mjk:
+
+ * scrkernel-miscellaneous.dtx: scrlttr2 integration
+
+r90 2006-03-14 14:34:28 +0100 mjk:
+
+ * scrkernel-basics.dtx: AucTeX mode: doctex
+
+r89 2006-03-14 14:33:10 +0100 mjk:
+
+ * scrkernel-version.dtx: scrlttr2 added
+
+r88 2006-03-13 14:16:37 +0100 mjk:
+
+ * scrkernel-fonts.dtx: file date fixed
+
+r87 2006-03-13 14:14:32 +0100 mjk:
+
+ * scrkernel-fonts.dtx: Option fontsize=<value> implemented
+
+r86 2006-03-13 13:52:01 +0100 mjk:
+
+ * scrkernel-typearea.dtx, scrkernel-fonts.dtx: \@pt@scan moved from
+ scrktare.dtx to scrkfont.dtx
+
+r84 2006-03-12 12:26:33 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: parskip=relative and parskip=absolute
+ fixed
+
+r81 2006-03-11 09:10:40 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: parskip Optionen auf keyval umgestellt,
+ neue Werte "relative" und "absolute"
+
+r80 2006-03-10 13:07:47 +0100 mjk:
+
+ * scrkernel-title.dtx: Halbenglischen Ausdruck "in-page Titel" durch
+ "Titelkopf" ersetzt.
+
+r79 2006-03-10 13:01:07 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: Planung angegeben
+
+r78 2006-03-10 12:35:26 +0100 mjk:
+
+ * scrkernel-language.dtx: catcodes at definition ot \languagename
+ should not longer matter
+
+r74 2006-03-08 15:03:23 +0100 mjk:
+
+ * manifest.txt: First version of a file list
+
+r72 2006-03-08 10:59:49 +0100 mjk:
+
+ * scrkernel-version.dtx, scrkernel-title.dtx, Makefile, scrlogo.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ scrkernel-listsof.dtx, scrmain.ins, scrkxflo.dtx, Makefile.baserules,
+ scrkernel-sections.dtx, scrkernel-miscellaneous.dtx,
+ scrkernel-fonts.dtx, scrlfile.dtx, scrkernel-basics.dtx, doc/,
+ doc/Makefile, doc/guide.tex, doc/scrguide.gst, doc/scrguide.cls,
+ doc/plength.dtx, doc/Makefile.guide, doc/english/,
+ doc/english/scrlttr2.tex, doc/english/Makefile,
+ doc/english/scrbookreportarticle.tex, doc/english/guide-english.tex,
+ doc/english/scrdatetime.tex, doc/english/adrconvnote.tex,
+ doc/english/htmlsetup, doc/english/typearea.tex,
+ doc/english/scrlfile.tex, doc/english/introduction.tex,
+ doc/english/scraddr.tex, doc/bin/, doc/bin/genhtmlidx.pl,
+ doc/bin/genindex.pl: scrksect.dtx scrbeta.dtx scrmain.ins scrkfont.dtx
+ scrkxflo.dtx scrkbase.dtx scrktitl.dtx scrkpage.dtx scrkvers.dtx
+ Makefile.baserules scrkfloa.dtx scrkpar.dtx doc/plength.dtx
+ doc/scrguide.gst doc/scrguide.cls doc/bin/genindex.pl
+ doc/bin/genchangelog.pl doc/bin/genhtmlidx.pl
+ doc/german/introduction.tex doc/german/guide-ngerman.tex
+ doc/german/scraddr.tex doc/german/scrbookreportarticle.tex
+ doc/german/adrconvnote.tex doc/german/scrlfile.tex
+ doc/german/scrdatetime.tex doc/german/scrpage2.tex
+ doc/german/htmlsetup doc/german/typearea.tex doc/german/Makefile
+ doc/german/scrlttr2.tex doc/Makefile.guide
+ doc/english/introduction.tex doc/english/scraddr.tex
+ doc/english/adrconvnote.tex doc/english/scrbookreportarticle.tex
+ doc/english/scrlfile.tex doc/english/guide-english.tex
+ doc/english/scrdatetime.tex doc/english/htmlsetup
+ doc/english/scrpage2.tex doc/english/typearea.tex
+ doc/english/Makefile doc/english/scrlttr2.tex doc/guide.tex
+ doc/Makefile scrkliof.dtx Makefile scrstrip.inc scrstrop.inc
+ testsuite/bin/pdfselect.sh testsuite/bin/dvicmp testsuite/bin/dotest
+ testsuite/bin/dvitypecmp testsuite/bin/pdfcmp
+ testsuite/bin/dviselect.sh testsuite/Makefile.tspec
+ testsuite/Makefile scrlfile.ins scrklist.dtx scrlfile.dtx
+ scrklang.dtx scrkidx.dtx scrlogo.dtx scrsource.tex scrkftn.dtx
+ Makefile.baseinit scrdoc.dtx scrktare.dtx scrkmisc.dtx scrkbib.dtx
+
+r71 2006-03-08 10:39:05 +0100 mjk:
+
+ * lppl.txt: LPPL 1.3b is part of the distribution
+
+r70 2006-03-08 10:27:23 +0100 mjk:
+
+ * scrkernel-paragraphs.dtx: - parskip error fixed (testet by
+ testsuite/parskipindent)
+
+r68 2006-03-08 08:52:54 +0100 mjk:
+
+ * doc/: TeX Master fixed
+
+r64 2006-02-13 18:53:08 +0100 mjk:
+
+ * lppl-de.txt: erste Version der mit Frank Mittelbach abgesprochenden
+ inoffiziellen Ãœbersetzung der LPPL 1.3b
+
+r60 2006-01-25 12:56:38 +0100 mjk:
+
+ * Makefile.baserules: rule testsuite replaced by rule testtest
+
+r59 2006-01-25 12:41:27 +0100 mjk:
+
+ * Makefile, doc/, doc/Makefile, doc/english/, doc/english/Makefile:
+ Get BASEDIR from parent
+
+r50 2006-01-20 14:48:57 +0100 mjk:
+
+ * Makefile.baserules: Some (but not all) features for a testsuite
+
+r48 2006-01-13 09:38:03 +0100 mjk:
+
+ * doc/, doc/plength.dtx: missing `n' added
+
+r47 2005-12-13 08:53:31 +0100 mjk:
+
+ * doc/: fix: \makeatletter...\makeatother
+
+r46 2005-12-13 08:52:03 +0100 mjk:
+
+ * doc/, doc/english/, doc/english/scrbookreportarticle.tex: fix:
+ \makeatletter...\makeatother
+
+r45 2005-11-27 15:32:22 +0100 mjk:
+
+ * doc/, doc/Makefile, doc/english/, doc/english/scrlttr2.tex,
+ doc/english/Makefile, doc/english/scrbookreportarticle.tex,
+ doc/english/guide-english.tex, doc/english/scrdatetime.tex,
+ doc/english/adrconvnote.tex, doc/english/htmlsetup,
+ doc/english/typearea.tex, doc/english/scrlfile.tex,
+ doc/english/introduction.tex, doc/english/scraddr.tex: Initial import
+ of the englisch guide
+
+r44 2005-11-27 12:14:29 +0100 mjk:
+
+ * doc/: document support for finnish
+
+r43 2005-11-27 11:46:56 +0100 mjk:
+
+ * doc/: line break
+
+r42 2005-11-26 18:14:09 +0100 mjk:
+
+ * doc/, doc/guide.bib: one more \LaTeX fixed
+
+r41 2005-11-26 18:12:42 +0100 mjk:
+
+ * doc/, doc/guide.bib: Macros fixed
+
+r40 2005-11-26 17:28:08 +0100 mjk:
+
+ * doc/: Declaration of \setindexpreamble fixed
+
+r39 2005-11-26 17:15:37 +0100 mjk:
+
+ * doc/: Fließumgebung --> Gleitumgebung, Fließobjekt --> Gleitobjekt
+
+r38 2005-11-26 15:45:37 +0100 mjk:
+
+ * doc/, doc/bin/, doc/bin/genindex.pl: Use of undefined $line at 97
+ fixed. Generation of new $indexbase-gen.ind at 82 fixed.
+
+r37 2005-11-26 13:00:57 +0100 mjk:
+
+ * doc/: spaces fixed
+
+r36 2005-11-26 11:32:35 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: clean every dvi or tmp file an mperr.tex
+
+r35 2005-11-26 11:15:54 +0100 mjk:
+
+ * doc/, doc/scrguide.cls: Spell fixes; use of \extras<language>
+ instead of \captions<language>
+
+r34 2005-11-26 10:58:13 +0100 mjk:
+
+ * doc/: Fix of version date
+
+r33 2005-11-25 11:48:07 +0100 mjk:
+
+ * doc/: Widmung prägnanter gefasst
+
+r32 2005-11-05 10:04:02 +0100 mjk:
+
+ * doc/: date fix
+
+r31 2005-11-05 10:03:34 +0100 mjk:
+
+ * doc/: Erklärung zu smallheadings, normalheadings, bigheadings
+ erweitert [Stephan Hennig]
+
+r30 2005-11-05 10:01:05 +0100 mjk:
+
+ * doc/, doc/Makefile.guide: Fix: there should be no $(INDEXPOSTOP) at
+ rule $(plenDIN_SRC).
+
+r29 2005-10-04 13:29:09 +0200 mjk:
+
+ * doc/: Einige ``"~'' gefolgt von Leerzeichen durch ``-'' ersetzt.
+
+r28 2005-08-30 10:12:40 +0200 mjk:
+
+ * doc/, doc/plength.dtx: Correction of line thickness at measure lines
+
+r26 2005-08-15 10:49:52 +0200 mjk:
+
+ * doc/, doc/bin/: Perl script to generate ChangeLog.tmp (used to make
+ ChangeLog.svn)
+
+r25 2005-08-13 07:47:02 +0200 mjk:
+
+ * doc/, doc/scrguide.gst, doc/Makefile.guide, doc/Makefile.latexinit:
+ change log generation
+
+r24 2005-08-12 17:04:01 +0200 mjk:
+
+ * doc/: Explain before Declaration not after
+
+r23 2005-08-12 16:58:46 +0200 mjk:
+
+ * doc/: Explain before Declaration not after
+
+r22 2005-08-12 16:47:14 +0200 mjk:
+
+ * doc/: Explain should not start after Declaration but before
+
+r21 2005-08-12 16:42:22 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \lstset-fix for buggy version of LM fonts
+
+r20 2005-08-12 15:48:59 +0200 mjk:
+
+ * doc/, doc/Makefile.guide, doc/Makefile.latexinit: Generation of a
+ html index file supported
+
+r19 2005-08-12 13:17:59 +0200 mjk:
+
+ * doc/, doc/bin/, doc/bin/genhtmlidx.pl: Generation of a html index
+ file supported
+
+r18 2005-08-12 09:53:52 +0200 mjk:
+
+ * doc/, doc/Makefile: new rule "edit"
+
+r17 2005-08-12 09:52:44 +0200 mjk:
+
+ * doc/, doc/Makefile.guide: $(TEX_SRC) added to rule "guide.idx
+ guide.aux"
+
+r16 2005-08-11 10:47:22 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: The free version of the guide will be
+ optimized to be used on the screen instead to be printed.
+
+r15 2005-08-11 10:45:33 +0200 mjk:
+
+ * doc/: \GuideCopyright changed ("Bildschirm-Version")
+
+r14 2005-08-10 16:31:33 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: \phantomsection at Declaration environment
+ not longer needed and used. Anchors are more descriptive.
+
+r13 2005-08-09 17:18:30 +0200 mjk:
+
+ * doc/, doc/Makefile.latexinit: scrguide.bst removed
+
+r12 2005-08-09 17:16:59 +0200 mjk:
+
+ * doc/, doc/Makefile: scrguide.bst removed
+
+r11 2005-08-09 16:54:35 +0200 mjk:
+
+ * doc/: not longer needed since babelbib supports the same thing
+
+r10 2005-08-09 16:50:42 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: tablecaptionsabove; use of babalpha-fl
+
+r9 2005-08-09 14:51:14 +0200 mjk:
+
+ * doc/, doc/Makefile.latexinit: INDEXPOSTOP added
+
+r8 2005-08-09 14:50:53 +0200 mjk:
+
+ * doc/, doc/Makefile.guide: $(INDEXPOSTOP) added to latex function
+
+r7 2005-08-09 14:50:08 +0200 mjk:
+
+ * doc/: \AddSeeIndex entries fixed
+
+r6 2005-08-09 14:49:44 +0200 mjk:
+
+ * doc/, doc/scrguide.ist: start of comment line fixed
+
+r5 2005-08-09 14:49:12 +0200 mjk:
+
+ * doc/, doc/scrguide.cls: macros of multiindex fixed
+
+r4 2005-07-27 09:43:44 +0200 mjk:
+
+ * doc/: Initial subversion import of KOMA-Script 3; see ChangeLog for
+ version information prior to 2005-07-25 12:14 and ChangeLog.2 for
+ version information of KOMA-Script < 2.91
+
+r3 2005-07-27 09:41:23 +0200 mjk:
+
+ * doc/, doc/Makefile.latexinit: While not all TeX-Distributions have
+ BibTeX8 use BibTeX by default. This may be changed some day.
+
+r2 2005-07-27 09:31:50 +0200 mjk:
+
+ * Makefile.baseinit: Newer kpsewhich uses TEXMFHOME instead of
+ HOMETEXMF.
+
+r1 2005-07-25 12:19:51 +0200 mjk:
+
+ * scrkernel-version.dtx, scrkernel-title.dtx, Makefile, scrlogo.dtx,
+ scrkernel-paragraphs.dtx, scrkernel-floats.dtx,
+ scrkernel-language.dtx, Makefile.baseinit, scrsource.tex,
+ scrkernel-footnotes.dtx, scrkernel-index.dtx, scrstrop.inc,
+ scrkernel-bibliography.dtx, scrstrip.inc, scrkernel-typearea.dtx,
+ scrkernel-pagestyles.dtx, scrkernel-listsandtabulars.dtx, scrdoc.dtx,
+ scrkernel-listsof.dtx, scrmain.ins, scrkxflo.dtx, Makefile.baserules,
+ missing.dtx, README, ChangeLog.cvs, scrkernel-sections.dtx,
+ ChangeLog.2, scrkernel-miscellaneous.dtx, scrkernel-fonts.dtx,
+ .ignore, Makefile.cfg, scrlfile.dtx, scrkernel-basics.dtx, doc/,
+ doc/scrguide.ist, doc/guide.bib, doc/Makefile, doc/guide.tex,
+ doc/scrguide.cls, doc/plength.dtx, doc/Makefile.guide,
+ doc/Makefile.latexinit, doc/bin/, doc/bin/genindex.pl: Initial
+ subversion import of KOMA-Script 3; see ChangeLog for version
+ information prior to 2005-07-25 12:14 and ChangeLog.2 for version
+ information of KOMA-Script < 2.91
+
+------- Switch from CVS to subversion ----------------------------------------
+
+2005-07-25 Markus Kohm <komascript@gmx.info>
+
+ * doc/german/scrlttr2.tex:
+ - Wiesenweg
+
+ * doc/german/scrbookreportarticle.tex:
+ - font-lock
+
+ * doc/german/introduction.tex:
+ - changed encoding
+
+ * doc/german/Makefile:
+ - simplified
+
+ * doc/guide.bib:
+ - umlaute fixed
+
+ * Makefile.baserules:
+ - make_recursive improved
+
+ * Makefile.baseinit:
+ - MV and SMV added
+
+ * ChangeLog: *** empty log message ***
+
+2005-06-09 Markus Kohm <komascript@gmx.info>
+
+ * doc/german/scrpage2.tex:
+ - Tippfehler
+
+2005-05-18 Markus Kohm <komascript@gmx.info>
+
+ * doc/bin/genindex.pl, doc/german/scrlfile.tex:
+ - current version at add time
+
+ * doc/Makefile.guide:
+ - more chapters
+
+ * doc/german/scraddr.tex:
+ - TeX-master
+
+ * doc/german/scraddr.tex:
+ - initial comment
+
+ * doc/german/scraddr.tex:
+ - current version at add time
+
+ * doc/Makefile.guide:
+ - cleaned: clean rules
+
+ * doc/german/scrlttr2.tex:
+ - plenDINde --> plenDIN
+
+ * doc/Makefile.latexinit:
+ - MPOST added
+
+ * doc/Makefile.guide:
+ - Generation of plenDIN.mps
+
+ * doc/scrguide.cls:
+ - fixed: \@procidesfile
+
+ * doc/Makefile:
+ - more source files
+
+ * doc/plength.dtx:
+ - language independant figure generator
+
+ * doc/Makefile.guide:
+ - some more chapters added
+
+ * doc/german/scrlttr2.tex, doc/german/scrdatetime.tex:
+ - current version at add time
+
+ * doc/german/scrpage2.tex:
+ - initial comment
+
+ * doc/german/scrpage2.tex:
+ - current version at add time
+
+ * doc/german/guide-ngerman.tex:
+ - \Xmp... added
+
+2005-05-17 Markus Kohm <komascript@gmx.info>
+
+ * doc/german/scrbookreportarticle.tex:
+ - current version at add time
+
+ * doc/german/typearea.tex, doc/scrguide.cls:
+ - utf8 --> latin1
+
+ * doc/Makefile.guide:
+ - don't remove every pdf, only some
+
+ * doc/Makefile.guide:
+ - added *.glo at rule clean_local
+
+ * doc/Makefile:
+ - one more Makefile
+
+ * doc/Makefile.guide:
+ - language independent part of the Makefile to make a guide
+
+ * doc/Makefile.latexinit:
+ - language dependency at the call of pdflatex
+
+ * doc/german/guide-ngerman.tex:
+ - a lot of new macros
+
+ * doc/guide.tex:
+ - no more language dependencies (hope so)
+
+ * doc/scrguide.cls:
+ - a lot of fixes
+
+ * doc/german/typearea.tex:
+ - current version at add time
+
+ * doc/german/introduction.tex:
+ - starting comment
+
+2005-05-14 Markus Kohm <komascript@gmx.info>
+
+ * doc/scrguide.cls:
+ - everything of the old scrguide2.tex implemented;
+ NOTE: Some of these features need fixes.
+
+ * doc/guide.tex:
+ - change log activated
+
+ * doc/german/guide-ngerman.tex:
+ - change log
+
+ * doc/scrguide.cls:
+ - change log, examples
+
+2005-05-13 Markus Kohm <komascript@gmx.info>
+
+ * doc/scrguide.cls:
+ - Special Tables and Tabulars
+
+ * doc/german/guide-ngerman.tex:
+ - language dependencies of hyperref; hyphenation
+
+ * doc/scrguide.cls:
+ - hyperref addons completed
+
+ * doc/scrguide.cls:
+ - CTAN:// is an alias for hyperref
+
+2005-05-12 Markus Kohm <komascript@gmx.info>
+
+ * doc/german/guide-ngerman.tex:
+ - initial version
+
+ * doc/german/introduction.tex:
+ - name of the game changed
+
+ * doc/german/introduction.tex:
+ - released version
+
+ * doc/guide.tex:
+ - with index
+
+ * doc/guide.bib:
+ - initial version (not yet finished)
+
+ * doc/Makefile.latexinit:
+ - BibTeX rules added
+
+ * doc/german/Makefile:
+ - initial rules for guide generation
+
+ * doc/scrguide.cls:
+ - some options changed, bibliography added, index (not yet
+ finished) added
+
+ * Makefile.baseinit:
+ - fix: CHSUM
+
+ * doc/Makefile.latexinit:
+ - BIBINPUTS and BSTINPUTS added
+
+ * doc/Makefile:
+ - some DOC_SRC added
+
+ * doc/scrguide.bst:
+ - initial version based on babelbib
+
+ * scrkbib.dtx:
+ - fix: \list at thebibiography
+
+ * doc/guide.tex:
+ - replaces chapter file adrconv by adrconvnote to avoid problems with
+ adrconv package
+
+ * doc/guide.tex:
+ - initial version
+
+ * scrkmisc.dtx:
+ - some options are KOMAoptions
+
+ * doc/Makefile:
+ - guide.tex is part of this level of the documentation
+
+2005-05-02 Markus Kohm <komascript@gmx.info>
+
+ * doc/Makefile:
+ - use of babalpha.bst instead of scrguide.bst
+
+ * doc/scrguide.ist:
+ - initial version of a MakeIndex style file
+
+ * doc/Makefile:
+ - new DOC_SRC files scrguide.ist and scrguide.bst
+
+ * doc/Makefile:
+ - new Makefile: Makefile.latexinit
+
+2005-04-22 Markus Kohm <komascript@gmx.info>
+
+ * doc/scrguide.cls:
+ - initial version of the guide class
+
+ * doc/Makefile:
+ - maintain
+
+ * doc/german/Makefile:
+ - nothing but basics
+
+ * doc/german/Makefile:
+ - initial version
+
+ * doc/Makefile:
+ - First version of documentation make file
+
+ * Makefile:
+ - DISTDIR and MAINTAINDIR using direct assignment
+
+ * Makefile:
+ - new variable MAINTAINDIR
+
+ * Makefile.baserules:
+ - make_recursive fixed
+
+ * Makefile.baseinit:
+ - use of function shell and assignment ?=
+
+ * .cvsignore:
+ - *.flc added
+
+2005-01-03 Markus Kohm <komascript@gmx.info>
+
+ * scrksect.dtx:
+ - Copyright date
+
+ * scrksect.dtx:
+ - fix: \@@makeschapterhead defined using \newcommand instead of
+ \renewcommand
+
+2004-12-07 Markus Kohm <komascript@gmx.info>
+
+ * Makefile:
+ - CLS_MAIN_SUBINS
+
+ * Makefile:
+ - added scrkmisc.dtx
+ - MISC_SRC fixed (INS_TEMPLATES)
+
+2004-11-16 Markus Kohm <komascript@gmx.info>
+
+ * Makefile: scrdoc.dtx added zu MISC_SRC
+
+2004-11-05 Markus Kohm <komascript@gmx.info>
+
+ * scrkliof.dtx, scrkpar.dtx, scrksect.dtx:
+ - \setparskip fixed
+
+ * scrkpar.dtx, scrsource.tex:
+ - Use of \setparskip
+
+ * scrmain.ins:
+ - while we are in pre release state we use additional key "trace"
+
+ * scrkliof.dtx:
+ - \@parskipfalse und \@parskip@indent ersetzt
+
+ * scrksect.dtx:
+ - \cs{@parskipfalse} und \cs{@parskip@indent} ersetzt
+
+2004-11-04 Markus Kohm <komascript@gmx.info>
+
+ * scrklang.dtx, scrbeta.dtx, scrkfloa.dtx, scrkfont.dtx,
+ scrkmisc.dtx, scrksect.dtx, scrktitl.dtx:
+ - fix of use of \KOMAClassName
+
+ * scrktitl.dtx, scrksect.dtx, scrkmisc.dtx, scrklang.dtx,
+ scrkfont.dtx, scrkfloa.dtx, scrbeta.dtx, scrdoc.dtx, scrkbase.dtx,
+ scrkbib.dtx, scrkftn.dtx, scrkidx.dtx, scrkliof.dtx, scrklist.dtx,
+ scrkpage.dtx, scrkpar.dtx, scrktare.dtx, scrkvers.dtx,
+ scrkxflo.dtx, scrlfile.dtx, scrlogo.dtx:
+ - use of \KOMAClassName
+
+ * scrkpage.dtx:
+ - Use of \KOMA@DeclareObsoleteOption fixed
+
+2004-08-24 Markus Kohm <komascript@gmx.info>
+
+ * scrkpage.dtx:
+ - options replaced by keyvals
+
+ * scrkfloa.dtx:
+ - checksum fix
+
+ * scrkfloa.dtx:
+ - longtable caption fix of KOMA-Script 2.9s
+
+ * scrkfloa.dtx:
+ - "Geplant!" margin note
+
+2004-07-21 Markus Kohm <komascript@gmx.info>
+
+ * scrkfont.dtx:
+ - new macros \newkomafont and \aliaskomafont
+
+ * scrkpage.dtx:
+ - compatibility mode removed
+ - note of planned scrpage2 using
+
+ * scrklang.dtx:
+ - Activiation of current language changes from KOMA-Script v2.9r
+
+ * scrkfloa.dtx:
+ - some notes added
+
+2004-07-20 Markus Kohm <komascript@gmx.info>
+
+ * README:
+ - removed umlauts
+
+ * scrkvers.dtx:
+ - fix: class identification
+
+ * scrlfile.dtx, scrktare.dtx, scrkbase.dtx:
+ - fix: package identification
+
+ * scrkbase.dtx:
+ - some \if... more expandable
+
+ * scrktare.dtx:
+ - \ifdefined --> \ifnotundefined
+
+ * scrdoc.dtx:
+ - \eTeX
+
+ * scrkbase.dtx:
+ - \ifdefined --> \ifnotundefined
+
+ * scrksect.dtx:
+ - all KOMA-Script 2 changes till 2004-07-16
+
+ * scrkfloa.dtx:
+ - changes of scrclass 2.9r
+
+2004-04-19 Markus Kohm <komascript@gmx.info>
+
+ * scrkmisc.dtx:
+ - dictum fix of KOMA-Script v2.9q
+
+2004-03-24 Markus Kohm <komascript@gmx.info>
+
+ * scrklist.dtx:
+ - addmargin fix of KOMA-Script 2.9q: don't touch \labelsep
+
+ * scrksect.dtx:
+ - \@@makeschapterhead fix from KOMA-Script 2.9q
+
+2004-01-31 Markus Kohm <komascript@gmx.info>
+
+ * scrkftn.dtx:
+ - change at \deffootnote for more compatibility with footnote.sty
+
+2004-01-30 Markus Kohm <komascript@gmx.info>
+
+ * scrkvers.dtx:
+ - update of version date
+
+ * scrkfloa.dtx:
+ - caption fixes of KOMA-Script 2.9q
+
+ * scrktare.dtx:
+ - warning fixes of KOMA-Script 2.9q
+
+2004-01-24 Markus Kohm <komascript@gmx.info>
+
+ * scrbeta.dtx:
+ - scrxfloat added
+
+2004-01-21 Markus Kohm <komascript@gmx.info>
+
+ * scrktare.dtx:
+ - \ProcessGlobalKeyValOptions --> \ProcessAllOptions
+
+ * scrkbase.dtx:
+ - \ProcessGlobalKeyValOptions replaced by \Pr@cessGl@balKeyValOptions
+ - \Pr@cessGl@balKeyValOptions fixed
+ - \ProcessKeyValOptions
+ - \ProcessAllOptions
+
+2004-01-15 Markus Kohm <komascript@gmx.info>
+
+ * General:
+ - Changes till KOMA-Script 2.9p
+
+ * scrkftn.dtx:
+ - \deffootnote change of KOMA-Script 2.9p
+
+ * scrksect.dtx:
+ - \@seccntformat change of KOMA-Script 2.9p
+ - chapter change of KOMA-Script 2.9p
+ - autodot change of KOMA-Script 2.9k
+ - use of \BeforeClosingMainAux instead if \AtEndDocument
+ - tocleft changes of KOMA-Script v2.9k
+ - minisec fix of KOMA-Script 2.9o
+
+ * scrkbib.dtx:
+ - bibtotocnumbered change of KOMA-Script 2.9p
+ - thebibliography fix of KOMA-Script 2.9o
+
+ * scrkliof.dtx:
+ - liststotocnumbered change of KOMA-Script 2.9p
+ - \@dottedtocline change of KOMA-Script 2.9k
+
+ * scrkidx.dtx:
+ - \idx@heading change of KOMA-Script 2.9l
+
+ * scrkmisc.dtx:
+ - ifthispageodd changes of KOMA-Script 2.9l
+ - dictum change of KOMA-Script 2.9l
+
+ * scrkfloa.dtx:
+ - captionbeside fix of KOMA-Script 2.9p
+
+ * scrkpar.dtx:
+ - \small and \footnotesize changes of KOMA-Script 2.9h
+
+2004-01-05 Markus Kohm <komascript@gmx.info>
+
+ * scrkxflo.dtx:
+ - what happens with not floating consultations and option "float"
+ - missing text notes
+
+ * scrkxflo.dtx:
+ - what happens with not floating consultations and option "float"
+
+ * scrkxflo.dtx:
+ - description replaced by labeling at description of option float
+
+ * scrkxflo.dtx:
+ - Option "float"
+
+2004-01-04 Markus Kohm <komascript@gmx.info>
+
+ * scrkxflo.dtx:
+ - \newconsultation*, \setupconsultation*
+ - minor fixes
+
+ * scrkxflo.dtx:
+ - Start of description (not yet finished) of an idea,
+ currently no implementation!
+
+ * scrdoc.dtx:
+ - \newDescribe, \DescribeOption (by \newDescribe{Option})
+
+2003-01-21 Markus Kohm <komascript@gmx.info>
+
+ * scrdoc.dtx:
+ - Fix: \EnvNames --> \EnvsName
+
+2002-12-08 Markus Kohm <komascript@gmx.info>
+
+ * README:
+ - Initial version of a Do-Not-Use-Or-Distribute-README
+
+2002-12-06 Markus Kohm <komascript@gmx.info>
+
+ * scrktare.dtx:
+ - missing option "headlines=<Value>" added
+
+2002-12-05 Markus Kohm <mjk@mungojerrie.local>
+
+ * scrkpar.dtx:
+ - \parfillskip wil change at \begin{document}
+
+ * scrktare.dtx:
+ - Recalculation of type area also recalls option pagesize
+
+ * scrkbase.dtx:
+ - \if@atdocument added
+
+2002-12-04 Markus Kohm <mjk@mungojerrie.local>
+
+ * scrktare.dtx:
+ - all options are keyval options
+
+ * scrkmisc.dtx:
+ - Activation of keyval options added
+
+ * scrktare.dtx:
+ - Options "paper=landscape" and "paper=portrait"
+
+ * scrdoc.dtx:
+ - Changed: Two columns at index (instead of three)
+
+ * Makefile:
+ - Fix: MKINDEX call at makedvifromdtx
+
+2002-12-03 Markus Kohm <mjk@mungojerrie.local>
+
+ * scrktare.dtx:
+ - \isopaper allowes upper case at optional argument
+ - papersize options implemented
+
+ * scrlfile.dtx:
+ - \scr@hook@bcma fixed
+
+ * scrkbase.dtx:
+ - some small fixes (macro spelling etc.)
+
+ * scrbeta.dtx:
+ - scrkbase added
+
+2002-09-03 Markus Kohm <komascript@gmx.info>
+
+ * scrlfile.dtx:
+ - \AfterClearpageAtEnddocument replaced by \BeforeClosingMainAux
+
+2002-09-01 Markus Kohm <komascript@gmx.info>
+
+ * scrksect.dtx:
+ - Fix at \make@@chapterhead: \size@chapter after \sectfont
+
+2002-08-29 Markus Kohm <komascript@gmx.info>
+
+ * scrlfile.dtx:
+ - Fix: \AfterClass*, \AfterPackage*
+
+2002-08-27 Markus Kohm <komascript@gmx.info>
+
+ * scrktare.dtx:
+ - option `pagesize' reimplemented
+ - options `dvips' and `pdftex' obsolete reimplemented
+
+ * scrkbase.dtx:
+ - Some minor documentation changes
+ - Fix: \KOMA@unkown@keyval uses 3 arguments
+
+2002-08-25 Markus Kohm <komascript@gmx.info>
+
+ * scrktare.dtx:
+ - 2 \relax and 2 % inserted
+
+2002-08-23 Markus Kohm <komascript@gmx.info>
+
+ * scrkbase.dtx:
+ - new: \KOMA@unkown@keyval
+
+2002-08-21 Markus Kohm <komascript@gmx.info>
+
+ * Makefile:
+ - checksum test at makedvifromdtx
+
+ * Makefile.baseinit:
+ - new: CKSUM
+
+ * scrksect.dtx:
+ - \part fixed
+
+ * scrkbase.dtx:
+ - new: \ifundefined, \ifdefined
+ - new: \let@as@internal@defined
+ - \ifpdfoutput pays attention to VTeX
+ - new: \ifpdftex, \ifpsoutput, \ifdvioutput
+
+2002-07-18 Markus Kohm <komascript@gmx.info>
+
+ * scrkvars.dtx:
+ - moved to scrkbase.dtx
+
+ * Makefile:
+ - scrkbase.sty
+ - scrkvars.dtx --> scrkbase.dtx
+
+ * scrmain.ins:
+ - scrkvars.dtx --> scrkbase.dtx
+ - scrkeyvl.sty --> scrkbase.sty
+
+ * scrsource.tex:
+ - scrkvars.dtx --> scrkbase.dtx
+
+ * scrktare.dtx:
+ - moved \ifpdfoutput to scrkbase.dtx
+
+ * scrkbase.dtx:
+ - moved scrkvars.dtx to scrkbase.dtx
+ - \ifpdfoutput added
+
+2002-07-12 Markus Kohm <komascript@gmx.info>
+
+ * template.sh:
+ - some fixes
+
+ * scrsource.tex:
+ - scrkvars.dtx
+
+ * scrkvars.dtx:
+ - a lot of bug fixes
+
+ * scrktare.dtx:
+ - first version which uses (and not only loads) scrkeyvl
+
+ * .cvsignore:
+ - generated files *.cls and *.sty added
+ - test files test* added
+
+ * scrbeta.dtx:
+ - scrkeyvl added
+
+ * Makefile:
+ - scrkvars.dtx added to CLS_MAIN_DTX
+
+2002-07-11 Markus Kohm <komascript@gmx.info>
+
+ * scrkftn.dtx:
+ - \show removed
+ - \CheckSum fixed
+
+ * scrkvers.dtx:
+ - \ProvidesClass
+
+ * Makefile:
+ - dvi-file will be removed at makedvifromdtx if compilation error
+
+ * scrktare.dtx:
+ - Laden von scrkeyvl.sty
+
+ * scrkvars.dtx:
+ - Neu
+
+ * scrmain.ins:
+ - load scrkvars at every class
+ - scrkeyvl
+
+2002-07-06 Markus Kohm <komascript@gmx.info>
+
+ * scrkpage.dtx:
+ - two spaces removed
+
+ * scrmain.ins:
+ - Changed order of scrk...-files to fit dependencies
+
+2002-07-05 Markus Kohm <komascript@gmx.info>
+
+ * Makefile:
+ - makedvifromdtx improved (dvi will be removed at error)
+
+ * scrlfile.dtx:
+ - New command \AfterClearpageAtEndDocument
+
+2002-07-04 Markus Kohm <komascript@gmx.info>
+
+ * Makefile:
+ - ChangeLog.2 added
+
+ * ChangeLog:
+ - New file for KOMA-Script 3
+
+ * ChangeLog.2:
+ - ChangeLog moved to ChangeLog.2
+
+ * .cvsignore, ChangeLog, Makefile, Makefile.baseinit,
+ Makefile.baserules, Makefile.cfg, missing.dtx, scrbeta.dtx,
+ scrdoc.dtx, scrkbib.dtx, scrkfloa.dtx, scrkfont.dtx, scrkftn.dtx,
+ scrkidx.dtx, scrklang.dtx, scrkliof.dtx, scrklist.dtx,
+ scrkmisc.dtx, scrkpage.dtx, scrkpar.dtx, scrksect.dtx,
+ scrktare.dtx, scrktitl.dtx, scrkvers.dtx, scrlfile.dtx,
+ scrlfile.ins, scrlogo.dtx, scrmain.ins, scrsource.tex,
+ scrstrip.inc, scrstrop.inc, template.sh:
+ - New file.
+
+------- Start of KOMA-Script Version 3 ---------------------------------------
diff --git a/macros/latex/contrib/koma-script/source/ChangeLog.2 b/macros/latex/contrib/koma-script/source/ChangeLog.2
new file mode 100644
index 0000000000..29b1b1d9fd
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/ChangeLog.2
@@ -0,0 +1,2383 @@
+2002-06-11 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - "ein regelrechter" --> "geradezu ein" (Raimund)
+
+2002-06-10 Jens-Uwe Morawski <morawski@gmx.net>
+ * introduc.tex
+ - translation of Thanks section
+ * letter.tex
+ - initial translation
+ (priliminary version sections
+ 6.3, 6.4, 6.6 missing)
+
+2002-06-10 Markus Kohm <kohm@gmx.de>
+ * Makefile.unx:
+ - default-Regel ist nun all; die Installationsverzeichnisse
+ werden erst getestet, wenn installiert werden soll.
+ - Änderungen in Makefile sind ein Grund, alles neu zu erzeugen
+ - Änderungen in Makefile.unx werden gemeldet
+ - TEXINPUTS sollte jetzt funktionieren
+ - scrguide2.dvi wird als Standard mit MultiIndex erstellt, falls
+ genindex.pl verfügbar und ausführbar ist
+ ACHTUNG: FÜR DEN ENGLISCHEN scrguien WIRD DERZEIT KEIN
+ MULTIINDEX ERZEUGT, DA HIERZU VERMUTLICH NOCH
+ ÄNDERUNGEN IN DEN KAPITELN NOTWENDIG SIND (vor allem
+ Verwendung von \IndexFontElement)!!!!!!!!!!!!!!!!!!!!!
+ * genindex.pl:
+ - komplett neue Version; benötigt Unterstützung in der ind-Datei
+ - stellt selbst fest, welche ind-Dateien außer *-gen.ind erzeugt
+ werden sollen
+ * scrguide2.tex:
+ - diverse "Sort"-Namen gelöscht, die mit halbwegs aktuellen
+ MakeIndex gar nicht benötigt werden
+ - diverse Index-Namen hinzugefügt
+ ACHTUNG: HIER IST NOCH EINIGES NEU ZU ÜBERSETZEN BZW. AUS DER
+ ÜBERSETZUNG ZU ENTFERNEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ - diverse Makros für den MultiIndex hinzugefügt oder geändert.
+
+2002-06-09 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - SNold in Erklärung durch SN ersetzt (Harald)
+
+2002-06-08 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - Korrekturen (Georg)
+
+2002-06-07 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - \IndexFontElement verwendet
+ - Diverse Tippfehler beseitigt (Harald)
+ - Kleinigkeiten geändert (Jens)
+ * hauptcls.tex:
+ - \IndexFontElement verwendet
+ - Überschriften an gepasst:
+ "Der Haupttext" --> "Der Text"
+ "Schlussteil" --> "Der Schlussteil"
+ * scrguide2.tex:
+ - \IndexFontElement
+ - \indexsection verbessert
+ - Alternative für einen aufgeteilten Index
+ * Makefile.unx:
+ - Alternative für einen aufgeteilten Index
+ * satzspgl.tex:
+ - Indexeintrag für typearea.cfg eingefügt
+ * genindex.pl:
+ - Erste Version des perl-Scripts für die Erzeugung des
+ aufgeteilten Index
+
+2002-06-04 Markus Kohm <kohm@gmx.de>
+ * komabug.tex:
+ - Tippfehler behoben (Aenderund --> Aenderung)
+ [Ulf Jaenicke-Roessler]
+ * brief.tex:
+ - Einige Ergänzungen für SN.lco.
+ * scrclass.dtx:
+ - Mindestplatz für Index und Glossary geändert.
+
+2002-06-03 Markus Kohm <kohm@gmx.de>
+ * scrclass.dtx, scrlttr.cls (v2.8q), SN.lco:
+ - Maße für SN 010130 (SN.lco) eingebaut einschließlich
+ Sonderbehandlung für Adresse rechts.
+ * scrclass.ins:
+ - Erzeugung von SN.lco aktiviert.
+ * Makefile.unx
+ - Nur ich bin berechtigt, aus einer BETA-Version eine Release zu
+ machen und umgekehrt.
+
+2002-06-02 Markus Kohm <kohm@gmx.de>
+ * brief.tex
+ - Erklärung zu \adrchar etwas gekürzt.
+ - Noch eine Bemerkung zu \addrchar und \addrentry bezüglich
+ adrconv eingefügt.
+ * scraddr.dtx (v1.1b):
+ - Damit das Paket unabhängig von scrlettr und scrlttr2
+ eingesetzt werden kann, werden nun bei \InputAdressFile
+ ggf. auch \adrchar und \addrchar definiert.
+
+2002-06-01 Markus Kohm <kohm@gmx.de>
+ * brief.tex
+ - Fehler in Abschnitt 6.7 ("die wird sie" --> "dann wird sie")
+ [Jens]
+ - Autorenliste korrigiert [Jens]
+
+2002-05-31 Markus Kohm <kohm@gmx.de>
+ * scrguide2.tex
+ - Liste der Beteiligten als eigene Titelseite gesetzt
+ - \LegalText in \LegalText und \LegalTextB aufgeteilt
+ * main.tex
+ - \LegalText --> \LegalText and \LegalTextB
+
+2002-05-28 Markus Kohm <kohm@gmx.de>
+ * brief.tex
+ - Überschriften vereinheitlicht (\section mit Artikel,
+ \subsection ohne)
+ - Tabelle mit den Datumsformaten verschoben, damit der
+ Seitenumbruch verbessert wird
+ - Kapitelüberschrift an Kapitel 3 angeglichen
+ - Änderungsvermerk eingefügt
+
+2002-05-27 Markus Kohm <kohm@gmx.de>
+ * einleit.tex
+ - Danksagung erweitert
+ ACHTUNG: DAS MUSS NOCH ÜBERSETZT WERDEN!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * Makefile.unx
+ - adrguide und $(OLD)-Teile entfernt
+ * main.tex
+ - spell fix
+ - \WhoIsWho added
+ - \LegalText enlarged
+ * satzspgl.tex
+ - Satzbau in Zeile 800 (mpinclude/mpexclude)
+ - Mathemodus reduziert
+ * scrguide2.tex
+ - Mathemodus reduziert
+ - \WhoIsWho und \lowertitleback hinzugefügt
+ - \LegalText erweitert
+ * hauptcls.tex
+ - Mathemodus reduziert
+ * brief.tex
+ - Mathemodus reduziert
+
+2002-05-26 Jens-Uwe Morawski <morawski@gmx.net>
+ * pglayout.tex:
+ - removed ".sty" from chapter title
+ - some fixes
+ - added documentation for options mpinclude
+ and mpexclude
+
+2002-06-26 Markus Kohm <kohm@gmx.de>
+ * brief.tex
+ - Kleine Schönheitsänderung in "Von scrlettr zu scrlttr2" wird
+ deutlicher gemacht, das das erste Beispiel bereits eine
+ Modifikation des alten Beispiels ist.
+
+2002-05-25 Markus Kohm <kohm@gmx.de>
+ * main.tex
+ - "Verweise" --> "destination"
+ * maincls.tex
+ - "jorney" --> "journey"
+ - at tab:numberKind use of \PValue instead of \PName
+ * hauptcls.tex
+ - tab:numberKind verwendet \PValue statt \PName
+
+2002-05-24 Markus Kohm <kohm@gmx.de>
+ * Makefile.unx
+ - handling of removed obsolet files removed
+ * scrclass.ins
+ - handling of removed obsolet files removed
+ - preambles renamed
+ * scrlettr.dtx
+ - dir.tex, phone.tex, addrconv.*, email.* and birthday.* removed
+ * brief.tex
+ - kleiner Fehlerchen korrigiert (Torsten)
+ * adressen.tex
+ - Declaration von \FreeIV fixed
+ * scrguide2.tex
+ - \url@ redefined to become CTAN:// an alias to
+ ftp://\CTANserver/tex-archive/
+ - \CTANserver defined
+ - \BibPreamble changed to use \CTANserver
+ * main.tex
+ - \CTANserver defined
+ - \BibPreamble changed to use \CTANserver
+ * scrguide.bib
+ - links to clsguide, usrguide and fntguide changed to get the
+ pdf file not the tex file
+ - URL of DANTE:FAQ changed to main FAQ page at www.dante.de
+
+2002-05-23 Jens-Uwe Morawski <morawski@gmx.net>
+ * hauptcls.tex:
+ - fehlplaziertes \EndIndex{Cmd}{ifthispageodd}
+ an die richtige Stelle verschoben
+ - "gewühlten" --> "gewählten" im Abschnitt \pagenumbering
+ * maincls.tex:
+ - description for \pagenumbering added
+ * scrguide.bib:
+ - alle URL-Verweise, die auf Verzeichnisse und
+ nicht Dateien zeigen, am Ende mit "/" geschrieben
+ * main.tex:
+ - \BibPreambleText added
+ * scrguide2.tex:
+ - CTAN-Präfix-Beispiel bei Dante in URL geändert,
+ da für z.B. PDF-Dokumente die Links im Literatur-
+ verzeichnis aufgrund des "CTAN://" Präfixes nicht
+ im Browser funktionieren.
+ * adrkonv.tex:
+ - Overfull hbox entfernt
+
+2002-05-23 Markus Kohm <kohm@gmx.de>
+ * maincls.tex:
+ - linebreak fix at example
+ * satzspgl.tex:
+ - mpinclude und mpexclude dokumentiert
+ * introduc.tex:
+ - \cite{UK:FAQ} added
+
+2002-05-22 Jens-Uwe Morawski <morawski@gmx.net>
+ * maincls.tex:
+ - remaining german examples replaced with
+ english examples
+ * addressf.tex:
+ - description for new package options of warnings
+ (adrFreeIV...) added
+ * adressen.tex:
+ - neue Paketoptionen für Warnungen (adrFreeIV...)
+ dokumentiert
+
+2002-05-22 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - \cc-Beispiel korrigiert: \raggedright war falsch (Torsten)
+ - \AtBeginLetter-Beispiel korrigiert (Torsten)
+ * scrguide.bib:
+ - error at ragged2 entry fixed
+ - adrconv entry changed (Jens)
+ - "CTAN: /tex-archive" --> "CTAN://"
+ * scrguide2.tex:
+ - \BibPreambleText hinzugefügt
+ - Präambel für das Literaturverzeichnis gesetzt.
+ * maincls.tex:
+ - \ref{cha:scrletter} --> \ref{cha:scrlttr2} (Jens)
+
+2002-05-21 Jens-Uwe Morawski <morawski@gmx.net>
+ * adrkonv.tex:
+ - Kapitel geändert, da addrconv nicht mehr Teil von KOMA-Script
+ * addrconv.tex:
+ - chapter rewritten since addrconv is not included in
+ KOMA-Script anymore
+
+2002-05-20 Jens-Uwe Morawski <morawski@gmx.net>
+ * pglayout.tex:
+ - many bugfixes
+ - removed all overfull and underfull boxes
+ * addressf.tex
+ - fixed index bug
+ * loadfile.tex
+ - fixed overfull hbox
+
+2002-05-19 Markus Kohm <kohm@gmx.de>
+ * pglayout.tex:
+ - some changes to avoid overfull \hbox
+ * maincls.tex:
+ - some changes to avoid overfull \hbox and to get umlauts at the
+ german examples which should be translated
+ * addressf.tex:
+ - some changes to avoid overfull \hbox
+ * headfoot.tex:
+ - some changes to avoid overfull \hbox
+ * Makefile.unx:
+ - scraddr.dtx hinzugefügt
+ * scraddr.dtx:
+ - scraddr.sty wird nun daraus erzeugt und nicht länger aus
+ scrlettr.dtx
+ - Neue Optionen (adrFreeIV...)
+ - \adrentry verwendet \addrentry
+ - \adrchar verwendet \addrchar
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ - \adrentry verwendet \addrentry
+ - \adrchar verwendet \addrchar
+ * scrclass.ins:
+ - scraddr.sty wird nun aus scraddr.dtx erzeugt und nicht länger
+ aus scrlettr.dtx
+ * scrlettr.dtx:
+ - scraddr.sty ist nicht länger enthalten
+ * scrguide2.tex:
+ - Umbruch im Index vor "(Pseudo-Länge)" ermöglicht (wegen eines
+ Eintrags im Index).
+ - PDF-Info erweitert (für Jens).
+ * scrguide.ist:
+ - Umbruch vor den Pünktchen in der ersten Ebene ermöglicht.
+
+2002-05-18 Jens-Uwe Morawski <morawski@gmx.net>
+ * addressf.tex:
+ - changes for \addrentry support
+ - bugfix, since only letters not numbers are allowed as TeX
+ command names
+ * adressen.tex:
+ - Anpassungen für \addrentry Einträge
+ - Fehler korrigiert, da in TeX Macronamen keine Zahlen erlaubt
+ sind
+ * loadfile.tex:
+ - initial translation
+
+2002-05-18 Markus Kohm <kohm@gmx.de>
+ * Makefile.unx, INSTALL.TXT, INSTALLD.TXT:
+ - Das von Jens gemeldete Problem in Makefile.unx wegen TEXMF
+ durch Umbenennung in INSTALLTEXMF behoben.
+ * scrlogo.dtx:
+ - \@ifundefined testet nun wirklich auf KOMAScript (gemeldet von
+ Jens)
+ * scrlettr.dtx, scraddr.sty (v1.1):
+ - Erweiterungen für \addrentry von Jens übernommen und ein klein
+ wenig geändert.
+
+2002-05-17 Markus Kohm <kohm@gmx.de>
+ * hauptcls.tex:
+ - \pagenumbering dokumentiert
+ - Änderung bei Fußnoten in \caption dokumentiert
+ * scrclass.dtx (v2.8q):
+ - Fußnoten in Gleitumgebungen führen nun nicht mehr zu falscher
+ Zählweise und doppelter Ausgabe.
+
+2002-05-15 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - Weitere Hinweise und Beispiele von Torsten berücksichtigt.
+
+2002-05-14 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - Torstens Korrekturen und Hinweise umgesetzt.
+ * scrclass.dtx, scrlttr2 und lco-Dateien (v2.8q):
+ - Von Torsten gemeldete Fehler umgesetzt (\NeedsTeXFormat in den
+ lco-Dateien und Schriftumschaltung in Kopf- und Fußzeile der
+ Folgeseiten).
+
+2002-05-11 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - Einige Hinweise von Torsten umgesetzt.
+ - Konsistenzänderung bei den Pseudolängen eingearbeitet.
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Konsistenzänderung bei den Pseudolängen: Wenn \useplength eine
+ Benutzeranweisung ist, dann sollten \setlengthtoplength und
+ \addtolengthplength dies ebenfalls sein.
+
+2002-05-10 Markus Kohm <kohm@gmx.de>
+ * brief.tex:
+ - Korrekturen von Torsten eingearbeitet
+
+2002-05-09 Markus Kohm <kohm@gmx.de>
+ * addrconv.tex, letter.tex, loadfile.tex:
+ - missing note added
+ * main.tex:
+ - \include{loadfile} and \PseudoPrefix added.
+ * Makefile.unx:
+ - koma-script.tex, koma-script.pdf, komascript.pdf, komascr.pdf
+ * koma-script.tex:
+ - Neu: nützlich beispielsweise, wenn jemand unter teTeX mit
+ texdoc koma-script
+ nach der Anleitung sucht.
+
+2002-05-08 Markus Kohm <kohm@gmx.de>
+ * scrguide.tex:
+ - Neu: \PseudoPrefix, \PLength und \IndexPLength
+ * brief.tex:
+ - Meine temporäre Version ersetzt nun die unfertige Version von
+ Enrico (sorry, aber so ging es deutlich schneller, wenn auch
+ nicht unbedingt besser).
+ * adrkonv.tex, hauptcls.tex:
+ - Verweise auf scrlettr in Verweise auf scrlttr2 geändert.
+
+2002-04-18 Markus Kogm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrbook, scrreprt (v2.8q):
+ - Bei Verwendung der Option chapterprefix wirkt sich
+ \raggedsection nun auch auf den Präfix aus. Damit sind
+ vollständig zentrierte Überschriften durch ein einfaches
+ \let\raggedsection=\centering möglich.
+
+2002-04-09 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Verwendung von \@tempskipa statt \@tempdima weil Längen ebenfalls
+ skip- und keine dim-Register sind. Gleichzeitig default-Wert für
+ den optionalen Faktor entfernt, damit plus und minus funktionieren.
+ Im Ergebnis funktionieren specialmailindent und
+ specialmailrightindent nun wie gewünscht.
+
+2002-04-08 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrbook, scrreprt, scrartcl (v2.8q):
+ - liststotoc korrigiert
+ - listtotocnumbered neu hinzugefügt
+
+2002-03-29 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ - distclean löscht auf die zu den dtx-Files gehörenden dvi-Files.
+ - Der neue englische guide ist Standard, der alte kann noch mit
+ OLD=yes erzeugt werden.
+ - scrlttr2 und die lco-Dateien werden mit installiert.
+ * scrclass.ins:
+ - scrlttr2 etc. wird nicht mehr nur in der BETA erzeugt.
+
+2002-03-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, typearea, scrbook, scrreprt, scrartcl (v2.8q):
+ - Auf Anregung von Frank Mittelbach, Optionen "mpinclude" und
+ "mpexclude" implementiert. Typearea berechnet bei "mpinclude"
+ einen Satzspiegel, bei dem die Randnotizen zum Textbereich
+ gezählt werden. Die Randnotizen haben dabei eine Breite von
+ einem Streifen abzüglich \marginparsep.
+ Es gibt keine vordefinierten DIV-Werte für die Verwendung mit
+ "mpinclude" stattdessen wird in diesem Fall "DIVcalc"
+ verwendet.
+ Die Hauptklassen setzen bei Verwendung von "mpinclude" die
+ Kopf und Fußzeile über die gesamte Breite des Bereichs für
+ Text und Randnotizen.
+ Die Optionen sind so definiert, dass KOMA-Script-Klassen,
+ typearea und scrpage2 optimal zusammenarbeiten können.
+
+ * scrpage.dtx, scrpage2 (v2.1):
+ - scrpage2 versteht ebenfalls eine Option "mpinclude" und
+ "mpexclude". Bei "mpinclude" wird als Voreinstellung
+ \setheadwidth[0pt]{textwithmarginpar} und
+ \setfootwidth[0pt]{textwithmarginpar} verwendet. Dies
+ entspricht auch der Verwendung der Option bei den KOMA-Script
+ Klassen.
+ Die Optionen sind so definiert, dass KOMA-Script-Klassen,
+ typearea und scrpage2 optimal zusammenarbeiten können.
+
+2002-03-25 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Die fehlenden separator-Variablen ergänzt. Man kann jetzt
+ beispielsweise mit
+ \setkomavar{fromurl}[]{http://socha.net/scrguide} dafür
+ sorgen, dass das Präfix "URL: " verschwindet. Das macht das
+ leere optionale Argument.
+ - Speziell für Luzia specialmailindent und
+ specialmailrightindent
+ - \LetterOptionNeedsPaperSize wirkt sich nun erst bei \opening
+ aus. Dadurch kann nach DIN.lco noch eine lco-Datei geladen
+ werden, die ein anderes Format verlangt ohne dass DIN.lco eine
+ Warnung ausgibt.
+
+2002-03-20 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - In der Variablen signature darf "\\" verwendet werden, um eine
+ mehrzeilig Unterschrift zu erzeugen.
+
+2002-03-06 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, typearea (v2.8q):
+ - Berechnung der günstigen Zeilenlänge korrigiert
+ (\normalfont\normalsize hinzugefügt).
+
+2002-03-01 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ - \normalfont aus \sectfont herausgenommen, weil das (fast)
+ überall vor \sectfont ohnehin schon aufgerufen wurde.
+ - Überall, wo es relevant ist nach \sectfont ein \nobreak
+ eingefügt. Das war notwendig, weil in \sectfont ein
+ \normalcolor enthalten ist. color.sty hat aber einen Bug,
+ der einen Zeilen- und Seitenumbruch nach \normalcolor
+ ermöglichst. Dadurch konnte zwischen \section und \subsection
+ ein Seitenumbruch erfolgen, sobald color.sty geladen ist.
+
+2002-02-25 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Index wird ins Inhaltsverzeichnis aufgenommen
+ (wurde gewünscht).
+ * brief.tex:
+ Enricos erster Entwurf für die neue Briefklasse.
+
+2002-02-23 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ \Variable, \IndexVariable und \VariableName eingeführt.
+ * main.tex:
+ \VariableName (stimmt die Übersetzung?)
+ * scrclass.dtx, scrlttr (v2.8q):
+ Einige kleinere Bugfixes:
+ - wlocfield und slocfield sind obsolete Optionen
+ - Breite des location-Feldes wird ggf. während \openin
+ berechnet.
+ - Leerer Absendername und leere Absenderadresse sind
+ mehr oder weniger erlaubt.
+ - \@title durch \usekomavar{title} ersetzt.
+
+2002-02-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Ein paar Fehler korrigiert.
+
+2002-02-22 Jens-Uwe Morawski <morawski@gmx.net>
+ * addressf.tex, headfoot.tex, main.tex:
+ some fixes
+
+2002-02-11 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Jens Änderungen zur Verhinderung von Warnungen
+ * datladen.tex:
+ Neues Kapitel für scrlfile.sty
+ * scrguide2.tex:
+ datladen.tex hinzugefügt
+ * Makefile.unx:
+ datladen.tex hinzugefügt
+
+2002-02-11 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlfile (v2.8q):
+ - Sternformen \AfterPackage* und \AfterClass* führen die
+ entsprechende Anweisungen sofort aus, falls das Paket oder
+ die Klasse bereits geladen ist.
+
+2002-02-06 Markus Kohm <Markus.Kohm@gmx.de>
+ * koma-script.xml:
+ - <Documentation> in verschiedenen Sprachen (keine Ahnung, ob
+ mehrere gleichartige Einträge überhaupt erlaubt sind, da
+ catalogue.dtd saumäßig dokumentiert ist).
+ * scrpage.dtx, scrpage2 (v2.0m):
+ - Schwerwiegenden Bug in \ps@useheadings beseitigt.
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Option "addrfield=false" kann nun nicht nur gesetzt werden,
+ sondern hat auch eine Funktion (Adressfeld komplett
+ ausblenden).
+
+2002-02-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Option "pagenumber=top" und "pagenumber=bot" funktionieren
+ wie gewünscht und ohne Umdefinierung von \@tempa.
+ - \closing ist nicht mehr \long, dafür dürfen im Argument
+ \\[...] vorkommen.
+
+2002-02-04 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ Problem beseitigt, falls "refline=wide" nach dem Laden der
+ lco-Datei gesetzt wird.
+ * hauptcls.tex:
+ - Umgebung addmargin und Anweisung \ifthispageodd dokumentiert.
+ - Alle relevanten overfull \hbox Meldungen beseitigt.
+
+2002-02-03 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - fromrulelength --> fromrulewidth
+ - frumrulewidth --> fromrulewidth
+
+2002-02-02 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx, scrpage2 (v2.0m):
+ - scrlttr2 wird erkannt und aktiv unterstützt, das bedeutet
+ insbesondere auch, dass Kopf- und Fu"szeilen entsprechend
+ angepasst werden. Beim Seitenstil scrheadings funktioniert
+ sogar die Option automark. Der Befehl \automark kann auch
+ verwendet werden, allerdings spielt es derzeit keinerlei
+ Rolle, was man dabei als Argumente verwendet, solange es
+ Gliederungsebenen unter chapter sind.
+ Vielleicht werde ich in einer späteren Release die
+ Zusammenarbeit zwischen scrpage2 und scrlttr2 bezüglich
+ \automark noch verbessern, wenn begründete Nachfrage
+ besteht.
+ * scrtime.dtx, scrtime (v1.1m):
+ - Holländisch wird unterstützt (Dank an Henk Jongbloets)
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - \ta@hh-Fehler in Option headlines beseitigt (gemeldet
+ von Chef-Alpha-Tester Torsten Krüger)
+ - Option fax heißt nun entsprechtend aller anderen
+ fromfax (gemeldet von Henk Jongbloets)
+
+2002-02-01 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Fehlende französische Übersetzungen ergänzt
+ (von Henk Jongbloets)
+ - Einige Tippfehler behoben (gemeldet von Henk Jongbloets)
+ - \captionsdutch und \datedutch neu (von Henk Jongbloets)
+ - Fehlende spanische Übersetzungen ergänzt
+ (von Alejandro López-Valencia)
+
+2002-01-31 Markus Kohm <Markus.Kohm@gmx.de>
+ * koma-script.xml:
+ Maybe a better description. Version number in future.
+
+2002-01-31 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ Kopf- und Fußzeilen funktionieren nun auch auf den Folgeseiten
+ sowohl bei Seitenstil plain als auch bei Seitenstil headings.
+ Dabei wird die neue Option "pagenumber" berücksichtigt.
+ Der Inhalt der Marken beim Seitenstil headings kann mit
+ \markboth{}{} und \markright{} beeinflusst werden. Dies muss
+ jedoch NACH opening erfolgen, weil opening, selbst ein
+ \@mkboth{\usekomavar{fromname}}{\usekomavar{subject}}
+ ausführt. Ich habe deshalb auch noch den Seitenstil myheadings
+ definieren, der wie headings funktioniert, aber \@mkboth auf
+ \@gobbletwo setzt.
+
+2002-01-31 Markus Kohm <Markus.Kohm@gmx.de>
+ * koma-script.xml:
+ Der Catalogue-Eintrag für KOMA-Script wird nun vom Projekt
+ mitverwaltet. Dadurch haben wir hoffentlich mehr Einfluss
+ auf seinen Inhalt.
+ Dies ist noch die unveränderte Originalversion.
+
+2002-01-29 Jens-Uwe Morawski <morawski@gmx.net>
+ * datetime.tex:
+ Übersetzung.
+
+2002-01-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ - Einige Variablen (z. B. place in fromplace) umbenannt.
+ - Einige neue Variablen.
+ - Neue \...name Makros.
+ - Einige neue Font-Variablen.
+ - Die Option fromalign beachtet nun die Werte:
+ left - linksbündiger Briefkopf entsprechend
+ briefkopf.sty
+ right - rechtbündiger Briefkopf analog zu "left"
+ center - zentrierter Briefkopf mit Logo neben der
+ Adresse
+ no - Keine Änderung des Briefkopfes.
+ Die Verwendung von \firsthead schaltet automatisch
+ auf fromalign=no.
+
+2002-01-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * einleit.tex, satzspgl.tex:
+ Von Yoshi Nagata gemeldete Fehler korrigiert.
+
+2002-01-27 Jens-Uwe Morawski <morawski@gmx.net>
+ * layout.tex, adressen.tex:
+ Korrekturen nach Vorschlägen von Torsten Krueger
+
+2002-01-25 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2 (v2.8q):
+ Diverse Optionen aus briefkopf.sty eingebaut.
+ * scrclass.dtx (v2.8q):
+ Alle ``blubber'' durch `blubber' ersetzt.
+
+2002-01-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrbook, scrreprt, scrartcl (v2.8q):
+ halfparskip-Bug beseitigt
+
+2002-01-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ - Neue Variable backaddressseparator ersetzt \\ in der
+ Rücksendeadresse.
+ - Neue Fontvariable backaddress
+ - Variable backaddress wird als \usekomavar{fromname}\\
+ \usekomavar{fromaddress} vordefiniert. Bei KOMAold wird
+ darauf getestet und ggf. auf leer gesetzt.
+ - Neues Makro \@ogobble, um ein optionales Argument zu
+ vernichten. Dieses wird bei der lokalen Umdefinierung
+ von \\ beispielsweise für die Rücksendeadresse verwendet.
+ - \captionenglish wird in jedem Fall definiert
+ - \ifkomavarempty*{placeseparator} durch \ifkomavarempty{place}
+ und \usekomavar*{placeseparator} durch \usekomavar{place}
+ ersetzt.
+
+2002-01-16 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ - Es gibt eine Fontvariable für "subject".
+ - Ein paar überflüssige % entfernt und ein paar fehlende %
+ ergänzt.
+ - Neue Sprachabhängigkeit \headfromname.
+ - Die letter Umgebung kennt nun ein optionales Argument zum
+ Setzen der Optionen (erspart ggf. den Aufruf von
+ \KOMAoptions).
+ - Der Fußnotenzähler wird bei jedem Brief zurückgesetzt.
+ - Neue Befehle \newkomavar, \setkomavar, \usekomavar,
+ \ifkomavarempty und \addtoreffields. Funktion siehe
+ scrclass.dtx.
+ - Die ganzen \from..., \to..., \place usw. Befehle wurden
+ durch komavar-Variablen ersetzt. Die alten Befehle sind
+ jedoch bei Verwendung der Optionendatei "KOMAold" wieder
+ verfügbar. Namen und Bedeutung der Variablen siehe
+ scrclass.dtx.
+
+2002-01-14 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ Das Setzen der Geschäftszeile wurde optimiert.
+
+2002-01-10 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrbook.cls, scrreprt.cls, scrartcl.cls (v2.8q):
+ Leere Präambel im Literaturverzeichnis vergrößert nicht länger
+ den Abstand nach der Überschrift.
+
+2001-12-13 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, typearea.sty (v2.8q):
+ Es war immer dokumentiert, dass DIVcalc die optimale Breite
+ einer Spalte nimmt. Tatsächlich hat das aber aufgrund eines
+ Bugs nie funktioniert. Dieser Fehler ist nun behoben, führt
+ aber u. U. bei alten Dokumenten, die auf diesen weit zurück
+ reichenden Bug bauen, zu einem anderen Umbruch!
+
+2001-11-29 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Dokumentation von \setcapmargin der erfolgen Änderung
+ angepasst.
+ * scrclass.dtx (v2.8q):
+ Bei \setcapmargin gibt das optionale Argument nun den linken
+ bzw. inneren Rand an, da mir dies intuitiver erscheint.
+ Neue Umgebungen addmargin und addmargin* mit einem optionalen
+ und einem obligatorischen Argument, um innerhalb des Dokuments
+ die Randeinstellung kurzzeitig zu ändern. Negative Werte sind
+ möglich. Realisation erfolgte mit Hilfe einer Liste.
+
+2001-11-27 Markus Kohm <markus.kohm@gmx.de>
+ * Makefile.unx:
+ Mit "env BETA=yes make scrguien" kann der neue englische Guide
+ erzeugt werden. Dabei werden alle benötigten symbolischen Links
+ automatisch erzeugt. Daher ist es nicht mehr notwendig, die
+ folgenden Dateien im CVS zu halten:
+ scrguide/english/scrguide.bib
+ scrguide/english/scrguide.ist
+ scrguide/english/scrguide.mbs
+ scrguide/english/scrguide2.tex
+ * scrguide-en.bst:
+ BibTeX style for the english guide.
+ * scrguide.bst:
+ Zwischen Monat und Jahr ist kein Umbruch erlaubt.
+
+ * main.tex:
+ \LoadChapters
+ \LanguageShortcut
+
+ * scrguide2.tex:
+ Notwendige Definitionen von Jens ergänzt. Dabei den
+ Zeilenumbruch im Quellcode angepasst und die Umlaute entfernt
+ (die Definition erfolgt vor dem Laden der Sprache).
+ Verwendung von Babel für jede Sprache.
+ Welche Kapitel in welcher Reihenfolge geladen werden, wird
+ von der Sprachdatei festgelegt (\LoadChapters).
+ Das Literaturverzeichnis ist wirklich linksbündig.
+ Unterschiedliche Sprachen können unterschiedliche BibTeX Stile
+ verwenden.
+ HINWEIS: Ich erinnere daran, dass english/scrguide2.tex mit
+ scrguide2.tex identisch ist!
+
+2001-11-26 Jens-Uwe Morawski <morawski@gmx.net>
+ * layout.tex:
+ Macro- und Environment-Definitionen entfernt;
+ sprachunabhängige Teile nun in scrguide2.tex;
+ sprachabhängige Teile werden in entsprechender
+ Hauptdatei deklariert; für layout.tex ebenfalls
+ in scrguide2.tex
+ \phantomsection für page:-Label eingefügt
+ damit hyperref-\pageref-Links auch auf diese
+ Seite zeigen; Abschlußbeispiel hinzugefügt
+ von Markus vorgeschlagene Korrekturen bis
+ auf einen Vorschlag umgesetzt
+ * headfoot.tex:
+ removed macro and environment declarations;
+ language independent declarations are moved
+ to scrguide2.tex; language dependent declarations
+ are in main.tex
+ added \phantomsection for page:-labels, thus
+ hyperref-\pageref-links point to this page
+ final example added
+ * addressf.tex:
+ fixed two small bugs (it's -> its);
+
+ * main.tex:
+ extended with english sample-texts and
+ required macros for use in headfoot.tex
+
+2001-11-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Zwei Tippfehler behoben.
+ * scrclass.dtx (v2.8q):
+ Bei Verwendung der captionbeside-Umgebung darf \label nun
+ tatsächlich hinter der Umgebung stehen.
+
+2001-11-23 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ \KOMAoptions{parskip=...} kann innerhalb des Dokuments verwendet
+ werden. Ebenso kann es als Umgebung eingesetzt werden.
+
+2001-11-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Beispiel für \setcapwidth ergänzt.
+ Beschreibung für die captionbeside-Umgebung.
+ * scrclass.dtx (v2.8q):
+ Neues Makro \ifthispageodd{<true-Zweig>}{<false-Zweig>}:
+ Durch eine Art Label-Mechanismus wird beim übernächsten
+ LaTeX-Lauf garantiert korrekt entscheidet, ob der
+ <true-Zweig> oder der <false-Zweig> auszuführen ist.
+ Demgegenüber entscheidet \ifodd\value{page} innerhalb
+ des ersten Absatzes einer Seite oder innerhalb von
+ Gleitumgebungen sehr oft falsch.
+ \setcapwidth[o] und \setcapwidth[i] sowie \setcapmargin*
+ funktionieren nun korrekt.
+ Neue Umgebungen:
+ \begin{captionbeside}[<Verzeichniseintrag>]
+ {<Beschreibung>}[<Beschreibungsort>]
+ [<Breite>][<Verschiebung>]
+ \begin{captionbeside}[<Verzeichniseintrag>]
+ {<Beschreibung>}[<Beschreibungsort>]
+ [<Breite>][<Verschiebung>]*
+ Es wird ein
+ \caption[<Verzeichniseintrag>]{<Beschreibung>}
+ neben dem Inhalt der Umgebung ausgegeben. Daher die die
+ Umgebung nur innerhalb von Gleitumgebungen verwendet
+ werden.
+ <Beschreibungsort> kann sein:
+ l = links neben dem Inhalt der Umgebung
+ r = rechts neben dem Inhalt der Umgebung (default)
+ <Breite> ist die Breite von Umgebungsinhalt und
+ Beschreibung. Voreingestellt ist \linewidth.
+ <Verschiebung> ist eine horizontale Verschiebung für
+ Umgebungsinhalt und Beschreibung. Voreingestellt
+ ist Zentrierung.
+ In der Version mit Stern am Ende wird die <Verschiebung>
+ im doppelseitigen Satz auf linken Seiten so umgerechnet
+ das ein gespiegelter Rand entsteht. Die Beschreibung wird
+ fussbündig zum Inhalt der Umgebung gesetzt.
+
+2001-11-21 Jens-Uwe Morawski <morawski@gmx.net>
+ * layout.tex:
+ - neue Befehle und Umgebungen für die
+ Übersichtlichkeit der Beispiele
+ - Index-Korrektur bei \pagemark
+ - Index-Korrektur bei \setfootsepline
+ - Anpassung der Label
+ - !!! End-Beispiel fehlt noch !!!
+ * headfoot.tex:
+ - initial translation, including all
+ changes of the current german version
+ - !!! final example and translations
+ of example-texts missing !!!
+ * adressen.tex:
+ - Änderung der Grußformel, da die englische
+ keinen Sinn machte
+ - Labels angepaßt
+ * addressf.tex:
+ - changed closing in example, since the former
+ closing-text had a unsuitable meaning in the
+ english version
+
+2001-11-20 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Die Optionen und Makros vom 2001-11-17 dokumentiert.
+ * scrclass.dtx (v2.8q):
+ \setcapmargin bewirkt noonelinecaption.
+
+2001-11-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Bei longtable wird \LTcapwidth ignoriert. Stattdessen findet
+ die mit \setcapwidth bzw. \setcapmargin getroffene
+ Einstellung Anwendung. Außerdem funktionieren \captionabove
+ und \captionbelow nun auch in longtable Tabellen. Dabei wird
+ auch die Option tablecaptionabove beachtet.
+ BTW: longtable hat einen Bug. Bei links- oder rechtsbündig
+ gesetzten Tabellen ragt der caption-Text in den jeweiligen
+ Rand. Ursache ist \LTleft=\z@ und \LTright=\fill bzw.
+ umgekehrt in Verbindung mit \hss innerhalb von
+ \LT@makecaption. Ich denke nicht, dass der Bug einfach zu
+ beheben ist. KOMA-Script beseitigt diesen Bug auch nicht.
+
+2001-11-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Kompatibilität mit caption2 weiter erhöht. Dazu werden einige
+ KOMA-Script-Makros umdefiniert, sobald caption2 geladen ist.
+ Neue Optionen:
+ onelinecaption - Voreinstellung wie bisher
+ noonelinecaption - entspricht Option "nooneline" von
+ caption2
+ Neue Makros:
+ \setcapwidth[<pos>]{<Breite>} - siehe scrclass.dtx
+ \setcapmargin[<links>]{<rechts>} - siehe scrclass.dtx
+ \setcapmargin*[<links>]{<rechts>} - siehe scrclass.dtx
+ * scrclass.ins:
+ scrlfile.sty wird erzeugt.
+ * scrclass.dtx, scrlfile.sty (v2.8q):
+ Erste Implementierung. Es mag seltsam sein, dass die erste
+ Implementierung die Version v2.8q ist. Aber da das Paket
+ eigentlich Bestandteil der Klassen ist und nur deshalb
+ ausgelagert wurde, weil es auch getrennt davon verwendet
+ werden kann, bekommt es dieselbe Versionsnummer wie die
+ Klassen. Optimal wäre, wenn dieses Paket Bestandteil von
+ LaTeX werden würde.
+
+2001-11-16 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Die neuen Optionen tocleft, tocindent, listsleft und listsindent
+ dokumentiert.
+ Die neue Schriftumschaltung für Fußnoten und Fußnotenmarken
+ dokumentiert.
+ secnumdepth dokumentiert.
+ Ein paar informative Ergänzungn.
+ * scrclass.dtx (v2.8q):
+ Schriftumschaltung für Fußnoten und Fußnotenmarken.
+
+2001-11-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Ein 0\p@ durch \z@ ersetzt.
+ Die Anzahl der Info-Einträge bei scrlttr2.cls reduziert.
+
+2001-11-14 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Neue Optionen:
+ tocleft - Das Inhaltsverzeichnis wird nicht stufig, sondern
+ linksbündig dargestellt. Dabei stehen alle
+ Gliederungsnummern linksbündig untereinander und
+ alle Überschriften beginnen in einer Fluchtlinie.
+ Es entsteht ein Tabelleneindruck. Der Platz, der
+ für die Gliederungsnummern benötigt wird, wird
+ automatisch ermittelt. Eine korrekte Darstellung
+ wird nach max. 3 LaTeX Durchläufen erreicht.
+ tocindent - Inhaltsverzeichnis wie bisher (default)
+ listsleft - Die Listenverzeichnisse sind linksbündig. Der
+ Platz, der für die Nummern benötigt wird, wird
+ automatisch ermittelt.
+ listsindent - Listenverzeichnisse mit festem Wert für die
+ Breite der Nummer wie bisher (default)
+ Aufgrund der verwendeten Implementierung sollte das ganze auch
+ mit float.sty Listen funktionieren und außerdem sehr robust
+ gegen Änderungen der betroffenen Makros sein. Es funktioniert
+ allerdings nur bei Verzeichnissen, die mit \@dottedtocline
+ bzw. mit Hilfe von \numberline erstellt werden.
+
+2001-11-13 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Tokenoptimierung (XXXpt --> XXX\p@, 0pt --> \z@, plus --> \@plus,
+ minus \@minus).
+ * scrguide2.tex:
+ Wenn keine pdf-Ausgabe verlangt ist, wird explizit "hypertex"
+ als hyperref-Option angegeben, damit nicht automatisch "dvips"
+ verwendet wird (wenn jemand doch dvips will, sollte er auch
+ die Option "linktocpage" verwenden).
+ * scrclass.dtx (v2.8q):
+ \setlength{\parskip}{\z@} an vielen Stellen durch
+ \@parskipfalse\@parskip@indent ersetzt.
+ * scrclass.dtx, typearea.sty (v2.8q):
+ \ifpdfoutput funktioniert wieder.
+
+2001-11-08 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ Komplett neue Schnittstelle für die Sprachumschaltung. Dadurch
+ kann der Benutzer nun mit Hilfe folgender Makros bereits in der
+ Präambel Begriffe für einzelne Sprachen definieren:
+ \newcaptionname{<Sprache>}{<Name-Makro>}{<Definition>}
+ \renewcaptionname...
+ \providecaptionname...
+ definiert das <Name-Makro> für die Sprache <Sprache>.
+ \new... definiert ein neues Makro - auch, wenn die Sprache
+ zuvor nicht existiert hat. Existiert das Makro bereits
+ wird ein Fehler ausgegeben.
+ \renew... definiert ein vorhandenes Makro erneut.
+ Existiert Sprache oder Makro noch nicht, wird ein Fehler
+ ausgegeben.
+ \provide... definiert ein noch nicht vorhandenes Makro.
+ Existiert Sprache nicht oder Makro bereits wird eine
+ Information in die log-Datei geschrieben.
+ Die Option "numericaldate" funktioniert nun auch im Dokument.
+ \KOMAoptions ist auch innerhalb des Dokuments erlaubt.
+
+2001-11-06 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ Option parskip funktioniert nun auch per \KOMAoptions.
+ * scrclass.dtx, typearea.sty (v2.8q):
+ Die Optionen DIVcalc und DIVclassic lassen die Finger von der
+ DIV-Liste, so dass der symbolische Wert "default" bei \typearea
+ später auch noch funktioniert - wenn ein entsprechender Wert
+ definiert ist.
+ \typearea kennt außerdem den symbolischen Wert "last", der im
+ Gegensatz zu "current" nicht der aktuelle DIV-Wert ist, sondern
+ der Wert, mit dem \typearea zuletzt aufgerufen
+ wurde. Unterschiede können sich ergeben nach einem Aufruf mit
+ "calc", "classic" oder "default".
+ Intern wird nun ebenfalls \typearea[current]{current} für die
+ Initialisierung verwendet, statt \typearea[\ta@bcor]{\ta@div}.
+ * scrclass.dtx, scrlttr2.cls (v2.8q):
+ \AfterProcessOptions wird nicht mehr bei jedem Aufruf der
+ Optionen "headsepline" und "footsepline", sondern nur noch
+ jeweils einmal insgesamt ausgeführt.
+ titlepage-Material, das nie verwendet wurde, entfernt.
+ Die Optionen "BCOR" und "headlines" verwenden jetzt
+ \typearea[...]{last} statt \typearea[...]{current} beim Aufruf
+ per \KOMAoptions.
+ Die Option "paper" funktioniert jetzt auch nach dem Laden von
+ typearea und sorgt nicht nur für eine Fehlermeldung.
+ * scrclass.dtx (v2.8q):
+ \cleardoublestandardpage in der Option "cleardoublestandard"
+ bzw. "cleardoublepage" korrigiert.
+
+2001-11-01 Markus Kohm <Markus.Kohm@gmx.de>
+ * addrconv.tex, addressf.tex, datetime.tex, headfoot.tex,
+ introduc.tex, letter.tex, maincls.tex, pglayout.tex:
+ Comments changed.
+
+2001-10-31 Markus Kohm <Markus.Kohm@gmx.de>
+ * komascr.ins, scrclass.ins, scrpage.ins, scrtime.ins:
+ \askonceonly, falls docstrip es bietet. Dadurch finden bei der
+ Installation ggf. weniger Nachfragen statt.
+
+2001-10-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q, nur Briefklasse):
+ Klassenoption "footsepline" funktioniert nun ("{#1}"
+ fehlte). Die Option setzt derzeit aber nur einen Schalter, der
+ intern nicht ausgewertet wird!
+ Klassenoption "twoside" funktioniert nun ("{#1}" fehlte) ohne
+ Warnung.
+ Klassenoption "enlargefirstpage" funktioniert nun ("{#1}"
+ fehlte).
+ Klassenoption "cleardoublepage" beachtet nun auch die Werte
+ "plain" und "standard". Die Option hat derzeit aber nicht viel
+ Sinn.
+ Klassenoption "numericaldate" funktioniert nun korrekt (nicht
+ mehr invers zur Bedeutung).
+ Warnungen über zu hohes Anschriftfeld bzw. zu hohe
+ Rücksendeadresse sollte nur noch einmal ausgegeben werden.
+ Warnung über zu hohe Rücksendeadresse sollte nur noch ausgegeben
+ werden, wenn tatsächlich zuvor eine overfull \vbox gemeldet
+ wurde.
+ Für den Kopf und den Fuß der ersten Seite wird \parfillskip
+ lokal auf 0 gesetzt.
+ Bei Warnungen über zu hohe Inhalte der Elemente der ersten
+ Seite, wird nun nicht mehr der zu hohe Wert, sondern der Name
+ des zu hohen Wertes ausgegeben. Außerdem wird angegeben, um
+ wieviel die entsprechende Box zu hoch ist.
+ Hinweis: Die Verwendung der Optionen per \KOMAoptions führt noch
+ nicht bei jeder Option zu einer sinnvollen Reaktion.
+
+2001-10-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ Einige Teile wurden zeitweilig in die falschen Klassen
+ generiert.
+ Die mit Carsten besprochene Änderung an \ifpdfoutput
+ vorgenommen. Dadurch wird \pfdoutput jetzt nicht mehr
+ \relax falls es undefiniert war. Außerdem darf ein
+ anderes Paket \ifpdfoutput vor typearea.sty definieren
+ und dem Befehl sogar eine andere Bedeutung geben.
+
+2001-10-19 Jens-Uwe Morawski <morawski@gmx.net>
+ * addressf.tex:
+ adressen.tex --> addressf.tex
+ adressen_en.tex --> addressf.tex
+ * main.tex:
+ \Opt: optional parameter has to be an obligatory one
+ at case 3rd.
+
+2001-10-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrlettr.dtx (v2.6d):
+ \subjectafteron funktioniert nun. Die Aktivierung führte
+ seit ewigen Zeiten zu einer Fehlermeldung. Da das
+ Feature auf expliziten Anwenderwunsch eingebaut wurde,
+ wundert der Umstand, dass der Bug nie gemeldet wurde,
+ doch sehr. Ich sollte mit der Implementierung von
+ Anwenderwünschen zukünftig wohl sparsamer umgehen.
+ * scrclass.dtx (v2.8q, nur Briefklasse):
+ Einige Fehlermeldungen korrigiert.
+ Option "subject=afteropening" funktioniert.
+
+2001-10-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q, nur Briefklasse):
+ Die Optionenwerte können nun tatächlich per
+ \documentclass gesetzt werden. Das ging vorher schief.
+ Die Optionen DIV, BCOR und headlines werden nach dem
+ Laden von typearea so geändert, dass sie keine Optionen
+ mehr an typearea schicken, sondern \typearea aufrufen.
+ * scrclass.dtx (v2.8q):
+ \z@ in \@z korrigiert (oder umgekehrt).
+
+2001-10-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q, nur Briefklasse):
+ Alle von Carsten und Torsten gemeldeten Fehler behoben.
+ Bei \KOMAoptions verhalten sich die Optionen fontsize
+ und paper anders als bei \documentclass (soweit
+ \KOMAoptions nach dem Laden der sizeX.clo-Datei bzw.
+ nach dem Laden von typearea aufgerufen wird, was
+ immer der Fall sein dürfte). Es wird dann ggf. eine
+ Warnung bzw. ein Fehler ausgegeben.
+
+2001-10-16 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Verbesserungsvorschlag aus de.comp.text.tex eingefügt.
+
+2001-10-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q nur Briefklasse):
+ Alle von Torsten gemeldeten Fehler behoben.
+
+2001-10-14 Markus Kohm <Markus.Kohm@gmx.de>
+ * filestate.html:
+ names inserted and states updated
+ * maincls.tex:
+ only a dummy
+ * letter.tex:
+ only a dummy
+ * introduc.tex:
+ don't no any change
+ * headfoot.tex:
+ only a dummy
+ * datetime.tex:
+ only a dummy
+
+ * addressf.tex:
+ New translation from Jens with "Telephon" --> "Telephone"
+ and use of \Ord instead of math-hack from Markus.
+ * addrconv.tex:
+ only a dummy
+ * main.tex:
+ Names for all the chapter-files inserted.
+ New command \Ord{<Number to be an ordinal>} inserted. See
+ "addressf.tex" for usage.
+ * pglayout.tex:
+ "\eg{}" --> "e.g."
+
+2001-10-12 Markus Kohm <Markus.Kohm@gmx.de>
+ * satzspgl.tex:
+ Wichtige Ergänzung zu Paketoptionen bei Verwendung einer
+ KOMA-Script Klasse.
+
+2001-10-09 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.ins
+ In der Beta-Version werden neben der neuen Briefklasse auch die
+ neuen Letter-Class-Option-Dateien ausgepackt.
+ Anpassung an die neuen Schlüssel (class, package, lco).
+ * scrclass.dtx (v2.8q):
+ Die Briefklasse ist nochmal komplett überarbeitet und verwendet
+ jetzt das keyval-Paket. Dafür wurden diverse Kompatibilitäten
+ über Bord geworfen. Alle scrlettr-Befehle und Umgebungen werden
+ zwar noch unterstützt, die alten Längen jedoch nicht mehr.
+ Für alle Neuerungen bitte die Implementierungsdoku konsultieren.
+ Es wurde versucht, alle neuen Befehle auch einem Datum
+ zuzuordnen.
+ Außerdem sind nun hoffentlich alle Makros, Umgebungen, Optionen,
+ Längen und Zähler in \begin{...}...\end{...} eingeschlossen und
+ so im Index aufgeführt.
+ * scrlettr.dtx (v2.6c unvollendet):
+ Die Klasse gibt am Anfang eine übertriebene OBSOLET-Warnung aus.
+ Die Dokumentation aus brief.tex wurde in diese Datei integriert.
+ TODO: Alle Teile, die nicht unmittelbar scrlettr.cls sind, in ein
+ neues dtx verschieben.
+ Implementierungsdoku von scrlettr.cls komplett entfernen
+ (hauptsächlich aus Platzgründen, stattdessen gibt es dann
+ nur noch einen Verweis auf scrclass.dtx).
+
+2001-10-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide/datmzeit.tex:
+ Kroatisch dokumentiert.
+ Möglichkeit, die Namen der Wochentage kleingeschrieben zu
+ erhalten, dokumentiert.
+
+2001-10-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q), nur die Briefklasse:
+ Kroatisch wird nun ebenfalls unterstützt.
+ * scrtime.dtx (v1.1l):
+ Kroatisch wird nun ebenfalls unterstützt.
+
+2001-10-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ package:ragged2e neu aufgenommen.
+ * hauptcls.tex:
+ Änderungen in scrclass.dtx Version 2.8q dokumentiert.
+ * layout.tex:
+ Änderungen und Korrekturen, wie von Jens erhalten.
+ Zusätzlich einen Zeilenumbruch und einen Seitenumbruch
+ verbessert.
+
+2001-10-04 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8q):
+ \dictum und die zugehörigen Makros definiert.
+
+2001-10-01 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Änderungen im Zuge von \setkomafont, \addtokomafont und
+ \usekomafont abgeschlossen.
+ Änderungen von \setchapterpreamble und \setpartpreamble
+ dokumentiert. Ein Beispiel ist im Zuge der noch zu
+ implementierenden epigraph-Geschichte nachzuholen.
+
+2001-09-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0l):
+ Kopf und Fuß mit geänderter Breite sollten nun auch im
+ einseitigen Satz korrekt funktionieren.
+ * scrclass.dtx (v2.8p):
+ \usekomafont
+
+2001-09-27 Markus Kohm <Markus.Kohm@gmx.de>
+ * pglayout.tex:
+ Neuste Version von Colin.
+ * scrclass.dtx (v2.8p):
+ \setchapterpreamble und \setpartpreamble erweitert. Beide
+ verstehen jetzt jeweils ein optionales Argument für die Position
+ der Präambel und ein zweites optionales Argument für die Breite
+ der Präambel.
+ Part-Überschriften werden nun immer mit \parskip=0 gesetzt.
+ * brief.tex, hauptcls.tex:
+ Tippfehler und Indexfehler korrigiert.
+
+2001-09-23 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Änderung des Font-Änderungskonzeptes (Verwendung von \setkomafont
+ und \addtokomafont an Stelle von \renewcommand) dokumentiert.
+ * scrguide.tex:
+ \BeginIndex und \EndIndex haben nun wie \Index ein optionales
+ Argument. Aus Kompatibilitätsgründen ist aber indexit statt
+ indexrm voreinsgestellt.
+ * scrclass.dtx (v2.8p):
+ \setkomafont/\addtokomafont-Konzept geändert und ausgebaut.
+
+2001-09-21 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.gst:
+ Neue MakeIndex-Stil-Datei, um die Änderungsliste zu erzeugen.
+ * Makefile.unx:
+ Erzeugung des Änderungsverzeichnisses hinzugefügt.
+ * scrguide2.tex:
+ Änderungsverzeichnis hinzugefügt.
+ * hauptcls.tex:
+ Zeilenumbruch korrigiert.
+ * layout.tex:
+ Einen Tippfehler korrigiert.
+ Zusätzliche Erklärung zum Seitenstil scrheadings und der
+ Paketoption automark eingefügt (aufgrund von Supportanfragen).
+
+2001-09-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * datmzeit.tex:
+ Umlaute geändert, Leerzeichen nach der Fußnote korrigiert,
+ "dass".
+ * hauptcls.tex:
+ \chapappifchapterprefix.
+ * scrguide.bib:
+ Verwendet nur noch US-ASCII und benötigt deshalb kein BibTeX8
+ mehr.
+
+2001-09-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8o) - scrbook.cls, scrreprt.cls:
+ Da \chapappifprefix ein optionales Argument hat, wird es nicht
+ expandiert, sondern ist geschützt definiert. Das führt dazu, dass
+ in \botmark (also in \leftmark) ein nicht expandiertes \chapapp
+ steht. Dies wiederum führt bei \appendix dazu, dass in der
+ Kopfzeile des letzten Kapitels u. U. \appendixname statt
+ \chaptername verwendet wird. Außerdem kann deshalb beispieslweise
+ \chaptermarkformat nicht so einfach umdefiniert werden, sondern
+ erfordert meist ein \DeclareRobustCommand.
+ Da ich nicht einfach bei einem existierenden Makro aus einem
+ optionales ein obligatorisch Argument machen kann, gibt
+ \chapappifprefix neuerdings eine Warnung aus, funktioniert aber
+ weiter.
+ Außerdem habe ich aber \chapappifchapterprefix mit einem
+ obligatorischen Argument definiert. Damit treten obige Probleme
+ nicht auf.
+ HINWEIS: IM SCRGUIDE IST ZUKÜNFTIG NUR NOCH DAS NEUE MAKRO ZU
+ DOKUMENTIEREN!!! Das alte Makro ist obsolet.
+
+2001-09-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8o):
+ Tippfehler (parskip, halfpaskip) in der Implementierungsdoku
+ behoben.
+ Zur Erhöhung der Seitenumbruchskompatibilität mit der alten
+ Briefklasse die Optionen "firstpageenlarge" und
+ "nofirstpageenlarge" implementiert. Bei "KOMAold" wird
+ automatisch "firstpageenlarge" aktiviert. Die Option bewirkt,
+ dass der Satzspiegel der ersten Seite vertikal vergößert wird,
+ wenn die Position des Fußes dies erlaubt.
+ Bei der Variante "KOMAold" wurde der Fuß zur Erhöhung der
+ Kompatibilität mit der alten Briefklasse weiter nach unten
+ verschoben.
+
+2001-09-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8o):
+ Einen Tippfehler (\renewommand) korrigiert und sowohl
+ \chapterheadstartvskip als auch \chapterheadendvskip leer
+ vordefiniert, damit die Optionen \renewcommand verwenden können.
+ * scrclass.dtx (v2.8o) alle Klassen:
+ Viele \def durch \(re)newcommand ersetzt oder ergänzt. Dadurch
+ nun besser LaTeX-konform als die Standardklassen.
+ * scrclass.dtx (v2.8o) nur die Briefklasse:
+ Einzug am Anfang des location-Feldes abgeschaltet.
+ Standardbriefkopf für DINmoretext so geändert, dass er ohne
+ overfull \vbox Meldung passt.
+ Führt das Setzen von Kopf der ersten Seite, Adresse oder location
+ Feld zu einer overfull \vbox Meldung, so wird anschließend eine
+ Warnung ausgegeben, der zu entnehmen ist, welches Feld
+ verantwortlich war und was getan werden kann. Früher wurde nur
+ die Meldung mit der Zeilennummer der \opening-Zeile ausgegeben,
+ so dass man raten musste, welches Element verantwortlich ist.
+ Das location-Feld kann nun ebenfalls eine overfull \vbox melden.
+
+2001-09-14 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8o) nur die Briefklasse:
+ Korrektur der Erzeugung der Geschäftszeile. Dazu wurden außerdem
+ \varrefitemnamei etc. durch \refiteminame etc. ersetzt. Dies ist
+ eine Inkompatibilität zu scrlettr.cls. Da jedoch Befehle zur
+ Definition existieren, die nicht umbenannt wurden, sollte sich
+ die Inkompatibilität extrem selten auswirken. Eigentlich sollte
+ ich interne Variablen definieren.
+
+2001-09-14 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8o):
+ Neuer Befehle \setkomafont{<elementname>}{<fontauswahlbefehle>}.
+ Beispielsweise entspricht \setkomafont{captionlabel}{\normalfont}
+ der Anweisung \renewcommand{\caplabelfont}{\normalfont}. Die
+ möglichen Werte von <elementname> sind durch die Makros
+ \scr@fnt@<elementname> vorgegeben. Siehe dazu scrclass.dtx.
+ Bei <elementname>=chapter, section o. ä. gibt es eine Warnung,
+ dass andere Elemente mit geändert werden.
+
+2001-09-11 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ Vorsichtshalber wird bei "make" nun auch die
+ Implementierungsdoku erzeugt. Dadurch werden Checksum-Fehler
+ offenbar, die durch fehlerhaften Download entstehen.
+ Innerhalb des make-Prozesses werden LaTeX und pdfLaTeX nun nicht
+ mehr im interaktiven Modus, sondern immer im nonstopmode oder im
+ batchmode aufgerufen. Dabei erfolgt der erste Aufruf
+ normalerweise im nonstopmode, damit Fehler direkt auf ausgegeben
+ werden und nicht erst das Log-File konsultiert werden muss. Alle
+ weiteren Läufe für die gleiche Datei erfolgen normalerweise im
+ batchmode. Wenn Fehler auch erst durch den Aufruf von BibTeX
+ oder MakeIndex entstehen können, erfolgen auch die
+ (pdf)LaTeX-Aufrufe danach im nonstopmode.
+ * scrclass.dtx (v2.8n):
+ Einige Teile landeten versehentlich in der Brief-Klasse statt in
+ den normalen Klassen, weshalb die normalen Klassen nicht mehr
+ funktioniert haben.
+
+2001-09-09 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8n) nur die Brief-Klasse:
+ Die neuen Optionen nochmal umbenannt und KOMAold hinzugefügt.
+ KOMAold ist nun die Standardeinstellung. Dabei wird weitgehend
+ das Layout der alten scrlettr-Klasse übernommen. Vollkommene
+ Übereinstimmung wird jedoch nicht erreicht. Briefstil-Optionen
+ sind nun:
+ DIN - entspricht den Vorgaben der DIN
+ DINmoretext - entspricht der alternativen nach DIN
+ swisssleft - für schweizer Fensterumschläge mit Fenster links
+ SNold - nach alter schweizer Norm (nicht implementiert)
+ SN - nach neuer schweizer Norm (nicht implementiert)
+ KOMAold - entspricht der alten scrlettr-Klasse
+ Darüber hinaus ist das Ändern der Längen mit \setlength{...} nun
+ obsolet. Stattdessen gibt es die Befehle:
+ \setletterpos[Faktor]{Brieflänge}{Wert}
+ \addletterpos[Faktor]{Brieflänge}{wert}
+ mit
+ Brieflänge - Name einer Längenvariablen aus der letter-Umgebung
+ Wert - Nummerischer Wert oder der Name einer Länge
+ Faktor - Faktor, mit dem der Wert zu multipizieren ist.
+ Beispiele sind in scrclass.dtx zu finden. Die Wertänderung
+ erfolgt sofort und erneut bei jedem Aufruf von
+ \begin{letter}. Direkte Änderungen der Längen werden erkannt und
+ von den relativen Positionsangaben der alten scrlettr-Klasse
+ möglichst genau in die neuen absoluten Positionsangaben
+ umgerechnet. Dadurch wird größt mögliche Kompatibilität zur
+ alten Klasse erreicht. Durch gleichzeitige Warnung, wird auf die
+ neuen Methoden aufmerksam gemacht.
+
+2001-09-08 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.ins:
+ In der BETA-VERSION wird auch scrlttr2.cls ausgepackt.
+ * scrclass.dtx (v2.8n):
+ Enthält nun ebenfalls scrlettr.cls bzw. scrlttr2.cls. Diese
+ Klasse ist als grundlegend überarbeitete Version der bisherigen
+ scrlettr Klasse gedacht. Hauptvorteil der Klasse ist, dass sie
+ wesentlich weniger empfindlich auf Satzspiegeländerungen
+ reagiert. Sie funktioniert daher auch mit typearea und nutzt
+ selbst typearea. Die erste Seite wurde dazu komplett neu
+ gestaltet. Alle dafür benötigten Abstände sind nun relativ zur
+ oberen linken Ecke des Papiers nicht mehr zum Textbeginn (der
+ zudem von der Schriftgrößen abhängig war). Die Seitengestaltung
+ ist nun auch etwas mehr DIN-konform. Außerdem gibt es eine Reihe
+ neuer Optionen:
+ refnormal - Geschäftszeile ist so breit wie der Textbereich
+ refwide - Geschäftszeile ist so breit wie die Adresse
+ suggeriert
+ dinnormal - Kopf- und Faltmarkenanordnung nach der alten DIN
+ dinmoretext - Kopf- und Faltmarkenanordnung für mehr Text
+ Die parskip-Optionen (einschließlich parindent) funktionieren
+ ebenfalls.
+ Die gesamte Klasse ist EXPERIMENTELL!
+
+2001-09-06 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrlettr.dtx:
+ addrconv.tex, email.tex etc. funktionieren nun auch in der
+ BETA-VERSION (\message eingefügt).
+ * scrclass.dtx (v2.8n):
+ Ein wenig umstrukturiert (Schalter werden nun möglichst in der
+ Nähe ihrer Verwendung definiert).
+ Es wird tatsächlich explizit immer die aktuelle Version von
+ typearea von den Klassen angefordert. Die Verwendung einer
+ älteren Version führt also zu einer Warnung.
+
+2001-09-04 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ $(SRC_FILES) definiert.
+ * scrclass.dtx (v2.8m):
+ Der Aufruf von \AtBeginDvi wird nun durch \AtBeginDocument
+ verzögert, damit das special nicht sofort expandiert. Dies ist
+ notwendig, weil \AtBeginDvi sofort expandiert - im Gegensatz zu
+ den anderen Hooks.
+
+2001-08-20 <<<<<<<<<<<<<<<<<<<<<<<< RELEASE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+
+2001-08-20 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ "make all" erzeugt nun keine Guides mehr. Dadurch funktioniert
+ die Installation beim Benutzer besser.
+ "make install" installiert nun auch die Sourcen von KOMA-Script.
+ "make install" funktioniert nun auch, wenn es aus einen
+ Zielverzeichnis kopiert wird - außer das Zielverzeichnis ist
+ /tmp/koma-script.tmp
+
+2001-08-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Die Änderungen von scrpage2.sty Version 2.0j eingearbeitet.
+ * scrpage.dtx (2.0j):
+ Neue Option "nouppercase", um in allen von scrpage2 definierten
+ Seitenstilen (also auch scrheadings und scrplain) \MakeUppercase
+ und \uppercase zu deaktivieren.
+ Neue Makros:
+ \clearscrheading - löscht alle Felder in scrheadings
+ \clearscrplain - löscht alle Felder in scrplain
+ \clearscrheadfoot - löscht alle Felder in scrheadings und
+ scrplain
+2001-08-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ package:caption2 hinzugefügt.
+ * hauptcls.tex:
+ Option origlongtable dokumentiert.
+ * scrguide:
+ Kommentarfehler in allen Dateien behoben (Copryrightnotiz).
+ * scrclass.dtx:
+ Fehler in \@setcapindent behoben. Es wurde dort \def statt \edef
+ verwendet. Dadurch wurde \@tempdima zum Zeitpunkt \@@makecaption
+ statt zum Zeitpunkt der Definition verwendet.
+ * komabug.tex
+ Es wird nicht länger nach scrguide.tex, sondern nach
+ scrguide2.tex gesucht.
+ * INSTALL.TXT, INSTALLD.TXT:
+ Die Dateien von addrconv waren nicht aufgeführt. Außerdem wird
+ nun zwischen adrconv und addrconv unterschieden.
+ * scrclass.dtx:
+ \addpart-Fehler (Eintrag ins Inhaltsverzeichnis zu spät) behoben.
+ * layout.tex:
+ Beschreibung von \automark korrigiert und erweitert.
+ Neue Option dokumentiert.
+ * scrpage.dtx:
+ \automark weiter verbessert. Nun funktionierten auch Anweisungen
+ wie \automark[chapter]{section} nicht allein
+ \automark[section}{chapter}. \automark{chapter} ist nun identisch
+ mit \automark[]{chapter} statt mit \automark[chapter]{chapter}.
+ Es gibt eine neue Option autooneside. Ist sie gesetzt wird im
+ einseitigen Satz das optionale Argument von \automark ignoriert.
+
+2001-08-16 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Die neuen Optionen dokumentiert.
+ * scrclass.dtx:
+ Neue Optionen parskip- und halfparskip-.
+ parskip-Optionen beeinflussen nicht mehr den Abstand der Einträge
+ in Inhalts-, Abbildungs- und Tabellenverzeichnis. Dies
+ Verzeichnisse von float.sty bleiben davon unberührt.
+ * scrguide2.tex:
+ introduc.tex wird in der englischen Version mit eingebunden.
+ * english/introduc.tex:
+ Neu: Übersetzung der Einleitung (leicht gekürzt und angepasst).
+ Das muss noch dringend korrigiert werden. Das Englisch darin ist
+ an einigen Stellen mehr als fragwürdig.
+ * english/main.tex:
+ Fehlende Ausdrücke und Übersetzungen eingefügt.
+
+2001-08-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ "../" in TEXINPUTS aufgenommen, damit die neu erzeugten Klassen
+ und Pakete sofort für die Erzeugung der guides gefunden werden.
+ Neue Regeln, um zwei A5 Seiten auf jeweils eine A4 Seite zu
+ setzen und zwei Methoden für booklets.
+ Orthografische Fehler beseitigt.
+ default-Regel leicht geändert.
+
+2001-08-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * satzspgl.tex:
+ "Abschnitt~\ref{cha:scrpage}" durch "Kapitel~\ref{cha:scrpage}"
+ ersetzt.
+ "\Var{halber innerer Rand}" durch "\Var{halber~innerer~Rand}"
+ ersetzt.
+ setspace-Referenz korrigiert.
+
+ * layout.tex:
+ Der symbolische Wert ist "paper" nicht page.
+
+ * scrguide2.tex:
+ Autorenliste auf der Titelseite vervollständigt.
+ \Macro, \Option, \Environment, \Length und \Counter erlauben
+ keinen Umbruch mehr.
+ * hauptcls.tex:
+ Die Optionen für Absatzabstand heißen korrekt "...parskip".
+
+2001-08-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8k):
+ Neue Option "origlongtable", um die Änderung von \LT@makecaption
+ zu unterbinden. Dies passiert automatisch, wenn caption2 geladen
+ ist.
+ Die Optionen tablecaptionabove und tablecaptionbelow sind nicht
+ mehr fälschlich in typerarea, sondern in den Klassen.
+
+2001-08-14 <<<<<<<<<<<<<<<<<<<<<<<< RELEASE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+
+2001-08-13 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Abbildungsverzeichnis rausgeworfen, da es nicht sonderlich
+ informativ ist. Tabellenverzeichnis dringelassen, weil es etwas
+ sinnvoller ist.
+
+2001-08-13 Thomas Neumann <th-neumann@gmx.net>
+ * einleit.tex:
+ 3 orthografische Fehler beseitigt
+ * adrkonv.tex:
+ Vorerst die final Version (mit minimalen Änderungen von Markus)
+
+2001-08-13 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide:
+ Diverse Änderungen für adrkonv.tex
+ Diverse Indexkorrekturen (unerwünschte Leerzeichen verhindert
+ etc.)
+ * adrkonv.tex:
+ Thomas Konzept.
+ * scrclass.dtx:
+ Korrekturen in example.bib und den bst-Files von Thomas.
+
+2001-08-11 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide:
+ Alle Dateien nochmal auf unerwünschte Ligaturen untersucht und
+ diverse korrgiert.
+ * brief.tex:
+ Indexeinträge mit Umlauten geändert.
+ Einen Satz gestrichen und damit alle Seitenumbruchprobleme
+ gelöst.
+ * scrguide.ist:
+ "Symbols" wird unterdrückt.
+ * scrguide2.tex:
+ Längen und Zähler werden korrekt in den Index einsortiert.
+ * Makefile.unx:
+ scrnew20 wird berücksichtigt
+ * liesmich.txt:
+ Anpassungen für den neuen scrguide,
+ Mausadresse gelöscht.
+ * readme.txt:
+ Anpassungen für den neuen scrguide,
+ Mausadresse gelöscht.
+ * scrpage.ins:
+ scrpage2 wird nun nicht mehr allein in der Beta-Version erzeugt.
+
+2001-08-10 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ Bei der Installation werden die Rechte sinnvoll gesetzt. Außerdem
+ werden die Sourcen der Guides nun in den jeweiligen
+ Unterverzeichnissen installiert. Dadurch herrscht mehr Ordnung
+
+ * adressen.tex:
+ Jens liefert ab.
+ * scrnew20.tex:
+ Entwurf
+ * Makefile.unx:
+ Die deutsche Version des scrguide heißt nun in der Distribution
+ wieder scrguide.(dvi|ps|pdf). Die Namen der Sourcen sind
+ unverändert. Dadurch kann ein Anwender nicht versehentlich das
+ Kompilat versauen. Die Regeln zum Kompilieren des scrguides
+ funktionieren nicht in der Installation, da das Unterverzeichnis
+ scrguide bzw. scrguide-english nicht existiert.
+
+2001-08-09 Markus Kohm <Markus.Kohm@gmx.de>
+ * brief.tex:
+ Neue Version von Enrico mit kleinen Korrekturen und
+ \adrchar-Erklärung von Markus.
+
+2001-08-08 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ \Length{<Längenname>} analog zu \Macro{<Macroname>} definiert.
+ \LengthName definiert.
+ \IndexLength{<Längenname>} definiert (und damit auch
+ \BeginIndex{Length}{<Längenname>} und
+ \EndIndex{Length}{<Längenname>}).
+
+2001-08-07 Markus Kohm <Markus.Kohm@gmx.de>
+ * brief.tex:
+ Erste Beta-Version.
+ * scrguide.bib:
+ Kleiner Fehler beseitigt.
+ * layout.tex:
+ Kleiner Fehler beseitigt.
+ * scrclass.dtx, scrlettr.cls (2.6b), scraddr.sty (1.0a):
+ Jeweils ein kleiner Fehler beseitigt.
+
+2001-08-04 Jens-Uwe Morawski (E-Mail ist Markus Kohm bekannt)
+ * layout.tex:
+ Ein paar Fehler korrgiert und eine kleine Erklärung zu
+ \rlap und \llap ergänzt.
+
+2001-08-04 Markus Kohm <Markus.Kohm@gmx.de>
+ * komascr.ins:
+ Copyrightvermerk auf den aktuellen Stand gebracht.
+ * Makefile.unx:
+ Aufbau verbessert
+ Der alte deutschsprachige scrguide wird nicht mehr erzeugt.
+ Stattdessen wird der neue scrguide erzeugt. Die Guides werden
+ als dvi, ps und pdf erzeugt (bis auf den adrguide, der nur als
+ dvi erzeugt wird).
+ Die Regel tar wurde durch die Regel dist ersetzt. Die
+ Reihenfolge der Dateien im Archiv wurde geändert. Der Archivname
+ beinhaltet das ISO-Datum der Erzeugung.
+ Die Regel srctar wurde durch die Regel distsrc ersetzt. Der
+ Archivname beinhaltet das Datum der Erzeugung.
+ "make install" erzeugt aus einer Distribution (nicht aus einer
+ Source-Distribution, die ohnehin nicht verteilt werden darf) vor
+ der Installation alle für die Installation benötigten Dateien.
+ Es genügt damit aus der Distribution "make install" aufzurufen
+ statt wie bisher "make; make install". Aus der
+ Source-Distribution wird nach wie vor "make; make install"
+ benötigt.
+ 00CONTEN enthält nun auch sich selbst. Dafür enthält die Liste
+ nur noch Größe, Datum, Uhrzeit und Dateiname. Auf
+ Zugriffsrechte, Benutzer und Gruppe wird verzichtet.
+
+2001-08-03 Markus Kohm <Markus.Kohm@gmx.de>
+ * datmzeit.tex, hauptcls.tex, satzspgl.tex:
+ Korrekturen von Enrico eingearbeitet.
+
+2001-07-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Besprochene Änderungen, für die Jens offenbar gerade keine Zeit
+ hat, provisorisch durchgeführt.
+ * scrguide.bib:
+ Literatur package:longtable und package:float eingefügt.
+ * scrguide2.tex:
+ \StilName und Index für float-Stile eingefügt.
+ * hauptcls.tex:
+ Änderungen von scrclass v2.8j dokumentiert. Dabei einige Stellen
+ geringfügig umgestellt.
+ * scrclass.dtx (v2.8j):
+ Kompatibilität mit longtable durch Definition von \LT@makecaption
+ erhöht.
+ Kompatibilität mit float durch Definition von \floatc@komascript,
+ \fs@komaabove und \fs@komabelow erhöht.
+ Im Zuge obiger Änderungen wurde \@@makecaption von \@makecaption
+ abgespaltet.
+ ShowOutput leicht geändert.
+
+2001-07-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Änderungen von v2.8i dokumentiert.
+ * scrclass.dtx (v2.8i):
+ Die Änderung von v2.8h setzte das optionale Argument von figure
+ und table außer Kraft. Das ist behoben.
+ Neue Optionen:
+ parskip - stellt auf eine Zeile Absatzabstand um mit min.
+ Freiraum in der letzten Zeile von 1 em
+ parskip+ - stellt auf eine Zeile Absatzabstand um mit min.
+ Freiraum in der letzten Teile von 1/3 Zeile
+ parskip* - stellt auf eine Zeile Absatzabstand um mit min.
+ Freiraum in der letzten Teile von 1/4 Zeile
+ halfparskip - wie parskip mit einer halben Zeile Abstand
+ halfparskip+ - wie parskip+ mit einer halben Zeile Abstand
+ halfparskip* - wie parskip* mit einer halben Zeile Abstand
+ Diese Optionen arbeiten besser als parskip.sty, da einige
+ Zusatzprobleme (Liste innerhalb von footnotesize- oder
+ small-Umgebung) ebenfalls behandelt werden. Außerdem wird
+ \parfillskip gesetzt (siehe oben). Die Dehnbarkeit von \parskip
+ ist so eingestellt, dass \flushbottom trotzdem noch ohne
+ Warnung arbeiten sollte.
+
+2001-07-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ Referenz für topcapt.sty und hyperref ausgenommen.
+ * hauptcls.tex:
+ \caption-Erklärung geändert und dabei zusätzlich \captionabove
+ und \captionbelow erklärt.
+ * scrclass.dtx (v2.8h):
+ Neu: \captionabove setzt eine Überschrift statt einer
+ Unterschrift. Entsprechend setzt \captionbelow eine
+ Unterschrift. \caption ist bei figure identisch mit
+ \captionbelow. Bei table kann mit den Optionen
+ tablecaptionabove und tablecaptionbelow gewählt werden, ob
+ \caption mit \captionabove oder \captionbelow identisch
+ ist. Voreingstellt ist aus Kompatibilitätsgründen natürlich
+ tablecaptionbelow. Bei \captionabove ist die Bedeutung von
+ \abovecaptionskip und \belowcaptionskip vertauscht.
+ Das ganze ist so implementiert, dass es auch dann noch
+ funktioniert, wenn ein Paket \caption neu definiert, wie das
+ bei hyperref.sty geschieht. Es funktioniert aber natürlich
+ nicht, wenn \@makecaption umdefiniert wird (caption2-Paket).
+ * hauptcls.tex:
+ \textsubscript dokumentiert.
+ * scrclass.dtx (v2.8h):
+ \textsubscript entsprechend \textsuperscript definiert.
+
+2001-07-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8g):
+ Das Anselm statt \float@headings das Ding nun \float@listhead
+ genannt hat, \float@headings umbenannt.
+ Verwendung von \float@addtolists in \@chapter eingebaut. Dadurch
+ dürfte die Zusammenarbeit mit dem float-Paket optimal sein.
+
+2001-07-13 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Dafür gesorgt, dass trotz Schriftänderung die Seitenzahlen im
+ Index mit hyperref aktiv bleiben.
+
+2001-07-12 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Neue Umgebung ShowOutput für die Verdeutlichung der Ergebnis in
+ den Beispielen verwendet. Dazu wurde das quote-Beispiel außerdem
+ auch als Source aufgeführt (bisher war nur das Ergebnis zu
+ sehen).
+ * scrguide2.tex:
+ Neue Umgebung ShowOutput angelehnt an die picture-Umgebungen, die
+ Jens in layout.tex verwendet. Allerdings ist innerhalb von
+ ShowOutput ein Seitenumbruch möglich. Dafür ist es nicht ganz so
+ schön.
+ * hauptcls.tex:
+ Neuerung von scrclass.dtx v2.8f dokumentiert.
+ * scrclass.dtx (v2.8f):
+ Präambel für \part implementiert. Die Präambel wird analog zur
+ Kapitelpräambel mit \setpartpreamble{<Präambel>} gesetzt.
+
+2001-07-10 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Die Dokumentation von pointednumbers und pointlessnumbers wurde
+ entsprechende scrclass.dtx v2.8e angepasst.
+ * scrclass.dtx (v2.8e):
+ Die Einhaltung von Duden Regel 5 und 6 (20. Auflage) wird nun
+ in beide Richtungen überwacht. Außerdem genügt es nicht mehr
+ \part oder \appendix zu verwenden, um Regel 6 einzuschalten.
+ Stattdessen muss ein Gliederungsbefehl mit einer Nummer
+ verwendet werden, in der eines der Makros \Roman, \roman, \Alph,
+ \alph, \@Roman, \@roman, \@Alph, \@alph oder \romannumeral
+ vorkommt. Das ist noch keineswegs narrensicher, dürfte aber in
+ den meisten Fällen zum gewünschten Ergebnis führen.
+ Dafür führt jetzt ein vergessenes \appendix am Ende des Dokuments
+ nicht mehr zu einem unerwünschten Punkt und ein
+ \renewcommand*{\thesubsubsection}{\alph{subsubsection}}
+ wird erkannt, falls danach noch ein \subsubsection-Aufruf
+ erfolgt.
+
+2001-07-09 Markus Kohm <Markus.Kohm@gmx.de>
+ * komabug.tex:
+ Über die Konfigurationsdatei kann nun auch eine englische Version
+ angefordert werden.
+ * scrguide2.tex:
+ Die Explain-Umgebung erzeugt nun immer einen Abschnitt (\par
+ eingefügt).
+ * hauptcls.tex:
+ Letzte Korrektur eingearbeitet.
+ * einleit.tex:
+ Abschnitt zu Fehlermeldungen hinzugefügt
+ Einige Fehler korrigiert.
+
+2001-07-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Spielereien entfernt und ae.sty eimgefügt.
+ * hauptcls.tex:
+ Die neuen Makros von Version 2.8d dokumentiert und den Umbruch
+ optimiert.
+ * scrclass.dtx (v2.8d):
+ Seitenstile bestimmter Seiten variabler durch die Makros:
+ \titlepagestyle, \partpagestyle, \chapterpagestyle,
+ \indexpagestyle.
+
+2001-07-03 Markus Kohm <Markus.Kohm@gmx.de>
+ * einleit.tex:
+ Referenzen vom Typ "unknown" ersetzt.
+ * satzspgl.tex:
+ Referenzen vom Typ "unknown" ersetzt.
+ * scrguide2.tex:
+ Vorübergehend eine Spielerei für die Diskussion mit Jens
+ eingebaut, die sich im Normalfall nicht auswirkt.
+ * hauptcls.tex:
+ Korrekturen von Thomas umgesetzt. Einige zusätzliche Änderungen
+ für die Verbesserung des Zeilen- oder Seitenumbruchs
+ durchgeführt.
+
+2001-06-29 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex (2001/06/29):
+ draft wieder aktiviert.
+ * layout.tex (2001/06/25):
+ Neue Version von Jens.
+ * hauptcls.tex (2001/06/29):
+ Änderungen von scrclass.dtx v2.8c dokumentiert.
+ * scrclass.dtx (v2.8c):
+ Bei der Fontumschaltung wird an diversen Stellen nicht nur auf
+ \normalfont, sondern auch auf \normalcolor umgeschaltet.
+ Neue Makros \addpart und \addpart* (noch ungetestet).
+
+2001-06-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Spielerreien am Titel
+
+2001-06-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Ergänzungen für die Erzeugung des Index.
+ * hauptcls.tex:
+ Verbesserungen bei der Erzeugung des Index.
+
+2001-06-26 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ Einträge auf die aktuellen Versionen gebracht.
+ package:fancyhdr hinzugefügt.
+ * komascr.ins, scrclass.ins, scrtime.ins, scrpage.ins:
+ Abschlusstext geändert. Dort wird nun auf INSTALL.TXT,
+ INSTALLD.TXT, readme.txt und liesmich.txt verwiesen.
+ * scrclass.dtx (v2.8b):
+ In Absprache mit Anselm, die Zusammenarbeit mit float.sty durch
+ Definition von \float@headings verbessert. \float@headings wird
+ in zukünftigen Versionen von float.sty verwendet und nur dann
+ definiert, wenn es nicht bereits existiert. \float@headings
+ wird nun in KOMA-Script intern von \lot@heading und \lof@heading
+ verwendet und bei der Klassenoption liststotoc berücksichtigt.
+
+2001-06-25 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0g):
+ \manualmark deaktiviert auch \chaptermark etc. und funktioniert
+ daher sofort, selbst bei Verwendung von \pagestyle{headings}.
+ \pagestyle{scrplain} setzt den Seitenstil plain ebenfalls auf
+ scrplain.
+ Neue Optionen:
+ komastyle - stellt scrheadings KOMA-Script-Klassen-üblich
+ ein
+ standardstyle - stellt scrheadings Standardklassen-üblich ein
+ Wenn \headfont nicht definiert ist, wird er als
+ \normalfont\slshape statt als \normalfont definiert.
+
+2001-06-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Erste Vorabversion von Jens geliefert und von Markus leicht
+ korrigiert. Es fehlen noch: Rechtschreibkontrolle, Indexeinträge.
+
+2001-06-23 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0f):
+ Symbolischer Wert "auto" für \set...line, der automatisch zu
+ "autohead" oder "autofoot" wird je nachdem, ob \sethead...line
+ oder \setfoot...line.
+ \set...line erlauben "current" oder ein leeres Argument als
+ Breite. In beiden Fällen bleibt die Breite unverändert.
+ Neue Paketoptionen:
+ clines - Linien werden wie bisher relativ zum Kopf zentriert.
+ ilines - Linien werden bündig an den inneren Rand angeschlossen
+ olines - Linien werden bündig an den äußeren Rand angeschlossen
+ * scrpage.dtx (v2.0f, 1.3c):
+ Symbolische Werte "autohead" und "autofoot" für \deftowidthof
+ implementiert (führen zu \def\Macro{\@headwidth} bzw.
+ \def\Macro{\@footwidth} an Stelle von \edef...).
+
+2001-06-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0e, 1.3b):
+ Neu:
+ \settowidthof{Länge}{symbolischer_Wert_oder_Wert}
+ \deftowidthof{Name}{symbolischer_Wert_oder_Wert}
+ Wichtig: In beiden Fällen wird der aktuelle Wert verwendet. Ein
+ \deftowidthof{Textbreite}{\textwidth} oder
+ \deftowidthof{Textbreite}{text} definiert also ein Makro
+ \Textbreite mit dem aktuellen Wert von \textwidth. Wird
+ \textwidth anschließend verändert, so wirkt sich dies
+ NICHT auf \Textbreite aus.
+ Beide Anweisungen wirken lokal zur jeweiligen Gruppe. Mögliche
+ symbolische Werte sind alle bereits in früheren Versionen von
+ scrpage definierten symolischen Werte sowie:
+ headtopline - aktuelle Länge der oberen Kopfzeilenlinie
+ headsepline - aktuelle Länge der unteren Kopfzeilenlinie
+ footsepline - aktuelle Länge der oberen Fußzeilenlinie
+ footbotline - aktuelle Länge der unteren Fußzeilenlinie
+ \settowidthof bzw. \deftowidthof werden intern für die Breite des
+ Kopfes und Fußes in \setheadwidth und \setfootwidth, sowie für
+ die Länge bei \setheadtopline, \setheadsepline, \setfoottopline,
+ \setfootbotline verwendet.
+ Ein unbekannter symbolischer Wert führt zu einer Fehlermeldung.
+ Fehlerkompatibilität wird nicht garantiert (spätere Versionen
+ dürfen neue symbolische Werte kennen, melden bei diesen also
+ keinen Fehler). Nicht voll expandierbare Makros (z. B. \relax
+ oder \undefined) als Wert_oder_symbolischer_Wert führen zu einer
+ Fehlermeldung. Die Fehlermeldungen entsprechen den Meldungen bei
+ \setlength mit dem entsprechenden Wert (und treten genau dabei
+ auch auf).
+
+2001-06-19 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Schreibfehler korrigiert.
+ * scrpage2.dtx (v2.0d):
+ Fehler bei \setheadtopline etc. behoben. Außerdem erweitert
+ um symbolische Werte (wie \setheadwidth und zusätzlich "head"
+ und "foot").
+
+2001-06-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Die Makros und Optionen von v2.8a ergänzt.
+ Due Umgebungen verse, quote und quotation ergänzt.
+ * scrclass.dtx (v2.8a):
+ Neue Optionen cleardoublestandard, cleardoubleplain und
+ cleardoubleempty, sowie die Makros \cleardoublestandardpage,
+ \cleardoubleplainpage und \cleardoubleemptypage.
+
+2001-06-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * INSTALL.TXT, INSTALLD.TXT:
+ MikTeX explizit in der Schritt-für-Schritt-Anleitung
+ berücksichtig.
+
+2001-06-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Zu Debuggzecken eingeführte \typeout-Anweisung entfernt.
+ * hauptcls.tex:
+ Neuheiten und Änderungen in scrclass.dtx v2.8 dokumentiert.
+
+2001-06-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.8):
+ scrbook und scrreprt kennen vier neue Optionen:
+ chapterprefix - die Kapitel erscheinen in der Form der
+ Standardklassen also mit einer abgesetzten
+ Zeile "Kapitel <Nr>".
+ Dies wirkt sich auch auf die Kolumnentitel
+ aus.
+ nochapterprefix - alles wie bisher lediglich \parindent\z@
+ eingefügt.
+ appendixprefix - definiert \appendixmore so, dass für den
+ Anhang unabhängig von "(no)chapterprefix"
+ die abgesetzte Zeile "Appendix <Nr>"
+ gesetzt wird.
+ noappendixprefix - definiert \appendixmore so, dass für den
+ Anhang unabhängig von "(no)chapterprefix"
+ alles wie bisher angezeigt wird
+ Zur Realisierung existiert der neue Schalter \if@chapterprefix.
+ Außerdem wurde das Makro \usechapapp[Zusatz] eingeführt:
+ \newcommand*{\chapappifprefix}[1][]{%
+ \if@chapterprefix\chapapp#1\fi}
+ Dieses neue Makro wird in \chapterformat und \chaptermarkformat
+ verwendet. Das Makro \chapapp stellt lediglich \@chapapp auf
+ Benutzerebene zur Verfügung.
+
+2001-06-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ Literatur "package:natbib" hinzugefügt.
+
+2001-06-15 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.txt:
+ Alle fehlenden Punkte ergänzt. Damit fehlt jetzt erstmal nur noch
+ die Korrektur.
+
+2001-06-08 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex:
+ Trennregel für "Standardanweisungen".
+ * hauptcls.tex:
+ Fehlende Beispiele im Titelei-Abschnitt ergänzt.
+ Abschnitt über Seitenstil, Abschnitt zum Hauptteil mit diversen
+ Unterabschnitten (Gliederung, Fußnoten, Randnotizen).
+ Es fehlen hier noch einige Punkte (siehe TODO-Kommentar).
+ * scrguide.bib:
+ Neuer Eintrag latex:fntguide.
+
+2001-06-07 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage2 (v2.0c):
+ Neue Optionen:
+ markuppercase - automatische Kolumnentitel verwenden
+ \MakeUppercase
+ markusedcase - automatische Kolumnentitel verwenden nicht
+ \MakeUppercase, sondern die Groß- und
+ Kleinschreibung, die in der Überschrift
+ vorgefunden wurde.
+ Das Makro \MakeMarkcase wird von obigen Optionen entweder auf
+ \MakeUppercase oder auf \@empty gesetzt. Wird keine der obigen
+ Optionen verwendet, wird das Makro ebenfalls auf \MakeUppercase
+ gesetzt, wenn eine Standardklasse vorgefunden wurde. Bei einer
+ KOMA-Script-Klasse wird es stattdessen auf \@empty gesetzt. Bei
+ allen anderen Klassen wird ebenfalls \@empty verwendet, jedoch
+ zusätzlich eine Warnung ausgegeben.
+ Fehler in einer Warnung behoben und den Umbruch der Warnung
+ optimiert (head- oder footwidth).
+
+2001-05-31 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage2 (v2.0b):
+ Die ganzen \ps@standard... heißen jetzt \ps@save@ und sind somit
+ nur noch für den internen Gebrauch. Bei Verwendung der
+ Seitenstile "headings" und "myheadings" wird eine Warnung
+ ausgegeben. Dafür existiert ein neuer Seitenstil "useheadings",
+ der sich je nach \automark oder \manualmark wie "headings" oder
+ "myheadings" ohne Umdefinierung von \chaptermark, \sectionmark,
+ \subsectionmark verhält.
+ Bei Klassen, die \chapter besitzen, schaltet scrpage2 automatisch
+ den Seitenstil "useheadings" ein.
+ \setheadwidth und \setfootwidth verstehen folgende symbolische
+ Werte:
+ paper - gesamte Papierbreite
+ text - gesamte Textbreite
+ textwithmarginpar
+ - Textbreite einschließlich Platz für Randnotizen
+ Die Optionen automark und manualmark funktionieren nun.
+
+2001-05-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2:
+ Die Sache mit der Version der Dateien funktioniert jetzt
+ Vollautomatisch und benötigt keine Änderung der Einzeldateien
+ mehr.
+
+2001-05-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2 (alle Kapitel):
+ Im draft-Modus wird die Version jeder einzelnen Datei
+ angezeigt.
+
+2001-05-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx, komascr.ins, scrclass.dtx, scrclass.ins,
+ scrlettr.dtx, scrpage.dtx, scrpage.ins, scrtime.dtx,
+ scrtime.ins:
+ Betavermerk mit einheitlichem Mechanismus zur Aktivierung.
+ * liesmich.txt, readme.txt:
+ Sondervermerk für das CVS des "KOMA-Script documentation
+ project".
+
+2001-05-27 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (2.7j):
+ Zur Verbesserung der Zusammenarbeit mit natbib verwendet
+ \setbibpreamble nun \def statt \renewcommand. Dadurch
+ funktioniert \setbibpreamble nun auch noch bei Verwendung
+ von natbib. Man muss also nicht \renewcommand verwenden,
+ wie das in der natbib-Anleitung beschrieben ist.
+ natbib verwendet unauthorisiert interne KOMA-Script-Makros.
+ Dies ging natürlich ab scrclass-Version 2.6c (2001-06-10)
+ total in die Hose. Das Setzen der Präambel wurde nun aus
+ \bib@heading nach thebibliography verschoben, um diesen Bug
+ in natbib auszugleichen. Aus Konsistenzgründen wurde für
+ den Index genauso verfahren.
+ Paketautoren werden gebeten, zukünftig Rücksprache zu
+ halten, ehe sie interne Makros von KOMA-Script verwenden!
+
+2001-05-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrlettr.dtx (2.6a):
+ Option a4paper hinzugefügt und als Standardoption gesetzt,
+ um Probleme mit pdftex und graphics oder hyperref zu
+ beheben.
+
+2001-05-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2:
+ Auf xspace verzichtet, weil es damit an verschiedenen Stellen
+ Probleme gibt.
+ * scrguide2:
+ Die von Jens-Uwe gemeldeten Fehler korrigiert und versucht,
+ seine Hinweise umzusetzen.
+
+2001-05-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Eine Art Kapitelvorwort zugefügt.
+
+2001-05-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib, satzspgl.tex, hauptcls.tex:
+ Präfix "package:" bei Zitaten auf Paketen eingefügt.
+ Neue Literatur "package:multicol".
+ * scrguide2.tex:
+ Ergänzenden Hinweis zum draft-Modus eingefügt (im draft-
+ Modus funktionieren die hängenden Einzüge beispielsweise
+ bei Tabellenunterschriften nicht).
+
+2001-05-21 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.tex (alt):
+ Zwei Tippfehler behoben.
+
+2001-05-18 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ graphics zugefügt
+ * satzspgl.tex:
+ center-Umgebung in float-Tabelle durch \centering ersetzt.
+ * hauptcls.tex:
+ Alle Optionen dokumentiert.
+
+2001-05-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * hauptcls.tex:
+ Da es ja sonst doch keiner tut, habe ich damit begonnen.
+ Wenn ich gewusst hätte, dass von dem guten Dutzend Leute,
+ die angeblich mithelfen wollten, nur einer übrig bleibt,
+ hätte ich nie mit dem neuen scrguide angefangen.
+ Hoffentlich ist mir das endlich eine Lehre!
+
+2001-05-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (2.7i):
+ Die Berechnung der maximalen Zeilenlänge in typearea ist
+ robuster gegen arithmetischen Überlauf durch zu große
+ Schriftgrößen.
+ Eine benutzerseitige Umdefinierung von
+ \othersectionlevelsformat wirkt sich nun tatsächlich aus.
+ Die Klassenoption "bibtotocnumbered" wurde korrigiert und
+ ist nun nicht mehr mit "bibtotoc" identisch.
+ \setchapterpreamble verwendet nicht mehr \xdef sondern
+ gdef.
+
+2001-04-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * satzspgl.tex:
+ Die Optionen dvips, pdftex und pagesize und das Makro
+ \ifpdfoutput ergänzt, sowie einige kleinere Verbesserungen
+ (in den Tipps) vorgenommen.
+
+2001-04-26 Markus Kohm <Markus.Kohm@gmx.de>
+ * satzspgl.tex:
+ Einmal DIV durch BCOR ersetzt, ein Tippfehler und ein
+ Kommafehler korrigiert (gemeldet von Colin)
+
+2001-04-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide.bib:
+ Neue Literatur "Erste Hilf ein Typograpfie" eingefügt.
+ * satzspgl.tex:
+ Neue Optionen eingearbeitet.
+ * einleit.tex, satzspgl.tex:
+ "typografisch" etc. schreibt man nicht mehr mit "ph"
+
+2001-04-24 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0a):
+ \strut in \ps@scrplain und \ps@scrheadings ergänzt.
+ * scrlogo.dtx, scrtime.dtx, scrpage.dtx:
+ Mit Hilfe des Macros \englishonly wird unterschieden, ob die
+ deutsche oder die englische Erklärung für "\KOMAScript"
+ ausgegeben werden soll.
+
+2001-04-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.7h):
+ Fehlender Backslash in \partformat ergänzt.
+ * Alle Klassen und Pakete definieren \KOMAScript.
+
+2001-04-20 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx, scrpage2.sty (v2.0):
+ Neue Optionen:
+ scrplainheadtopline - headtopline für Seitenstil scrplain
+ (nur, wenn außerdem headtopline)
+ scrplainheadsepline - headsepline für Seitenstil scrplain
+ (nur, wenn außerdem headsepline)
+ scrplainfootsepline - footsepline für Seitenstil scrplain
+ (nur, wenn außerdem footsepline)
+ scrplainfootbotline - footbotline für Seitenstil scrplain
+ (nur, wenn außerdem footbotline)
+ Neuer Seitenstil scrheadings und scrplain.
+ \pagestyle{scrheadings} ändert Seitenstil plain automatisch in
+ scrplain, während bei bei Seitenstil headings und myheadings
+ automatisch wieder der alte plain aktiviert wird, der außerdem
+ als standardplain verfügbar ist.
+ Seitenstil scrheadings und scrplain sind Stile mit dreigeteiltem
+ Kopf und Fuß. Die Teile werden gesteuert über die Makros:
+ \lohead[<plain>]{<headings>} - setze linke Kopfmarke für
+ ungerade Seiten
+ \lehead[<plain>]{<headings>} - setze linke Kopfmarke für gerade
+ Seiten
+ \cohead[<plain>]{<headings>} - setze mittlere Kopfmarke für
+ ungerade Seiten
+ \cehead... - für gerade Seiten
+ \rohead... - setze rechte Kopfmarke für
+ ungerade Seiten
+ \rehead... - für gerade Seiten
+ \ohead... - setze äußeren Kopfmarke für alle
+ Seiten
+ \ihead... - setze innere Kopfmarke für alle
+ Seiten
+ \chead... - setzte mittlere Kopfmarke für
+ alle Seiten
+ \lofoot, \lefoot, \cofoot, \cefoot, \rofoot, \refoot, \ofoot,
+ \ifoot, \cfoot analog für die Fußmarken.
+ Zur Realisierung wurden einige neue innere Makros definiert.
+ * scrpage.dtx, scrpage2.sty (v2.0):
+ \defpagestyle und \defpagestyle* sind identisch, zwischen den
+ unterschiedlichen Markierungsmodi wird nur noch mit den Optionen
+ automark und manualmark und den Makros \automark[]{} und
+ \manualmark unterschieden.
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * Index und Glossary wird erzeugt bei "make -fMakefile.unx tar".
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0):
+ \headheight-check
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, typearea.sty (v2.7g):
+ typearea.sty kennt die folgenden drei neuen Optionen:
+ dvips - Per \special{papersize=<w>,<h>} die Seitengröße für
+ dvips definieren, damit später z. B. gv die
+ richtige Größe anzeigt.
+ pdftex - \pdfpagewidth und \pdfpageheight auf die korrekte
+ Breite und Höhe der Seite setzen, damit später
+ z. B. acroreader die richtige Größe anzeigt. Dies
+ führt zu einem Fehler, wenn nicht pdftex
+ (bzw. pdflatex oder pdfetex oder pdfelatex)
+ verwendet wird.
+ pagesize - In Abhängigkeit davon, ob \pdfoutput definiert und
+ größer 0 ist oder nicht, wie Option "dvips" oder
+ "pdftex" verhalten.
+ und das neue Macro:
+ \ifpdfoutput{<then-Teil>}{<else-Teil>}
+ Interessant ist vielleicht, dass auch der Aufruf
+ \ifpdfoutput{\pdfoutput=0}{}
+ in der Präambel einwandfrei funktioniert und sowohl mit LaTeX
+ als auch mit pdflatex zur Ausgabe einer DVI-Datei führt.
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.7g):
+ typearea.sty und die drei Hauptklassen verstehen die neue Option
+ "<xyz>headlines". Diese legt fest, dass der Kopf genau
+ <xyz>\baselineskip hoch sein soll, also wieviele Zeilen im Kopf
+ untergebracht werden. Voreingestellt ist "1.25headlines". Diese
+ Option wird nur bei impliziter oder expliziter Verwendung von
+ \typearea, nicht jedoch bei expliziter Verwendung von \areaset
+ beachtet.
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, typearea.sty (v2.7g):
+ \typearea versteht neben dem numerischen DIV-Wert auch die
+ folgenden symbolischen DIV-Werte:
+ current - Wert nicht ändern
+ (beispielweise zur Änderung nur von BCOR).
+ default - Standardwert verwenden
+ calc - Günstigen Wert selbst ermitteln
+ classic - Kreisberechnung nach dem mittelalterlichen Buchkanon
+ \typearea versteht neben dem numerischen BCOR-Wert auch den
+ folgenden symbolischen BCOR-Wert:
+ current - Wert nicht ändern
+ (beispielsweise zur Änderung nur von DIV).
+ Durch diese Änderungen muss man bei der Verwendung von \typearea
+ anstelle der Paketoptionen nicht mehr auf die numerischen
+ Pseudowerte zurückgreifen, die ich mir nie merken konnte.
+ Die BCOR-Erweiterung existiert auch für \areaset.
+
+2001-04-17 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.7f):
+ Fehlendes Klammerpaar (nur scrbook.cls) ergänzt.
+
+2001-04-16 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx (v2.7e):
+ Fehlende schließende Klammer (nur scrbook.cls) ergänzt.
+
+2001-04-11 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.ins:
+ Version 2 wird nun ebenfalls erzeugt.
+ * scrpage.dtx (v2.0):
+ \automark und \manualmark sowie die davon benötigten Makros
+ definiert. Syntax siehe Implementierungsdoku (latex scrpage.dtx).
+
+2001-04-10 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx (v2.0):
+ Die Linienlängen und -dicken können definiert werden:
+ \setheadtopline[Länge]{Dicke}, \setheadsepline[Länge]{Dicke},
+ \setfootsepline[Länge]{Dicke}, \setfootbotline[Länge]{Dicke}.
+
+2001-04-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx, scrpage.dtx:
+ Checksum um Klammerung korrigiert.
+
+2001-04-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * Makefile.unx:
+ Erzeugung des tar-Archives verbessert, so dass nun keine
+ Release-Archive mit fehlerhaften dtx-Files mehr erzeugt
+ werden sollten!
+
+2001-04-05 Markus Kohm <Markus.Kohm@gmx.de>
+ * Vorbereitungen für eine Release: Textdokumente geringfügig
+ ergänzt und scrnews19 zusammengeklopft.
+
+2001-03-30 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrpage.dtx v1.3:
+ Kopf und Fuß können eine andere Breite haben als der Textkörper.
+ Um diese Breiten und die Verschiebung zum Textkörper festzulegen,
+ wurde die Anwenderschnittstelle um \setheadwidth und
+ \setfootwidth erweitert.
+ * scrpage.dtx v2.0:
+ Mitten in der Arbeit
+ * scrpage.ins:
+ Unterscheidung zwischen Version 1 und Version 2 eingebaut und
+ das Copyright auf 2001 ausgedehnt.
+
+2001-03-28 Markus Kohm <Markus.Kohm@gmx.de>
+ * datmzeit.tex:
+ Alten Text leicht überarbeitet in dieses Kapitel eingefügt.
+ * scrguide2.tex:
+ scrdate.sty und scrtime.sty werden ebenfalls geladen.
+
+2001-03-27 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrguide2.tex, main.tex, pglayout.tex, satzspgl.tex:
+ scrguide2.tex kann nun für alle Sprachen verwendet werden. Die
+ tatsächliche Sprachumschaltung für English findet in main.tex
+ statt. Die englische Dokumentation wird mit "latex main.tex"
+ erzeugt.
+ Use "latex main.tex" to create the english manual.
+
+2001-03-26 Markus Kohm <Markus.Kohm@gmx.de>
+ * layout.tex:
+ Alten Text eingefügt und auf die neuen Makros angepasst.
+ * scrguide2.tex:
+ Neues Makro \PValue für Werte von Parametern eingefügt. Die
+ Werte wurden früher direkt mit \texttt gesetzt. Stattdessen
+ sollte nun \PValue verwendet werden.
+
+2001-03-22 Markus Kohm <Markus.Kohm@gmx.de>
+ * satzspgl.tex:
+ Erste Version fertiggestellt.
+ * scrguide2.tex, einleit.tex:
+ Bibliography ist vorhanden und wird verwendet.
+ * scrguide.mbs:
+ neue Datei zur Verwendung mit makebst (custom-bib)
+ * scrguide.dbj:
+ neue Datei zur Erzeugung einer bst-Datei
+ * scrguide.bst:
+ generiert aber trotzdem im cvs
+ * scrguide.bib:
+ Erste Einträge in der Bibliography
+
+2001-02-23 Markus Kohm <Markus.Kohm@gmx.de>
+ * scrclass.dtx:
+ hyperref 6.71b hat den alten \@addchap-bug nicht länger, daher
+ wird nun nur noch vor der Verwendung älterer hyperref-Versionen
+ gewarnt.
+ Einen Workaround für diese Versionen gibt es nicht mehr.
+
+2001-01-22 Markus Kohm
+ * scrguide2.tex:
+ Definitionen korrigiert und ergänzt.
+ * einleit.tex:
+ Fehler korrigiert. Geringfügige Ergänzungen.
+ * satzspgl.tex:
+ Gliederung und Text bis zur Erwähnung der DIV-Optionen,
+ BCOR-Option und dem Befehl \typearea[]{}.
+
+2001-01-19 Markus Kohm
+ * scrclass.dtx v2.7c:
+ Vertikaler Abstand vor zu Abstand nach einer Kapitelüberschrift
+ nun bei allen drei Größenabstufungen im Verhältnis 4:3 (1,3333)
+ mit glue zwischen 5:4 (1,25) und 3:2 (1,5).
+
+2001-01-18 Markus Kohm
+ * scrguide:
+ Mit dem neuen scrguide begonnen.
+
+2001-01-05 Markus Kohm
+ * scrclass.dtx v2.7b:
+ Implementierungsdoku der Gliederungsbefehle verbessert.
+ * scrclass.dtx v2.7b:
+ \setchapterpreamble eingeführt, um Kapitel allgemein mit einer
+ Preamble versehen zu können, die auch im zweispaltigen Druckmodus
+ einspaltig gesetzt wird.
+ * scrclass.dtx v2.7b:
+ Kernel-Makro \@topnewpage erweitert, damit
+ \twocolumn[\chapter{...}] funktioniert.
+ * scrclass.dtx v2.7b:
+ In \addchap wird bei scrbook nicht mehr \@addchap sondern
+ \@@addchap verwendet, um einer Umdefinition von \@addchap in
+ einigen hyperref-Treibern zu entgehen. Gleichzeitig wird im
+ Falle der Umdefinierung von \@addchap für eine entsprechende
+ Warnung mit deutlichem Hinweis, was ich von der Umdefinierung in
+ hyperref halt, gesorgt.
+ * scrclass.dtx v2.7b:
+ \bib@hading und \index@heading verwenden \setchapterpreamble.
+
+2001-01-04 Markus Kohm
+ * scrclass.dtx v2.7a:
+ Linkerzeugung im Zusammenhang mit hyperref verbessert
+ (funktioniert nur mit bestimmten Treibern und noch recht
+ unzureichend).
+ * scrclass.dtx v2.7a:
+ Im Abstract wird \addsec* statt \ßection* verwendet, damit die
+ Kolumnentitel korrekt gesetzt werden.
+
+2001-01-03 Markus Kohm
+ * scrclass.dtx v2.7:
+ Klammerung bei den Optionen bibtotoc und bibtotocnumbered war
+ fehlerhaft.
+ * scrclass.dtx v2.7:
+ \if@altsecnumformat.\fi durch neues Makro \autodot
+ ersetzt. Dadurch können die \...format-Makros nun auf
+ Benutzerebene unter Verwendung dieses neuen Makros umdefiniert
+ werden.
+ * scrclass.dtx v2.7:
+ \@seccntformat ruft nun intern das Benutzerlevel-Makro
+ \othersectionlevelsformat auf, damit auch diese Ebenen
+ benutzerseitig umdefiniert werden können. Möglicherweise werden
+ hier später alle von KOMA-Script definierten Gliederungsebenen
+ eigene Makros erhalten, die per
+ \newcommand*{\...format}[1]\othersectionlevelsformat{...}
+ kompatibel definiert werden. Damit wäre diese Schnittstelle dann
+ vollständig (was auch die Dokumentation erleichtern würde).
+ * scrclass.dtx v2.7:
+ Die ganzen End-Abstände in den \...format-Makros von \quad bzw.
+ einfachem Leerzeichen (in \chapterformat) auf \enskip geändert.
+ HINWEIS: Diese Änderung führt zu einer Umbruchinkompatibilität
+ gegenüber früheren KOMA-Script-Versionen. In der
+ Anleitung sollte unbedingt darauf hingewiesen
+ werden. Für die Überschriften kann der alte Zustand wie
+ folgt wieder hergestellt werden:
+ \renewcommand*\chapterformat{\thechapter\autodot\ }
+ \renewcommand*\othersectionlevelsformat[1]{%
+ \csname the#1\endcsname\autodot\quad}
+ Analoges gilt für die \...markformat-Makros, wobei die
+ dortige Änderung zu keiner Umbruchinkompatibilität
+ führen sollte.
+ Deshalb soll an dieser Stelle darauf hingewiesen
+ werden, dass für die Überschriften der alte Zustand wie
+ folgt wieder hergestellt werden kann:
+ \renewcommand*\chapterformat{\thechapter\autodot\ }
+ \renewcommand*\othersectionlevelsformat[1]{%
+ \csname the#1\endcsname\autodot\quad}
+ Analoges gilt für die \...markformat-Makros, wobei die
+ dortige Änderung zu keiner Umbruchinkompatibilität
+ führen sollte.
+ Deshalb soll an dieser Stelle darauf hingewiesen
+ werden, dass für die Überschriften der alte Zustand wie
+ folgt wieder hergestellt werden kann:
+ \renewcommand*\chapterformat{\thechapter\autodot\ }
+ \renewcommand*\othersectionlevelsformat[1]{%
+ \csname the#1\endcsname\autodot\quad}
+ Analoges gilt für die \...markformat-Makros, wobei die
+ dortige Änderung zu keiner Umbruchinkompatibilität
+ führen sollte.
diff --git a/macros/latex/contrib/koma-script/source/Makefile b/macros/latex/contrib/koma-script/source/Makefile
new file mode 100644
index 0000000000..294f336b40
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/Makefile
@@ -0,0 +1,464 @@
+# ======================================================================
+# Makefile
+# Copyright (c) Markus Kohm, 2002-2018
+#
+# 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.
+# ----------------------------------------------------------------------
+# Makefile
+# Copyright (c) Markus Kohm, 2002-2018
+#
+# 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.
+# ======================================================================
+
+# ----------------------------------------------------------------------
+# All directories with Makefiles
+export BASEDIR ?= $(PWD)/
+SUBDIRS = doc
+# ----------------------------------------------------------------------
+# Load common rules
+include Makefile.baserules
+# Load variable definitions
+include Makefile.baseinit
+# ----------------------------------------------------------------------
+# Temporary folder, used to create distribution.
+# Same folder with postfix "-maintain" will be used to create maintain-
+# distribution.
+export DISTDIR := $(PWD)/koma-script-$(ISODATE)
+export MAINTAINDIR := $(DISTDIR)-maintain
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# More than once used:
+# Make implementation documentation
+define makepdffromdtx
+ if ! $(LATEX) $(NONSTOPMODE) $(PDFOUTPUT) $<; then \
+ $(RM) -v $@; \
+ exit 1; \
+ fi
+ oncemore=true; \
+ checksum=`$(CKSUM) $(basename $<).aux`; \
+ while $$oncemore; \
+ do \
+ if ! $(MKINDEX) $(basename $<) \
+ || ! $(LATEX) $(NONSTOPMODE) $(PDFOUTPUT) $<; then \
+ $(RM) -v $@; \
+ exit 1; \
+ fi; \
+ $(GREP) Rerun $(basename $<).log || oncemore=false; \
+ newchecksum=`$(CKSUM) $(basename $<).aux`; \
+ [ "$$newchecksum"="$$checksum" ] || oncemore=true; \
+ checksum="$$newchecksum"; \
+ done
+endef
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# List of all Makefiles
+MAKE_FILES = Makefile Makefile.baserules Makefile.baseinit
+# ----------------------------------------------------------------------
+# make classes, packages, etc.
+CLS_MAIN = scrbook.cls \
+ scrreprt.cls \
+ scrartcl.cls \
+ scrlttr2.cls \
+ scrletter.sty \
+ typearea.sty \
+ scrsize10pt.clo \
+ scrsize11pt.clo \
+ scrsize12pt.clo \
+ scrlfile.sty \
+ scrwfile.sty \
+ scrbase.sty \
+ scrkbase.sty \
+ scraddr.sty \
+ scrpage2.sty \
+ scrtime.sty \
+ scrdate.sty \
+ scrjura.sty \
+ tocbasic.sty \
+ tocstyle.sty \
+ scrextend.sty \
+ scrhack.sty \
+ float.hak \
+ floatrow.hak \
+ hyperref.hak \
+ listings.hak \
+ nomencl.hak \
+ setspace.hak \
+ lscape.hak \
+ scrfontsizes.sty \
+ visualize.lco \
+ DIN.lco \
+ DINmtext.lco \
+ SN.lco \
+ SNleft.lco \
+ KOMAold.lco \
+ NF.lco \
+ UScommercial9.lco \
+ UScommercial9DW.lco \
+ NipponEH.lco \
+ NipponEL.lco \
+ NipponLH.lco \
+ NipponLL.lco \
+ NipponRL.lco \
+ KakuLL.lco \
+ scrlayer.sty \
+ scrlayer-scrpage.sty \
+ scrlayer-notecolumn.sty \
+ scrlayer-fancyhdr.sty
+
+CLS_MAIN_DTX = scrkernel-basics.dtx \
+ scrkernel-bibliography.dtx \
+ scrkernel-circularletters.dtx \
+ scrkernel-compatibility.dtx \
+ scrkernel-floats.dtx \
+ scrkernel-fonts.dtx \
+ scrkernel-footnotes.dtx \
+ scrkernel-index.dtx \
+ scrkernel-language.dtx \
+ scrkernel-letterclassoptions.dtx \
+ japanlco.dtx \
+ scrkernel-listsof.dtx \
+ scrkernel-listsandtabulars.dtx \
+ scrkernel-miscellaneous.dtx \
+ scrkernel-notepaper.dtx \
+ scrkernel-pagestyles.dtx \
+ scrkernel-paragraphs.dtx \
+ scrkernel-pseudolengths.dtx \
+ scrkernel-sections.dtx \
+ scrkernel-title.dtx \
+ scrkernel-tocstyle.dtx \
+ scrkernel-typearea.dtx \
+ scrkernel-variables.dtx \
+ scrkernel-version.dtx \
+ scrlfile.dtx \
+ scrwfile.dtx \
+ scraddr.dtx \
+ scrpage.dtx \
+ scrtime.dtx \
+ scrlogo.dtx \
+ scrextend.dtx \
+ scrhack.dtx \
+ scrjura.dtx \
+ tocbasic.dtx \
+ tocstyle.dtx \
+ scrlayer.dtx \
+ scrlayer-scrpage.dtx \
+ scrlayer-notecolumn.dtx \
+ scrlayer-fancyhdr.dtx
+
+STATIC_DOC = README \
+ INSTALL.txt \
+ INSTALLD.txt \
+ lppl.txt \
+ lppl-de.txt \
+ manifest.txt \
+ komabug.tex
+
+CLS_MAIN_DVI = scrsource.pdf
+
+CLS_MAIN_INS = scrmain.ins
+
+CLS_MAIN_SUBINS = scrstrip.inc scrstrop.inc scrdocstrip.tex
+
+ALPHA_INS = tocstyle.dtx scrlayer-fancyhdr.dtx
+
+ALPHA_DOC = tocstyle.pdf scrlayer-fancyhdr.pdf
+
+ALPHA_DTX = $(subst .pdf,.dtx,$(ALPHA_DOC))
+
+CLS_MAIN_SRC = $(CLS_MAIN_DTX) $(CLS_MAIN_INS) $(CLS_MAIN_SUBINS) \
+ scrsource.tex
+
+$(ALPHA_DOC): $(ALPHA_DTX) scrdoc.cls $(CLS_MAIN)
+ $(LATEX) $(BATCHMODE) $(PDFOUTPUT) $(subst .pdf,.dtx,$@)
+ $(MKINDEX) $(subst .pdf,,$@)
+ $(LATEX) $(BATCHMODE) $(PDFOUTPUT) $(subst .pdf,.dtx,$@)
+ $(MKINDEX) $(subst .pdf,,$@)
+ $(LATEX) $(BATCHMODE) $(PDFOUTPUT) $(subst .pdf,.dtx,$@)
+
+$(CLS_MAIN): $(CLS_MAIN_DVI) $(CLS_MAIN_INS) $(MAKE_FILES)
+ $(TEXUNPACK) $(CLS_MAIN_INS)
+ $(foreach alphains,$(ALPHA_INS),$(TEXUNPACK) $(alphains);)
+
+scrsource.pdf: scrsource.tex $(CLS_MAIN_DTX) $(MAKE_FILES) scrdoc.cls
+ $(makepdffromdtx)
+
+scrdoc.cls: scrdoc.dtx
+ $(SSYMLINK) scrdoc.dtx scrdoc.cls
+
+# ----------------------------------------------------------------------
+CLS_FILES = scrdoc.cls $(CLS_MAIN)
+
+CLS_DVIS = $(CLS_MAIN_DVI)
+
+CLS_SRC = $(CLS_MAIN_SRC)
+
+NODIST_GENERATED = $(CLS_DVIS) $(CLS_FILES) $(ALPHA_DOC)
+
+GENERATED = $(NODIST_GENERATED) ChangeLog \
+ scrjura.ins \
+ scrwfile.ins \
+ tocbasic.ins \
+ tocstyle.ins tocstyle.tex tocstyle.drv
+
+MISC_SRC = $(MAKE_FILES) \
+ scrdoc.dtx ChangeLog ChangeLog.2
+
+DIST_SRC = $(MISC_SRC) $(CLS_SRC)
+
+DIST_FILES = $(DIST_SRC) $(STATIC_DOC) $(ALPHA_DOC)
+
+MAINTAIN_SRC = $(DIST_SRC) missing.dtx .cvsignore
+
+MAINTAIN_FILES = $(MAINTAIN_SRC)
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# additional rules
+tdsdist:dist
+ # extract dist and make all
+ $(UNTARGZ) $(DISTDIR).tar.gz
+ chmod -R a+w $(DISTDIR)
+ifdef PREPARERELEASE
+ developer/scripts/preparerelease.sh 2 $(notdir $(DISTDIR))
+endif
+ $(CD) $(notdir $(DISTDIR)) && \
+ $(MAKE)
+ifdef PREPARERELEASE
+ $(MKDIR) $(notdir $(DISTDIR))/README.in
+ $(INSTALL) README.in/README.*.sty README.in/README.*.cls $(notdir $(DISTDIR))/README.in
+ developer/scripts/preparerelease.sh 3 $(notdir $(DISTDIR))
+ $(RMDIR) $(notdir $(DISTDIR))/README.in
+endif
+ # install to temporary directory
+ $(MKDIR) $(notdir $(DISTDIR))-bin/komascript-texmf
+ $(CD) $(notdir $(DISTDIR)) && \
+ $(MAKE) INSTALLTEXMF=$(PWD)/$(notdir $(DISTDIR))-bin/komascript-texmf install
+ifdef PREPARERELEASE
+ developer/scripts/preparerelease.sh final $(notdir $(DISTDIR))
+endif
+ $(RMDIR) $(notdir $(DISTDIR))
+ $(SRM) $(notdir $(DISTDIR))-bin/komascript-texmf/ls-R
+ # build the tds.zip
+ $(SRM) komascript.tds.zip
+ $(CD) $(notdir $(DISTDIR))-bin/komascript-texmf && \
+ $(ZIP) ../../komascript.tds.zip source doc tex
+ # clean up
+ $(RMDIR) $(notdir $(DISTDIR))-bin
+ $(SRM) $(notdir $(DISTDIR)).tar.gz
+
+bindist:tdsdist
+ # extract tds.zip
+ $(MKDIR) $(notdir $(DISTDIR))-bin
+ $(MKDIR) $(notdir $(DISTDIR))-bin/komascript-texmf
+ $(CD) $(notdir $(DISTDIR))-bin/komascript-texmf && \
+ $(UNZIP) ../../komascript.tds.zip
+ # copy some of the files to primary folder
+ $(MV) komascript.tds.zip $(notdir $(DISTDIR))-bin/
+ $(INSTALL) $(notdir $(DISTDIR))-bin/komascript-texmf/source/latex/koma-script/ChangeLog $(notdir $(DISTDIR))-bin
+ $(INSTALL) $(notdir $(DISTDIR))-bin/komascript-texmf/doc/latex/koma-script/scrgui* $(notdir $(DISTDIR))-bin
+ $(INSTALL) $(notdir $(DISTDIR))-bin/komascript-texmf/doc/latex/koma-script/*.txt $(notdir $(DISTDIR))-bin
+ $(INSTALL) $(notdir $(DISTDIR))-bin/komascript-texmf/doc/latex/koma-script/README $(notdir $(DISTDIR))-bin
+ $(INSTALL) $(notdir $(DISTDIR))-bin/komascript-texmf/doc/latex/koma-script/koma*.html $(notdir $(DISTDIR))-bin
+ $(GREP) 'CheckKOMAScriptVersion{' $(notdir $(DISTDIR))-bin/komascript-texmf/source/latex/koma-script/scrkernel-version.dtx | grep -o '2.*t' > $(notdir $(DISTDIR))-bin/VERSION
+ # build the bin.zip
+ $(RMDIR) $(notdir $(DISTDIR))-bin/komascript-texmf
+ $(SRM) $(notdir $(DISTDIR))-bin.zip
+ $(CD) $(notdir $(DISTDIR))-bin && \
+ $(ZIP) ../$(notdir $(DISTDIR))-bin.zip *
+ # clean up
+ $(RMDIR) $(notdir $(DISTDIR))-bin
+
+ctandist:tdsdist
+ # extract tds.zip
+ $(SRMDIR) $(notdir $(DISTDIR))-ctan
+ $(MKDIR) $(notdir $(DISTDIR))-ctan/texmf
+ $(INSTALL) komascript.tds.zip $(notdir $(DISTDIR))-ctan
+ $(CD) $(notdir $(DISTDIR))-ctan/texmf && \
+ $(UNZIP) ../komascript.tds.zip
+ # copy some doc files to doc source
+ $(INSTALL) $(notdir $(DISTDIR))-ctan/texmf/doc/latex/koma-script/*.html \
+ $(notdir $(DISTDIR))-ctan/texmf/doc/latex/koma-script/*.pdf \
+ $(notdir $(DISTDIR))-ctan/texmf/source/latex/koma-script/doc/
+ # copy some doc files to main source
+ $(INSTALL) $(notdir $(DISTDIR))-ctan/texmf/doc/latex/koma-script/*.txt \
+ $(notdir $(DISTDIR))-ctan/texmf/doc/latex/koma-script/*.tex \
+ $(notdir $(DISTDIR))-ctan/texmf/doc/latex/koma-script/README \
+ $(notdir $(DISTDIR))-ctan/texmf/source/latex/koma-script/
+ # generate VERSION at main source
+ $(GREP) 'CheckKOMAScriptVersion{' $(notdir $(DISTDIR))-ctan/texmf/source/latex/koma-script/scrkernel-version.dtx | grep -o '2.*t' \
+ > $(notdir $(DISTDIR))-ctan/texmf/source/latex/koma-script/VERSION
+ # generate README.distributors at upmost
+ $(HEAD) 18 $(notdir $(DISTDIR))-ctan/texmf/source/latex/koma-script/README > $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) 'File komascript.tds.zip is a complete TEXMF tree of KOMA-Script. It may be' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) 'used for manual installation or by distributors for distributions like' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) '<http://mirror.ctan.org/tex-archive/install/macros/latex/contrib/komascript.tds.zip>.' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) "File $(notdir $(DISTDIR)).ctan-src.zip is a file with sources and manuals of KOMA-Script" >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) 'that CTAN seems to prefer for the distribution at' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) '<http://mirror.ctan.org/tex-archive/macros/latex/contrib/komascript>.' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) 'Note, that it is not easy to generate a ready to use and complete installation' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) "from $(notdir $(DISTDIR)).ctan-src.zip. So it is hardly recommended to use" >> $(notdir $(DISTDIR))-ctan/README.distributors
+ $(SECHO) 'komascript.tds.zip not only by users, but redistributors also.' >> $(notdir $(DISTDIR))-ctan/README.distributors
+ # build ctan-src.zip
+ $(CD) $(notdir $(DISTDIR))-ctan/texmf/source/latex && \
+ $(ZIP) ../../../$(notdir $(DISTDIR)).ctan-src.zip koma-script
+ $(RMDIR) $(notdir $(DISTDIR))-ctan/texmf
+ # build ctan.zip (with both ctan-src.zip and tds.zip)
+ $(CD) $(notdir $(DISTDIR))-ctan && \
+ $(ZIP) ../$(notdir $(DISTDIR))-ctan.zip *
+ # clean up
+ $(RMDIR) $(notdir $(DISTDIR))-ctan
+
+# ----------------------------------------------------------------------
+# local rules
+
+ChangeLog:
+ $(warning Developers should generate ChangeLog manually, see developers/doc/README.)
+ $(warning Distributors should not use a SVN version for their distributions!)
+ $(warning Betatester may continue with an empty ChangeLog after using: touch ChangeLog)
+ @exit 1
+
+default_local: test_baseinit $(CLS_FILES)
+
+prepare_local: # nothing to do
+
+install_local: test_baseinit $(DIST_SRC) $(CLS_FILES) $(STATIC_DOC) $(ALPHA_DOC)
+ @if ! $(MKDIR) $(INSTALLSRCDIR) \
+ || ! $(MKDIR) $(INSTALLCLSDIR) \
+ || ! $(MKDIR) $(INSTALLDOCDIR) ; then \
+ echo '--------------------------------------------------'; \
+ echo '| Cannot install to' $(INSTALLSRCDIR) or $(INSTALLCLSDIR) or $(INSTALLDOCDIR)!; \
+ echo '| You should try:'; \
+ echo '| sudo "make install"'; \
+ echo '--------------------------------------------------'; \
+ exit 1; \
+ fi
+ $(INSTALL) $(DIST_SRC) $(INSTALLSRCDIR)
+ $(INSTALL) $(CLS_FILES) $(INSTALLCLSDIR)
+ $(INSTALL) $(STATIC_DOC) $(ALPHA_DOC) $(INSTALLDOCDIR)
+ $(SECHO) ------------------------------------------------------------
+ $(SECHO) Installed files at $(INSTALLSRCDIR):
+ $(SECHO) $(DIST_SRC)
+ $(SECHO) ------------------------------------------------------------
+ $(SECHO) Installed files at $(INSTALLCLSDIR):
+ $(SECHO) $(CLS_FILES)
+ $(SECHO) ------------------------------------------------------------
+ $(SECHO) Installed files at $(INSTALLDOCDIR):
+ $(SECHO) $(STATIC_DOC) $(ALPHA_DOC)
+ $(SECHO) ------------------------------------------------------------
+
+uninstall_local:
+ @if [ -d $(INSTALLSRCDIR) ]; then \
+ $(RM) -v $(foreach file,$(DIST_SRC),$(INSTALLSRCDIR)/$(file)); \
+ if [ ls $(INSTALLSRCDIR) > /dev/null 2>&1; then \
+ $(RMDIR) -v $(INSTALLSRCDIR); \
+ else \
+ echo "$(INSTALLSRCDIR) not empty!"; \
+ fi; \
+ else \
+ echo "$(INSTALLSRCDIR) not found --> nothing to uninstall!"; \
+ fi
+ @if [ -d $(INSTALLCLSDIR) ]; then \
+ $(RM) -v $(foreach file,$(CLS_FILES),$(INSTALLCLSDIR)/$(file)); \
+ if ls $(INSTALLCLSDIR) > /dev/null 2>&1; then \
+ $(RMDIR) -v $(INSTALLCLSDIR); \
+ else \
+ echo "$(INSTALLCLSDIR) not empty!"; \
+ fi; \
+ else \
+ echo "$(INSTALLCLSDIR) not found --> nothing to uninstall!"; \
+ fi
+ @if [ -d $(INSTALLDOCDIR) ]; then \
+ $(RM) -v $(foreach file,$(STATIC_DOC),$(INSTALLDOCDIR)/$(file)); \
+ if ls $(INSTALLDOCDIR) > /dev/null 2>&1; then \
+ $(RMDIR) -v $(INSTALLDOCDIR); \
+ else \
+ echo "$(INSTALLDOCDIR) not empty!"; \
+ fi; \
+ else \
+ echo "$(INSTALLDOCDIR) not found --> nothing to uninstall!"; \
+ fi
+
+clean_local:
+ $(SRM) *~ $(CLEANEXTS)
+
+distclean_local: clean_local
+ $(SRM) $(NODIST_GENERATED)
+
+maintainclean_local: clean_local
+ $(SRM) $(GENERATED)
+
+dist_prior:
+ifdef PREPARERELEASE
+ developer/scripts/preparerelease.sh 1
+ $(MAKE) prepare
+endif
+ -$(RMDIR) $(DISTDIR)
+ $(MKDIR) $(DISTDIR)
+
+dist_local: $(DIST_FILES) $(NODIST_GENERATED)
+ $(CP) $(DIST_FILES) $(DISTDIR)
+
+dist_post:
+ $(TARGZ) $(DISTDIR).tar.gz $(notdir $(DISTDIR))
+ $(RMDIR) $(DISTDIR)
+ $(LL) $(notdir $(DISTDIR)).tar.gz
+
+dist-bz2_post:
+ $(STARBZ) $(DISTDIR).tar.bz2 $(notdir $(DISTDIR))
+ $(SRMDIR) $(DISTDIR)
+ $(SLL) $(notdir $(DISTDIR)).tar.bz2
+
+dist-zip_post:
+ $(SZIP) $(DISTDIR).zip $(notdir $(DISTDIR))
+ $(SRMDIR) $(DISTDIR)
+ $(SLL) $(notdir $(DISTDIR)).zip
+
+maintain_prior:
+ -$(RMDIR) $(MAINTAINDIR)
+ $(MKDIR) $(MAINTAINDIR)
+
+maintain_local:
+ $(CP) $(MAINTAIN_FILES) $(MAINTAINDIR)
+
+maintain_post:
+ $(TARGZ) $(MAINTAINDIR).tar.gz $(notdir $(MAINTAINDIR))
+ $(RMDIR) $(MAINTAINDIR)
+ $(LL) $(notdir $(MAINTAINDIR)).tar.gz
+
+maintain-bz2_post:
+ $(STARBZ) $(MAINTAINDIR).tar.bz2 $(notdir $(MAINTAINDIR))
+ $(SRMDIR) $(MAINTAINDIR)
+ $(SLL) $(notdir $(MAINTAINDIR)).tar.bz2
+
+maintain-zip_post:
+ $(SZIP) $(MAINTAINDIR).zip $(notdir $(MAINTAINDIR))
+ $(SRMDIR) $(MAINTAINDIR)
+ $(SLL) $(notdir $(MAINTAINDIR)).zip
+# ----------------------------------------------------------------------
diff --git a/macros/latex/contrib/koma-script/source/Makefile.baseinit b/macros/latex/contrib/koma-script/source/Makefile.baseinit
new file mode 100644
index 0000000000..28dc986096
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/Makefile.baseinit
@@ -0,0 +1,225 @@
+# ======================================================================
+# Makefile.baseinit
+# Copyright (c) Markus Kohm, 2002-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.
+# ----------------------------------------------------------------------
+# Makefile.baseinit
+# Copyright (c) Markus Kohm, 2002-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.
+# ======================================================================
+# This is the basic initialization of environment, programm variables
+# etc. You may overload each of the defined variables at Makefile.cfg.
+# To do so, just copy the original definition to Makefile.cfg and change
+# it there.
+# ----------------------------------------------------------------------
+# Hier finden Sie die Grundinitialisierung der Umgebungsvariablen,
+# Programmvariablen usw. Sie können die Definition jeder dieser
+# Variablen in Makefile.cfg überladen. Um dies zu tun, kopieren Sie
+# einfach die Originaldefinition in Makefile.cfg und ändern die
+# Definition dort entsprechend Ihrer Anforderungen.
+# ======================================================================
+
+# ----------------------------------------------------------------------
+# KOMA-Script subfolder
+KOMASCRIPTSUBDIR=/koma-script
+# ----------------------------------------------------------------------
+# The texmf-directory, where to install new stuff (see texmf.cnf)
+# If you don't know what to do, search for directory texmf at /usr.
+# With teTeX and linux often one of following is used:
+#INSTALLTEXMF ?= /usr/TeX/texmf
+#INSTALLTEXMF ?= /usr/local/TeX/texmf
+#INSTALLTEXMF ?= /usr/share/texmf
+#INSTALLTEXMF ?= /usr/local/share/texmf
+# user tree:
+#INSTALLTEXMF ?= $(HOME)/texmf
+# Try to use user's tree known by kpsewhich:
+#INSTALLTEXMF ?= $(shell kpsewhich -expand-var '$$HOMETEXMF')
+# Try to use the local tree known by kpsewhich:
+#INSTALLTEXMF ?= $(shell kpsewhich -expand-var '$$TEXMFLOCAL')
+# But you may set INSTALLTEXMF to every directory you want.
+# Use following, if you only want to test the installation:
+#INSTALLTEXMF ?= /tmp/texmf
+# Do a more complicate default:
+ifneq ($(USER),root)
+ INSTALLTEXMF ?= $(shell kpsewhich -expand-var='$$HOMETEXMF')
+ifeq ($(INSTALLTEXMF),$$HOMETEXMF)
+ INSTALLTEXMF :=
+endif
+ifeq ($(INSTALLTEXMF),)
+ INSTALLTEXMF = $(shell kpsewhich -expand-var='$$TEXMFHOME')
+ifeq ($(INSTALLTEXMF),$$TEXMFHOME)
+ INSTALLTEXMF :=
+endif
+endif
+endif
+
+ifeq ($(INSTALLTEXMF),)
+ INSTALLTEXMF = $(shell kpsewhich -expand-var='$$TEXMFLOCAL')
+ifeq ($(INSTALLTEXMF),$$TEXMFLOCAL)
+ INSTALLTEXMF :=
+endif
+endif
+
+ifeq ($(INSTALLTEXMF),)
+ INSTALLTEXMF = $(shell kpsewhich -expand-var='$$TEXMFMAIN')
+ifeq ($(INSTALLTEXMF),$$TEXMFMAIN)
+ INSTALLTEXMF :=
+endif
+endif
+# ----------------------------------------------------------------------
+# The directory, where to install *.cls, *.sty etc.
+INSTALLCLSDIR ?= $(INSTALLTEXMF)/tex/latex$(KOMASCRIPTSUBDIR)
+# ----------------------------------------------------------------------
+# The directory, where to install generic *.tex files
+INSTALLTEXDIR ?= $(INSTALLTEXMF)/tex/generic$(KOMASCRIPTSUBDIR)
+# ----------------------------------------------------------------------
+# The directory, where to install documentation
+INSTALLDOCDIR ?= $(INSTALLTEXMF)/doc/latex$(KOMASCRIPTSUBDIR)
+# ----------------------------------------------------------------------
+# The directory, where to install the sources
+INSTALLSRCDIR ?= $(INSTALLTEXMF)/source/latex$(KOMASCRIPTSUBDIR)
+# ----------------------------------------------------------------------
+# The directory, where to install demos
+INSTALLDEMODIR ?= $(INSTALLDOCDIR)/demo
+# ----------------------------------------------------------------------
+# Extensions of files which are generated for generation
+CLEANEXTS = *.aux *.bbl *.blg *.glg *.glo *.gls *.glx *.idx \
+ *.ilg *.ind *.lof *.log *.lot *.out *.toc \
+ *.toc[0-9] *.toc[0-9][0-9] *.synctex.gz *.slnc \
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# The programms/commands, which are used
+LATEX = pdflatex
+NONSTOPMODE = -interaction=nonstopmode
+BATCHMODE = -interachtion=batchmode
+DVIOUTPUT = \\pdfoutput=0\\let\\pdfoutput\\undefined\\input
+PDFOUTPUT = \\input
+
+MKINDEX = mkindex
+TEXUNPACK = tex
+
+SILENT = @
+RM = rm -f
+SRM = $(SILENT)$(RM)
+RMDIR = rm -fr
+SRMDIR = $(SILENT)$(RMDIR)
+CP = cp -f
+SCP = $(SILENT)$(CP)
+CPALL = cp -af
+SCPALL = $(SILENT)$(CPALL)
+CD = cd
+SCD = $(SILENT)$(CP)
+SYMLINK = ln -sf
+SSYMLINK = $(SILENT)$(SYMLINK)
+INSTALL = install -m 644
+SINSTALL = $(SILENT)$(INSTALL)
+INSTALLEXECUTABLE = install -m 744
+SINSTALLEXECUTABLE = $(SILENT)$(INSTALLEXECUTABLE)
+MKDIR = install -m 755 -d
+SMKDIR = $(SILENT)$(MKDIR)
+MV = mv -f
+SMV = $(SILENT)$(MV)
+ECHO = echo
+SECHO = $(SILENT)$(ECHO)
+LL = ls -l
+SLL = $(SILENT)$(LL)
+TARGZ = tar zc -f
+STARGZ = $(SILENT)$(TARGZ)
+UNTARGZ = tar zx -f
+SUNTARGZ = $(SILENT)$(UNTARGZ)
+TARBZ = tar jc -f
+STARBZ = $(SILENT)$(TARBZ)
+ZIP = zip -r9qy
+SZIP = $(SILENT)$(ZIP)
+UNZIP = unzip -q
+SUNZIP = $(SILENT)$(UNZIP)
+GREP = grep
+CKSUM = md5sum
+HEAD = head -n
+
+ISODATE = `date -I`
+MKTEXLSR = mktexlsr $(INSTALLTEXMF)
+# ----------------------------------------------------------------------
+
+
+# ======================================================================
+# Do not copy and change any of the following lines:
+# ======================================================================
+
+# ----------------------------------------------------------------------
+# Loading Makefile.cfg if it exists.
+# Don't
+-include Makefile.cfg
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# Do all variable tests
+test_baseinit:
+ifndef INSTALLTEXMF
+ $(error You have to define variable INSTALLTEXMF at Makefile.cfg!)
+endif
+ $(SMKDIR) $(INSTALLTEXMF)
+ifdef INSTALLSRCDIR
+ $(SMKDIR) $(INSTALLSRCDIR)
+else
+ $(warning Sources will not be installed!)
+endif
+ifdef INSTALLDOCDIR
+ $(SMKDIR) $(INSTALLDOCDIR)
+else
+ $(warning Documentation will not be installed!)
+endif
+#ifdef INSTALLDEMODIR
+# $(SMKDIR) $(INSTALLDEMODIR)
+#else
+# $(warning Demos will not be installed!)
+#endif
+ifdef INSTALLCLSDIR
+ $(SMKDIR) $(INSTALLCLSDIR)
+else
+ $(warning Classes, Packages, etc. will not be installed!)
+endif
+ifdef VERBOSE
+ $(SECHO) ============================================================
+ $(SECHO) Makefile.baseinit: variables and their values:
+ $(SECHO) " INSTALLTEXMF =$(INSTALLTEXMF)"
+ $(SECHO) " INSTALLSRCDIR =$(INSTALLSRCDIR)"
+ $(ECHO) " INSTALLTEXDIR =$(INSTALLTEXDIR)"
+ $(SECHO) " INSTALLDOCDIR =$(INSTALLDOCDIR)"
+ $(SECHO) " INSTALLDEMODIR=$(INSTALLDEMODIR)"
+ $(SECHO) " INSTALLCLSDIR =$(INSTALLCLSDIR)"
+ $(SECHO) " TEXINPUTS =$(TEXINPUTS)"
+ $(SECHO) " CLEANEXTS =$(CLEANEXTS)"
+ $(SECHO) ============================================================
+endif
+
+# ----------------------------------------------------------------------
+
diff --git a/macros/latex/contrib/koma-script/source/Makefile.baserules b/macros/latex/contrib/koma-script/source/Makefile.baserules
new file mode 100644
index 0000000000..66c4d77590
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/Makefile.baserules
@@ -0,0 +1,144 @@
+# ======================================================================
+# Makefile.baserules
+# Copyright (c) Markus Kohm, 2002-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.
+# ----------------------------------------------------------------------
+# Makefile.baserules
+# Copyright (c) Markus Kohm, 2002-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.
+# ======================================================================
+
+.PHONY: default default_recursive default_local \
+ prepare prepare_recursive prepare_local \
+ install install_recursive install_local \
+ uninstall uninstall_recursive uninstall_local \
+ mktexlsr \
+ clean clean_recursive clean_local \
+ dist dist_prior dist_recursice dist_post \
+ dist-bz2 dist-bz2_post \
+ dist-zip dist-zip_post
+ maintain maintain_prior maintain_recursice maintain_post \
+ maintain-bz2 maintain-bz2_post \
+ maintain-zip maintain-zip_post \
+ testlist testinit testtest
+
+# ----------------------------------------------------------------------
+# The default rule
+default: prepare default_recursive
+
+# Prepare for the defaut rule
+prepare: prepare_recursive
+
+# Install all files
+install: install_recursive mktexlsr
+
+# Uninstall all files
+uninstall: uninstall_recursive mktexlsr
+
+mktexlsr:
+ $(MKTEXLSR)
+
+# Delete all files, which are generated for generation.
+# "make; make clean; make" should be same like "make; make clean"
+clean: clean_recursive
+
+# Delete all files, which are not part of the distribution
+distclean: distclean_recursive
+
+# Delete all files, which are generated
+maintainclean: maintainclean_recursive
+
+# Create tar.gz, tar.bz2 or zip with distribution
+dist: dist_prior dist_recursive dist_post
+
+dist-bz2: dist_prior dist_recursive dist-bz2_post
+
+dist-zip: dist_prior dist_recursive dist-zip_post
+
+# Create tar.gz, tar.bz2 or zip with maintainance files
+maintain: maintain_prior maintain_recursive maintain_post
+
+maintain-bz2: maintain_prior maintain_recursive maintain-bz2_post
+
+maintain-zip: maintain_prior maintain_recursive maintain-zip_post
+
+testlist:
+ $(MAKE) -C testsuite $@
+
+testinit:
+ $(MAKE) -C testsuite $@
+
+testtest:
+ $(MAKE) -C testsuite $@
+
+
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# recursive rules (don't call them, call the rules above)
+ifdef SUBDIRS
+define make_recursive
+ for dir in $(SUBDIRS); \
+ do \
+ $(MAKE) -C $$dir $< || exit $$?; \
+ done
+endef
+else
+define make_recursive
+endef
+endif
+
+default_recursive: default_local
+ $(make_recursive)
+
+prepare_recursive: prepare_local
+ $(make_recursive)
+
+install_recursive: install_local
+ $(make_recursive)
+
+uninstall_recursive: uninstall_local
+ $(make_recursive)
+
+clean_recursive: clean_local
+ $(make_recursive)
+
+distclean_recursive: distclean_local
+ $(make_recursive)
+
+maintainclean_recursive: maintainclean_local
+ $(make_recursive)
+
+dist_recursive: dist_local
+ $(make_recursive)
+
+maintain_recursive: maintain_local
+ $(make_recursive)
+# ----------------------------------------------------------------------
diff --git a/macros/latex/contrib/koma-script/source/japanlco.dtx b/macros/latex/contrib/koma-script/source/japanlco.dtx
new file mode 100644
index 0000000000..2d46fe6328
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/japanlco.dtx
@@ -0,0 +1,371 @@
+% \CheckSum{77}
+% \iffalse meta-comment
+% ======================================================================
+% japanlco.dtx
+% Copyright (c) Markus Kohm, 2008-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% japanlco.dtx
+% Copyright (c) Markus Kohm, 2008-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: japanlco.dtx 2976 2018-04-17 05:31:42Z kohm $
+%<Ni&EARLY&LOW&head>%%% (run: Ni,EARLY,LOW,head)
+%<Ni&EARLY&LOW&body>%%% (run: Ni,EARLY,LOW,body)
+%<Ni&EARLY&HIGH&head>%%% (run: Ni,EARLY,HIGH,head)
+%<Ni&EARLY&HIGH&body>%%% (run: Ni,EARLY,HIGH,body)
+%<Ni&LATE&LOW&head>%%% (run: Ni,LATE,LOW,head)
+%<Ni&LATE&LOW&body>%%% (run: Ni,LATE,LOW,body)
+%<Ni&LATE&HIGH&head>%%% (run: Ni,LATE,HIGH,head)
+%<Ni&LATE&HIGH&body>%%% (run: Ni,LATE,HIGH,body)
+%<Ni&RIGHT&LOW&head>%%% (run: Ni,RIGHT,LOW,head)
+%<Ni&RIGHT&LOW&body>%%% (run: Ni,RIGHT,LOW,body)
+%<Kaku&LATE&LOW&head>%%% (run: Kaku,LATE,LOW,head)
+%<Kaku&LATE&LOW&body>%%% (run: Kaku,LATE,LOW,body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-04-17 07:31:42 +0200 (Tue, 17 Apr 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+\endgroup
+\ProvidesFile{japanlco.dtx}[\filedate\space\filerevision\space
+ KOMA-Script (letter class options)]
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage{graphicx}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{japanlco.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{This is \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \changes{v2.98}{2007/11/13}{first version based on lco files from Gernot
+% Hassenplfug}
+%
+% \section{Option Files for Japanese Letters}
+%
+% Gernot Hassenpflug wrote a lot of lco files for use of Japanese envelope
+% formats. Markus Kohm, the author of \KOMAScript, addapted them to an
+% extended version of \textsf{scrlttr2} and wrote a dtx file with the moste
+% recent lco files. Table~\ref{tab:japan.envelopes} shows all lco files of the
+% supported envelopes with their datas.
+%
+% \begin{table}
+%^^A x=22, w=90, y=12, h=45 NipponEL
+%^^A x=22, w=90, y=12, h=55 NipponEH
+%^^A x=25, w=90, y=12, h=45 NipponLL
+%^^A x=25, w=90, y=12, h=55 NipponLH
+%^^A x=98, w=90, y=28, h=45 NipponRL
+%^^A x=25, w=90, y=24, h=45 KakuLL
+% \begin{tabular}{@{}llllllll@{}}
+% \hline
+% lco file & \multicolumn3{l}{Envelope} & \multicolumn4{l@{}}{Window} \\
+% & Name & Length & Width & H-pos & V-pos & Width & Height\\
+% \cline{1-3}\cline{4-8}
+% \texttt{NipponEL} &
+% Chou/You 3 & 235\,mm & 120\,mm & 22\,mm & 12\,mm & 90\,mm & 45\,mm \\
+% \texttt{NipponEH} &
+% Chou/You 3 & 235\,mm & 120\,mm & 22\,mm & 12\,mm & 90\,mm & 55\,mm \\
+% \texttt{NipponLL} &
+% Chou/You 3 & 235\,mm & 120\,mm & 25\,mm & 12\,mm & 90\,mm & 45\,mm \\
+% \texttt{NipponLH} &
+% Chou/You 3 & 235\,mm & 120\,mm & 25\,mm & 12\,mm & 90\,mm & 55\,mm \\
+% \texttt{NipponEL} &
+% Chou/You 4 & 205\,mm & 90\,mm & 22\,mm & 12\,mm & 90\,mm & 45\,mm \\
+% \texttt{NipponEH} &
+% Chou/You 4 & 205\,mm & 90\,mm & 22\,mm & 12\,mm & 90\,mm & 55\,mm \\
+% \texttt{NipponLL} &
+% Chou/You 4 & 205\,mm & 90\,mm & 25\,mm & 12\,mm & 90\,mm & 45\,mm \\
+% \texttt{NipponLH} &
+% Chou/You 4 & 205\,mm & 90\,mm & 25\,mm & 12\,mm & 90\,mm & 55\,mm \\
+% \texttt{NipponRL} &
+% Chou/You 4 & 205\,mm & 90\,mm & 98\,mm & 28\,mm & 90\,mm & 45\,mm \\
+% \texttt{KakuLL} &
+% Kaku-kata & 312\,mm & 228\,mm & 25\,mm & 24\,mm & 90\,mm & 45\,mm \\
+% \hline
+% \end{tabular}
+% \caption{The supported Japanese envelopes}
+% \label{tab:japan.envelopes}
+% \end{table}
+%
+%\iftrue
+% \newcommand\japanenvelope[7]{%
+% \begingroup
+% \setlength{\unitlength}{1mm}^^A
+% \rotatebox{90}{\begin{picture}(#1,#2)
+% \thinlines
+% \put(0,0){^^A
+% \framebox(#1,#2){}^^A
+% }^^A
+% \put(5,5){\texttt{#7}: #1\,mm$\times$#2\,mm (B$\times$H)}^^A
+% \csname @tempcnta\endcsname #2
+% \advance\csname @tempcnta\endcsname -#4
+% \put(0,\csname @tempcnta\endcsname){\vector(1,0){#3}}^^A
+% \put(#3,\csname @tempcnta\endcsname){\vector(-1,0){#3}}^^A
+% \put(0,\csname @tempcnta\endcsname){^^A
+% \makebox(#3,\baselineskip\csname @gobble\endcsname){#3\,mm}}^^A
+% \put(#3,#2){\vector(0,-1){#4}}^^A
+% \put(#3,\csname @tempcnta\endcsname){\vector(0,1){#4}}^^A
+% \put(#3,\csname @tempcnta\endcsname){^^A
+% \makebox(0,#4)[l]{~#4\,mm}}
+% \advance\csname @tempcnta\endcsname -#6
+% \put(#3,\csname @tempcnta\endcsname){^^A
+% \framebox(#5,#6){}^^A
+% }^^A
+% \put(#3,\csname @tempcnta\endcsname){^^A
+% \makebox(0,5)[l]{~#5\,mm$\times$#6\,mm (B$\times$H)}^^A
+% }^^A
+% \end{picture}}
+% \endgroup
+% }
+%
+% \expandafter\ifx\csname rotatebox\endcsname\relax\else
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{235}{120}{22}{12}{90}{45}{Chou 3 EL}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{235}{120}{22}{12}{90}{55}{Chou 3 EH}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{235}{120}{25}{12}{90}{45}{Chou 3 LL}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{235}{120}{25}{12}{90}{55}{Chou 3 LH}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{205}{90}{22}{12}{90}{45}{Chou 4 EL}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{205}{90}{22}{12}{90}{55}{Chou 4 EH}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{205}{90}{25}{12}{90}{45}{Chou 4 LL}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{205}{90}{25}{12}{90}{55}{Chou 4 LH}}%
+% \clearpage
+% \vspace*{\fill}\smash{\japanenvelope{205}{90}{98}{28}{90}{45}{Chou 4 RL}}%
+% \clearpage
+% \fi
+%\fi
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*lco>
+% \fi
+%
+% \subsubsection{The File Header}
+%
+% \iffalse
+%<*head>
+% \fi
+%
+% Declaration of the file.
+% \begin{macrocode}
+\ProvidesFile{%
+%<Ni> Nippon%
+%<Kaku> Kaku%
+%<EARLY> E%
+%<LATE> L%
+%<RIGHT> R%
+%<LOW> L%
+%<HIGH> H%
+}[\KOMAScriptVersion\space Japanese letter-class-option]
+% \end{macrocode}
+%
+% \begin{macro}{\LCOWarningNoLine}
+% \begin{macro}{\LCOWarning}
+% We need macros that are similar to |\ClassWarningNoLine| or
+% |\PackageWarningNoLine| and |\ClassWarning| or |\PackageWarning|
+\providecommand*\LCOWarningNoLine[2]{%
+ \LCOWarning{#1}{#2\@gobble}%
+}
+\providecommand*\LCOWarning[2]{%
+ \GenericWarning{%
+ (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces
+ }{%
+ Letter class option #1 Warning: #2%
+ }%
+}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</head>
+%<*body>
+% \fi
+%
+% \subsubsection{Main-Part}
+%
+% Check the class.
+% \changes{v3.25a}{2018/04/17}{check not only for \textsf{scrlttr2} but also
+% for \textsf{scrletter}}^^A
+% \begin{macrocode}
+\@ifundefined{scr@fromname@var}{%
+ \LCOWarningNoLine{%
+%<Ni> Nippon%
+%<Kaku> Kaku%
+%<EARLY> E%
+%<LATE> L%
+%<RIGHT> R%
+%<LOW> L%
+%<HIGH> H%
+ }{%
+ This letter class option file was made only\MessageBreak
+ to be used with KOMA-Script letter class\MessageBreak
+ `scrlttr2' or letter package `scrletter'.\MessageBreak
+ Use with other classes and without that package\MessageBreak
+ can result in a lot of errors%
+ }%
+}{}
+% \end{macrocode}
+%
+% Is the expected paper size used?
+% \begin{macrocode}
+\LetterOptionNeedsPapersize{%
+%<Ni> Nippon%
+%<Kaku> Kaku%
+%<EARLY> E%
+%<LATE> L%
+%<RIGHT> R%
+%<LOW> L%
+%<HIGH> H%
+}{a4}
+% \end{macrocode}
+%
+% All the values
+% \changes{v3.03}{2009/03/04}{set term of variablen \texttt{fromzipcode}}
+% \begin{macrocode}
+\setkomavar*{fromzipcode}{J}
+% \end{macrocode}
+%^^A x=22, w=90, y=12, h=45 NipponEL
+%^^A x=22, w=90, y=12, h=55 NipponEH
+%^^A x=25, w=90, y=12, h=45 NipponLL
+%^^A x=25, w=90, y=12, h=55 NipponLH
+%^^A x=98, w=90, y=28, h=45 NipponRL
+%^^A x=25, w=90, y=24, h=45 KakuLL
+% \begin{macrocode}
+\@setplength{foldmarkhpos}{3.5mm}
+\@setplength{tfoldmarkvpos}{83mm}
+\@setplength{tfoldmarklength}{4mm}
+\@setplength{mfoldmarkvpos}{116mm}
+\@setplength{mfoldmarklength}{2mm}
+\@setplength{bfoldmarkvpos}{232mm}
+\@setplength{bfoldmarklength}{2mm}
+\@setplength{foldmarkvpos}{3.5mm}
+\@setplength{lfoldmarkhpos}{202mm}
+%<!Ni|!RIGHT>\@setplength{refvpos}{69mm}
+%<Ni&RIGHT>\@setplength{refvpos}{84mm}
+\@setplength{refaftervskip}{\baselineskip}
+%<EARLY>\@setplength{toaddrhpos}{22mm}
+%<LATE>\@setplength{toaddrhpos}{25mm}
+%<RIGHT>\@setplength{toaddrhpos}{-22mm}
+\@setplength{toaddrwidth}{90mm}
+%<Ni&!RIGHT>\@setplength{toaddrvpos}{12mm}
+%<Ni&RIGHT>\@setplength{toaddrvpos}{28mm}
+%<Kaku>\@setplength{toaddrvpos}{24mm}
+%<LOW>\@setplength{toaddrheight}{40mm}
+%<HIGH>\@setplength{toaddrheight}{50mm}
+\@setplength{toaddrindent}{\z@}
+\@setplength{backaddrheight}{5mm}
+\@setplength{specialmailindent}{\fill}
+\@setplength{specialmailrightindent}{1em}
+\@setplength{locwidth}{\z@}
+%<Ni>\@setplength{locheight}{55mm}%
+%<Kaku>\@setplength{locheight}{45mm}%
+\@setplength{firstheadvpos}{8mm}
+\@setplength{firstheadwidth}{\paperwidth}
+\ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}}
+\else
+ \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}}
+\fi
+\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
+\@setplength{firstfootvpos}{\paperheight}
+\@addtoplength{firstfootvpos}{-16mm}
+\@setplength{refwidth}{\z@}
+\@setplength{sigindent}{\z@}
+\@setplength{sigbeforevskip}{2\baselineskip}
+\let\raggedsignature=\centering
+% \end{macrocode}
+%
+% Additional settings:
+% \begin{macrocode}
+\ifcase\@alignfrom
+ \KOMAoptions{fromalign=locationright}%
+\or
+ \KOMAoptions{fromalign=locationright}%
+\or
+ \KOMAoptions{fromalign=locationright}%
+\fi
+% \end{macrocode}
+%
+% \iffalse
+%</body>
+%</lco>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `japanlco.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scraddr.dtx b/macros/latex/contrib/koma-script/source/scraddr.dtx
new file mode 100644
index 0000000000..b1deb16d47
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scraddr.dtx
@@ -0,0 +1,386 @@
+% \CheckSum{146}
+% \iffalse meta-comment
+% ======================================================================
+% scraddr.dtx
+% Copyright (c) Markus Kohm, 2006-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.
+% ----------------------------------------------------------------------
+% scraddr.dtx
+% Copyright (c) Markus Kohm, 2006-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scraddr.dtx 1380 2013-10-01 15:31:55Z mjk $
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{scraddr.dtx}
+%</dtx>>
+%<scraddr>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<driver>\ProvidesFile{scraddr.drv}
+%<scraddr>\ProvidesPackage{scraddr}
+%<*dtx|scraddr|driver>
+ [2013/09/30 v1.1c KOMA-Script
+%</dtx|scraddr|driver>
+%<scraddr> package]
+%<*dtx|driver>
+ Script bundle]
+%</dtx|driver>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input docstrip.tex
+ \@@input scrdocstrip.tex
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2006}
+ \generate{\usepreamble\defaultpreamble
+ \file{scraddr.sty}{%
+ \from{scraddr.dtx}{scraddr}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</dtx>
+%<*driver>
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scraddr.dtx}
+\title{Das scraddr\thanks{Diese Datei hat die Versionsnummer
+ \fileversion, letzte Änderung vom \filedate.}-Paket zur
+ Auswertung von Adressdateien}
+\author{Markus Kohm \and Jens-Uwe Morawski}
+\date{\filedate}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{scraddr.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{v1.1a}{2002/05/19}{Erste Version, die von \texttt{scrlettr}
+% losgelöst ist.}
+%
+% \section{Anleitung}
+%
+% \subsection{Rechtliches}
+% Es wird keinerlei Haftung übernommen für irgendwelche Schäden,
+% die aus der Benutzung der Programme und Dateien des hier
+% beschriebenen Paketes folgen.
+%
+% \subsection{Das \textsf{KOMA-Script} Paket}
+%
+% Das gesamte \textsf{KOMA-Script} Paket besteht aus mehreren Teilen.
+% Der Teil |scrclass.dtx| beinhaltet die Haupt-classes |scrartcl.cls|,
+% |scrreprt.cls| und |scrbook.cls| und |scrlttr2.cls| sowie das von
+% diesen benötigte package |typearea.sty|.
+%
+% Das ursprünglich in |scrlettr.dtx| enthaltene
+% \texttt{scraddr}-Paket liegt nun hier als |scraddr.dtx| separat
+% vor. Dies wurde erforderlich, das ansonsten in |scrlettr.dtx| nur
+% noch obsolete Teile enthalten sind.
+%
+% Die Anleitung zu diesem Paket ist in der Anleitung zu
+% \textsf{KOMA-Script} zu finden. Diese liegt in Deutsch und in
+% Englisch vor.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementierung}
+%
+%\iffalse
+% \begin{macrocode}
+%<*scraddr>
+%<*beta>
+\PackageWarningNoLine{scraddr}
+ {THIS IS A BETA VERSION!\MessageBreak
+ YOU SHOULD NOT USE THIS VERSION!\MessageBreak
+ YOU SHOULD INSTALL THE RELEASE FROM CTAN\MessageBreak
+ AND USE THAT INSTEAD OF THIS BETA VERSION}
+%</beta>
+%</scraddr>
+%\fi
+%
+%
+% \changes{v1.0}{1996/01/22}{Neues Package scraddr.}
+% \begin{macrocode}
+%<*scraddr>
+% \end{macrocode}
+% Dieses Paket liest beliebige - auch mehrere - Adressdateien im oben
+% beschriebenen Format ein und legt für jeden Eintrag eine Reihe von
+% Markos an. Bedingung dafür ist, dass das achte Element jedes
+% |\adrentry|-Eintrags - der Kürzeleintrag - nichtleer ist.
+% Dies gilt in gleicher Weise auch für das neunte Element neuerer
+% |\addrentry|-Einträge.
+% Im Falle von
+% identischen Kürzeleinträgen überschreiben spätere Einträge
+% frühere. Die Inhalte können dann über spezielle Befehle ermittelt
+% werden.
+%
+% \subsection{Optionen}
+%
+% \begin{option}{adrFreeIVempty}
+% \changes{v1.1a}{2002/05/19}{Neue Option}
+% \begin{option}{adrFreeIVshow}
+% \changes{v1.1a}{2002/05/19}{Neue Option}
+% \begin{option}{adrFreeIVwarn}
+% \changes{v1.1a}{2002/05/19}{Neue Option}
+% \begin{option}{adrFreeIVstop}
+% \changes{v1.1a}{2002/05/19}{Neue Option}
+% \begin{macro}{\@adrFIVerror}
+% \changes{v1.1a}{2002/05/19}{Neue (intern)}
+% Die neuen Optionen dienen der Wahl, ob die Verwendung von
+% \verb|\FreeIV| für einen Eintrag, der mit \verb|\adrentry|
+% definiert wurde, ignoriert wird, durch eine Ausgabe im Text
+% angezeigt wird, zu einer Warnung oder einem Fehler führt. Im Makro
+% wird die Einstellung gespeichert. Voreingestellt ist
+% \texttt{adrFreeIVshow}.
+% \begin{macrocode}
+\newcommand*{\@adrFIVerror}{}
+\DeclareOption{adrFreeIVempty}{\renewcommand*{\@adrFIVerror}{0}}
+\DeclareOption{adrFreeIVshow}{\renewcommand*{\@adrFIVerror}{1}}
+\DeclareOption{adrFreeIVwarn}{\renewcommand*{\@adrFIVerror}{2}}
+\DeclareOption{adrFreeIVstop}{\renewcommand*{\@adrFIVerror}{3}}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \changes{v1.0a}{2001/08/07}{\cs{ExecuteOption}\cs{relax} korrigiert}
+% \changes{v1.1a}{2002/05/19}{Option \texttt{adrFreeIVshow} ist
+% Voreinstellung}
+% \begin{macrocode}
+\ExecuteOptions{adrFreeIVshow}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Adressdatei einlesen}
+% \begin{macro}{\InputAdressFile}
+% Mit Hilfe des Befehls |\InputAddressFile| wird die angegebene
+% Adressdatei eingelesen und in Adressmakros gewandelt, die dann beliebig
+% verwendet werden können. Die Adressmakros werden global generiert.
+% Andere Makros insbesondere die Definitionen von |\adrentry| und
+% |\addrentry| bleiben erhalten.
+% \changes{v1.1}{2002/05/18}{Erweitert auf \cs{addrentry}
+% Einträge}
+% \changes{v1.1b}{2002/06/02}{Falls erforderlich werden auch
+% \cs{addrchar} und \cs{adrchar} definiert}
+% \begin{macrocode}
+\newcommand{\InputAddressFile}[1]{\begingroup
+ \ifcase\@adrFIVerror
+ \def\adrentry##1##2##3##4##5##6##7{%
+ \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{}}%
+ \or
+ \def\adrentry##1##2##3##4##5##6##7##8{%
+ \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{%
+ (entry FreeIV undefined at `##8')}{##8}}%
+ \or
+ \def\adrentry##1##2##3##4##5##6##7##8{%
+ \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{%
+ \PackageWarning{scraddr}{%
+ `##8' was defined using \string\adrentry\MessageBreak
+ so \string\FreeIV-entry is not defined}}{##8}}%
+ \else
+ \def\adrentry##1##2##3##4##5##6##7##8{%
+ \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{%
+ \PackageError{scraddr}{%
+ \string\FreeIV\space undefined at `##8'}{%
+ `##8' was defined using \string\adrentry\MessageBreak
+ so \string\FreeIV-entry is not defined.\MessageBreak
+ You may continue but you should check output}}{##8}}%
+ \fi
+ \providecommand*{\addrchar}[1]{}%
+ \providecommand*{\adrchar}{\addrchar}%
+ \def\addrentry##1##2##3##4##5##6##7##8##9{%
+ \def\@tempa{##9}\ifx\@tempa\@empty\else
+ \expandafter\gdef\csname ##9.LN\endcsname{##1}
+ \expandafter\gdef\csname ##9.FN\endcsname{##2}
+ \expandafter\gdef\csname ##9.A\endcsname{##3}
+ \expandafter\gdef\csname ##9.P\endcsname{##4}
+ \expandafter\gdef\csname ##9.FI\endcsname{##5}
+ \expandafter\gdef\csname ##9.FII\endcsname{##6}
+ \expandafter\gdef\csname ##9.FIII\endcsname{##7}
+ \expandafter\gdef\csname ##9.FIV\endcsname{##8}
+ \fi}
+% \end{macrocode}
+% Existiert die Datei nicht, so wird ein Fehler ausgegeben, ansonsten
+% wird die Ladeaktion angezeigt.
+% \begin{macrocode}
+ \InputIfFileExists{#1.adr}
+ {\typeout{Load addressfile: #1.adr.}}
+ {\PackageError{scraddr}
+ {File #1.adr not found}
+ {The addressfile you wanted is not
+ available}}
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Zugriff auf die Elemente der eingelesenen Adressdatei}
+%
+% Da keine Vorschriften existieren, wie genau das Kürzel aufgebaut sein
+% muss, können innerhalb des Kürzels theoretisch auch solche Zeichen
+% enthalten sein, die für Makronamen normalerweise ungeeignet sind.
+% Deshalb existiert ein Satz von Befehlen, über den auf die zu einem
+% Kürzel gehörenden Elemente zugegriffen werden kann. Dabei wird davon
+% ausgegangen, dass die Adressdatei dem zuvor vorgeschlagenen Aufbau
+% entspricht.
+%
+% \begin{macro}{\Name}
+% Der Name wird aus dem Vornamen (Firstname) und Nachnamen (Lastname)
+% zusammengesetzt, wobei einfach ein Leerzeichen dazwischen geklemmt
+% wird.
+% \begin{macrocode}
+\newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\FirstName}
+% Der Vorname (Firstname) ist mit \emph{Kürzel}|.FN| codiert.
+% \begin{macrocode}
+\newcommand*{\FirstName}[1]{\csname #1.FN\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LastName}
+% Der Nachname (Lastname) ist mit \emph{Kürzel}|.LN| codiert.
+% \begin{macrocode}
+\newcommand*{\LastName}[1]{\csname #1.LN\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Address}
+% Die Adresse (Address) ist mit \emph{Kürzel}|.A| codiert.
+% \begin{macrocode}
+\newcommand*{\Address}[1]{\csname #1.A\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Telephone}
+% Die Telephonnummer (Telephone/Phone) ist mit \emph{Kürzel}|.P|
+% codiert.
+% \begin{macrocode}
+\newcommand*{\Telephone}[1]{\csname #1.P\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\FreeI}
+% \begin{macro}{\FreeII}
+% Es existieren zwei freie Einträge, die mit \emph{Kürzel}|.FI| und
+% \emph{Kürzel}.|FII| codiert sind.
+% \begin{macrocode}
+\newcommand*{\FreeI}[1]{\csname #1.FI\endcsname}
+\newcommand*{\FreeII}[1]{\csname #1.FII\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\Comment}
+% \begin{macro}{\FreeIII}
+% Das dritte freie Element ist über zwei Makros erreichbar.
+% Das Makro |\Comment| dient zur Kompatibilität mit älteren
+% |\adrentry|-Einträgen, da hier der vorletzte Parameter als
+% Kommentar gekennzeichnet war.
+% Das Makro |\FreeIII| ist passend zur Definition des Makros
+% |\addrentry| benannt.
+% Die Daten sind im Makro mit \emph{Kürzel}|.FIII| kodiert.
+% \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Einträge}
+% \begin{macrocode}
+\newcommand*{\Comment}{}
+\newcommand*{\FreeIII}[1]{\csname #1.FIII\endcsname}
+\let\Comment\FreeIII
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FreeIV}
+% Das letzte Makro gibt ebenfalls Zugriff auf ein freies Element, das mit
+% \emph{Kürzel}|.FIV| codiert ist. Dies wurde ebenfalls für
+% neue |\addrentry| Einträgen eingeführt. Bei älteren |\adrentry|
+% Einträgen, führt die Benutzung dieses Macros zu einer Warnung im Text.
+% \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Einträge}
+% \begin{macrocode}
+\newcommand*{\FreeIV}[1]{\csname #1.FIV\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Ende des Pakets}
+% \begin{macrocode}
+%</scraddr>
+% \end{macrocode}
+%
+% \IndexPrologue{\clearpage
+% \section*{Index}
+% \markboth{Index}{Index}
+% Die kursiven Zahlen geben die Seiten an, auf denen
+% der entsprechende Eintrag beschrieben ist.
+% Die unterstrichenden Zahlen geben die Stelle der
+% Definition des Eintrags an.
+% Alle anderen Zahlen benennen Stellen, an denen der
+% entsprechende Eintrag verwendet ist.
+% \vspace{1em}\noindent}
+%
+% \GlossaryPrologue{\section*{Änderungsverzeichnis}
+% \markboth{Änderungsverzeichnis}{Änderungsverzeichnis}
+% \addcontentsline{toc}{section}{Änderungsverzeichnis}
+% Die erste Version des \textsf{KOMA-Script} Pakets
+% stammt vom 7.\,Juli~1994. Es werden nur die
+% Änderungen ab diesem Zeitpunkt dokumentiert.\par%
+% \vspace{1em}\noindent}
+%
+% \Finale
+%
+\endinput
+%
+% Ende der Datei `scraddr.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrdoc.dtx b/macros/latex/contrib/koma-script/source/scrdoc.dtx
new file mode 100644
index 0000000000..ccb4e42cc7
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrdoc.dtx
@@ -0,0 +1,373 @@
+% ======================================================================
+% scrdoc.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrdoc.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+%
+% Note: This class was made to shrink size of dtx files.
+% Do not use this class for anything because it may change
+% incompatible from distribution to distribution
+%
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{scrdoc}[%
+ 2016/04/12 v0.1e KOMA-Script source documentation class]
+
+% Load standard LaTeX documentation class, passing all options to it
+% but use scrartcl instead of article.
+\IfFileExists{scrartcl.cls}{%
+ \newcommand*{\sd@saved@LoadClass}{}
+ \let\sd@saved@LoadClass=\LoadClass
+ \renewcommand*{\LoadClass}[2][]{%
+ \begingroup
+ \edef\@tempc{##2}\def\@tempb{article}%
+ \ifx\@tempc\@tempb
+ \let\LoadClass\sd@saved@LoadClass
+ \def\@tempc{scrartcl}%
+ \fi
+ \edef\@tempc{%
+ \noexpand\endgroup\noexpand\sd@saved@LoadClass[{##1}]{\@tempc}}%
+ \@tempc
+ }
+ \newcommand*{\sd@saved@PassOptionsToClass}{}
+ \let\sd@saved@PassOptionsToClass=\PassOptionsToClass
+ \renewcommand*{\PassOptionsToClass}[2]{%
+ \begingroup
+ \edef\@tempc{##2}\def\@tempb{article}%
+ \ifx\@tempc\@tempb
+ \def\@tempc{scrartcl}%
+ \fi
+ \edef\@tempc{%
+ \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{##1}{%
+ \@tempc}}%
+ \@tempc
+ }
+}{%
+ \typeout{^^J%
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+ !!! You should generate KOMA-Script classes first!^^J%
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
+ ^^J%
+ }%
+ \DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
+ M\kern.05em A\kern.1em-\kern.1em Script}}%
+ \def\addsec{\section*}%
+ \newenvironment{labeling}[2][]{%
+ \description
+ }{%
+ \csname enddescription\endcsname
+ }%
+ \newcommand*{\marginline}{\marginpar}%
+}
+\LoadClassWithOptions{ltxdoc}
+
+% Use two columns at index
+\setcounter{IndexColumns}{2}
+
+% If \EnableCrossrefs is used, we don't want following macros to be
+% indexed:
+
+\DoNotIndex{\.,\\,\ ,\@Alph,\@M}
+\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading}
+\DoNotIndex{\@afterindentfalse,\@alph,\@arabic}
+\DoNotIndex{\@beginparpenalty}
+\DoNotIndex{\@car,\@cdr,\@centercr}
+\DoNotIndex{\@dblfloat,\@dotsep}
+\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty}
+\DoNotIndex{\@float,\@fontswitch}
+\DoNotIndex{\@gobbletwo}
+\DoNotIndex{\@hangfrom,\@highpenalty}
+\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty}
+\DoNotIndex{\@latex@warning}
+\DoNotIndex{\@m,\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse}
+\DoNotIndex{\@mparswitchtrue}
+\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath}
+\DoNotIndex{\@plus}
+\DoNotIndex{\@tempa,\@tempcnta,\@tempdima,\@tempskipka}
+\DoNotIndex{\@tempswafalse,\@tempswatrue}
+\DoNotIndex{\@tempb,\@tempcntb,\@tempdimb,\@tempskipkb}
+\DoNotIndex{\@tempswbfalse,\@tempswbtrue}
+\DoNotIndex{\@tempc,\@tempcntc,\@tempdimc,\@tempskipkc}
+\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum,\@twocolumnfalse}
+\DoNotIndex{\@twocolumntrue,\@twosidefalse,\@twosidetrue}
+\DoNotIndex{\@whiledim,\@whilenum}
+\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength}
+\DoNotIndex{\addvspace,\advance}
+\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
+\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth}
+\DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage}
+\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\cs}
+\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction}
+\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs}
+\DoNotIndex{\divide,\DoNotIndex}
+\DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end}
+\DoNotIndex{\end@dblfloat}
+\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage}
+\DoNotIndex{\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fboxrule,\fboxsep}
+\DoNotIndex{\gdef,\global}
+\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss}
+\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi}
+\DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi}
+\DoNotIndex{\include,\input,\InputIfFileExists,\item,\itshape}
+\DoNotIndex{\kern,\kernel@ifnextchar}
+\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip}
+\DoNotIndex{\list,\long}
+\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal}
+\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak}
+\DoNotIndex{\month}
+\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen}
+\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent}
+\DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number}
+\DoNotIndex{\numberline,\normalcolor}
+\DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule}
+\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine}
+\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox}
+\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges}
+\DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand}
+\DoNotIndex{\ProvidesClass}
+\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax}
+\DoNotIndex{\renewcommand,\RequirePackage,\reset@font}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\@Roman,\@roman}
+\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\string}
+\DoNotIndex{\the,\thispagestyle,\triangleright,\ttfamily}
+\DoNotIndex{\twocolumn,\typeout}
+\DoNotIndex{\undefined,\usecounter}
+\DoNotIndex{\vfil,\vfill,\vspace}
+\DoNotIndex{\wd,\xdef,\year,\z@}
+% More may be set by the source files.
+
+% Redefine some defaults to handle not only macros and environments
+% but also options, Length, Counters, KOMAvars. Also define some new.
+\def\macro{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{0}}
+\def\environment{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{1}}
+\def\option{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{2}}
+\def\Length{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{3}}
+\def\Counter{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{4}}
+\def\KOMAvar{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{5}}
+\def\KOMAfont{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@{6}}
+\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved@macroname{\string#2}%
+ \ifcase #1
+ \edef\saved@indexname{\expandafter\@gobble\string#2}%
+ \else
+ \let\saved@indexname\saved@macroname
+ \fi
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty \count@\macro@cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne
+ \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro@cnt \@ne
+ \else \macro@cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ \ifcase #1
+ \noexpand\PrintMacroName
+ \or
+ \noexpand\PrintEnvName
+ \or
+ \noexpand\PrintOptionName
+ \or
+ \noexpand\PrintLengthName
+ \or
+ \noexpand\PrintCounterName
+ \or
+ \noexpand\PrintKOMAvarName
+ \or
+ \noexpand\PrintKOMAfontName
+ \fi
+ {\string#2}]}%
+ \@tempa
+ \global\advance\c@CodelineNo\@ne
+ \ifcase #1
+ \SpecialMainIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \or
+ \SpecialMainEnvIndex{#2}\nobreak
+ \or
+ \SpecialMainOptionIndex{#2}\nobreak
+ \or
+ \SpecialMainLengthIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \or
+ \SpecialMainCounterIndex{#2}\nobreak
+ \or
+ \SpecialMainKOMAvarIndex{#2}\nobreak
+ \or
+ \SpecialMainKOMAfontIndex{#2}\nobreak
+ \fi
+ \global\advance\c@CodelineNo\m@ne
+ \ignorespaces}
+\let\endoption\endmacro
+\let\endLength\endmacro
+\let\endCounter\endmacro
+\let\endKOMAvar\endmacro
+
+% Some new command
+\newcommand*{\File}[1]{\texttt{\mbox{#1}}}
+\newcommand*{\Class}{\File}
+\newcommand*{\Package}{\File}
+\newcommand*{\Macro}{\cs}
+\newcommand*{\Option}{\File}
+
+% The new names we need
+\providecommand*{\EnvName}{Umgebung}% This is german
+\providecommand*{\EnvsName}{Umgebungen}% This is german
+\providecommand*{\OptionName}{Option}% This is german
+\providecommand*{\OptionsName}{Optionen}% This is german
+\providecommand*{\PrintOptionName}[1]{\strut \MacroFont #1\ }
+\providecommand*{\PrintDescribeOption}[1]{\strut \MacroFont #1\ }
+\providecommand*{\LengthName}{L\"ange}% This is german
+\providecommand*{\LengthsName}{L\"angen}% This is german
+\providecommand*{\PrintLengthName}[1]{\strut \MacroFont \string #1\ }
+\providecommand*{\PrintDescribeLength}[1]{\strut \MacroFont \string #1\ }
+\providecommand*{\CounterName}{Z\"ahler}% This is german
+\providecommand*{\CountersName}{Z\"ahler}% This is german
+\providecommand*{\PrintCounterName}[1]{\strut \MacroFont #1\ }
+\providecommand*{\PrintDescribeCounter}[1]{\strut \MacroFont #1\ }
+\providecommand*{\KOMAvarName}{Variable}% This is german
+\providecommand*{\KOMAvarsName}{Variablen}% This is german
+\providecommand*{\PrintKOMAvarName}[1]{\strut \MacroFont #1\ }
+\providecommand*{\PrintDescribeKOMAvar}[1]{\strut \MacroFont #1\ }
+\providecommand*{\KOMAfontName}{Element mit Schrift}% This is german
+\providecommand*{\KOMAfontsName}{Elemente mit Schrift}% This is german
+\providecommand*{\PrintKOMAfontName}[1]{\strut \MacroFont #1\ }
+\providecommand*{\PrintDescribeKOMAfont}[1]{\strut \MacroFont #1\ }
+
+% Defining new main index commands
+\newcommand*{\SpecialMainIndex@Type}[3]{%
+ \@bsphack\special@index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (\string #2)%
+ \encapchar main}%
+ \special@index{%
+ #3:\levelchar{%
+ \string\ttfamily\space#1}\encapchar
+ main}\@esphack}
+\renewcommand*{\SpecialMainEnvIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\EnvName}{\EnvsName}}
+\newcommand*{\SpecialMainOptionIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}}
+\newcommand*{\SpecialMainLengthIndex}[1]{%
+ \@bsphack\SpecialIndex@{#1}{(\string\LengthName )\encapchar main}%
+ \@esphack}
+\newcommand*{\SpecialMainCounterIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}}
+\newcommand*{\SpecialMainKOMAvarIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}}
+\newcommand*{\SpecialMainKOMAfontIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\KOMAfontName}{\KOMAfontsName}}
+
+% Defining new usage index commands
+\newcommand*{\SpecialIndex@Type}[3]{%
+ \@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (#2)\encapchar usage}%
+ \index{#3:\levelchar{\protect\ttfamily#1}\encapchar
+ usage}\@esphack}
+\renewcommand{\SpecialEnvIndex}[1]{%
+ \SpecialIndex@Type{#1}{\EnvName}{\EnvsName}}
+\newcommand*{\SpecialOptionIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}}
+\newcommand*{\SpecialLengthIndex}[1]{\@bsphack%
+ {\let\special@index\index
+ \SpecialIndex@{#1}{(\string\LengthName )\encapchar usage}}%
+ \@esphack}
+\newcommand*{\SpecialCounterIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}}
+\newcommand*{\SpecialKOMAvarIndex}[1]{%
+ \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}}
+
+% Define new describe commands
+\newcommand*{\newDescribe}[1]{%
+ \expandafter\newcommand\expandafter*\csname Describe#1\endcsname{%
+ \leavevmode\@bsphack\begingroup\MakePrivateLetters
+ \csname Describe@#1\endcsname}%
+ \expandafter\newcommand\expandafter*\csname Describe@#1\endcsname[1]{%
+ \endgroup
+ \marginpar{\raggedleft\csname PrintDescribe#1\endcsname{##1}}%
+ \csname Special#1Index\endcsname{##1}\@esphack\ignorespaces}%
+}
+\newDescribe{Option}
+
+% We use left margin very much, so shift everything to the right
+\if@twoside
+\else
+\addtolength{\oddsidemargin}{1in}
+\setlength{\oddsidemargin}{1.5\oddsidemargin}
+\addtolength{\oddsidemargin}{-1in}
+\fi
+
+% We need some logos:
+\providecommand*{\eTeX}{$\m@th\varepsilon$-\TeX}
+
+% Terms for other languages:
+\AtBeginDocument{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname addto\endcsname\relax
+ \ClassWarning{scrdoc}{Package babel not loaded}%
+ \else
+ \addto\captionsenglish{%
+ \def\partname{File}%
+ }%
+ \addto\captionsngerman{%
+ \def\partname{Datei}%
+ }%
+ \ClassInfo{scrdoc}{Select language \languagename}%
+ \expandafter\selectlanguage\expandafter{\languagename}%
+ \fi
+}
+
+\endinput
+% end of ``scrdoc.cls''
diff --git a/macros/latex/contrib/koma-script/source/scrdocstrip.tex b/macros/latex/contrib/koma-script/source/scrdocstrip.tex
new file mode 100644
index 0000000000..0c96d0f00d
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrdocstrip.tex
@@ -0,0 +1,324 @@
+% ======================================================================
+% scrdocstrip.tex
+% Copyright (c) Markus Kohm, 2013-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrdocstrip.tex
+% Copyright (c) Markus Kohm, 2013-2018
+%
+% 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.
+% ======================================================================
+
+\expandafter\ifx\csname scrdocstripversion\endcsname\relax
+ \let\KOMAbatchfile\batchfile
+ \let\batchfile\undefined
+\fi
+
+\expandafter\ifx\csname ifbeta\endcsname\undefined
+ \expandafterlet\csname ifbeta\expandafter\csname iftrue\endcsname
+\fi
+
+\input docstrip.tex
+
+\ifx\generate\undefined
+ \errhelp{| This installation requires docstrip version 2.3c or * later,^^J%
+ | but an old version of docstrip has been input.^^J%
+ | This error is fatal, because You have to update docstrip and maybe LaTeX
+ fist!}
+ \errmessage{| Fatal error: Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname
+\fi
+
+\expandafter\ifx\csname scrdocstripversion\endcsname\relax
+\else \expandafter\endinput
+\fi
+\Msg{| Using KOMA-Script's docstrip extensions.}%|
+% Support for variables:
+\def\KOMAdefVariable#1#2{%
+ \expandafter\def\csname KOMAvar@#1\endcsname{#2}%
+}
+\def\KOMAifVariable#1{%
+ \expandafter\ifx\csname KOMAvar@#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}
+\def\KOMAuseVariable#1{%
+ \KOMAifVariable{#1}{%
+ \csname KOMAvar@#1\endcsname
+ }{%
+ variable #1\undefined
+ }%
+}
+\KOMAdefVariable{AUTHOR}{Markus Kohm}
+\KOMAdefVariable{COPYRIGHT}{%
+ Copyright (c)
+ \KOMAifVariable{COPYRIGHTFROM}{\KOMAuseVariable{COPYRIGHTFROM}-}{}%
+ \KOMAifVariable{COPYRIGHTTILL}{\KOMAuseVariable{COPYRIGHTTILL}}{}
+ \KOMAuseVariable{AUTHOR}%
+ \KOMAifVariable{EMAIL}{ \KOMAuseVariable{EMAIL}}{}%
+}
+\KOMAdefVariable{COPYRIGHTCOMMENT}{%
+ \MetaPrefix\space\KOMAuseVariable{COPYRIGHT}%
+}
+% Provide validity test: All files listed in a file must exists.
+% You should note, that some TeX distributions cannot find files without
+% extension!
+\def\defuppercase#1#2{%
+ \edef\reserved@a{\noexpand\def\noexpand#1{#2}}%
+ \expandafter\uppercase\expandafter{\reserved@a}%
+}
+\def\KOMAdocExtensions{HTML,PDF,TXT}
+\let\KOMAdocFilesMissing\empty
+\let\KOMAnoFilesMissing\empty
+\let\KOMAFilesMissing\empty
+\def\getlastextension#1.#2.#3\@nil{%
+ \ifx\relax#2\relax
+ \ifx\relax#3\relax
+ \else
+ #1%
+ \fi
+ \else
+ \getlastextension#2.#3..\@nil
+ \fi
+}
+\def\KOMAvalidityTest#1{%
+ \maybeMsg{^^J| Testing validity of distribution: }%|
+ \begingroup
+ \def\readloop{%
+ \ifeof\inFile\else
+ \read\inFile to \input@testfile\relax
+ \ifx\input@testfile\empty
+ \maybeMsg{\space}%
+ \else
+ \openin\inputcheck \input@testfile\relax
+ \ifeof\inputcheck
+ \maybeMsg{-}%
+ \defuppercase\reserved@a{%
+ \expandafter\getlastextension\input@testfile..\@nil
+ }%
+ \ifx\reserved@a\empty
+ \@addto\KOMAnoFilesMissing{\noexpand\do{\input@testfile}}%
+ \let\reserved@a\empty
+ \else
+ \forlist\reserved@b:=\KOMAdocExtensions\do
+ \ifx\reserved@a\reserved@b
+ \@addto\KOMAdocFilesMissing{\noexpand\do{\input@testfile}}%
+ \let\reserved@a\empty
+ \Forlistfalse
+ \fi
+ \od
+ \fi
+ \ifx\reserved@a\empty\else
+ \@addto\KOMAFilesMissing{\noexpand\do{\input@testfile}}%
+ \fi
+ \else
+ \maybeMsg{+}%
+ \fi
+ \closein\inputcheck
+ \fi
+ \expandafter\readloop
+ \fi
+ }%
+ \endlinechar=-1
+ \openin\inFile #1\relax
+ \ifeof\inFile
+ \global\@addto\KOMAFilesMissing{\noexpand\do{#1}}%
+ \else
+ \readloop
+ \closein\inFile
+ \fi
+ \ifx\KOMAFilesMissing\empty
+ \ifx\KOMAdocFilesMissing\empty
+ \ifx\KOMAnoFilesMissing\empty
+ \maybeMsg{\space OK.^^J}%
+ \fi
+ \fi
+ \else
+ \def\do##1{,^^J| \@spaces\@spaces\@spaces##1}%
+ \errhelp{| You should ask your distributor for a valid and legal
+ distribution.}%|
+ \errmessage{^^J%
+ | Missing files: \expandafter\expandafter\expandafter\@gobble
+ \KOMAFilesMissing\KOMAdocFilesMissing\KOMAnoFilesMissing^^J%
+ | Distribution seems to be invalid.^^J%
+ | This error is fatal}%|
+ \batchmode
+ \csname @@end\endcsname
+ \fi
+ \global\let\KOMAnoFilesMissing\KOMAnoFilesMissing
+ \global\let\KOMAdocFilesMissing\KOMAdocFilesMissing
+ \endgroup
+}
+\def\@gobbletwo#1#2{}
+\expandafter\def\expandafter\ReportTotals\expandafter{\ReportTotals
+ \ifx\KOMAnoFilesMissing\empty\else
+ \Msg{%
+ +----------------------------------------------------------------------%
+ ^^J%
+ | Following files without extension seem to be missing:}
+ \begingroup
+ \def\do##1{,^^J| \space\space##1}%
+ \Msg{\expandafter\expandafter\expandafter\@gobbletwo\KOMAnoFilesMissing}
+ \endgroup
+ \Msg{%
+ | PLEASE NOTE, THAT DISTRIBUTIONS WITHOUT THOSE FILES ARE NOT ALLOWED!^^J%
+ | But maybe those files are there and you're TeX distribution simply^^J%
+ | cannot open files without extension.^^J%
+ +----------------------------------------------------------------------}%|
+ \fi
+ \ifx\KOMAdocFilesMissing\empty\else
+ \Msg{%
+ +----------------------------------------------------------------------%
+ ^^J%
+ | Following documentations files are missing:}
+ \begingroup
+ \def\do##1{,^^J| \space\space##1}%
+ \Msg{\expandafter\expandafter\expandafter\@gobbletwo\KOMAdocFilesMissing}
+ \endgroup
+ \Msg{%
+ | PLEASE NOTE, THAT DISTRIBUTIONS WITHOUT THOSE FILES ARE NOT ALLOWED!^^J%
+ | MAYBE YOU CAN GENERATE THOSE FILES FROM OTHER PARTS OF THE SOURCES.^^J%
+ +----------------------------------------------------------------------}
+ \fi
+}
+% Extend line scanner by:
+% - %!VARIABLE : to write variable into files
+% - %?VARIABLE=VALUE : to setup a new variable
+\begingroup
+\catcode`\%=12 \catcode`\*=14
+\gdef\processLineX%#1{*
+ \ifcase\ifx%#10\else
+ \ifx<#11\else
+ \ifx!#12\else 3\fi\fi\fi\relax
+ \expandafter\putMetaComment\or
+ \expandafter\checkOption\or
+ \expandafter\KOMAexpandVariable\or
+ \expandafter\removeComment\fi
+ #1}
+\gdef\KprocessLineX%#1{*
+ \ifcase\ifx%#10\else
+ \ifx<#11\else
+ \ifx!#12\else
+ \ifx?#13\else 4\fi\fi\fi\fi\relax
+ \expandafter\putMetaComment\or
+ \expandafter\checkOption\or
+ \expandafter\KOMAexpandVariable\or
+ \expandafter\KOMAsetVariable\or
+ \expandafter\removeComment\fi
+ #1}
+\endgroup
+\def\KOMAexpandVariable!#1\endLine{%
+ \advance\codeLinesPassed\@ne
+ \maybeMsg{x}%
+ \edef\inLine{\KOMAuseVariable{#1}}%
+ \let\do\putline@do
+ \activefiles
+}
+\def\KOMAsetVariable?#1=#2\endLine{%
+ \expandafter\gdef\csname KOMAvar@#1\endcsname{#2}%
+}
+% Extend heading
+\def\ds@heading{%
+ \expandafter\ifx\csname ifbeta\expandafter\endcsname
+ \csname iftrue\endcsname
+ \use@Warning{\outFileName}{%
+ YOU SHOULD NOTE, THAT THIS IS NOT AN OFFICIAL RELEASE!^^J%
+ THIS VERSION IS INTENDED TO BE USED FOR TESTING ONLY!^^J%
+ USAGE FOR PURPOSES OTHER THAN INTENDED IS DANGEROUS!^^J%
+ DON'T EXPECT ANY SUPPORT FOR THIS VERSION!%
+ }%
+ \fi
+ \MetaPrefix ^^J%
+ \MetaPrefix\space This is file `\outFileName',^^J%
+ \MetaPrefix\space generated with the docstrip utility, extended by
+ scrdocstrip.^^J%
+}
+\def\commentWarning#1#2{%
+ \MetaPrefix\space
+ -------------------------------------------------------------------------^^J%
+ \@commentWarning#2^^J\@nil
+ \MetaPrefix\space
+ -------------------------------------------------------------------------^^J%
+}
+\def\@commentWarning#1^^J#2\@nil{%
+ \MetaPrefix\space #1^^J%
+ \ifx\relax#2\relax\else\@commentWarning#2\@nil\fi
+}
+\def\KNL{^\empty^J\perCent^^J}
+\def\XKNL{^\empty^J\perCent|^^J}
+\def\genericWarning#1#2{%
+ \string\immediate\string\write17{\KNL
+ +----------------------------------------------------------------------\KNL
+ | WARNING (`#1'):\XKNL
+ +----------------------------------------------------------------------\KNL
+ \@genericWarning#2^^J\@nil
+ +----------------------------------------------------------------------\KNL
+ }^^J%
+}
+\def\@genericWarning#1^^J#2\@nil{%
+ | #1\XKNL
+ \ifx\relax#2\relax\else\@genericWarning#2\@nil\fi
+}%|
+\def\useWarning#1{\let\use@Warning#1}
+\useWarning\genericWarning
+
+% Now, we need some code from docstrip to start old docstrip-processing
+\ifx\undefined\KOMAbatchfile\else
+ \Defaultfalse
+ \let\batchfile\KOMAbatchfile
+ \def\process@first@batchfile{%
+ \processbatchFile
+ \ifnum\NumberOfFiles=\z@
+ \interactive
+ \fi
+ \endbatchfile
+ }
+\fi
+
+\chardef\scrdocstripversion 1\relax
+
+\def\fromoptional#1{%
+ \immediate\openin\inputcheck\uptospace#1 \qStop\relax
+ \ifeof\inputcheck
+ \Msg{Ignorring not existing optional file `#1'.}%
+ \expandafter\@gobbletwo
+ \else
+ \immediate\closein\inputcheck
+ \expandafter\from
+ \fi
+ {#1}%
+}
+
+\process@first@batchfile
+\endinput
+%
+% end of file `scrdocstrip.tex'
diff --git a/macros/latex/contrib/koma-script/source/scrextend.dtx b/macros/latex/contrib/koma-script/source/scrextend.dtx
new file mode 100644
index 0000000000..c76f048bd7
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrextend.dtx
@@ -0,0 +1,245 @@
+% \CheckSum{75}
+% \iffalse meta-comment
+% ======================================================================
+% scrextend.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrextend.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrextend.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<preidentify>%%% (run: preidentify)
+%<prepare>%%% (run: prepare)
+%<option>%%% (run: option)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+\endgroup
+\ProvidesFile{scrextend.dtx}[\filedate\space\filerevision\space
+ KOMA-Script package source
+ (extend other classes)]
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrextend.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v3.00}{2008/05/01}{neues Paket}
+%
+% \section{Erweiterungen für andere Klassen}
+%
+% Dieses Paket dient dazu, einige Möglichkeiten von \KOMAScript{} auch anderen
+% Klassen zur Verfügung zustellen. Dafür darf dieses Paket nicht mit einer
+% \KOMAScript-Klasse verwendet werden.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \subsection{Vorbereitung noch vor der Identifizierung des Pakets}
+%
+% Die Vorbereitung ist einfach. Es wird nur getestet, ob bereits eine
+% \KOMAScript-Klasse geladen ist. Falls dem so ist, wird eine Warnung
+% ausgegeben und dafür gesorgt, dass das Paket nicht weiter abgearbeitet wird.
+%
+% \iffalse
+%<*preidentify>
+% \fi
+%
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname KOMAClassName\endcsname\relax\else
+ \PackageWarning{scrextend}{%
+ This package was made to extend other classes but\MessageBreak
+ KOMA-Script classes by some features of the\MessageBreak
+ KOMA-Script classes.\MessageBreak
+ It should never be used with a KOMA-Script class.\MessageBreak
+ Loading of the package will be aborted\@gobble%
+ }%
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
+% \iffalse
+%</preidentify>
+%<*identify>
+% \fi
+%
+% \subsection{Identifizierung des Pakets}
+%
+% \begin{macrocode}
+\ProvidesPackage{scrextend}[%
+%!KOMAScriptVersion
+ package (extend other classes with features of KOMA-Script classes)%
+]
+% \end{macrocode}
+%
+% \iffalse
+%</identify>
+%<*prepare>
+% \fi
+%
+% \subsection{Vorbereitung vor den Optionen}
+%
+% \begin{macro}{\scr@ext@activate}
+% \begin{macro}{\scr@ext@activateable}
+% \begin{macro}{\scr@ext@addto@activateable}
+% \begin{sloppypar}
+% Einige Dinge werden nur dann definiert, wenn dies gefordert ist. Dazu werden
+% die entsprechenden Definitionen in das zweite Argument von
+% \cs{scr@ext@activateable}\marg{Kürzel} gepackt, wodurch sie als
+% \cs{scr@ext@activate@}\meta{Kürzel} definiert werden, und anschließend
+% \cs{csname}~\texttt{scr@ext@immediate@}\meta{Kürzel}\cs{endcsname}
+% ausgeführt. Um das dann zu aktivieren wird
+% \cs{scr@ext@activate}\marg{Kürzel} aufgerufen (beispielsweise innerhalb
+% einer Option). Mit \cs{scr@ext@addto@activateable} können Aktivierungen
+% entsprechend um weitere Definitionen erweitert werden.
+% \end{sloppypar}
+% \begin{macrocode}
+\newcommand*{\scr@ext@activate}[1]{%
+ \scr@ifundefinedorrelax{scr@ext@activate@#1}{%
+ \@namedef{scr@ext@immediate@#1}{%
+ \expandafter\let\csname scr@ext@immediate@#1\endcsname\relax
+ \csname scr@ext@activate@#1\endcsname
+ }%
+ }{%
+ \csname scr@ext@activate@#1\endcsname
+ \expandafter\let\csname scr@ext@activate@#1\endcsname\relax
+ }%
+}
+\newcommand*{\scr@ext@activateable}[1]{%
+ \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname
+}
+\newcommand*{\scr@ext@addto@activateable}[1]{%
+ \scr@ifundefinedorrelax{scr@ext@activate@#1}{%
+ \expandafter\newcommand\expandafter*\csname scr@ext@activate@#1\endcsname
+ }{%
+ \expandafter\g@addto@macro\csname scr@ext@activate@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</prepare>
+%<*option>
+% \fi
+%
+% \subsection{Optionen}
+%
+% Das Paket kennt eine universelle Option, um aktivierbare Möglichkeiten zu
+% aktivieren. Diese Option steht aber nur während dem Laden des Pakets zur
+% Verfügung!
+%
+% \begin{option}{extendedfeature}
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/09}{Speicherung des Werts in der internen
+% Liste}^^A
+% \begin{macrocode}
+\KOMA@key{extendedfeature}{%
+ \scr@ext@activate{#1}%
+ \AtEndOfPackage{%
+ \scr@ifundefinedorrelax{scr@ext@immediate@#1}{}{%
+ \PackageWarningNoLine{unkown extended feature `#1'\MessageBreak
+ You have used option `extendedfeature' to\MessageBreak
+ activate an extended feature `#1',\MessageBreak
+ but there is no such extended feature.\MessageBreak
+ See the KOMA-Script manual for more\MessageBreak
+ information about known activatable\MessageBreak
+ extended features%
+ }%
+ }%
+ }%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xadd{.scrextend.sty}{extendedfeature}{#1}%
+}
+\AtEndOfPackage{%
+ \KOMA@key{extendedfeature}{%
+ \def\FamilyKeyState{Option `extendedfeature' too late}%
+ }%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \iffalse
+%</option>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrextend.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrhack.dtx b/macros/latex/contrib/koma-script/source/scrhack.dtx
new file mode 100644
index 0000000000..7c89acf9ce
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrhack.dtx
@@ -0,0 +1,1314 @@
+% \CheckSum{941}
+% \iffalse meta-comment
+% ======================================================================
+% scrhack.dtx
+% Copyright (c) Markus Kohm, 2008-2019
+%
+% 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.
+%
+% To create `scrhack.sty' run `tex scrhack.dtx'. Using LaTeX instead
+% of TeX would generate the implementation documentation.
+% ----------------------------------------------------------------------
+% scrhack.dtx
+% Copyright (c) Markus Kohm, 2008-2019
+%
+% 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.
+%
+% `scrhack.sty' kann durch den Aufruf `tex scrhack.dtx' erzeugt
+% werden. Bei Verwendung von LaTeX statt TeX wird hingegen die
+% Implementierungsdokumentation erzeugt.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrhack.dtx 3063 2019-02-01 07:39:11Z kohm $
+%<package&identify>%%% using: package,identify
+%<package&option>%%% using: package,option
+%<package&body>%%% using: package,body
+%<package&identity>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-02-01 08:39:11 +0100 (Fri, 01 Feb 2019) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+\endgroup
+\ProvidesFile{scrhack.dtx}[\filedate\space\filerevision\space
+%</dtx>
+%<package&identify>\ProvidesPackage{scrhack}[%
+%<hyperref&identify>\ProvidesFile{hyperref.hak}[%
+%<float&identify>\ProvidesFile{float.hak}[%
+%<floatrow&identify>\ProvidesFile{floatrow.hak}[%
+%<listings&identify>\ProvidesFile{listings.hak}[%
+%<setspace&identify>\ProvidesFile{setspace.hak}[%
+%<lscape&identify>\ProvidesFile{lscape.hak}[%
+%<nomencl&identify>\ProvidesFile{nomencl.hak}[%
+%<*dtx|identify>
+%!KOMAScriptVersion
+ package
+%<*dtx>
+ source
+%</dtx>
+%<*!identify>
+ (hacking other packages)%
+%</!identify>
+%</dtx|identify>
+%<hack&identify> (hacking package
+%<hyperref&identify> hyperref)%
+%<float&identify> float)%
+%<floatrow&identify> floatrow)%
+%<listings&identify> listings)%
+%<setspace&identify> setspace)%
+%<lscape&identify> lscape)%
+%<nomencl&identify> nomencl)%
+%<*dtx|identify>
+]
+%</dtx|identify>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2008}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrhack.sty}{%
+ \from{scrkernel-version.dtx}{package,scrhack}%
+ \from{scrhack.dtx}{package,identify}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrhack.dtx}{package,option}%
+ \from{scrhack.dtx}{package,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ \file{hyperref.hak}{%
+ \from{scrkernel-version.dtx}{file,hyperref.hak}%
+ \from{scrhack.dtx}{hack,hyperref,identify}%
+ \from{scrhack.dtx}{hack,hyperref,body}%
+ }%
+ \file{float.hak}{%
+ \from{scrkernel-version.dtx}{file,float.hak}%
+ \from{scrhack.dtx}{hack,float,identify}%
+ \from{scrhack.dtx}{hack,float,body}%
+ }%
+ \file{floatrow.hak}{%
+ \from{scrkernel-version.dtx}{file,floatrow.hak}%
+ \from{scrhack.dtx}{hack,floatrow,identify}%
+ \from{scrhack.dtx}{hack,floatrow,body}%
+ }%
+ \file{listings.hak}{%
+ \from{scrkernel-version.dtx}{file,listings.hak}%
+ \from{scrhack.dtx}{hack,listings,identify}%
+ \from{scrhack.dtx}{hack,listings,body}%
+ }%
+ \file{setspace.hak}{%
+ \from{scrkernel-version.dtx}{file,setspace.hak}%
+ \from{scrhack.dtx}{hack,setspace,identify}%
+ \from{scrhack.dtx}{hack,setspace,body}%
+ }%
+ \file{lscape.hak}{%
+ \from{scrkernel-version.dtx}{file,lscape.hak}%
+ \from{scrhack.dtx}{hack,lscape,identify}%
+ \from{scrhack.dtx}{hack,lscape,body}%
+ }%
+ \file{nomencl.hak}{%
+ \from{scrkernel-version.dtx}{file,nomencl.hak}%
+ \from{scrhack.dtx}{hack,nomencl,identify}%
+ \from{scrhack.dtx}{hack,nomencl,body}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[latin1]{inputenc}
+\usepackage[english,ngerman]{babel}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\newcommand*{\Environment}[1]{\texttt{\mbox{#1}}}
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\GetFileInfo{scrhack.dtx}
+\DocInput{scrhack.dtx}
+\end{document}
+%</dtx>
+%\fi
+%
+% \selectlanguage{english}
+%
+% \let\PName\meta
+% \let\Parameter\marg
+% \providecommand*{\PParameter}[1]{\texttt{\{#1\}}}
+% \providecommand*{\Counter}[1]{\texttt{\mbox{#1}}}
+% \providecommand*{\Option}[1]{\texttt{#1}}
+% \providecommand*{\OptionValue}[2]{\texttt{\mbox{#1=}\linebreak[3]\mbox{#2}}}
+% \let\PValue\texttt
+%
+% \title{\KOMAScript{} \partname\ \texttt{\filename}%
+% \thanks{This file is version \fileversion\ of \texttt{\filename}.}}
+% \date{\filedate}
+% \author{Markus Kohm\thanks{mailto:komascript(at)gmx.info}}
+% \maketitle
+% \begin{abstract}
+% Some packages from other authors may have problems with \KOMAScript{}. In
+% my opinion some packages could be improved. With some packages this makes
+% only sense, if \KOMAScript{} was used. With some other packages the
+% package author has another opinion. Sometimes proposals was never
+% answered. Package \Package{scrhack} contains all those improvement
+% proposals for other packages. This means, \Package{scrhack} redefines
+% macros of packages from other authors! The redefinitions are only
+% activated, if those packages were loaded. Users may prevent
+% \Package{scrhack} from redefining macros of individual packages.
+% \end{abstract}
+% \tableofcontents
+%
+% \selectlanguage{ngerman}
+% \StopEventually{\PrintIndex\PrintChanges}
+% \changes{v3.03}{2009/03/12}{erste Version des Pakets}^^A
+%
+% \section{Implementation of \Package{scrhack}}
+%
+% \changes{v3.04b}{2009/08/05}{Die Reihenfolge von Anweisungen und Optionen
+% grundlegend geändert, um das Paket \textsf{scrhack} unabhängiger von der
+% Reihenfolge beim Laden von Paketen zu machen.}^^A
+%
+% \subsection{Optionen}
+%
+% \iffalse
+%<*package&option>
+% \fi
+%
+% Das Paket bedient sich \cs{KOMAoptions} etc. aus \textsf{scrkbase} (dieses
+% wird übrigens direkt per \texttt{scrkbase.dtx} geladen).
+%
+% Per Option kann gewählt werden, welche Manipulationen geladen werden
+% sollen. Alle diese Optionen können jedoch nur bis zum Laden des
+% entsprechenden Pakets oder dem Laden von \textsf{scrhack} gesetzt
+% werden (es zählt, was später kommt). Anschließend sind sie wirkungslos.
+%
+% \subsection{Verwendete Anweisungen}
+%
+% \iffalse
+%</package&option>
+%<*package&body>
+% \fi
+%
+% \begin{macro}{\scr@ifexpected}
+% Wenn die im ersten Argument angegebene Anweisung nach Ausführung der im
+% zweiten Argument angegebenen Anweisungen unverändert ist, dann soll das
+% dritte Argument ausgeführt werden, sonst das vierte.
+% \begin{macrocode}
+\newcommand{\scr@ifexpected}[2]{%
+ \begingroup
+ \let\@tempa#1
+ #2
+ \ifx\@tempa#1
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@hack@load}
+% Wenn die Datei mit dem Namen des zweiten Arguments und der Endung des ersten
+% Arguments so geladen wurde, dass \LaTeX{} eine Versionsinfo dazu gespeichert
+% hat, dann soll zusätzlich der entsprechende Hack geladen werden.
+% \begin{macrocode}
+\newcommand*{\scr@hack@load}[2]{%
+ \expandafter\ifx\csname ver@#2.#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+% \end{macrocode}
+% Allerdings wird jeder Hack nur genau einmal geladen:
+% \begin{macrocode}
+ \expandafter\ifx\csname ver@#2.hak\endcsname\relax
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \fi
+ {%
+ \PackageInfo{scrhack}{loading #2 hack}%
+ \edef\reserved@a{%
+ \noexpand\makeatletter\noexpand\input{#2.hak}%
+ \noexpand\catcode`\noexpand\@\the\catcode`\@\relax
+ }\reserved@a
+ }{%
+ \PackageInfo{scrhack}{ignorring #2 hack}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</package&body>
+% \fi
+%
+% \subsection{Der \textsf{hyperref}-Hack}
+%
+% \textsf{hyperref} setzt den Anker zu der Stern-Variante einer Überschrift
+% hinter die Überschrift, während es bei der nicht Stern-Variante den Anker
+% auch dann vor die Überschrift setzt, wenn die Überschrift aufgrund von
+% \texttt{secnumdepth} nicht nummeriert wird. Der Hack setzt den Anker
+% einheitlich vor die Überschrift.
+%
+% \begin{option}{hyperref}
+% \changes{v3.12}{2013/03/05}{Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit
+% \cs{KOMAExecuteOptions}}^^A
+% \begin{macrocode}
+%<*package&option>
+\KOMA@ifkey{hyperref}{@scrhack@hyperref}%
+\KOMAExecuteOptions{hyperref=true}%
+%</package&option>
+%<*package&body>
+% \end{macrocode}
+% \changes{v3.04b}{2009/11/09}{\textsf{hyperref}-Hack wird früher geladen}^^A
+% \changes{v3.17}{2015/03/09}{Neuere \textsf{hyperref}-Version deaktiviert
+% ggf. Option \texttt{hyperref}}^^A
+% \changes{v3.18}{2015/05/22}{Neuere \KOMAScript-Versionen deaktivieren
+% ggf. Option \texttt{hyperref}}^^A
+% Hier muss ein wenig trickreicher gearbeitet werden, weil \textsf{hyperref}
+% die Treiberdatei per \cs{AtEndOfPackage} lädt und der Hack erst danach
+% installiert werden darf. Mit \cs{AfterPackage*} alleine, würde der Hack aber
+% vor dem Laden der Treiberdatei installiert. Dafür können wir aber sicher
+% sein, dass ein innerhalb von \cs{AfterPackage*} aufgerufenes
+% \cs{AtEndOfPackage} garantiert nach dem Laden der Treiberdatei ausgeführt
+% wird. Das funktioniert auch noch, wenn \textsf{hyperref} bereits geladen
+% wurde. In dem Fall wird der Code einfach nach dem Ende von \textsf{scrhack}
+% statt nach dem Ende von \textsf{hyperref} ausgeführt.
+% \begin{macrocode}
+\BeforePackage{hyperref}{%
+ \scr@ifundefinedorrelax{hy@insteadofrefstepcounter}{}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of KOMA-Script class, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[.scrhack.sty]{hyperref=false}%
+ }%
+}
+\AfterPackage*{hyperref}{%
+ \if@scrhack@hyperref
+ \@ifpackagelater{hyperref}{2009/11/24}{%
+ \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
+ detection of hyperref version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[.scrhack.sty]{hyperref=false}%
+ }{%
+ \AtEndOfPackage{%
+ \KOMA@key[.scrhack.sty]{hyperref}{%
+ \PackageWarning{scrhack}{option `hyperref=#1' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@hyperref\scr@hack@load\@pkgextension{hyperref}\fi
+ }%
+ }%
+ \fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\@schapter}
+% \begin{macro}{\@spart}
+% \begin{macro}{\@ssect}
+% Eigentlich wird hier gar nicht \texttt{hyperref.sty} verändert, sondern
+% diverse Treiberdateien. Sobald das Paket \textsf{hyperref} geladen ist, ist
+% auch die passende Treiberdatei geladen und außerdem sind alle
+% Treiberdateien, die entsprechende Definitionen vornehmen, gleichermaßen
+% betroffen. Also kann der entsprechende Patch einfach erfolgen, wenn hyperref
+% geladen ist (was bereits von \cs{scr@hack@load} getestet wurde). Es muss
+% also nur noch sichergestellt werden, dass die umzudefinierenden Macros
+% derzeit den erwarteten Inhalt haben.
+% \begin{macrocode}
+%<*hyperref&body>
+\scr@ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \H@old@schapter{#1}%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \endgroup
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@schapter}%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \endgroup
+ \H@old@schapter{#1}%
+ }%
+}{%
+ \scr@ifexpected\@schapter{%
+ \def\@schapter#1{%
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \endgroup
+ \H@old@schapter{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@schapter\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+
+\scr@ifexpected\@spart{%
+ \def\@spart#1{%
+ \H@old@spart{#1}%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{part*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@spart}%
+ \def\@spart#1{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{part*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \H@old@spart{#1}%
+ }%
+}{%
+ \scr@ifexpected\@spart{%
+ \def\@spart#1{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{part*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ \H@old@spart{#1}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@spart\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+
+\scr@ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H@old@ssect{#1}{#2}{#3}{#4}{#5}%
+ \phantomsection
+ }%
+}{%
+ \PackageInfo{scrhack}{redefining \string\@ssect}%
+ \def\@ssect#1#2#3#4#5{%
+ \H@old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+}{%
+ \scr@ifexpected\@ssect{%
+ \def\@ssect#1#2#3#4#5{%
+ \H@old@ssect{#1}{#2}{#3}{#4}{\phantomsection\ignorespaces#5}%
+ }%
+ }{}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\@ssect\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported hyperref version}%
+ }%
+}
+%</hyperref&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Der \textsf{float}-Hack}
+%
+% Das \textsf{float}-Paket verwendet das Makro \cs{float@listhead} zum
+% Setzen der Überschriften. Dies wird seit \KOMAScript~3 nicht mehr empfohlen
+% und fliegt demnächst komplett aus der Unterstützung. Stattdessen wird
+% empfohlen, dass Pakete \textsf{tocbasic} unterstützen. Der Aufwand dafür ist
+% sehr gering und wird mit vielen neuen Möglichkeiten belohnt.
+%
+% Dieser Hack rüstet die \textsf{tocbasic}-Unterstützung für \textsf{float}
+% nach.
+%
+% \begin{option}{float}
+% \changes{v3.12}{2013/03/05}{Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit
+% \cs{KOMAExecuteOptions}}^^A
+% \begin{macrocode}
+%<*package&option>
+\KOMA@ifkey{float}{@scrhack@float}%
+\KOMAExecuteOptions{float=true}%
+%</package&option>
+%<*package&body>
+\AfterPackage*{float}{%
+ \KOMA@key[.scrhack.sty]{float}{%
+ \PackageWarning{scrhack}{option `float' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@float\scr@hack@load\@pkgextension{float}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\newfloat}
+% Über die Anweisung \cs{newfloat} wird eine neue Gleitumgebung
+% definiert. Hier muss die neue Erweiterung aus dem dritten Argument
+% \textsf{tocbasic} bekannt gemacht werden.
+% \begin{macro}{\listof}
+% Über die Anweisung \cs{listof} wird ein Verzeichnis für Gleitumgebungen
+% ausgegeben. Hier muss schlicht die entsprechende Anweisung von
+% \textsf{tocbasic} verwendet werden.
+% \begin{macro}{\float@addtolists}
+% Diese Anweisung wird nicht länger benötigt und daher auf die ursprüngliche
+% Definition zurückgesetzt.
+% \begin{macrocode}
+%<*float&body>
+\scr@ifexpected{\newfloat}{%
+ \long\def\newfloat#1#2#3{\@namedef{ext@#1}{#3}
+ \let\float@do=\relax
+ \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}%
+ \addtocounter{float@type}{\value{float@type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}
+ \@ifnextchar[%]
+ {\float@newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+}{%
+ \scr@ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\float@error{#1}}{%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float@listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\newfloat}%
+ \renewcommand\newfloat[3]{%
+ \ifattoclist{#3}{%
+ \PackageError{scrhack}{extension `#3' already in use}{%
+ Each extension may be used only once.\MessageBreak
+ You, the class, or another package already uses extension
+ `#3'.\MessageBreak
+ \string\newfloat\space command will be ignored!}%
+ }{%
+ \addtotoclist[float]{#3}%
+ \setuptoc{#3}{chapteratlist}%
+ \@namedef{ext@#1}{#3}%
+ \let\float@do=\relax
+ \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}%
+ \@tempa
+ \floatplacement{#1}{#2}%
+ \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}%
+ \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}%
+ \addtocounter{float@type}{\value{float@type}}
+ \restylefloat{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@ifnextchar[%]
+ {\float@newx{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}%
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\float@error{#1}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l@figure
+ \@ifundefined{l@#1}{%
+% \end{macrocode}
+% \changes{v3.25}{2018/03/16}{Verwendung von \cs{DeclareTOCStyleEntry}}^^A
+% Bis Version 3.24 wurde hier nun wie üblich |\l@#1| unter Verwendung von
+% \cs{@dottedtocline} definiert:
+% \begin{verbatim}
+% \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+% \end{verbatim}
+% Da aber \Package{tocbasic} inzwischen diese schöne Schnittstelle für die
+% Verzeichniseinträge bietet, verwenden wir die hier nun auch:
+% \begin{macrocode}
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr@ifexpected{\float@addtolists}{%
+ \long\def\float@addtolists#1{%
+ \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float@addtolists}%
+ \let\float@addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\newfloat\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported float version}%
+}
+%</float&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Der \textsf{floatrow}-Hack}
+%
+% Das \textsf{floatrow}-Paket verwendet das Makro \cs{float@listhead} zum
+% Setzen der Überschriften. Dies wird seit \KOMAScript~3 nicht mehr empfohlen
+% und fliegt demnächst komplett aus der Unterstützung. Stattdessen wird
+% empfohlen, dass Pakete \textsf{tocbasic} unterstützen. Der Aufwand dafür ist
+% sehr gering und wird mit vielen neuen Möglichkeiten belohnt.
+%
+% Dieser Hack rüstet die \textsf{tocbasic}-Unterstützung für \textsf{floatrow}
+% nach.
+%
+% \begin{option}{floatrow}
+% \changes{v3.12}{2013/03/05}{Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit
+% \cs{KOMAExecuteOptions}}^^A
+% \begin{macrocode}
+%<*package&option>
+\KOMA@ifkey{floatrow}{@scrhack@floatrow}
+\KOMAExecuteOptions{floatrow=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{floatrow}{%
+ \KOMA@key[.scrhack.sty]{floatrow}{%
+ \PackageWarning{scrhack}{option `floatrow' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@floatrow\scr@hack@load\@pkgextension{floatrow}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\DeclareNewFloatType}
+% Über die Anweisung \cs{DeclareNewFloatType} wird eine neue Gleitumgebung
+% definiert. Hier muss die neue Erweiterung aus dem dritten Argument
+% \textsf{tocbasic} bekannt gemacht werden.
+% \begin{macro}{\listof}
+% Über die Anweisung \cs{listof} wird ein Verzeichnis für Gleitumgebungen
+% ausgegeben. Hier muss schlicht die entsprechende Anweisung von
+% \textsf{tocbasic} verwendet werden.
+% \begin{macro}{\float@addtolists}
+% Diese Anweisung wird nicht länger benötigt und daher auf die ursprüngliche
+% Definition zurückgesetzt.
+% \begin{macrocode}
+%<*floatrow&body>
+\scr@ifexpected{\DeclareNewFloatType}{%
+ \long\def\DeclareNewFloatType#1#2{\def\FB@captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}%
+ \addtocounter{float@type}{\value{float@type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}%
+ \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax
+ \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}%
+ \@tempa}%
+}{%
+ \scr@ifexpected{\listof}{%
+ \def\listof#1#2{%
+ \@ifundefined{ext@#1}{\flrow@error{Unknown float style `#1'}}{%
+ \expandafter\providecommand\csname l@#1\endcsname
+ {\@dottedtocline{1}{1.5em}{2.3em}}%
+ \float@listhead{#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \endgroup}}%
+ }{%
+ \RequirePackage{tocbasic}%
+ \PackageInfo{scrhack}{redefining \string\DeclareNewFloatType}%
+% \end{macrocode}
+% Eigentlich wäre es besser, wie im \textsf{float}-Hack einen Test
+% vorzuschalten, ob die Dateiendung bereits in Gebrauch ist. Aber das würde
+% voraussetzen, dass die Reihenfolge der Anweisungen geändert wird. Dazu
+% stecke ich aber im Code von \textsf{floatrow} zu wenig
+% drin. (\emph{\foreignlanguage{english}{Note: It would be better to first
+% test, if the new extension is already in use like done at the
+% \textsf{float} hack. But I don't know the \textsf{floatrow} code good
+% enough to make such a change!}})
+% \begin{macrocode}
+ \renewcommand\DeclareNewFloatType[2]{\def\FB@captype{#1}%
+ \expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}%
+ \addtocounter{float@type}{\value{float@type}}%
+ \@namedef{#1name}{#1}\newcounter{#1}%
+ \expandafter\edef\csname fnum@#1\endcsname
+ {\expandafter\noexpand\csname #1name\endcsname\nobreakspace
+ \expandafter\noexpand\csname the#1\endcsname}%
+ \@namedef{the#1}{\arabic{#1}}\flnew@ext{lo#1}\@namedef{fps@#1}{tbp}%
+% \end{macrocode}
+% \changes{v3.25}{2018/03/16}{Verwendung von \cs{DeclareTOCStyleEntry}}^^A
+% Bis Version 3.24 wurde hier nun wie üblich |\l@#1| unter Verwendung von
+% \cs{@dottedtocline} definiert:
+% \begin{verbatim}
+% \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
+% \end{verbatim}
+% Da aber \Package{tocbasic} inzwischen diese schöne Schnittstelle für die
+% Verzeichniseinträge bietet, verwenden wir die hier nun auch:
+% \begin{macrocode}
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]{default}{#1}%
+ \caption@setkeys[floatrow]{newfloat}{#2}\let\FR@tmp=\relax
+ \xdef\@tempa{\noexpand\flrow@types{\the\flrow@types \FR@tmp{#1}}}%
+ \@tempa
+ \xdef\@tempa{\noexpand\addtotoclist[float]{\@nameuse{ext@\FB@captype}}%
+ \noexpand\setuptoc{\@nameuse{ext@\FB@captype}}{chapteratlist}%
+ }%
+ \@tempa
+ }%
+ \PackageInfo{scrhack}{redefining \string\listof}%
+ \renewcommand*\listof[2]{%
+ \@ifundefined{ext@#1}{\flrow@error{Unknown float style `#1'}}{%
+ \@ifundefined{l@#1}{\expandafter\let\csname l@#1\endcsname\l@figure
+ \@ifundefined{l@#1}{%
+% \end{macrocode}
+% Siehe die Anmerkung zur Verwendung von \cs{DeclareTOCStyleEntry} oben.
+% \begin{macrocode}
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]
+ {default}{#1}%
+ }{}%
+ }{}%
+ \listoftoc[{#2}]{\csname ext@#1\endcsname}%
+ }%
+ }%
+ \scr@ifexpected{\float@addtolists}{%
+ \long\def\float@addtolists#1{%
+ \def\float@do##1{\addtocontents{##1}{#1}} \the\float@exts}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float@addtolists}%
+ \let\float@addtolists\relax
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\listof\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+ }%
+}{%
+ \PackageWarningNoLine{scrhack}{unknown \string\DeclareNewFloatType\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported floatrow version}%
+}
+%</floatrow&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Der \textsf{listings}-Hack}
+%
+% Das \textsf{listings}-Paket verwendet das Makro \cs{float@listhead} zum
+% Setzen der Überschriften. Dies wird seit \KOMAScript~3 nicht mehr empfohlen
+% und fliegt demnächst komplett aus der Unterstützung. Stattdessen wird
+% empfohlen, dass Pakete \textsf{tocbasic} unterstützen. Der Aufwand dafür ist
+% sehr gering und wird mit vielen neuen Möglichkeiten belohnt.
+%
+% Dieser Hack rüstet die \textsf{tocbasic}-Unterstützung für \textsf{listings}
+% nach.
+%
+% \begin{option}{listings}
+% \changes{v3.12}{2013/03/05}{Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/09}{Defaulteinstellung mit
+% \cs{KOMAExecuteOptions}}^^A
+% \begin{macrocode}
+%<*package&option>
+\KOMA@ifkey{listings}{@scrhack@listings}
+\KOMAExecuteOptions{listings=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{listings}{%
+ \KOMA@key[.scrhack.sty]{listings}{%
+ \PackageWarning{scrhack}{option `listings' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@listings\scr@hack@load\@pkgextension{listings}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\scr@do@hack@listings}
+% \begin{macro}{\lstlistoflistings}
+% Über dieses Macro wird das Verzeichnis der Listings gesetzt. Die gesamte
+% Funktionalität dafür kann \Package{tocbasic} überlassen werden.
+% \begin{macro}{\float@addtolists}
+% Diese Anweisung wird nicht länger benötigt und daher auf die ursprüngliche
+% Definition zurückgesetzt. Da \Package{listings} ihre Definition mit
+% \Macro{AtBeginDocument} verzögert, muss dies hier ebenfalls geschehen.
+% \begin{macrocode}
+%<*listings&body>
+\newcommand*{\scr@do@hack@listings}{%
+ \RequirePackage{tocbasic}%
+ \addtotoclist[float]{lol}%
+ \setuptoc{lol}{chapteratlist}%
+ \PackageInfo{scrhack}{redefining \string\lstlistoflistings}%
+ \renewcommand*{\lstlistoflistings}{\listoftoc[{\lstlistlistingname}]{lol}}%
+ \AtBeginDocument{%
+ \scr@ifexpected{\float@addtolists}{%
+ \def\float@addtolists##1{\addtocontents{lol}{##1}}%
+ }{%
+ \PackageInfo{scrhack}{undefining \string\float@addtolists}%
+ \let\float@addtolists\relax
+ }{%
+ \scr@ifexpected{\float@addtolists}{%
+ \def\float@addtolists##1{\addtocontents{lol}{##1}%
+ \orig@float@addtolists{##1}}%
+ }{%
+ \PackageInfo{scrhack}{setting \string\float@addtolists\MessageBreak
+ to \string\orig@float@addtolists}%
+ \let\float@addtolists\orig@float@addtolists
+ }{%
+ \PackageWarningNoLine{scrhack}{unkown \string\float@addtolists\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+ }%
+ }%
+ \let\scr@do@hack@listings\relax
+}
+\scr@ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
+ \tableofcontents \egroup}%
+}{%
+ \scr@do@hack@listings
+}{%
+ \scr@ifexpected{\lstlistoflistings}{%
+ \def\lstlistoflistings{%
+ \begingroup
+ \@ifundefined{@restonecoltrue}{}{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ }%
+ \float@listhead{\lstlistlistingname}%
+ \parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil%
+ \@starttoc{lol}%
+ \@ifundefined{@restonecoltrue}{}{%
+ \if@restonecol\twocolumn\fi
+ }%
+ \endgroup
+ }%
+ }{%
+ \scr@do@hack@listings
+ }{%
+ \PackageWarningNoLine{scrhack}{unknown \string\lstlistoflistings\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported listings version}%
+ }%
+}
+%</listings&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \subsection{Der \textsf{nomencl}-Hack}
+%
+% Das \textsf{nomencl}-Paket harmoniert eigentlich nur in einer Kleinigkeit
+% bezüglich des Eintrags in das Inhaltsverzeichnis nicht sehr gut mit
+% \KOMAScript-Klassen bzw. Paket \textsf{tocbasic}. Allerdings kann es von den
+% Vorteilen von \textsf{tocbasic} auch in weiterer Hinsicht profitieren.
+%
+% Dieser Hack rüstet weitgehende \textsf{tocbasic}-Unterstützung für
+% \textsf{nomencl} nach. Dafür wird Paket \textsf{xpatch} verwendet.
+%
+% \begin{option}{nomencl}
+% \changes{v3.23}{2017/03/31}{neue Option für neuen Hack}^^A
+% \begin{macrocode}
+%<*package&option>
+\RequirePackage{xpatch}%
+\KOMA@ifkey{nomencl}{@scrhack@nomencl}
+\KOMAExecuteOptions{nomencl=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{nomencl}{%
+ \KOMA@key[.scrhack.sty]{nomencl}{%
+ \PackageWarning{scrhack}{option `nomencl' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@nomencl\scr@hack@load\@pkgextension{nomencl}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}^^A nomencl
+%
+% \begin{macro}{\thenomenclature}
+% \changes{v3.23}{2017/03/31}{Umgebung \texttt{thenomenclature} wird
+% gepatcht}^^A
+% Statt die Fallunterscheidung aus der Originaldefinition direkt hier
+% nachzubilden, patchen wir diese komplett heraus und ersetzen sie durch eine
+% neue Anweisung.
+% \begin{macrocode}
+%<*nomencl&body>
+\RequirePackage{tocbasic}
+% \end{macrocode}
+% With \Package{nomencl} > 5.0 this should be all.
+% \begin{macrocode}
+\@ifpackagelater{nomencl}{2019/01/01}{%
+ \PackageInfo{scrhack}{only `tocbasic' loaded for `nomencl'}%
+ \expandafter\endinput
+}{}
+% \end{macrocode}
+% Otherwise we have to patch it.
+% \begin{macrocode}
+\addtotoclist[nomencl]{nlo}
+\addtotoclist[nomencl]{nls}
+\xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+}{%
+ \scr@hack@nomencl@head
+}{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+}{%
+% \end{macrocode}
+% \changes{v3.26b}{2019/01/23}{new \textsf{nomencl} 5.0}^^A
+% From \textsf{nomencl} 5.0 another code is used if the nomenclature is a
+% chapter. So we need another patch:
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \markboth{\nomname}{\nomname}%
+ \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr@hack@nomencl@head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+% \end{macrocode}
+% \changes{v3.26b}{2019/01/23}{prepared for hoply comming \textsf{nomencl}}^^A
+% But this code is also wrong, because it breaks manual running heads, e.g.,
+% of page style \texttt{myheadings}. So I hope, there will be another code,
+% that needs a somehow different patch:
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ {
+ \section*{\nomname}
+ \if@intoc\addcontentsline{toc}{section}{\nomname}\fi%
+ }%
+ {
+ \chapter*{\nomname}
+ \@mkboth{\nomname}{\nomname}%
+ \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi%
+ }%
+ }{%
+ \scr@hack@nomencl@head
+ }{%
+ \PackageInfo{scrhack}{\string\thenomenclature\space successfully patched}%
+ }{%
+% \end{macrocode}
+% \changes{v3.25}{2019/01/23}{emergency patch added}^^A
+% If this also does not work, we try an emergency patch, that could break
+% things.
+% \begin{macrocode}
+ \xpatchcmd{\thenomenclature}{%
+ \@ifundefined{chapter}%
+ }{%
+ \scr@hack@nomencl@head
+ \@gobbletwo
+ }{%
+ \PackageWarning{scrhack}{%
+ using emergency patch of \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'.\MessageBreak
+ Mostly this patch does work too, but it also could\MessageBreak
+ break `nomencl`. If this happens, please deactivate\MessageBreak
+ the `nomencl` hack of `scrhack`
+ }%
+ }{%
+ \PackageWarning{scrhack}{%
+ cannot patch \string\thenomenclature.\MessageBreak
+ This could happen if you are using an unknown\MessageBreak
+ release of package `nomencl'%
+ }%
+ }%
+ }%
+ }%
+}
+%</nomencl&body>
+% \end{macrocode}
+% \end{macro}^^A \thenomenclature
+%
+% \begin{macro}{\scr@hack@nomencl@head}
+% \changes{v3.23}{2017/03/31}{Überschrift für \texttt{thenomenclature} unter
+% Verwendung von \textsf{tocbasic}}^^A
+% Im Gegensatz zu Gleitumgebungen benötigen wir hier keine Gruppe, weil
+% \texttt{thenomenclature} bereits die Gruppe bereitstellt.
+% \begin{macrocode}
+%<*nomencl&body>
+\newcommand*{\scr@hack@nomencl@head}{%
+ \providecommand*{\listofnlsname}{\nomname}%
+ \let\list@fname\listofnlsname
+ \def\@currext{nls}%
+ \tocbasic@listhead{\list@fname}%
+}
+%</nomencl&body>
+% \end{macrocode}
+% Es ist ggf. noch zu beachten, dass von den ganzen Haken, die
+% \textsf{tocbasic} bereitstellt, für dieses Verzeichnis natürlich nur die
+% Überschriftenhaken zum Einsatz kommen. Verzeichnishaken können zwar
+% definiert werden, kommen aber nie zur Anwendung.
+% \end{macro}^^A \scr@hack@nomencl@head
+%
+% \begin{macro}{\if@intoc}
+% \changes{3.23}{2017/03/31}{Reaktion auf \cs{if@intoc}}
+% Natürlich muss jetzt noch auf \textsf{nomencl}'s Option \texttt{intoc}
+% reagiert werden, also entsprechend der Option das \textsf{tocbasic}
+% Feature \texttt{totoc} passend gesetzt werden. Etwaige Änderungen des
+% Features sind also erst nach dem Laden von \textsf{nomencl} und
+% \textsf{scrhack} möglich. Spätere Änderungen von \cs{if@intoc} werden
+% außerdem nicht berücksichtigt.
+% \begin{macrocode}
+%<*nomencl&body>
+\if@intoc
+ \setuptoc{nls}{totoc}
+\fi
+%</nomencl&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Der \textsf{setspace}-Hack}
+%
+% Das \textsf{setspace}-Paket verwendet \cs{@ptsize} auf ungünstige Art, indem
+% es davon ausgeht, dass es immer eine ganze Zahl enthält. Das ist aber bei
+% \KOMAScript{} keineswegs zwingend. Außerdem ist der Wert für \texttt{11pt}
+% falsch, weil \LaTeX{} in diesem Fall tatsächlich eine 10,95\,pt-Schrift mit
+% einem Zeilenabstand von 13,6\,pt einstellt. Damit wäre der korrekte Wert für
+% \cs{onehalfspacing} beispielsweise:
+% \[ 10{,}95\,\mathrm{pt} \dot 1{,5} / 13{,}6\,\mathrm{pt} \equiv 1{,}208 \]
+% Tatsächlich stellt \textsf{setspace} aber einen Wert von 1,213 ein, was
+% einer effektiven Schriftgröße von 11\,pt entsprechen würde. Ebenso stellt es
+% den aktuellen Abstand bei \cs{onehalfspacing} nicht relativ zur aktuellen
+% Schriftgröße ein, sondern zur Grundschriftgröße. Damit erhält man bei
+% \begin{verbatim}
+% \documentclass[10pt]{article}
+% \usepackage{setspace}
+% \begin{document}
+% \large\onehalfspacing\raggedright
+% Fontsize: \csname f@size\endcsname pt\\
+% Normal baselineskip: \csname f@baselineskip\endcsname\\
+% baselineskip: \the\baselineskip
+% \end{document}
+% \end{verbatim}
+% einen anderen Abstand als bei
+% \begin{verbatim}
+% \documentclass[11pt]{article}
+% \usepackage{setspace}
+% \begin{document}
+% \large\onehalfspacing\raggedright
+% Fontsize: \csname f@size\endcsname pt\\
+% Normal baselineskip: \csname f@baselineskip\endcsname\\
+% baselineskip: \the\baselineskip
+% \end{document}
+% \end{verbatim}
+% obwohl beide Male dieselbe Schriftgröße verwendet wird. Streng genommen
+% müsste also bei jeder Änderung der Schriftgröße der Wert Abstand angepasst
+% werden. So weit geht dieser Hack nicht. Stattdessen wird der Wert abhängig
+% von der tatsächlichen Schriftgröße und dem tatsächlichen Basisabstand beim
+% Aufruf der Anweisungen eingestellt. Das ergibt immerhin in den obigen
+% Beispielen gleiche Ergebnisse.
+%
+% \begin{option}{setspace}
+% \changes{v3.17}{2015/04/16}{Neu}^^A
+% \begin{macrocode}
+%<*package&option>
+\KOMA@ifkey{setspace}{@scrhack@setspace}
+\KOMAExecuteOptions{setspace=true}
+%</package&option>
+%<*package&body>
+\AfterPackage*{setspace}{%
+ \KOMA@key[.scrhack.sty]{setspace}{%
+ \PackageWarning{scrhack}{option `setspace' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \if@scrhack@setspace\scr@hack@load\@pkgextension{setspace}\fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{macro}{\onehalfspacing}
+% \changes{v3.17}{2015/04/16}{Neu}^^A
+% Über diese Anweisung wird der eineinhalbzeilige Satz eingestellt. Ein auf
+% drei Nachkommastellen genauer Wert erscheint mir ausreichend genau.
+% \begin{macrocode}
+%<*setspace&body>
+\scr@ifexpected{\onehalfspacing}{%
+ \long\def\onehalfspacing{%
+ \setstretch{1.25}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.25}%
+ \or % 11pt
+ \setstretch {1.213}%
+ \or % 12pt
+ \setstretch {1.241}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\onehalfspacing}{%
+ \@tempdima=\dimexpr (\f@size pt)*1500/
+ (\dimexpr \f@baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip@pt\@tempdima}%
+ }%
+}{%
+ \PackageWarning{scrhack}{unknown \string\onehalfspacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\doublespacing}
+% \changes{v3.17}{2015/04/16}{Neu}^^A
+% Über diese Anweisung wird der zweizeilige Satz eingestellt. Ein auf
+% drei Nachkommastellen genauer Wert erscheint mir ausreichend genau.
+% \begin{macrocode}
+\scr@ifexpected{\doublespacing}{%
+ \long\def\doublespacing{%
+ \setstretch{1.667}% default
+ \ifcase \@ptsize \relax % 10pt
+ \setstretch {1.667}%
+ \or % 11pt
+ \setstretch {1.618}%
+ \or % 12pt
+ \setstretch {1.655}%
+ \fi
+ }%
+}{%
+ \renewcommand*{\doublespacing}{%
+ \@tempdima=\dimexpr (\f@size pt)*2000/
+ (\dimexpr \f@baselineskip\relax)*\p@/1000\relax
+ \expandafter\setstretch\expandafter{\strip@pt\@tempdima}%
+ }%
+}{%
+ \PackageWarning{scrhack}{unknown \string\doublespacing\space
+ definition found!\MessageBreak
+ Maybe you are using a unsupported setpace version}%
+}
+%</setspace&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Der \textsf{lscape}-Hack}
+% \changes{v3.18a}{2015/07/07}{Neuer \textsf{lscape}-Hack}^^A
+%
+% Das \textsf{lscape}-Paket setzt innerhalb der
+% \texttt{landscape}-Umgebung die Länge \cs{textheight} auf den Wert
+% von \cs{textwidth} obwohl es auf der anderen Seite \cs{textwidth}
+% nicht auf den Wert von \cs{textheight} setzt. Das ist inkonsequent. Da
+% David~Carlisle außerdem angibt, dass \cs{textwidth} nicht verändert wird,
+% weil das zu Problemen führen konnte, ist es unverständlich, dass
+% \cs{textheight} verändert wird, obwohl das ebenfalls zu Problemen führen
+% kann, beispielsweise für \textsf{showframe} oder \textsf{scrpage}. Daher
+% verändere ich die Definition so, dass auch \cs{textheight} unverändert
+% bleibt. Dabei muss allerdings auch \textsf{pdflscape} berücksichtigt
+% werden. Das ist am einfachsten mit \textsf{xpatch}.
+%
+% \begin{option}{lscape}
+% \changes{v3.18a}{2015/07/07}{Neue Option für neuen Hack}^^A
+% \changes{v3.20}{2016/05/07}{\textsf{xpatch} wird bereits im Optionenteil
+% geladen}^^A
+% \begin{macrocode}
+%<*package&option>
+\RequirePackage{xpatch}%
+\KOMA@ifkey{lscape}{@scrhack@lscape}%
+\KOMAExecuteOptions{lscape=true}%
+%</package&option>
+%<*package&body>
+\AfterPackage*{lscape}{%
+ \if@scrhack@lscape\scr@hack@load\@pkgextension{lscape}\else
+ \KOMA@key[.scrhack.sty]{lscape}{%
+ \PackageWarning{scrhack}{option `lscape' ignored}%
+ \FamilyKeyStateProcessed
+ }%
+ \fi
+}
+%</package&body>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\landscape}
+% \changes{v3.18a}{2015/07/07}{Neu}^^A
+% \changes{v3.20}{2016/05/07}{\textsf{xpatch} wird bereits im Optionenteil
+% geladen}^^A
+% Über diese Anweisung wird die \texttt{landscape}-Umgebung von
+% \textsf{lscape} gestartet. Genau diese muss gepatcht werden. Dafür wird das
+% Paket \textsf{xpatch} benötigt. Da der Patch nur geladen wird, wenn die
+% Option dafür gesetzt ist, kann die Option daher nur ein- und ausgeschaltet
+% werden, wenn sie bis zum Laden des Pakets aktiviert wurde.
+% \begin{macrocode}
+%<*lscape&body>
+\xpatchcmd{\landscape}{\textheight=\vsize}{%
+ \if@scrhack@lscape
+% \end{macrocode}
+% \changes{v3.18a}{2015/08/11}{Patchen von \cs{@outputpage}}^^A
+% Es gibt allerdings in der Tat eine Stelle, an der ein verändertet Wert von
+% \cs{textheight} benötigt wird. Das ist wenn innerhalb von \cs{@outputpage}
+% der Wert von \cs{@colht} reinitialisiert wird. Also wird das entsprechend
+% auch noch hinein gepatcht.
+% \begin{macrocode}
+ \scrh@LT@textheight=\vsize
+ \let\scrh@LT@outputpage\@outputpage
+ \def\@outputpage{\scrh@LT@outputpage\global\@colht\scrh@LT@textheight}%
+ \else
+ \textheight=\vsize
+ \fi
+}{%
+ \PackageInfo{scrhack}{\string\landscape\space patched to make
+ \string\textheight\space change optional}%
+}{%
+ \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak
+ Maybe you are using a unsupported lscape version}%
+ \@scrhack@lscapefalse
+}
+% \end{macrocode}
+% \begin{Length}{\scrh@LT@textheight}
+% \changes{v3.18a}{2015/08/11}{neue Länge (intern)}^^A
+% \begin{macrocode}
+\newlength{\scrh@LT@textheight}
+%</lscape&body>
+% \end{macrocode}
+% \end{Length}^^A \scrh@LT@textheight
+% \end{macro}^^A \landscape
+%
+%
+% \subsection{Optionen ausführen}
+%
+% Zum Schluss noch die Optionen ausführen. Im Paket wird diese Anweisung
+% allerdings vor den Anweisungen der Hacks und den Anweisungen aus dem
+% Abschnitt »Verwendete Anweisungen« stehen.
+% \begin{macrocode}
+%<*package&option>
+\KOMAProcessOptions\relax
+%</package&option>
+% \end{macrocode}
+%
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrhack.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% coding: iso-latin-1
+%%% ispell-local-dictionary: "en_GB"
+%%% TeX-master: t
+%%% End:
+
+% LocalWords: eineinhalbzeilige
diff --git a/macros/latex/contrib/koma-script/source/scrjura.dtx b/macros/latex/contrib/koma-script/source/scrjura.dtx
new file mode 100644
index 0000000000..aa061b8791
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrjura.dtx
@@ -0,0 +1,2063 @@
+% \CheckSum{1943}
+% \iffalse meta-comment
+% ======================================================================
+% scrjura.dtx
+% Copyright (c) Markus Kohm, 2007-2018
+%
+% 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.
+%
+% The KOMA-Script bundle consists of all files listed in manifest.txt.
+% This work `scrjura' consists of the files `scrjura.dtx' and
+% `scrlogo.dtx'.
+% ----------------------------------------------------------------------
+% scrjura.dtx
+% Copyright (c) Markus Kohm, 2007-2018
+%
+% 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.
+%
+% Das KOMA-Script-Paket besteht aus allen Dateien, die in manifest.txt
+% genannt sind.
+% Das Werk `scrjura' besteht aus den Dateien `scrjura.dtx' und
+% `scrlogo.dtx'.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrjura.dtx 3033 2018-09-21 07:36:59Z kohm $
+%<*dtx>
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-09-21 09:36:59 +0200 (Fri, 21 Sep 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+\endgroup
+\def\LaTeXformat{LaTeX2e}
+\ifx\fmtname\LaTeXformat\def\MainBodyWork{%
+\ProvidesFile{scrjura.dtx}[\filedate\space\filerevision\space
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package>\ProvidesPackage{scrjura}[%
+%<*dtx|package>
+%!KOMAScriptVersion
+ package
+%<*dtx>
+ source
+%</dtx>
+ (for jurists)
+]
+%</dtx|package>
+%<*dtx>
+\IfFileExists{scrdoc.cls}{%
+ \documentclass[parskip=half-]{scrdoc}
+}{%
+ \documentclass{ltxdoc}
+}
+\providecommand*{\DescribeOption}{\DescribeMacro}
+\providecommand*{\DescribeCounter}{\DescribeMacro}
+\usepackage[latin1]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\IfFileExists{scrjura.sty}{%
+ \usepackage{scrjura}
+}{}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrjura.dtx}
+\DocInput{\filename}
+\end{document}
+%</dtx>
+%<*dtx>
+}\else\let\MainBodyWork\relax\fi
+
+\MainBodyWork
+
+\def\batchfile{scrjura.dtx}
+%</dtx>
+%<ins>\def\batchfile{scrjura.ins}
+%<*dtx|ins>
+\input scrdocstrip.tex
+\@@input scrkernel-version.dtx
+\@@input scrstrip.inc
+\KOMAdefVariable{COPYRIGHTFROM}{2007}
+
+% ---------- File generation -------------------------------------------
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrjura.ins}{%
+ \from{scrjura.dtx}{ins}%
+ }%
+ \file{scrjura.sty}{%
+ \from{scrjura.dtx}{package}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}%
+
+% ---------- end of docstrip process -----------------------------------
+
+\@@input scrstrop.inc
+
+\let\byebye\endinput
+\ifToplevel{\expandafter\let\expandafter\byebye\csname bye\endcsname}
+\byebye
+
+%</dtx|ins>
+% \fi
+%
+% \title{\KOMAScript{} \partname\ \texttt{\filename}%
+% \thanks{Diese Datei ist Version \fileversion\ von \texttt{\filename}.}}
+% \date{\filedate}
+% \author{Markus Kohm\thanks{Paketautor, mailto:komascript(at)gmx.info}\and
+% Dr.\,Alexander
+% Willand\thanks{Autor der Anleitung, mailto:alexander.willand(klammeraffe)t-online.de}}
+% \begin{document}
+% \maketitle
+% \begin{abstract}
+% Das scrjura-Paket ist für die Kautelarjurisprudenz gedacht. Es soll für
+% Anwälte und Notare eine flexible Hilfe bei der Abfassung von Verträgen,
+% Satzungen und juristischen Kommentaren bieten. Es ist in Zusammenarbeit
+% mit Dr.\,Alexander Willand entstanden, bzw. noch immer in Entstehung
+% begriffen.
+% \end{abstract}
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementierung}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \changes{v0.7b}{2014/11/11}{Generelle Umbenennung von "`Paragraph"' in
+% "`Clause"' für alle Befehle, Zähler und Optionen}^^A
+%
+% \begin{macrocode}
+\@ifpackageloaded{hyperref}{%
+ \PackageError{scrjura}{Package hyperref already loaded}{%
+ If you want to use package scrjura with package hyperref, you have to
+ use\MessageBreak
+ package scrjura before package hyperref.\MessageBreak
+ To solve the problem, you just should move the loading of package
+ hyperref\MessageBreak
+ behind the loading of package scrjura.}%
+}
+% \end{macrocode}
+%
+% Es wird das Paket \textsf{scrkbase} benötigt, weil alles weitere darauf
+% aufbaut.
+% \begin{macrocode}
+\RequirePackage{scrkbase}[2013/03/26]
+% \end{macrocode}
+%
+% Außerdem wird \textsf{tocbasic} benötigt, weil einige wenige Befehle davon
+% verwendet werden.
+% \begin{macrocode}
+\RequirePackage{tocbasic}
+% \end{macrocode}
+%
+% \begin{option}{contract}
+% Mit der Option |contract| wird das gesamte Dokument zu einem Vertrag. Man
+% darf dann keine der von diesem Paket bereit gestellten Umgebungen mehr
+% innerhalb des Dokuments verwenden! Realisiert wird dies, indem ganz am
+% Ende von |\begin{document}| noch |\contract| ausgeführt wird.
+% \begin{macrocode}
+\DeclareOption{contract}{%
+ \g@addto@macro\document\contract%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{juratotoc}
+% Mit dieser Option wird der Zähler \Counter{juratoclevel} auf einen
+% gewünschten Wert oder 2 oder 10000 gesetzt.
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% \begin{macro}{\if@juratotoc}
+% \changes{v0.6}{2011/09/29}{Schalter durch Zähler überflüssig}
+% \begin{Counter}{juratoclevel}
+% \changes{v0.6}{2011/09/29}{Zählerdefinition verschoben}
+% Mit dem Zähler wiederum wird erreicht, dass Paragraphen in das
+% Inhaltsverzeichnis aufgenommen werden.
+% \begin{macro}{\toclevel@cpar}
+% \changes{v0.7}{2013/06/09}{neue für \textsf{hyperref}}
+% \begin{macrocode}
+\newcounter{juratoclevel}\setcounter{juratoclevel}{\@M}
+\KOMA@key{juratotoc}[true]{%
+ \begingroup
+ \KOMA@set@ifkey{juratoclevel}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \setcounter{juratoclevel}{2}%
+ \else
+ \setcounter{juratoclevel}{\@M}%
+ \fi
+ \else
+ \setcounter{juratoclevel}{#1}%
+ \fi
+ \endgroup
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.scrjura.sty}{juratotoc}{\value{juratoclevel}}%
+}
+\KOMA@kav@xadd{.scrjura.sty}{juratotoc}{\value{juratoclevel}}%
+\providecommand*{\toclevel@cpar}{\arabic{juratoclevel}}
+% \end{macrocode}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{juratocnumberwidth}
+% \changes{v0.6}{2011/09/29}{neu}%^^A
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyStateProcessed}}%^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% \begin{option}{juratocindent}
+% \changes{v0.6}{2011/09/29}{neu}%^^A
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyStateProcessed}}%^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% \begin{macro}{\cpar@numberwidth}
+% \changes{v0.6}{2011/09/29}{neu (intern)}
+% \begin{macro}{\cpar@indent}
+% \changes{v0.6}{2011/09/29}{neu (intern)}
+% Der Einzug und die Breite der Nummer für Inhaltsverzeichniseinträge kann
+% über diese beiden Optionen bzw. Makros bestimmt werden.
+% \begin{macrocode}
+\newcommand*{\cpar@numberwidth}{2em}
+\newcommand*{\cpar@indent}{1.5em}
+\KOMA@key{juratocnumberwidth}{%
+ \begingroup\setlength{\@tempdima}{#1}\endgroup
+ \renewcommand*{\cpar@numberwidth}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.scrjura.sty}{juratocnumberwidth}{\cpar@numberwidth}%
+}
+\KOMA@kav@add{.scrjura.sty}{juratocnumberwidth}{\cpar@numberwidth}
+\KOMA@key{juratocindent}{%
+ \begingroup\setlength{\@tempdima}{#1}\endgroup
+ \renewcommand*{\cpar@indent}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.scrjura.sty}{juratocindent}{\cpar@indent}%
+}
+\KOMA@kav@add{.scrjura.sty}{juratocindent}{\cpar@indent}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{juratitlepagebreak}
+% \changes{v0.5b}{2010/04/05}{neue Option}
+% Mit dieser Option wird der Schalter |\if@juratitlepagebreak| auf |\iftrue|
+% gesetzt.
+% \begin{macro}{\if@juratitlepagebreak}
+% Mit diesem Schalter wiederum wird erreicht, dass in den Überschriften von
+% Paragraphen ein Seitenumbruch erlaubt wird.
+% \begin{macrocode}
+\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{parnumber}
+% \changes{v0.6}{2011/09/29}{neue Option}%^^A
+% \changes{v0.6a}{2012/10/15}{Meldung bei falschen Werten korrigiert}%^^A
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyStateProcessed}}%^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% Die (automatische) Absatznummerierung lässt sich nun auch per Option ein-
+% und ausschalten.
+% \begin{macrocode}
+\newif\ifparnumber
+\KOMA@key{parnumber}[true]{%
+ \ifstr{#1}{auto}{%
+ \AutoPar
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}%
+ \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}%
+ \KOMA@kav@add{.scrjura.sty}{parnumber}{auto}%
+ }{%
+ \ifstr{#1}{manual}{%
+ \ManualPar
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.scrjura.sty}{parnumber}{manual}%
+ \KOMA@kav@remove{.scrjura.sty}{parnumber}{auto}%
+ \KOMA@kav@add{.scrjura.sty}{parnumber}{manual}%
+ }{%
+ \KOMA@set@ifkey{parnumber}{parnumber}{#1}%
+ \KOMA@kav@replacebool{.scrjura.sty}{parnumber}{parnumber}%
+ }%
+ }%
+}
+\KOMA@kav@add{.scrjura.sty}{parnumber}{true}
+\KOMA@kav@add{.scrjura.sty}{parnumber}{auto}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{clausemark}
+% \changes{v0.9h}{2016/04/11}{\texttt{paragraphmark} umbenannt in
+% \texttt{clausemark}}^^A
+% \begin{option}{paragraphmark}
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyStateProcessed}}%^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% \begin{option}{markright}
+% \begin{option}{markboth}
+% \begin{macro}{\Clausemark}
+% \changes{v0.5e}{2011/08/31}{Beachtung von \cs{MakeMarkcase}}
+% Mit diesen Optionen wird |\Clausemark| so umdefiniert, dass es entweder
+% ein |\markright| oder ein |\markboth| ausführt. Im Gegensatz zu
+% |\chaptermark| etc. erwartet |\Clausemark| neben dem Titel auch noch
+% die zu verwendende Nummer (das könnte bei Bedarf noch geändert werden!)
+% \begin{macrocode}
+\newcommand*{\Clausemark}[1]{}
+\KOMA@key{clausemark}{%
+ \begingroup
+ \KOMA@set@ncmdkey{clausemark}{@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {forceright}{1},%
+ {forceboth}{2},%
+ {right}{3},%
+ {both}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase\number\@tempa
+ \endgroup
+ \let\Clausemark\@gobble
+ \or
+ \endgroup
+ \renewcommand*{\Clausemark}[1]{%
+ \markright{\csname MakeMarkcase\endcsname{##1}}}%
+ \or
+ \endgroup
+ \renewcommand*{\Clausemark}[1]{%
+ \markboth{\csname MakeMarkcase\endcsname{##1}}%
+ {\csname MakeMarkcase\endcsname{##1}}}%
+ \or
+ \endgroup
+ \renewcommand*{\Clausemark}[1]{%
+ \ifx
+ \@mkboth\@gobbletwo
+ \else
+ \markright{\csname MakeMarkcase\endcsname{##1}}%
+ \fi}%
+ \or
+ \endgroup
+ \renewcommand*{\Clausemark}[1]{%
+ \@mkboth{\csname MakeMarkcase\endcsname{##1}}%
+ {\csname MakeMarkcase\endcsname{##1}}}%
+ \else
+ \endgroup
+ \fi
+ \FamilyKeyStateProcessed
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+ \KOMA@kav@xreplacevalue{.scrjura.sty}{clausemark}{#1}%
+}
+\KOMA@kav@add{.scrjura.sty}{clausemark}{false}
+\KOMA@DeclareDeprecatedOption[scrjura]{markright}{clausemark=forceright}
+\KOMA@DeclareDeprecatedOption[scrjura]{markboth}{clausemark=forceboth}
+\KOMA@key{paragraphmark}{%
+ \PackageWarningNoLine{scrjura}{%
+ You've used obsolete option `paragraphmark'.\MessageBreak
+ Usage of this option is deprecated.\MessageBreak
+ You should simply replace `paragraphmark'\MessageBreak
+ by `clausemark'%
+ }%
+ \KOMAExecuteOptions[.scrjura.sty]{clausemark=#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{ref}
+% \changes{v0.5d}{2010/06/07}{neue Einstellungen \texttt{nopar},
+% \texttt{nosentence}, \texttt{OnlyParagraph}}%^^A
+% \changes{v0.7}{2013/11/04}{Verwendung der renovierten Schnittstelle mit
+% \cs{FamilyKeyStateProcessed}}%^^A
+% \changes{v0.9a}{2015/03/09}{Wert wird in der internen Liste erfasst}^^A
+% \begin{option}{parcitename}
+% \begin{option}{sentencecitename}
+% Die Form, in der Absätze und Sätze referenziert werden. Es gibt eine lange,
+% eine abgekürzte und eine nummerische Form.
+%
+% \begin{macro}{\parcite@fromat}
+% \begin{macro}{\sentencecite@fromat}
+% In der Voreinstellung wird das lange Format verwendet. Es gilt:
+% 0 = lang, 1 = kurz, 2 = numerisch, -1 = gar nicht
+% \begin{macrocode}
+\newcommand*{\parcite@format}{0}
+\newcommand*{\sentencecite@format}{0}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Per Option kann die Voreinstellung verändert werden.
+% \begin{macrocode}
+\KOMA@key{ref}{%
+ \begingroup
+ \KOMA@set@ncmdkey{ref}{@tempa}{%
+ {parlong}{1},{longpar}{1},{ParL}{1},%
+ {parshort}{2},{shortpar}{2},{ParS}{2},%
+ {parnumeric}{3},{numericpar}{3},{ParN}{3},%
+ {paroff}{4},{nopar}{4},%
+ {sentencelong}{10},{longsentence}{10},{SentenceL}{10},%
+ {sentenceshort}{20},{shortsentence}{20},{SentenceS}{20},%
+ {sentencenumeric}{30},{numericsentence}{30},{SentenceN}{30},%
+ {sentenceoff}{40},{nosentence}{40},%
+ {long}{11},%
+ {short}{22},%
+ {numeric}{33},%
+ {paragraphonly}{44},{onlyparagraph}{44},%
+ {ParagraphOnly}{44},{OnlyParagraph}{44}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \@tempcnta=\@tempa\relax
+ \@tempcntb=\z@
+ \@whilenum \@tempcnta>9 \do{%
+ \advance\@tempcnta -10\relax
+ \advance\@tempcntb \@ne\relax
+ }%
+ \ifcase \@tempcnta
+ \or
+ \aftergroup\def\aftergroup\parcite@format
+ \aftergroup{\aftergroup0\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\parcite@format
+ \aftergroup{\aftergroup1\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\parcite@format
+ \aftergroup{\aftergroup2\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\parcite@format
+ \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
+ \fi
+ \ifcase \@tempcntb
+ \or
+ \aftergroup\def\aftergroup\sentencecite@format
+ \aftergroup{\aftergroup0\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\sentencecite@format
+ \aftergroup{\aftergroup1\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\sentencecite@format
+ \aftergroup{\aftergroup2\aftergroup}%
+ \or
+ \aftergroup\def\aftergroup\sentencecite@format
+ \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
+ \fi
+ \else
+ \aftergroup\FamilyKeyStateUnknownValue
+ \fi
+ \endgroup
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrjura.sty}{ref}%
+ \ifcase\parcite@format
+ \KOMA@kav@add{.scrjura.sty}{ref}{parlong}%
+ \or
+ \KOMA@kav@add{.scrjura.sty}{ref}{parshort}%
+ \or
+ \KOMA@kav@add{.scrjura.sty}{ref}{parnumeric}%
+ \or
+ \KOMAQkav@add{.scrjura.sty}{ref}{paroff}%
+ \fi
+ \ifcase\sentencecite@format
+ \KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}%
+ \or
+ \KOMA@kav@add{.scrjura.sty}{ref}{sentenceshort}%
+ \or
+ \KOMA@kav@add{.scrjura.sty}{ref}{sentencenumeric}%
+ \or
+ \KOMA@kav@add{.scrjura.sty}{ref}{sentenceoff}%
+ \fi
+ \fi
+}
+\KOMA@kav@add{.scrjura.sty}{ref}{parlong}%
+\KOMA@kav@add{.scrjura.sty}{ref}{sentencelong}%
+\KOMA@DeclareDeprecatedOption[scrjura]{parcitename}{ref=parlong}
+\KOMA@DeclareDeprecatedOption[scrjura]{sentencecitename}{ref=sentencelong}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% Optionen ausführen.
+% \begin{macrocode}
+\KOMAProcessOptions\relax
+% \end{macrocode}
+%
+% \begin{macro}{\Paragraph}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
+% melden}^^A
+% \begin{macro}{\SubParagraph}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
+% melden}^^A
+% \begin{macro}{\refParagraph}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
+% melden}^^A
+% \begin{macro}{\refParagraphN}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
+% melden}^^A
+% \begin{macro}{\DeprecatedParagraph}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen einen Fehler
+% melden}^^A
+% \begin{macro}{\ParagraphCompatibilityHacks}
+% \changes{1.0}{2014/11/22}{wird noch ein paar Versionen verbleiben}^^A
+% \begin{macrocode}
+\providecommand*{\DeprecatedParagraph}{%
+ \PackageError{scrjura}{modification of old document needed}{%
+ It seem that this document was made for scrjura up to version
+ 0.7a.\MessageBreak
+ Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all
+ depending\MessageBreak
+ commands, options, and counters have been renamed.\MessageBreak
+ You should replace the terms `Paragraph' and `paragraph` by `Clause`
+ and\MessageBreak
+ `clause` if they are part of the name of a scrjura feature, otherwise
+ this\MessageBreak
+ document may produce severall additional error messages and maybe the
+ wrong\MessageBreak
+ result. Sorry for the inconvenience.%
+ }%
+ \ParagraphCompatibilityHacks
+}
+\newcommand*{\ParagraphCompatibilityHacks}{%
+ \PackageWarning{scrjura}{compatibility hacks for `\string\Paragraph'
+ executed.\MessageBreak
+ There is no support for documents using these hacks!\MessageBreak
+ There is no warranty for real compatibility!\MessageBreak
+ Even if the LaTeX run of the document doesn't report\MessageBreak
+ any error, the result may be completely wrong.\MessageBreak
+ Therefore it is recommended to solve the problem,\MessageBreak
+ instead of trying to work around using the\MessageBreak
+ compatibility hacks%
+ }%
+ \gdef\Paragraph{\Clause}%
+ \gdef\SubParagraph{\SubClause}%
+ \gdef\c@Paragraph{\c@Clause}%
+ \gdef\cl@Paragraph{\cl@Clause}%
+ \gdef\c@SubParagraph{\c@SubClause}%
+ \gdef\cl@SubParagraph{\cl@SubClause}%
+ \gdef\theParagraph{\theClause}%
+ \gdef\theSubParagraph{\theSubClause}%
+ \gdef\refParagraph{\refClause}%
+ \gdef\refParagraphN{\refClauseN}%
+ \aliaskomafont{Paragraph}{Clause}%
+ \scr@ifundefinedorrelax{Paragraphmark}{}{%
+ \global\let\Clausemark\Paragraphmark
+ }%
+}
+\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph}
+\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph}
+\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph}
+\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN}
+% \end{macrocode}
+% \end{macro}^^A \ParagraphCompatibilityHacks
+% \end{macro}^^A \DeprecatedParagraph
+% \end{macro}^^A \refParagraphN
+% \end{macro}^^A \refParagraph
+% \end{macro}^^A \SubParagraph
+% \end{macro}^^A \Paragraph
+%
+% \begin{macro}{\scrjura@env@type}
+% \changes{v0.5d}{2010/04/28}{neu (intern)}^^A
+% \changes{v0.7b}{2014/11/03}{\cs{jura@env@type} umbenannt}^^A
+% Dieses Makro wird in Abhängigkeit der gerade aktiven
+% \textsf{scrjura}-Umgebung definiert.
+% \begin{macrocode}
+\newcommand*{\scrjura@env@type}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ellipsispar}
+% \changes{v0.7}{2013/05/02}{neu}^^A
+% \changes{v0.7b}{2014/11/03}{\cs{thecontractAbsoluteClause}
+% flexibilisiert}^^A
+% \begin{macro}{\parellipsis}
+% \changes{v0.7}{2013/05/02}{neu}^^A
+% \changes{v0.9g}{2016/03/25}{in die \texttt{aux}-Datei nur bei
+% \cs{if@filesw} schreiben}^^A
+% Paragraphen auslassen aber mit zählen.
+% \begin{macrocode}
+\newcommand*{\ellipsispar}[1][1]{%
+ \begingroup
+ \KOMAoptions{parnumber=manual}\parellipsis\par
+ \addtocounter{par}{#1}%
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\newmaxpar{\scrjura@env@type}%
+ {\csname the\scrjura@env@type
+ AbsoluteClause\endcsname}%
+ {\thepar}%
+ }%
+ \fi
+ \endgroup
+ \addtocounter{par}{-1}\refstepcounter{par}%
+ \ignorespaces
+}
+\newcommand*{\parellipsis}{%
+ \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{contract}
+% \begin{macro}{\contract}
+% \changes{v0.5d}{2010/04/28}{fehlende Fehlermeldung ergänzt}^^A
+% \changes{v0.5d}{2010/04/28}{Umgebung definiert sich nicht mehr selbst
+% um}^^A
+% \changes{v0.5d}{2010/04/28}{\cs{jura@env@type} wird gesetzt}^^A
+% \begin{Counter}{contractClause}
+% \begin{macro}{\thecontractClause}
+% \changes{v0.9b}{2015/05/01}{muss unbedingt den Zähler \texttt{Clause}
+% statt \texttt{contractClause} verwenden}^^A
+% \begin{macro}{\contract@Clauseformat}
+% \begin{macro}{\Clauseformat}
+% \changes{v0.6b}{2013/04/16}{\cs{paragraphformat} umdefiniert}^^A
+% \begin{Counter}{contractSubClause}
+% \changes{v0.9b}{2015/05/01}{muss unbedingt den Zähler \texttt{SubClause}
+% statt \texttt{contractSubClause} verwenden}^^A
+% \begin{macro}{\thecontractSubClause}
+% \begin{Counter}{contractAbsoluteClause}
+% \changes{v0.7}{2013/04/18}{neuer (interner) Zähler über alle Paragraphen,
+% um ggf. die Zählung neu beginnen zu können}^^A
+% Die Umgebung \texttt{contract} wird als Anweisung \cs{contract}
+% definiert. Nichts desto trotz handelt es sich dabei um eine Umgebung und
+% sollte sie immer als Umgebung verwendet werden!
+% Die Umgebung kann nicht geschachtelt werden. Sie darf aber enden und dann
+% erneut verwendet werden. Die Paragraphen werden jedoch über alle Verträge
+% hinweg nummeriert. Das Ende eines Vertrags ist also genau genommen nur eine
+% Unterbrechung.
+% \begin{macrocode}
+\newcommand*{\contract}{%
+ \ifx\scrjura@env@type\@empty
+ \let\@doendpe\scrjura@doendpe
+ \let\Clause\contract@paragraph
+ \let\c@Clause\c@contractClause
+ \edef\cl@Clause{\cl@Clause\cl@contractClause}%
+ \let\SubClause\contract@subparagraph
+ \let\c@SubClause\c@contractSubClause
+ \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}%
+ \let\Sentence\contract@sentence
+ \renewcommand*{\scrjura@env@type}{contract}%
+ \aliaskomafont{Clause}{contract.Clause}%
+ \else
+ \PackageError{scrjura}{nested `contract` detected}{%
+ You may not use a `contract' environment inside\MessageBreak
+ a `\scrjura@env@type' environment or after loading\MessageBreak
+ package `scrjura' with option `\scrjura@env@type'!}%
+ \fi
+}
+\let\if@scrjura@skiphyperref\iftrue
+\let\cl@Clause\@empty
+\let\cl@SubClause\@empty
+\newcounter{contractClause}
+\renewcommand*{\thecontractClause}{%
+ {\contract@Clauseformat{\arabic{Clause}}}}
+\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}}
+\newcommand*{\Clauseformat}[1]{\S~#1}
+\newcounter{contractSubClause}
+\@addtoreset{SubClause}{Clause}
+\renewcommand*{\thecontractSubClause}{%
+ {\theClause\alph{SubClause}}}
+\newcounter{contractAbsoluteClause}
+% \end{macrocode}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{environment}
+%
+% \begin{macro}{\DeclareNewJuraEnvironment}
+% \changes{v0.9}{2014/11/12}{Neue Anweisung}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Verwendet \cs{@defjuraenvironment} um eine neue juristische Umgebung zu
+% definieren.
+% \begin{macrocode}
+\newcommand*{\DeclareNewJuraEnvironment}[1]{%
+ \@ifundefined{#1}{\expandafter\let\csname #1\expandafter\endcsname
+ \csname end#1\endcsname}{}%
+ \@ifundefined{#1}{\let\reserved@defjuraenvironment\@defjuraenvironment}{%
+ \PackageError{scrjura}{ignorring declaration of `#1'}{%
+ You've tried to declare jura environment `#1', but
+ environment\MessageBreak
+ `#1' or command
+ \expandafter\string\csname #1\endcsname\space or
+ \expandafter\string\csname end#1\endcsname\MessageBreak
+ already exists.\MessageBreak
+ Declaration will be ignored}%
+ \long\def\reserved@defjuraenvironment##1[##2]##3##4{}%
+ }%
+ \kernel@ifnextchar [%]
+ {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}%
+}
+\@onlypreamble\DeclareNewJuraEnvironment
+% \end{macrocode}
+% \begin{macro}{\@defjuraenvironment}
+% \changes{v0.9}{2014/11/04}{Neue (interne) Anweisung}^^A
+% \changes{v3.25}{2017/12/08}{neue Option \texttt{ClauseFont}}^^A
+% \changes{v3.25}{2017/12/08}{\cs{reserved@defjuraenvironment} wird wieder
+% \cs{relax}}^^A
+% \changes{v3.25}{2017/12/08}{Umstellung von globalen auf lokale Optionen}^^A
+% Diese Anweisung dient dazu, weitere Umgebungen einfach definieren zu können.
+% Dabei werden optional diverse Optionen unterstützt. Näheres ist der
+% Anleitung zu entnehmen.
+% \begin{macrocode}
+\DefineFamily{KOMAarg}
+\DefineFamilyMember{KOMAarg}
+\newcommand{\@defjuraenvironment}{}
+\long\def\@defjuraenvironment#1[#2]#3#4{%
+ \let\reserved@defjuraenvironment\relax
+% \end{macrocode}
+% Die Zähler definieren:
+% \begin{macrocode}
+ \newcounter{#1Clause}%
+ \newcounter{#1AbsoluteClause}%
+ \newcounter{#1SubClause}%
+ \FamilyCSKey[.scrjura.sty]{KOMAarg}{Clause}{#1@Clause}%
+ \FamilyCSKey[.scrjura.sty]{KOMAarg}{SubClause}{#1@SubClause}%
+ \FamilyCSKey[.scrjura.sty]{KOMAarg}{Sentence}{#1@Sentence}%
+ \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}{%
+ \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}%
+ \expandafter\edef\csname #1@Clauseformat\endcsname{%
+ \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname
+ }%
+ \FamilyKeyStateProcessed
+ }
+ \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}{%
+ \IfExistskomafont{#1.Clause}{%
+ \IfIsAliaskomafont{#1.Clause}{%
+ \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax
+ \newkomafont{#1.Clause}{##1}%
+ }{\setkomafont{#1.Clause}{##1}}%
+ }{%
+ \newkomafont{#1.Clause}{##1}%
+ }%
+ }
+ \FamilyExecuteOptions[.scrjura.sty]{KOMAarg}{#2}%
+ \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}%
+ \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}%
+ \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Sentence}%
+ \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{SubClause}%
+ \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Clause}%
+ \@ifundefined{#1@Clauseformat}{%
+ \expandafter\DeclareRobustCommand\expandafter*%
+ \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}%
+ }{}%
+% \end{macrocode}
+% \changes{v0.9c}{2015/05/13}{\cs{the\dots Clause} definiert}^^A
+% \changes{v0.9f}{2016/02/24}{\cs{protect}\cs{\@nameuse} statt
+% \cs{csname}\dots\cs{endcsname}}^^A
+% \begin{macrocode}
+ \expandafter\renewcommand\expandafter*\csname the#1Clause\endcsname{%
+ \protect\@nameuse{#1@Clauseformat}{\arabic{#1Clause}}}%
+% \end{macrocode}
+% Umgebung:
+% \begin{macrocode}
+ \newenvironment{#1}{%
+ \par
+ \ifx\scrjura@env@type\@empty
+ \edef\scrjura@env@type{#1}%
+ \let\@doendpe\scrjura@doendpe
+ \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname
+ \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}%
+ \expandafter\let\expandafter\c@SubClause
+ \csname c@#1SubClause\endcsname
+ \edef\cl@SubClause{\cl@SubClause
+ \csname cl@#1SubClause\endcsname}%
+ \@ifundefined{#1@Clause}{%
+ \let\Clause\contract@paragraph
+ }{%
+ \expandafter\let\expandafter\Clause
+ \csname #1@Clause\endcsname
+ }%
+ \@ifundefined{#1@SubClause}{%
+ \let\SubClause\contract@subparagraph
+ }{%
+ \expandafter\let\expandafter\SubClause
+ \csname #1@SubClause\endcsname
+ }%
+ \@ifundefined{#1@Sentence}{%
+ \let\Sentence\contract@sentence
+ }{%
+ \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname
+ }%
+ \@ifundefined{\scrjura@env@type @everypar}{%
+ \expandafter\let
+ \csname \scrjura@env@type @everypar\endcsname
+ \contract@everypar
+ }{}%
+% \end{macrocode}
+% Jetzt wird noch ein Font-Alias für \texttt{Clause} gesetzt. Ist kein Font
+% und kein Alias-Font für die neue Umgebung definiert, so wird
+% \texttt{contract.Clause} verwendet.
+% \changes{v3.25}{2017/12/08}{Fontalias korrigiert}^^A
+% \begin{macrocode}
+ \IfExistskomafont{#1.Clause}{%
+ \IfIsAliaskomafont{#1.Clause}{%
+ \aliaskomafont{Clause}{\csname scr@fnt@instead@#1.Clause\endcsname}%
+ }{%
+ \aliaskomafont{Clause}{#1.Clause}%
+ }%
+ }{%
+ \aliaskomafont{Clause}{contract.Clause}%
+ }%
+ #3%
+ \else
+ \PackageError{scrjura}{nested scrjura environments detected}{%
+ You must not use a `#1' environment inside\MessageBreak
+ a `\scrjura@env@type' environment or after loading\MessageBreak
+ package `scrjura' with option `\scrjura@env@type'!}%
+ \fi
+ }{%
+ #4%
+ \par
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \@dewjuraenvironment
+% \end{macro}^^A \DeclareNewJuraEnvironment
+%
+% \begin{macro}{\contract@paragraph}
+% Das ist das Macro, das in Verträgen |\Clause| zur Verfügung stellt.
+% Ein Vertrag besteht aus mehreren Paragraphen. Jeder Paragraph hat einige
+% optionale Elemente, die (auf dem Umweg über scrkbase) über das
+% keyval-Paket geregelt werden.
+% \begin{option}{title}
+% \begin{option}{head}
+% \begin{option}{entry}
+% \changes{v0.6}{2011/09/30}{Option veraltet}
+% \begin{option}{tocentry}
+% \changes{v0.6}{2011/09/30}{neue Option}
+% \begin{option}{nohead}
+% \begin{option}{noentry}
+% \changes{v0.6}{2011/09/30}{Option veraltet}
+% \begin{option}{notocentry}
+% \changes{v0.6}{2011/09/30}{neue Option}
+% Der Titel, der Kolumnentitel und der Verzeichniseintrag des
+% Paragraphen. Der Titel setzt dabei zunächst auch die anderen beiden. Man
+% kann die beiden aber auf leer setzen. Insbesondere aber kann man sie mit
+% den |no|-Optionen auch abschalten.
+% \begin{macrocode}
+\define@key{contract}{title}{%
+ \def\contract@title{#1}%
+ \ifx\contract@entry\relax\def\contract@entry{\contract@title}\fi
+ \ifx\contract@head\relax\def\contract@head{\contract@title}\fi
+}
+\define@key{contract}{entry}{%
+ \PackageWarning{scrjura}{deprecated option `entry'.\MessageBreak
+ You should use option `tocentry' instead of\MessageBreak
+ option `entry'%
+ }%
+ \def\contract@entry{#1}}
+\define@key{contract}{tocentry}{\def\contract@entry{#1}}
+\define@key{contract}{noentry}[]{%
+ \PackageWarning{scrjura}{deprecated option `noentry'.\MessageBreak
+ You should use option `notocentry' instead of\MessageBreak
+ option `noentry'%
+ }%
+ \let\contract@entry\relax}
+\define@key{contract}{notocentry}[]{\let\contract@entry\relax}
+\define@key{contract}{head}{\def\contract@head{#1}}
+\define@key{contract}{nohead}[]{\let\contract@head\relax}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \begin{option}{number}
+% Die Nummer kann mit dieser Option frei gestaltet werden. Es sind jedoch
+% keine Paragraphen ohne Nummer erlaubt. Wird keine Nummer angegeben, so
+% wird die Nummer automatisch gesetzt.
+% \begin{macrocode}
+\define@key{contract}{number}{\def\contract@number{#1}}
+% \end{macrocode}
+% \end{option}
+% \begin{macro}{\contract@preskip}
+% \begin{macro}{\contract@postskip}
+% \begin{option}{preskip}
+% \begin{option}{postskip}
+% Über diese beiden Optionen kann der Abstand vor und nach einem Pragraphen
+% gesetzt werden. Wird nichts angegeben, so wird die globale Voreinstellung
+% verwendet, die übrigens mit |\setkeys{contract}{...}| gesetzt werden
+% kann.
+% \begin{macrocode}
+\newcommand*{\contract@preskip}{2\baselineskip}
+\newcommand*{\contract@postskip}{\baselineskip}
+\define@key{contract}{preskip}{\def\contract@preskip{#1}}
+\define@key{contract}{postskip}{\def\contract@postskip{#1}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{option}{dummy}
+% Über dies Option wird der Schalter |\ifcontract@dummy| auf |\iftrue|
+% gesetzt.
+% \begin{macro}{\ifcontract@dummy}
+% Ist der Schalter |\iftrue|, dann wird der Paragraph nicht gesetzt. Es ist
+% jedoch darauf zu achten, dass Absätze und Sätze des Paragraphen auf diese
+% Weise nicht entfernt werden können. Werden jedoch Paragraphen gelöscht, so
+% kann man damit das Loch in der Nummerierung erzeugen.
+% \begin{macrocode}
+\newif\ifcontract@dummy
+\define@key{contract}{dummy}[true]{\csname contract@dummy#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \begin{macro}{\contract@paragraph@font}
+% \changes{v3.25}{2017/12/08}{Es wird Element \texttt{Clause} statt
+% \texttt{contract.Clause} verwendet}^^A
+% Eigentlich müsste die Anweisung \cs{contract@paragraph@format} heißen. Da
+% sie jedoch für irgendwelche Tricks verwendet wurde. will ich das ungern
+% ändern. Ebenso müsste die Anweisung eigentlich je nach Vertragsumgebung
+% neu definiert und dann jene Defintion verwendet werden.
+% \begin{macrocode}
+\newkomafont{contract.Clause}{\sffamily\bfseries\large}
+\newcommand*{\contract@paragraph@font}{\usekomafont{Clause}%
+ \@hangfrom}
+% \end{macrocode}
+% \end{macro}
+% \begin{Counter}{@AbsClause}
+% \begin{macro}{\theH@AbsClause}
+% \begin{macro}{\theHClause}
+% \begin{macro}{\theHSubClause}
+% \begin{macrocode}
+% \textsf{hyperref}-Code, der noch nicht getestet ist!
+\newcounter{@AbsClause}
+\newcommand*{\theH@AbsClause}{P-\arabic{@AbsClause}}
+\newcommand*{\theHClause}{\theH@AbsClause}
+\newcommand*{\theHSubClause}{\theH@AbsClause}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% Zunächst wird vorübergehend auf manuelle Absatznummern umgeschaltet, weil
+% natürlich innerhalb der Überschrift keine Nummer gesetzt werden
+% soll. Trotzdem werden generell die Absatznummern eingeschaltet. Dann werden
+% die Optionen initialisiert und ausgeführt.
+% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
+% erhöht}^^A
+% \changes{v0.7b}{2014/11/03}{\texttt{contractAbsoluteClause}
+% flexibilisiert}^^A
+% \begin{macrocode}
+\newcommand*{\contract@paragraph}[1]{%
+ \stepcounter{\scrjura@env@type AbsoluteClause}%
+ \ManualPar\parnumbertrue
+ \let\contract@title\relax
+ \let\contract@entry\relax
+ \let\contract@head\relax
+ \let\contract@number\relax
+ \contract@dummyfalse
+ \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
+% \end{macrocode}
+% Wenn es kein Blindparagraph ist, werden Vorbereitung für nach der
+% Überschrift getroffen und der vertikale Abstand eingefügt.
+% \changes{v0.6a}{2012/10/08}{fehlendes \cs{par} ergänzt}
+% \begin{macrocode}
+ \ifcontract@dummy\else
+ \par
+ \@afterindentfalse
+ \addvspace{\contract@preskip}%
+ \fi
+% \end{macrocode}
+% Wenn die Nummer nicht manuell gesetzt wurde, wird die nächste Nummer
+% verwendet. Im anderen Fall muss die Nummer gesetzt und auch dafür gesorgt
+% werden, dass sowohl ein Label als auch hyperref diese Nummer verwenden.
+% \changes{v0.6b}{2013/04/16}{Verwendung von \cs{contract@Clauseformat}
+% auch bei manueller Nummerierung der Paragraphen.}^^A
+% \changes{v0.9c}{2015/05/13}{\cs{thecontractClause} durch
+% umgebungsabhängiges Macro ersetzt.}^^A
+% \begin{macrocode}
+ \ifx\contract@number\relax
+ \let\p@Clause\@empty
+ \expandafter\let\expandafter\theClause
+ \csname the\scrjura@env@type Clause\endcsname
+ \refstepcounter{Clause}%
+ \else
+ \begingroup
+ \let\@elt\@stpelt
+ \cl@Clause
+ \endgroup
+% \end{macrocode}
+% \changes{v0.9f}{2016/02/24}{\cs{protect}\cs{\@nameuse} statt
+% \cs{csname}\dots\cs{endcsname}}^^A
+% \begin{macrocode}
+ \protected@edef\theClause{%
+ \protect\@nameuse{\scrjura@env@type @Clauseformat}{\contract@number}%
+ }%
+ \protected@edef\@currentlabel{\theClause}%
+ \fi
+ \stepcounter{@AbsClause}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@skiphyperref\endcsname\relax
+ \else
+ \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
+ \csname if@skiphyperref\endcsname
+ \fi
+ \if@scrjura@skiphyperref\else
+ \hyper@refstepcounter{@AbsClause}%
+ \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
+ \fi
+% \end{macrocode}
+% Zwecks Vereinfachung wird ab hier so getan, als wäre es ein Unterabschnitt.
+% \begin{macrocode}
+ \let\theSubClause\theClause
+% \end{macrocode}
+% Außer für Blindparagraphen wird dann die Überschrift gesetzt, die
+% Verzeichniseinträge vorgenommen und der Kolumnentitel angepasst.
+% \changes{v0.7}{2013/04/28}{Abstand nach der Nummer als Bestandteil der
+% Nummer setzen}^^A
+% \changes{v0.9i}{2017/02/23}{Verwendung von \cs{ext@toc}}^^A
+% \begin{macrocode}
+ \ifcontract@dummy\else
+ \begingroup
+ \if@juratitlepagebreak\else\interlinepenalty\@M\fi
+ \contract@paragraph@font{\theClause
+ \ifx\contract@title\relax\else\enskip\fi}%
+ \contract@title
+ \ifx\contract@entry\relax\else
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {cpar}[\theClause]\contract@entry
+ \addxcontentsline{cpa}{cpar}[\theClause]\contract@entry
+ \fi
+ \ifx\contract@head\relax\else
+ \expandafter\Clausemark\expandafter{%
+ \expandafter\theSubClause\expandafter\enskip\contract@head}%
+ \fi
+ \par
+ \endgroup\nobreak\vskip\contract@postskip
+% \end{macrocode}
+% Zum Schluss wird noch dafür gesorgt, dass auch die Absätze korrekt
+% nummeriert werden können etc.
+% \begin{macrocode}
+ \scrjura@afterheading
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\contract@subparagraph}
+% \changes{v0.6a}{2012/10/08}{fehlendes \cs{par} ergänzt}%^^A
+% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
+% erhöht}^^A
+% \changes{v0.7}{2013/04/28}{Abstand nach der Nummer als Bestandteil der
+% Nummer setzen}^^A
+% \changes{v0.9i}{2017/02/23}{Verwendung von \cs{ext@toc}}^^A
+% Das entspricht bis auf wenige Kleinigkeiten, die Unterparagraphen betreffen,
+% |\contract@paragraph|
+% \begin{macrocode}
+\newcommand*{\contract@subparagraph}[1]{%
+ \stepcounter{\scrjura@env@type AbsoluteClause}%
+ \ManualPar\parnumbertrue
+ \let\contract@title\relax
+ \let\contract@entry\relax
+ \let\contract@head\relax
+ \let\contract@number\relax
+ \contract@dummyfalse
+ \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
+ \ifcontract@dummy\else
+ \par
+ \@afterindentfalse
+ \vskip\contract@preskip
+ \fi
+ \ifx\contract@number\relax
+ \let\p@SubClause\@empty
+ \let\theSubClause\thecontractSubClause
+ \refstepcounter{SubClause}%
+ \else
+ \begingroup
+ \let\@elt\@stpelt
+ \cl@SubClause
+ \endgroup
+ \protected@edef\theSubClause{\theClause\contract@number}%
+ \protected@edef\@currentlabel{\theSubClause}%
+ \fi
+ \stepcounter{@AbsClause}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@skiphyperref\endcsname\relax
+ \else
+ \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
+ \csname if@skiphyperref\endcsname
+ \fi
+ \if@scrjura@skiphyperref\else
+ \hyper@refstepcounter{@AbsClause}%
+ \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
+ \fi
+ \ifcontract@dummy\else
+ \begingroup
+ \if@juratitlepagebreak\else\interlinepenalty\@M\fi
+ \contract@paragraph@font{\theSubClause
+ \ifx\contract@title\relax\else\enskip\fi}%
+ \contract@title
+ \ifx\contract@entry\relax\else
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {cpar}[\theSubClause]\contract@entry
+ \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry
+ \fi
+ \ifx\contract@head\relax\else
+ \expandafter\Clausemark\expandafter{%
+ \expandafter\theSubClause\expandafter\enskip\contract@head}%
+ \fi
+ \par
+ \endgroup
+ \nobreak\vskip\contract@postskip
+ \scrjura@afterheading
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AutoPar}
+% \begin{macro}{\ManualPar}
+% Automatische oder manuelle Absatznummern für alle Umgebungen aktivieren.
+% \begin{macrocode}
+\newcommand*{\AutoPar}{%
+ \expandafter\let\expandafter\scrjura@everypar
+ \csname \scrjura@env@type @everypar\endcsname
+}
+\newcommand*{\ManualPar}{%
+ \let\scrjura@everypar\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scrjura@afterheading}
+% \changes{v0.7b}{2014/11/03}{\cs{jura@afterheading} umbenannt}^^A
+% \changes{v0.7b}{2014/11/03}{benötigt kein Argument mehr}^^A
+% Entspricht |\afterheading| mit Erweiterungen für automatischen
+% Absatznummern.
+% \begin{macrocode}
+\newcommand*{\scrjura@afterheading}{%
+ \@nobreaktrue
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \if@afterindent \else
+ {\setbox\z@\lastbox}%
+ \fi
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{%
+ \scrjura@everypar
+ }%
+ \fi
+ \scrjura@everypar
+ }%
+ \AutoPar
+}
+% \end{macrocode}
+% \begin{macro}{\scrjura@everypar}
+% \changes{v0.7b}{2014/11/03}{\cs{jura@everypar} umbenannt}^^A
+% Die Anweisung, die am Anfang von jedem Absatz auszuführen ist, um die
+% Nummer zu setzen. Außerhalb der Umgebungen ist das nichts.
+% \begin{macrocode}
+\newcommand*{\scrjura@everypar}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@doendpe}
+% Diese Anweisung wird von \LaTeX{} verwendet, um am Ende von Umgebungen die
+% kurz-, mittel- und langwirkenden Absatzaktionen zurückzusetzen. Damit hier
+% nicht die automatische Absatznummerierung abgeschaltet wird, wird sie neu
+% eingefügt.
+% \begin{macro}{\scrjura@doendpe}
+% \begin{macro}{\IncludeInRelease}
+% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}^^A
+% \begin{macro}{\@gobble@IncludeInRelease}
+% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}^^A
+% \begin{macro}{\EndIncludeInRelease}
+% \changes{v0.9e}{2015/11/03}{wird temporär benötigt}^^A
+% Seit \LaTeX{} 2015/01/01 ist \cs{@doendpe} abhängig von
+% \textsf{latexrelease} etwas anders definiert. Das wird hier
+% berücksichtigt. Damit das auch noch mit älteren Versionen von \LaTeX{}
+% funktioniert, ohne dass man extra \textsf{latexrelease} nachinstalliert,
+% wird hier ein wenig getrickst. Die Änderungen werden aber so temporär wie
+% möglich gehalten.
+% \begin{macrocode}
+\providecommand*{\IncludeInRelease}[3]{%
+ \PackageInfo{scrjura}{temporary definition of \string\IncludeInRelease}%
+ \ifstr{#1}{0000/00/00}{%
+ \let\IncludeInRelease\@undefined
+ \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}%
+ }{%
+ \let\EndIncludeInRelease\relax
+ \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{%
+ \let\@gobble@IncludeInRelease\@undefined
+ }%
+ \expandafter\@gobble@IncludeInRelease
+ }%
+}
+\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix}
+\CheckCommand*\@doendpe{\@endpetrue
+ \def\par{\@restorepar
+ \clubpenalty\@clubpenalty
+ \everypar{}\par\@endpefalse}\everypar
+ {{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}}
+\newcommand*{\scrjura@doendpe}{%
+ \@endpetrue
+ \def\par{%
+ \@restorepar
+ \clubpenalty\@clubpenalty
+ \everypar{%
+ \csname scrjura@everypar\endcsname
+ }%
+ \par\@endpefalse
+ }%
+ \everypar{%
+ {\setbox\z@\lastbox}\everypar{%
+ \csname scrjura@everypar\endcsname
+ }%
+ \@endpefalse
+ }%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix}
+\CheckCommand*\@doendpe{\@endpetrue
+ \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
+ {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
+\newcommand*{\scrjura@doendpe}{%
+ \@endpetrue
+ \def\par{%
+ \@restorepar\everypar{%
+ \csname scrjura@everypar\endcsname
+ }%
+ \par\@endpefalse
+ }%
+ \everypar{%
+ {\setbox\z@\lastbox}\everypar{%
+ \csname scrjura@everypar\endcsname
+ }%
+ \@endpefalse
+ }%
+}
+\EndIncludeInRelease
+% \end{macrocode}
+% \end{macro}^^A \EndIncludeInRelease
+% \end{macro}^^A \@gobble@IncludeInRelease
+% \end{macro}^^A \IncludeInRelease
+% \end{macro}^^A \scrjura@doendpe
+% \end{macro}^^A \doendpe
+% \end{macro}^^A \scrjura@everypar
+%
+% \begin{macro}{\l@cpar}
+% Verzeichnis-Eintrag für einen Vertrags-Paragraphen.
+% \begin{macrocode}
+\newcommand*{\l@cpar}[2]{%
+ \ifnum\value{juratoclevel}>\value{tocdepth}\else
+ \scr@ifundefinedorrelax{bprot@dottedtocline}{%
+ \@dottedtocline
+ }{%
+ \bprot@dottedtocline
+ }{\value{juratoclevel}}{\cpar@indent}{\cpar@numberwidth}{#1}{#2}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrjura@separator}
+% \changes{v0.7b}{2014/11/03}{\cs{jura@separator} umbenannt}^^A
+% Wird verwendet, damit Leerzeichen am Anfang oder Ende entfernt werden können.
+% \begin{macrocode}
+\DeclareRobustCommand*{\scrjura@separator}[1]{#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrjura@usetype}
+% \changes{v0.5d}{2010/04/28}{neu (intern)}^^A
+% \changes{v0.7b}{2014/11/03}{\cs{jura@usetype} umbenannt}^^A
+% In der Voreinstellung macht das erst einmal gar nichts, außer dass es robust
+% ist und \cs{jura@@usetype} aufruft.
+% \begin{macro}{\scrjura@@usetype}
+% \changes{v0.5d}{2010/04/28}{neu (intern)}^^A
+% \changes{v0.7b}{2014/11/03}{\cs{jura@@usetype} umbenannt}^^A
+% Das wiederum ist nicht robust und kann dadurch einfacher umdefiniert
+% werden. In der Voreinstellung macht das dann wirklich nichts, außer das
+% Argument zu fressen.
+% \begin{macrocode}
+\DeclareRobustCommand*{\scrjura@usetype}[1]{\scrjura@@usetype{#1}}
+\newcommand*{\scrjura@@usetype}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\contract@everypar}
+% |\scrjura@everpar| für Verträge.
+% \begin{macro}{\ifparnumber}
+% \changes{v0.6}{2011/09/29}{Definition des Schalters in die Definition der
+% Option verschoben}^^A
+% \begin{Counter}{par}
+% \begin{macro}{\thepar}
+% \begin{macro}{\theHpar}
+% \begin{macro}{\parformat}
+% \changes{v0.7}{2013/06/07}{neues Font-Element \texttt{parnumber}}^^A
+% \begin{macro}{\parformatseparation}
+% \changes{v0.9f}{2016/02/06}{neue Anweisung}^^A
+% \begin{macro}{\p@par}
+% \changes{v0.5d}{2010/04/28}{\cs{jura@usetype} mit Argument
+% \cs{jura@env@type} eingefügt}^^A
+% \begin{macro}{\withoutparnumber}
+% \changes{v3.25}{2017/12/19}{neu}^^A
+% Der Schalter gibt an, ob überhaupt mit Absatznummern gearbeitet werden
+% soll. Sind Absatznummern deaktiviert, werden auch keine manuellen
+% Absatznummern gesetzt. Die Absätze werden dann auch nicht gezählt. Ansonsten
+% werden die Absätze mit |\thepar| nummeriert. Wichtig ist, dass der
+% Absatzzähler mit den Paragraphen und den Unterparagraphen zurückgesetzt
+% wird. Außerdem muss beim Zitieren als Elternobjekt der Paragraph mit
+% ausgegeben werden.
+% \begin{macrocode}
+\newcounter{par}
+\renewcommand*{\thepar}{\arabic{par}}
+\newcommand*{\theHpar}{\theH@AbsClause-\Roman{par}}
+\newcommand*{\parformat}{(\thepar)}
+\newcommand*{\parformatseparation}{\nobreakspace}
+\newkomafont{parnumber}{}
+\renewcommand*\p@par{{\scrjura@usetype{\scrjura@env@type}\theSubClause\scrjura@separator{\nobreakspace}}}
+\@addtoreset{par}{Clause}
+\@addtoreset{par}{SubClause}
+\newcommand*{\withoutparnumber}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \changes{v0.5c}{2010/04/26}{erstes Argument von \cs{newmaxpar} und zweites
+% Argument von \cs{getmaxpar} ist \texttt{contract} nicht
+% \texttt{contractpars}}
+% \changes{v0.5c}{2010/04/26}{\cs{contract@Clauseformat} expandiert beim
+% Schreiben zu seinem Argument}
+% \changes{v0.7}{2013/04/18}{Zähler \texttt{contractAbsoluteClause} wird
+% verwendet}
+% \changes{v0.7}{2013/05/23}{Satznummer bei manuell nummerierten Absätzen
+% auf 0 statt 1 initialisiert, weil \cs{Sentence} die Nummer als erstes
+% hochzählt.}
+% \changes{v0.7}{2013/05/23}{Absatznummer von \cs{thisparnumber} beachtet}
+% \changes{v0.7}{2013/06/06}{Im Fall von nicht rein nummerischen
+% Absatznummern die Absätze auf jeden Fall nummerieren}
+% \changes{v0.7b}{2014/11/03}{\texttt{contractAbsoluteClause}
+% flexibilisiert}^^A
+% \changes{v0.9f}{2016/02/06}{\cs{nobreakspace} durch
+% \cs{parformatseparation} ersetzt}^^A
+% \changes{v0.9g}{2016/03/25}{in die \texttt{aux}-Datei nur bei
+% \cs{if@filesw} schreiben}^^A
+% \begin{macrocode}
+\newcommand*{\contract@everypar}{%
+ \ifparnumber
+ \ifx\scrjura@special@par\relax
+ \ifx\scrjura@special@reset@par\relax\else
+ \global\let\thepar\scrjura@special@reset@par
+ \global\let\scrjura@special@reset@par\relax
+ \fi
+ \refstepcounter{par}%
+ \refstepcounter{sentence}%
+ \else
+ \ifx\scrjura@special@reset@par\relax
+ \global\let\scrjura@special@reset@par\thepar
+ \fi
+ \global\let\thepar\scrjura@special@par
+ \global\let\scrjura@special@par\relax
+ \setcounter{sentence}{0}\refstepcounter{sentence}%
+ \fi
+ \begingroup
+ \if@filesw
+ \protected@write\@auxout{%
+ \expandafter\let\csname \scrjura@env@type @Clauseformat\endcsname
+ \@firstofone
+ }{%
+ \string\newmaxpar{\scrjura@env@type}%
+ {\csname the\scrjura@env@type
+ AbsoluteClause\endcsname}%
+ {\thepar}%
+ }%
+ \fi
+ \getmaxpar\@tempa{\scrjura@env@type}%
+ {\csname the\scrjura@env@type AbsoluteClause\endcsname}%
+ \typeout{Stored max is \@tempa}%
+ \def\reserved@a##1\@nnil{\def\@tempa{##1}}%
+ \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil
+ \ifnum \@tempcnta>\@ne
+ {\usekomafont{parnumber}{\parformat\parformatseparation}}%
+ \else
+ \def\reserved@a{\relax}%
+ \ifx\@tempa\reserved@a
+ \withoutparnumber
+ \else
+ {\usekomafont{parnumber}{\parformat\parformatseparation}}%
+ \fi
+ \fi
+ \endgroup
+ \else
+ \begingroup\withoutparnumber\endgroup
+ \setcounter{sentence}{-1}\refstepcounter{sentence}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thisparnumber}
+% \changes{v0.7}{2013/05/23}{neue Anweisung}
+% \begin{macro}{\scrjura@special@par}
+% \changes{v0.7}{2013/05/23}{neue Anweisung (intern)}
+% \begin{macro}{\scrjura@special@reset@par}
+% \changes{v0.7}{2013/05/23}{neue Anweisung (intern)}
+% Mit dieser Anweisung kann man eine Absatznummer manuell vergeben. Allerdings
+% muss die Nummer voll expandierbar sein!
+% \begin{macrocode}
+\newcommand*{\thisparnumber}[1]{%
+ \def\scrjura@special@par{#1}%
+}
+\newcommand*{\scrjura@special@par}{}
+\let\scrjura@special@par\relax
+\newcommand*{\scrjura@special@reset@par}{}
+\let\scrjura@special@reset@par\relax
+% \end{macrocode}
+% \end{macro}^^A \scrjura@special@reset@par
+% \end{macro}^^A \scrjura@special@par
+% \end{macro}^^A\thisparnumber
+%
+%
+% \begin{macro}{\refL}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@L}
+% Das gleiche wie |\ref| aber zwingend mit der Langform.
+% \begin{macrocode}
+\newcommand*{\refL}{\kernel@ifstar {\ref@L*}{\ref@L{}}}
+\newcommand*{\ref@L}[2]{%
+ \begingroup
+ \def\parcite@format{0}%
+ \let\sentencecite@format\parcite@format
+ \ref#1{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refS}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@S}
+% Das gleiche wie |\ref| aber zwingend mit der Kurzform.
+% \begin{macrocode}
+\newcommand*{\refS}{\kernel@ifstar {\ref@S*}{\ref@S{}}}
+\newcommand*{\ref@S}[2]{%
+ \begingroup
+ \def\parcite@format{1}%
+ \let\sentencecite@format\parcite@format
+ \ref#1{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refN}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@N}
+% Das gleiche wie |\ref| aber zwingend mit der numerischen Form.
+% \begin{macrocode}
+\newcommand*{\refN}{\kernel@ifstar {\ref@N*}{\ref@N{}}}
+\newcommand*{\ref@N}[2]{%
+ \begingroup
+ \def\parcite@format{2}%
+ \let\sentencecite@format\parcite@format
+ \ref#1{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refClause}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@Clause}
+% Zitiert nur den Paragraphen eines Paragraphen, eines Absatzes oder eines
+% Satzes. Für mehr Kompatibilität mit hyperref gibt es mit hyperref auch eine
+% Sternform. Ohne hyperref produziert diese nur Unsinn.
+% \begin{macrocode}
+\newcommand*{\refClause}{%
+ \kernel@ifstar {\ref@Clause*}{\ref@Clause{}}
+}
+\newcommand*{\ref@Clause}[2]{%
+ \expandafter\ifx\csname r@#2\endcsname\relax
+ \ref#1{#2}%
+ \else
+ \begingroup
+% \end{macrocode}
+% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@tempb
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\scrjura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#2\endcsname\noexpand\@nil}%
+% \end{macrocode}
+% Den ersten Teil von |\@tempa| in |\@tempa| ablegen.
+% \begin{macrocode}
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \@tempa\@nil}%
+ \let\@@protect\protect
+ \let\protect\noexpand
+ \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref#1{#2}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refClauseN}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@ClauseN}
+% Zitiert nur den Paragraphen eines Paragraphen, eines Absatzes oder eines
+% Satzes. Für mehr Kompatibilität mit hyperref gibt es mit hyperref auch eine
+% Sternform. Ohne hyperref produziert diese nur Unsinn.
+% \begin{macrocode}
+\newcommand*{\refClauseN}{%
+ \kernel@ifstar {\ref@ClauseN*}{\ref@ClauseN{}}
+}
+\newcommand*{\ref@ClauseN}[2]{%
+ \begingroup
+ \let\Clauseformat\relax
+ \ref@Clause{#1}{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refPar}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@Par}
+% Zitiert nur den Absatz eines Absatzes oder eines Satzes. Für mehr
+% Kompatibilität mit hyperref gibt es mit hyperref auch eine Sternform. Ohne
+% hyperref produziert diese nur Unsinn.
+% \begin{macrocode}
+\newcommand*{\refPar}{%
+ \kernel@ifstar {\ref@Par*}{\ref@Par{}}
+}
+\newcommand*{\ref@Par}[2]{%
+ \expandafter\ifx\csname r@#2\endcsname\relax
+ \ref#1{#2}%
+ \else
+ \begingroup
+% \end{macrocode}
+% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@tempb
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\scrjura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#2\endcsname\noexpand\@nil}%
+% \end{macrocode}
+% Den zweiten Teil von |\@tempa| in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2##3\@nil{##2}%
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \@tempa{%
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#2' on page \thepage \space
+ with undefined par number}%
+ }\noexpand\@nil}%
+ \let\@@protect\protect
+ \let\protect\noexpand
+ \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref#1{#2}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refParL}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@ParX}
+% \begin{macrocode}
+% Das Gleiche zwingend lang.
+\newcommand*{\refParL}{%
+ \kernel@ifstar {\ref@ParX0*}{\ref@ParX0{}}
+}
+\newcommand*{\ref@ParX}[3]{%
+ \begingroup
+ \def\parcite@format{#1}%
+ \let\sentencecite@format\parcite@format
+ \ref@Par{#2}{#3}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refParS}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Das Gleiche zwingend kurz.
+% \begin{macrocode}
+\newcommand*{\refParS}{%
+ \kernel@ifstar {\ref@ParX1*}{\ref@ParX1{}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refParN}
+% \begin{macro}{\ref@ParN}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@@ParN}
+% Das Gleiche zwingend nummerisch.
+% \begin{macrocode}
+\newcommand*{\refParN}{%
+ \kernel@ifstar {\ref@ParN2*}{\ref@ParN2{}}
+}
+\newcommand*{\ref@ParN}[2]{%
+ \kernel@ifnextchar [%]
+ {\ref@@ParN{#1}{#2}}%
+ {\ref@ParX{#1}{#2}}%
+}
+\newcommand*{\ref@@ParN}{}
+\def\ref@@ParN#1#2[#3]#4{%
+ \begingroup
+ \renewcommand*{\parnumericformat}[1]{%
+ \csname @#3\endcsname{\number ##1\relax}%
+ }%
+ \ref@ParX{#1}{#2}{#4}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refSentence}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@Sentence}
+% Zitiert nur den Satz eines Satzes. Für mehr
+% Kompatibilität mit hyperref gibt es mit hyperref auch eine Sternform. Ohne
+% hyperref produziert diese nur Unsinn.
+% \begin{macrocode}
+\newcommand*{\refSentence}{%
+ \kernel@ifstar {\ref@Sentence*}{\ref@Sentence{}}
+}
+\newcommand*{\ref@Sentence}[2]{%
+ \expandafter\ifx\csname r@#2\endcsname\relax
+ \ref#1{#2}%
+ \else
+ \begingroup
+% \end{macrocode}
+% Alle Teile der Referenz bis auf den ersten in |\@tempb| ablegen.
+% \begin{macrocode}
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@tempb
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
+% \end{macrocode}
+% Den ersten Teil der Referenz in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2\@nil{##1}%
+ \let\scrjura@separator\@gobble
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \csname r@#2\endcsname\noexpand\@nil}%
+% \end{macrocode}
+% Den dritten Teil von |\@tempa| in |\@tempa| ablegen.
+% \begin{macrocode}
+ \def\@tempc##1##2##3##4\@nil{##3}%
+ \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
+ \@tempa{}{%
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ??}%
+ \@latex@warning{Reference `#2' on page \thepage \space
+ with undefined sentence number}%
+ }\noexpand\@nil}%
+ \let\@@protect\protect
+ \let\protect\noexpand
+ \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
+ \let\protect\@@protect
+ \ref#1{#2}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refSentenceL}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ref@SentenceX}
+% \begin{macrocode}
+% Das Gleiche zwingend lang.
+\newcommand*{\refSentenceL}{%
+ \kernel@ifstar {\ref@SentenceX0*}{\ref@SentenceX0{}}
+}
+\newcommand*{\ref@SentenceX}[3]{%
+ \begingroup
+ \def\parcite@format{#1}%
+ \let\sentencecite@format\parcite@format
+ \ref@Sentence{#2}{#3}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\refSentenceS}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Das Gleiche zwingend kurz.
+% \begin{macrocode}
+\newcommand*{\refSentenceS}{%
+ \kernel@ifstar {\ref@SentenceX1*}{\ref@SentenceX1{}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refSentenceN}
+% \changes{v0.9h}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Das Gleiche zwingend nummerisch.
+% \begin{macrocode}
+\newcommand*{\refSentenceN}{%
+ \kernel@ifstar {\ref@SentenceX2*}{\ref@SentenceX2{}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\contract@sentence}
+% \changes{v0.7a}{2014/01/28}{auf \cs{textsuperscript} umgestellt}^^A
+% \changes{v0.7a}{2014/01/28}{\cs{nobreak}\cs{hskip}\cs{z@} eingefügt, um
+% die Trennung des ersten Worts nach der Satzmarkierung zu ermöglichen}^^A
+% Sätze nummerieren.
+% \begin{Counter}{sentence}
+% \begin{macro}{\thesentence}
+% \begin{macro}{\theHsentence}
+% \begin{macro}{\p@sentence}
+% Der Zähler wird für die Nummerierung der Sätze verwendet. Dabei ist wichtig,
+% dass beim Zitieren der Sätze als Elternobjekt der Absatz mit ausgegeben wird.
+% \begin{macrocode}
+\newcounter{sentence}[par]
+\renewcommand*{\thesentence}{\arabic{sentence}}
+\newcommand*{\theHsentence}{\theHpar-\arabic{sentence}}
+\renewcommand*{\p@sentence}{\expandafter\p@@sentence}
+\newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}%
+ \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}
+\newcommand*{\contract@sentence}{%
+% \end{macrocode}
+% \changes{v0.9e}{2015/11/04}{erst den Absatz beginnen, dann die Nummer
+% setzen}^^A
+% \changes{v3.26}{2018/07/20}{neues Element \texttt{sentencenumber}}^^A
+% \changes{v3.26}{2018/07/20}{neue Formatierung \cs{sentencenumberformat}}^^A
+% Bei der Nummerierung ist wichtig, dass am Anfang des Absatzes die
+% Satznummer nicht erhöht wird, weil das der Absatz bereits erledigt. Damit
+% das funktioniert muss aber vor der Ausgabe erst einmal der Absatz begonnen
+% werden. Befinden wir uns allerdings unmittelbar hinter einer
+% \texttt{minipage}, einer Liste oder einer \cs{parbox} tun wir so, als wären
+% wir nicht am Anfang des Absatzes.
+% \begin{macrocode}
+ \ifvmode
+ \if@endpe
+ \refstepcounter{sentence}%
+ \else
+ \leavevmode
+ \fi
+ \else
+ \refstepcounter{sentence}%
+ \fi
+ {\usekomafont{sentencenumber}{\sentencenumberformat}}%
+ \nobreak\hskip\z@
+}
+% \end{macrocode}
+% \begin{macro}{\sentencenumberformat}
+% \changes{v3.26}{2018/07/20}{neu}^^A
+% Formatierung und Schrift können über \cs{sentencenumberformat} und Element
+% \texttt{sentencenumber} geändert werden. Voreinstellung für
+% \cs{sentenceformat} ist \cs{textsuperscript}.
+% \begin{macrocode}
+\newkomafont{sentencenumber}{}
+\newcommand*{\sentencenumberformat}{\textsuperscript{\thesentence}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+%
+% \begin{macro}{\parciteformat}
+% \changes{v0.5d}{2010/04/28}{Argument verschoben}
+% Zitierstil für Absätze.
+% \begin{macrocode}
+\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}}
+\newcommand*{\parciteformat}[1]{%
+ \ifcase \parcite@format
+ \expandafter\parlongformat
+ \or
+ \expandafter\parshortformat
+ \or
+ \expandafter\parnumericformat
+ \else
+ \unskip\expandafter\@gobble
+ \fi
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sentenceciteformat}
+% \changes{v0.5d}{2010/04/28}{Argument verschoben}
+% Zitierstil für Sätze. In der Voreinstellung ist das |\@arabic|.
+% \begin{macrocode}
+\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}}
+\newcommand*{\sentenceciteformat}[1]{%
+ \ifcase \sentencecite@format
+ \expandafter\sentencelongformat
+ \or
+ \expandafter\sentenceshortformat
+ \or
+ \expandafter\sentencenumericformat
+ \else
+ \unskip\expandafter\@gobble
+ \fi
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parlongformat}
+% \begin{macro}{\parshortformat}
+% \begin{macro}{\parnumericformat}
+% \begin{macro}{\sentencelongformat}
+% \begin{macro}{\sentenceshortformat}
+% \begin{macro}{\sentencenumericformat}
+% Formatierung in den sechs Formen.
+% \begin{macrocode}
+\newcommand*{\parlongformat}[1]{\parname~#1}
+\newcommand*{\parshortformat}[1]{\parshortname~#1}
+\newcommand*{\parnumericformat}[1]{\@Roman{\number #1\relax}}
+\newcommand*{\sentencelongformat}[1]{\sentencename~#1}
+\newcommand*{\sentenceshortformat}[1]{\sentenceshortname~#1}
+\newcommand*{\sentencenumericformat}[1]{\@arabic{\number #1\relax}.}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\parname}
+% \begin{macro}{\parshortname}
+% \begin{macro}{\sentencename}
+% \begin{macro}{\sentenceshortname}
+% \begin{macro}{\scrjura@lang@error}
+% \changes{v0.7}{2013/09/19}{Verwendung von \cs{PackageError} an Stelle von
+% \cs{PackageErrorNoLine}}^^A
+% \changes{v3.24}{2017/05/29}{Anpassung an Sprachänderung
+% (\texttt{usenglish} und \texttt{ukenglish} statt \texttt{USenglish} und
+% \texttt{UKenglish}) in \textsf{babel}~3.10}^^A
+% Der Name eines Absatzes und eines Satzes. Die englischen Namen wurden von
+% »m.eik« beigesteuert.
+% \begin{macrocode}
+\newcommand*{\parname}{Paragraph}
+\AtBeginDocument{%
+ \providecaptionname{german,ngerman,austrian,naustrian}\parname{Absatz}%
+ \providecaptionname{german,ngerman,austrian,naustrian}\parshortname{Abs.}%
+ \providecaptionname{german,ngerman,austrian,naustrian}\sentencename{Satz}%
+ \providecaptionname{german,ngerman,austrian,naustrian}\sentenceshortname{S.}%
+ \providecaptionname{english,american,british,canadian,%
+ USenglish,UKenglish,usenglish,ukenglish}\parname{paragraph}%
+ \providecaptionname{english,american,british,canadian,%
+ USenglish,UKenglish,usenglish,ukenglish}\parshortname{par.}%
+ \providecaptionname{english,american,british,canadian,%
+ USenglish,UKenglish,usenglish,ukenglish}\sentencename{sentence}%
+ \providecaptionname{english,american,british,canadian,%
+ USenglish,UKenglish,usenglish,ukenglish}\sentenceshortname{sent.}%
+}
+\providecommand*{\parname}{\scrjura@lang@error{\parname}}
+\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}}
+\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}}
+\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}}
+\newcommand*{\scrjura@lang@error}[1]{%
+ \PackageError{scrjura}{%
+ current language not supported%
+ }{%
+ Currently scrjura only supports languages `german', `ngerman',
+ `austrian',\MessageBreak
+ `naustrian', `english', `american', `british', `canadian',
+ `USenglish',\MessageBreak
+ `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak
+ It seems, that you are using another language (maybe `\languagename') or
+ that\MessageBreak
+ your language selection isn't compatible to package `babel'.\MessageBreak
+ Because of this you have to define `\string#1' by yourself!\MessageBreak
+ It would be nice if you'll send your definitions to the author.%
+ }%
+ \textbf{??}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\newmaxpar}
+% \changes{v0.6b}{2013/04/16}{\cs{\#1@Clauseformat} expandiert zu seinem
+% Argument}^^A
+% \begin{macro}{\getmaxpar}
+% \changes{v0.6}{2011/09/30}{Argument 3 muss mit \cs{protected@edef}
+% expandiert werden}^^A
+% \changes{v0.5c}{2010/04/26}{\cs{protected@edef} durch \cs{edef}
+% ersetzt}^^A
+% \changes{v0.5c}{2010/04/26}{\cs{\#2@Clauseformat} expandiert zu seinem
+% Argument}^^A
+% Noch zwei Hilfsmakros, um Zähler in der aux-Datei zwischenzuspeichern und
+% auch dann Werte zu holen, wenn sie nicht in der aux-Datei stehen.
+% \begin{macrocode}
+\newcommand*{\newmaxpar}[3]{%
+ \begingroup
+ \expandafter\let\csname #1@Clauseformat\endcsname\@firstofone
+ \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa
+ \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}%
+ \endgroup
+}
+\newcommand*{\getmaxpar}[3]{%
+ \begingroup
+ \expandafter\let\csname #2@Clauseformat\endcsname\@firstofone
+ \protected@edef\@tempa{#3}%
+ \@onelevel@sanitize\@tempa
+ \expandafter\ifx \csname max@#2@\@tempa\endcsname\relax
+ \edef\@tempa{\endgroup\edef\noexpand#1{\expandafter\the\value{par}}}%
+ \else
+ \edef\@tempa{\endgroup
+ \edef\noexpand#1{\csname max@#2@\@tempa\endcsname}}%
+ \fi
+ \@tempa
+}
+% \end{macrocode}
+% \changes{v0.7b}{2014/11/10}{Notfallcode in die \texttt{aux}-Datei}^^A
+% \changes{v0.9g}{2015/03/25}{in die \texttt{aux}-Datei nur bei
+% \cs{if@filesw} schreiben}^^A
+% Da manche Anwender \texttt{scrjura} aus einem Dokument entfernen, ohne die
+% \texttt{aux}-Dateien zu löschen, sehen wir eine Notlösung vor, um
+% Fehlermeldungen wegen nicht definiertem \cs{newmaxpar} zu vermeiden.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand*\string\newmaxpar[3]{}
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrjura.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-latin-1
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx
new file mode 100644
index 0000000000..c347177f85
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-basics.dtx
@@ -0,0 +1,4677 @@
+% \CheckSum{3893}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-basics.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-basics.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-basics.dtx 3063 2019-02-01 07:39:11Z kohm $
+%<prepare>%%% (run: prepare)
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<load>%%% (run: load)
+%<package&prepare>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-02-01 08:39:11 +0100 (Fri, 01 Feb 2019) $
+ \def\filerevision$#1: #2 ${\def\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \xdef\fileinfo{\filedate\space\filerevision\space}
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel_basics.dtx}%
+ [\filedate\space\filerevision\space
+ }
+\reserved@a
+%</dtx>
+%<*dtx|(package&prepare)>
+%<package>\ProvidesPackage{%
+%<package&base> scrbase%
+%<package&koma> scrkbase%
+%<package>}[%
+%!KOMAScriptVersion
+ package
+%<*dtx>
+ source
+%</dtx>
+ (%
+%<base> KOMA-Script-independent
+%<koma> KOMA-Script-dependent
+ basics and keyval usage)]
+%</dtx|(package&prepare)>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2002}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrbase.sty}{%
+ \from{scrkernel-version.dtx}{package,scrbase}%
+ \from{scrkernel-basics.dtx}{package,prepare,base}%
+ \from{scrkernel-basics.dtx}{package,option,base}%
+ \from{scrkernel-language.dtx}{package,option,base}%
+ \from{scrlfile.dtx}{load}%
+ \from{scrkernel-basics.dtx}{package,body,base}%
+ \from{scrkernel-language.dtx}{package,body,base}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-basics.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Revision \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v1.0}{2002/07/06}{Beginn der ersten Version}^^A
+% \changes{v3.12}{203/03/05}{Verwendung von \cs{@tempa}, \cs{@tempb},
+% \cs{@tempc} eliminiert}
+%
+% \section{Grundlegenden \KOMAScript-Erweiterungen}
+%
+% Neue Versionen von \KOMAScript{} machen zunehmend Gebrauch vom
+% \textsf{keyval}-Paket. Das \textsf{keyval}-Paket ist Bestandteil des
+% \textsf{graphics}-Pakets und muss als solches auf allen
+% \TeX-Systemen mit \LaTeX{} enthalten sein. Es genügt jedoch in
+% einigen Punkten nicht den Anforderungen von \KOMAScript{}. Deshalb
+% werden hier Erweiterungen vorgenommen, die von \KOMAScript-Klassen
+% und \KOMAScript-Paketen verwendet werden können.
+%
+% Darüber hinaus werden immer mehr Teile von \KOMAScript{} von mehr als einem
+% Paket oder von Paketen und Klassen verwendet. Diese grundlegenden Dinge
+% wurden daher in zwei Pakete, \textsf{scrbase} (für Dinge, die auch von
+% anderen Klassen und Paketen genutzt werden können) und \textsf{scrkbase}
+% (für Dinge, die \KOMAScript vorbehalten bleiben), ausgegliedert. Dadurch
+% werden die Pakete und Klassen selbst kleiner und die können trotzdem
+% unabhängig voneinander verwendet werden. Selbstverständlich kann man dieses
+% Paket auch ohne den Rest von \KOMAScript{} zum Einsatz bringen.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*load>
+% \fi
+%
+% \subsection{Laden des Pakets}
+% Wer das Paket lädt, tut das allerdings in der Regel sogar bereits
+% vor der Definition der Optionen mit:
+% \begin{macrocode}
+\RequirePackage{scrkbase}[\KOMAScriptVersion]
+% \end{macrocode}
+%
+% \iffalse
+%</load>
+%<*prepare>
+% \fi
+%
+% \subsection{\eTeX-Test}
+% \changes{v3.02c}{2009/02/19}{Fehlermeldung, wenn nicht \eTeX{} verwendet
+% wird}
+%
+% \begin{macrocode}
+%<*base>
+\begingroup
+ \def\reserved@b{}%
+ \def\reserved@a#1{%
+ \PackageError{scrbase}{seems you are not running e-TeX#1}{%
+ Since 2004 the LaTeX team recommends to use e-TeX.\MessageBreak
+ KOMA-Script since version 2.95 uses several e-TeX features.\MessageBreak
+ At actual systems `latex' should already use e-TeX.\MessageBreak
+ At deprecated systems it may be called `elatex'.\MessageBreak
+ Use either unsupported KOMA-Script up to version 2.9u or\MessageBreak
+ ask you administrator for LaTeX using e-TeX#1.\MessageBreak
+ Not using e-TeX#1 is a fatal error!\MessageBreak
+ Processing cannot be continued!}%
+ \endgroup
+ \batchmode \errmessage{}\csname @@end\endcsname\end\relax
+ \csname endinput\endcsname
+ }%
+ \expandafter\ifx\csname eTeXversion\endcsname\relax\else
+ \ifnum\eTeXversion <2
+ \def\reserved@b{ V 2}%
+ \else
+ \let\reserved@a\endgroup
+ \fi
+ \fi
+\expandafter\reserved@a\expandafter{\reserved@b}
+%</base>
+% \end{macrocode}
+%
+%
+% \subsection{Der abhängige Teil lädt den unabhängigen Teil}
+%
+% \begin{macrocode}
+%<koma>\RequirePackage{scrbase}[\KOMAScriptVersion]
+% \end{macrocode}
+%
+% \subsection{Laden von \textsf{keyval}}
+%
+% Hier wird nicht nur das Paket geladen, was ruckzuck mit:
+% \begin{macrocode}
+%<base>\RequirePackage{keyval}
+% \end{macrocode}
+% erledigt ist.
+%
+% \subsection{Schutz vor Umdefinierung von
+% \LaTeX-Kern-Anweisungen durch
+% andere Pakete}
+% Einige Pakete wie \textsf{amsgen} definieren \LaTeX-Kern-Anweisungen so um,
+% dass sie nicht mehr korrekt funktionieren. Ich muss dann leider dafür
+% sorgen, dass \KOMAScript{} damit keine Probleme hat. Die Klassen sind dabei
+% in der günstigen Situation, dass sie ggf. einfach die vorhandene Definition
+% testen und übernehmen können. Die Pakete müssen hingegen dummer Weise selbst
+% dafür sorgen, dass es irgendwie funktioniert.
+%
+% \begin{macro}{\kernel@ifstar}
+% \changes{v3.20}{2016/04/12}{neu (intern)}
+% Ich hoffe ja, dass der \LaTeX-Kern zukünftig diese Anweisung definiert und
+% das dann auch funktioniert. Damit es aber auch mit älteren \LaTeX-Versionen
+% geht, sorge ich hier vor.
+% \begin{macrocode}
+%<base>\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \kernel@ifstar
+%
+% \subsection{Test von Anweisungen}
+%
+% \begin{macro}{\scr@ifundefinedorrelax}
+% \changes{v2.95c}{2006/08/12}{neu (intern)}^^A
+% \changes{v2.97b}{2007/03/08}{vermurkste Logik korrigiert}^^A
+% \changes{v2.97c}{2007/04/18}{vermurkste Funktion korrigiert}^^A
+% \changes{v2.97c}{2007/04/18}{von \cs{scr@ifundefined} umbenannt}
+% \changes{v3.02c}{2009/02/19}{Sonderbehandlung für nicht \eTeX entfernt}^^A
+% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber
+% ein undefiniertes Makro nicht als \cs{relax}. Es muss bereits hier definiert
+% werden, weil es gleich verwendet wird.
+% \begin{macrocode}
+%<*base>
+\newcommand{\scr@ifundefinedorrelax}[1]{%
+ \ifcsname #1\endcsname
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifundefinedorrelax
+%
+%
+% \subsection{Erweiterung von Meldungen}
+%
+% \begin{macro}{\PackageErrorNoLine}
+% \changes{v3.12}{2013/09/19}{neu}^^A
+% Dieses Makro wird zwar bereits seit langem für einige wenige Fehlermeldungen
+% verwendet, existierte bisher aber nicht. Es wird für Fehlermeldungen
+% verwendet, denen keine eindeutige Zeilennummer zugeordnet werden kann. In
+% der Regel ist dies zu vermeiden und besser \cs{PackageError} zu verwenden.
+% \begin{macrocode}
+%<*base>
+\newcommand*\PackageErrorNoLine[2]{%
+ \PackageError{#1}{#2\@gobble}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Basis)}
+%
+% Üblicherweise verwendet \KOMAScript{} für alle
+% \textsf{keyval}-Schlüssel die gleiche Bereichskennung
+% "`\texttt{KOMA}"'. Dadurch ist es möglich, dass Pakete die Schlüssel
+% der Klassen umdefinieren und dass jeder Teil von \KOMAScript{} die
+% Schlüssel jedes anderen Teils ausführen kann -- sobald sie definiert
+% sind.
+%
+% \begin{macro}{\DefineFamily}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\DefineFamilyMember}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \begin{macro}{\DefineFamilyKey}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.12}{2013/03/04}{Setzen von \cs{FamilyKeyState}}
+% \begin{macro}{\scr@if@family}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
+% \begin{macro}{\scr@if@familymember}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
+% \begin{macro}{\scr@define@family@key}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
+% \begin{macro}{\scr@define@family@key@nodefault}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
+% \changes{v3.18a}{2015/07/03}{fehlendes \% ergänzt}^^A
+% Familie, Familienmitglied und \textsf{keyval}-Schlüssel für ein
+% Familienmitglied definieren. Dabei wird als Familienmitglied per Default der
+% (Datei-)Name des aktuellen Pakets bzw. der aktuellen Klasse verwendet.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\DefineFamily}[1]{%
+ \scr@ifundefinedorrelax{#1@key@familylist}{%
+ \@namedef{#1@key@familylist}{}%
+ }{}%
+}
+\newcommand*{\scr@if@family}[2]{%
+ \scr@ifundefinedorrelax{#1@key@familylist}{%
+ \PackageError{scrbase}{%
+ unknown family `#1'%
+ }{%
+ You've tried to #2 for family `#1'.\MessageBreak
+ This my be done only for previous defined families.\MessageBreak
+ You should call `\string\DefineFamily{#1}' first.%
+ }%
+ }%
+}
+\newcommand*{\DefineFamilyMember}[2][.\@currname.\@currext]{%
+ \scr@if@family{#2}{define a family member}{%
+ \edef\reserved@a{%
+ \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}%
+ \reserved@a
+ \ifin@\else
+ \expandafter\edef\csname #2@key@familylist\endcsname{%
+ \@nameuse{#2@key@familylist}#2#1,}%
+ \fi
+ }%
+}
+\newcommand*{\scr@if@familymember}[3]{%
+ \scr@if@family{#2}{#3}{%
+ \edef\reserved@a{%
+ \noexpand\in@{#2#1,}{\csname #2@key@familylist\endcsname}}%
+ \reserved@a
+ \ifin@
+ \expandafter\@firstofone
+ \else
+ \PackageError{scrbase}{%
+ unknown member `#1' at family `#2'%
+ }{%
+ You've tried to #3 for member `#1' of family `#2'.\MessageBreak
+ This my be done only for previous defined family members.\MessageBreak
+ You should call `\string\DefineFamilyMember[{#1}]{#2}' first.%
+ }%
+ \expandafter\@gobble
+ \fi
+ }%
+}
+\newcommand*{\DefineFamilyKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar[%]
+ {%
+ \edef\reserved@a{#1}%
+ \expandafter\scr@define@family@key
+ \expandafter{\reserved@a}{#2}{#3}%
+ }{%
+ \edef\reserved@a{#1}%
+ \expandafter\scr@define@family@key@nodefault
+ \expandafter{\reserved@a}{#2}{#3}%
+ }%
+}
+\newcommand{\scr@define@family@key}{}
+\long\def\scr@define@family@key#1#2#3[#4]#5{%
+ \scr@if@familymember{#1}{#2}{define a key}{%
+ \define@key{#2#1}{#3}[{#4}]{%
+ \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}%
+ \FamilyKeyStateUnknown
+ #5%
+ \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}%
+ }%
+ }%
+}
+\newcommand{\scr@define@family@key@nodefault}[4]{%
+ \scr@if@familymember{#1}{#2}{define a key}{%
+ \define@key{#2#1}{#3}{%
+ \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}%
+ \FamilyKeyStateUnknown
+ #4%
+ \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}%
+ }%
+ \@namedef{KV@#2#1@#3@default}{%
+ \def\FamilyOfKey{#2}\def\FamilyMemberOfKey{#1}%
+ \FamilyKeyStateNeedValue
+ }%
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@define@family@key@nodefault
+% \end{macro}^^A \scr@define@family@key
+% \end{macro}^^A \scr@if@familymember
+% \end{macro}^^A \scr@if@family
+% \end{macro}^^A \DefineFamilyKey
+% \end{macro}^^A \DefineFamilyMember
+% \end{macro}^^A \DefineFamily
+%
+% \begin{macro}{\RelaxFamilyKey}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% Undefiniert einen Schlüssel. Irgendwelche Hilfsmakros werden dabei nicht
+% angetastet. Stattdessen wird nur der Schlüssel selbst und ggf. ein
+% Defaultwert als \cs{relax} definiert, so dass er nicht mehr verwendet werden
+% kann.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\RelaxFamilyKey}[3][.\@currname.\@currext]{%
+ \scr@ifundefinedorrelax{KV@#2#1@#3}{}{%
+ \expandafter\let\csname KV@#2#1@#3\endcsname\relax
+ }%
+ \scr@ifundefinedorrelax{KV@#2#1@#3@default}{}{%
+ \expandafter\let\csname KV@#2#1@#3@default\endcsname\relax
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FamilyKeyState}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
+% \begin{macro}{\FamilyKeyStateProcessed}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
+% \begin{macro}{\FamilyKeyStateUnknown}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}%
+% \begin{macro}{\FamilyKeyStateUnknownValue}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}%
+% \begin{macro}{\FamilyKeyStateNeedValue}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}%
+% \cs{FamilyKeyState} gibt den Status der Verarbeitung eines Schlüssels
+% an. In der Voreinstellung wird der Status beim Aufruf des Schlüssels auf
+% \cs{FamilyKeyStateUnknown} gesetzt, was anzeigt, dass der Zustand
+% unbekannnt ist, der Schlüssel aber möglicherweise verarbeitet
+% wurde. Daneben gibt es den Zustand \cs{FamilyKeyStateProcessed}, der
+% anzeigt, dass der Schlüssel komplett verarbeitet wurde. Alternativ kann
+% das Makro einen Text enthalten, der ggf. Teil einer Fehlermeldung, einer
+% Warnung oder einer Information über Probleme bei der Verarbeitung wird. Es
+% ist zu beachten, dass \cs{FamilyKeyState} nur unmittelbar nach der
+% Verarbeitung gültig ist.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyKeyState}{}
+\newcommand*{\FamilyKeyStateUnknown}{%
+ \let\FamilyKeyState\FamilyKeyStateUnknown
+}
+\newcommand*{\FamilyKeyStateUnknownValue}{%
+ \let\FamilyKeyState\FamilyKeyStateUnknownValue
+}
+\newcommand*{\FamilyKeyStateNeedValue}{%
+ \let\FamilyKeyState\FamilyKeyStateNeedValue
+}
+\newcommand*{\FamilyKeyStateProcessed}{%
+ \let\FamilyKeyState\FamilyKeyStateProcessed
+}
+\let\FamilyKeyState\FamilyKeyStateUnknown
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \FamilyKeyStateNeedValue
+% \end{macro}^^A \FamilyKeyStateUnknownValue
+% \end{macro}^^A \FamilyKeyStateUnknown
+% \end{macro}^^A \FamilyKeyStateProcessed
+% \end{macro}^^A \FamilyKeyState
+%
+% \begin{macro}{\FamilyOfKey}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
+% \begin{macro}{\FamilyMemberOfKey}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
+% Geben innerhalb der Verarbeitung eines Schlüssels dessen Familie bzw. das
+% zugehörige Familienmitglied an.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyOfKey}{}
+\newcommand*{\FamilyMemberOfKey}{}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \FamilyMemberOfKey
+% \end{macro}^^A \FamilyOfKey
+%
+% \begin{macro}{\KOMA@key}
+% \changes{v2.97c}{2007/04/19}{neues optionales Argument}^^A
+% \changes{v3.17}{2015/02/24}{rudimentäre Funktionalität zur Speicherung von
+% Optionen}^^A
+% \begin{macro}{\KOMA@key@familylist}
+% \textsf{keyval}-Schlüssel für \KOMAScript{} werden mit \cs{KOMAkey}
+% definiert, damit auch die Familie korrekt gesetzt und ggf. der Liste der
+% Familien (\cs{KOMA@key@familylist}) hinzugefügt wird.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@key}[1][.\@currname.\@currext]{%
+ \DefineFamilyMember[{#1}]{KOMA}%
+ \@ifundefined{scr@kav@KOMA#1}{\@namedef{scr@kav@KOMA#1}{}}{}%
+ \DefineFamilyKey[{#1}]{KOMA}%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@add}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro speichert ein \texttt{key=value}-Paar in der internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@add}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@add{#1}%
+ }{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{\do{{#2}{#3}}}%
+ }%
+}
+% \end{macrocode}
+%</koma>
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@xadd}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro speichert ein zuvor expandiertes \texttt{key=value}-Paar in der
+% internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@xadd}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@xadd{#1}%
+ }{%
+ \protected@edef\reserved@a{{#2}{#3}}%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\expandafter\endcsname
+ \expandafter{\expandafter\do\expandafter{\reserved@a}}%
+ }%
+}
+% \end{macrocode}
+%</koma>
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@remove}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro entfernt ein ganz bestimmtes \texttt{key=value}-Paar aus der
+% internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@remove}[3]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@remove{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{{#2}{#3}}}%
+ \def\do##1{%
+ \edef\reserved@c{\detokenize{##1}}%
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@removekey}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro entfernt alle \texttt{key=value}-Paar mit einem gegebenen
+% \texttt{key} aus der internen Liste.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@removekey}[2]{%
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@removekey{#1}%
+ }{%
+ \begingroup
+ \def\reserved@a{\endgroup\@namedef{scr@kav@KOMA#1}{}}%
+ \edef\reserved@b{\detokenize{#2}}%
+ \def\reserved@d##1##2{\edef\reserved@c{\detokenize{##1}}}%
+ \def\do##1{%
+ \reserved@d##1\relax
+ \ifx\reserved@b\reserved@c\else
+ \l@addto@macro\reserved@a{%
+ \expandafter\l@addto@macro\csname scr@kav@KOMA#1\endcsname{%
+ \do{##1}%
+ }%
+ }%
+ \fi
+ }%
+ \@nameuse{scr@kav@KOMA#1}%
+ \reserved@a
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@replacevalue}
+% \begin{macro}{\KOMA@kav@xreplacevalue}
+% \changes{v3.17}{2015/02/25}{neu (\KOMAScript intern)}^^A
+% Diese Makros dienen dazu, den Wert Schlüssels in der internen Liste
+% auszutauschen. Das erste (optionale) Argument ist das Mitglied, das zweite
+% ist der Name des Schlüssels, das dritte der neue Wert. Es setzt den Status
+% \cs{FamilyKeyStateProcessed} voraus. Anderenfalls tut es nichts!
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@replacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@add{#1}{#2}{#3}%
+ }%
+ \fi
+}
+\newcommand*{\KOMA@kav@xreplacevalue}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacevalue{#1}%
+ }{%
+ \KOMA@kav@removekey{#1}{#2}%
+ \KOMA@kav@xadd{#1}{#2}{#3}%
+ }%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@replacebool}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro dient dazu, den Wert eines if-Schlüssels in der internen Liste
+% auszutauschen. Das erste (optionale) Argument ist das Mitglied, das zweite
+% ist der Name des Schlüssels, das dritte der Name des Schalters. Es setzt den
+% Status \cs{FamilyKeyStateProcessed} voraus. Anderenfalls tut es nichts!
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@replacebool}[3]{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \@ifundefined{scr@kav@KOMA#1}{%
+ \KOMA@internal@error\KOMA@kav@replacebool{#1}%
+ }{%
+ \KOMA@kav@remove{#1}{#2}{false}%
+ \KOMA@kav@remove{#1}{#2}{true}%
+ \expandafter\ifx\csname if#3\expandafter\endcsname
+ \csname iftrue\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
+ }%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@defall}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Dieses Makro liefert eine \texttt{key=value}-Liste aller gespeicherten Paare.
+% Das erste Argument ist die zu definierende Anweisung, das zweite ist das
+% Mitglied.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@defall}[2]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{\l@addto@macro\reserved@a{,{##1=##2}}}%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@kav@defone}
+% \changes{v3.17}{2015/02/25}{neu (\KOMAScript intern)}^^A
+% Dieses Makro liefert alle aktuellen Werte eine Schlüssels aus der
+% \texttt{key=value}-Liste aller gespeicherten Paare. Falls es mehr als einen
+% Wert gibt, so werden diese \cs{KOMAoption}-tauglich verknüpft. Das erste
+% Argument ist die zu definierende Anweisung, das zweite ist das Mitglied
+% und das dritte der Schlüssel.
+% Es ist ausschließlich für den \KOMAScript-internen Gebrauch bestimmt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@kav@defone}[3]{%
+ \@ifundefined{scr@kav@KOMA#2}{%
+ \KOMA@internal@error\KOMA@kav@defall{#1}%
+ }{%
+ \begingroup
+ \let\reserved@a\@empty
+ \def\reserved@b##1##2{%
+ \ifstr{##1}{#3}{\l@addto@macro\reserved@a{,{##2}}}{}%
+ }%
+ \def\do##1{\reserved@b##1}%
+ \@nameuse{scr@kav@KOMA#2}%
+ \ifx\reserved@a\@empty
+ \def\reserved@b{\endgroup\let#1\@empty}%
+ \else
+ \edef\reserved@b{%
+ \unexpanded{\endgroup\def#1}{%
+ \unexpanded
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@gobble\reserved@a}}}%
+ \fi
+ \reserved@b
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@internal@error}
+% \changes{v3.17}{2015/02/24}{neu (\KOMAScript intern)}^^A
+% Einfach nur eine Meldung über einen internen Fehler mit der Bitte um einen
+% entsprechenden Bug-Report.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@internal@error}[2]{%
+ \PackageError{scrkbase}{internal error using \string#1{#2}}{%
+ You've found an internal error either in KOMA-Script or a third
+ party\MessageBreak
+ definition, that uses KOMA-Script internal macros.\MessageBreak
+ Please send a bug report with a minimal but complete example,
+ that\MessageBreak
+ shows this error, to komascript at gmx dot info or report it
+ at\MessageBreak
+ <http://www.komascript.de/forum/20> (you need an account to do so).%
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Optionen}
+%
+% Ab Version 2.97c sollen sowohl globale KOMA-Optionen als auch die
+% KOMA-Optionen der jeweiligen Datei als auch die normalen Optionen in der
+% Reihenfolge ausgeführt werden, in der sie angegeben wurden -- zuerst die
+% globalen Optionen, dann die lokalen. Dabei werden nur die Optionen
+% verwendet, die auch für das jeweilige Paket bzw. die jeweilige Klasse
+% definiert wurden.
+%
+% \begin{macro}{\@globaloptionslist}
+% \changes{v2.96}{2006/11/26}{new}^^A
+% \changes{v2.96}{2006/11/26}{Klassenoptionen durchsuchen}^^A
+% \changes{v3.20}{2016/02/06}{Entscheidung später treffen}^^A
+% Die Liste der globalen Optionen wird teilweise benötigt. Weil
+% \textsl{xkeyval} dämlicherweise glaubt, es müsse alle Optionen mit
+% Gleichheitszeichen aus der Liste der Klassenoptionen entfernen
+% (seltsamerweise aber nicht die (x)keyval-Optionen, die ohne Wert aufgerufen
+% werden, weil ihr Defaultwert verwendet werden soll), wird hier ein eigenes
+% Makro definiert. Bis \KOMAScript{} 3.19a wurde auch genau hier die Zuweisung
+% durchgeführt. Wenn aber \textsf{scrbase} noch vor \cs{documentclass} geladen
+% wird, dann ist \cs{@classoptionslist} natürlich noch nicht gültig. Deshalb
+% wird die Zuweisung, seit \KOMAScript{} 3.20 in \cs{FamilyProcessOptions}
+% durchgeführt.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\@globaloptionslist}{}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FamilyProcessOptions}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}%
+% \changes{v3.11a}{2012/06/11}{Klassen melden falsche Werte nicht
+% selbst als Fehler, sondern informieren nur darüber}^^A
+% \changes{v3.12}{2013/03/04}{Fehlerbehandlung}^^A
+% Es ist zu beachten, dass falsche Werte für Optionen grundsätzlich nicht in
+% der Verarbeitung der Optionen per Info, Warnung oder Fehler gemeldet werden
+% sollten, sondern über setzen von \cs{FamilyKeyState}. Erst, wenn auch andere
+% Familienmitglieder den Wert nicht verarbeiten können, ergibt sich daraus
+% ggf. eine Meldung, die dann von der Verarbeitung hier erzeugt wird.
+% Es wird darauf hingewiesen, dass diese Anweisung nicht reentrant ist. Das
+% bedeutet, dass man es innerhalb der eigenen Ausführung nicht erneut aufrufen
+% darf.
+% \begin{macro}{\scr@removeunused}
+% \changes{v3.10}{2011/09/12}{neu (intern)}%
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
+% \end{macro}^^A \scr@removeunused
+% \begin{macro}{\scr@optiontest}
+% \changes{v2.97c}{2007/04/18}{neu (intern)}%
+% \changes{v3.12}{2013/03/04}{entfernt}%
+% \begin{macro}{\scr@pti@ntest}
+% \changes{v2.97c}{2007/04/18}{neu (intern)}%
+% \changes{v3.12}{2013/03/04}{entfernt}%
+% \end{macro}^^A \scr@pti@ntest
+% \end{macro}^^A \scr@optiontest
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyProcessOptions}[2][.\@currname.\@currext]{%
+ \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions
+ \PackageError{scrbase}{nested \string\FamilyProcessOptions\space
+ detected\MessageBreak}{%
+ \string\FamilyProcessOptions\space has been used while processing or
+ setting options.\MessageBreak
+ This is currently not allowed. You should contact the author of the
+ causing\MessageBreak
+ code.\MessageBreak
+ This error is fatal. You should not continue.%
+ }%
+ \fi
+% \end{macrocode}
+% \changes{v3.18}{2015/06/17}{new hooks before processing the options}^^A
+% Ab Version~3.18 werden hier außerdem zwei Haken ausgeführt. Der erste gilt
+% dabei für alle Klassen und Pakete einer Familie und löscht sich nicht
+% selbst. Der zweite dagegen gilt nur ein einziges Mal für dieses eine
+% Mitglied.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@before@process@options@#2@hook}{}{%
+ \@nameuse{scr@before@process@options@#2@hook}%
+ }%
+ \scr@ifundefinedorrelax{scr@before@process@options@#2#1@hook}{}{%
+ \@nameuse{scr@before@process@options@#2#1@hook}%
+ \expandafter\let\csname scr@before@process@options@#2#1@hook\endcsname
+ \relax
+ }%
+% \end{macrocode}
+% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie
+% statt des Mitglieds}^^A
+% Jetzt \cs{AtEndOfFamilyOptions} samt Haken initialisieren.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@after@options@#2@hook}{%
+ \@namedef{scr@after@options@#2@hook}{%
+% \end{macrocode}
+% Die erste Aktion im Haken wird sein, den Haken selbst zu löschen.
+% \begin{macrocode}
+ \@namedef{scr@after@options@#2@hook}{}%
+ }%
+ }{%
+ \expandafter\edef\csname scr@after@options@#2@hook\endcsname{%
+% \end{macrocode}
+% Die erste Aktion im Haken wird sein, die jetzige Form des Hakens wieder
+% herzustellen.
+% \begin{macrocode}
+ \noexpand\@namedef{scr@after@options@#2@hook}{%
+ \unexpanded\expandafter\expandafter\expandafter
+ {\csname scr@after@options@#2@hook\endcsname}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}^^A
+% Seit Version 3.23 wird hier auch der neuen Haken vor
+% \cs{AtEndOfFamilyOptions*} initialisiert und ausgeführt. Erkannt wird die
+% oberste Ebene hier einfach an der Definition von \cs{AtEndOfFamilyOptions},
+% weil das schneller geht als die Erkennung über die Definition des Hakens
+% selbst (wie sie in \cs{FamilyOptions} verwendet werden muss).
+% \begin{macrocode}
+ \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate
+ \@namedef{scr@after@options@#2@hook@topmost}{%
+% \end{macrocode}
+% Auch dieser Haken wird so definiert, dass er sich bei seiner Ausführung als
+% erstes selbst löscht. Das ist auch für rekursive Aufrufe wichtig, um tiefere
+% Ebenen eindeutig von der höchsten Ebene unterscheiden zu können.
+% \begin{macrocode}
+ \@namedef{scr@after@options@#2@hook@topmost}{}%
+ }%
+% \end{macrocode}
+% Der Top-Haken wird außerdem zusammen mit dem Zurücksetzen der Definition von
+% \cs{AtEndOfFamilyOptions} in den Haken der (obersten) Ebene
+% eingefügt.
+% \begin{macrocode}
+ \expandafter\l@addto@macro\csname scr@after@options@#2@hook\endcsname{%
+ \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate
+ \@nameuse{scr@after@options@#2@hook@topmost}%
+ }%
+% \end{macrocode}
+% Natürlich darf nicht vergessen werden, den Befehl für das Befüllen der
+% beiden Haken nun von der direkten Ausführung eben auf das Befüllen der Haken
+% umzustellen.
+% \begin{macrocode}
+ \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions
+ \fi
+% \end{macrocode}
+% Jetzt geht es weiter mit der Adaption des Codes aus \cs{ProcessOptions}.
+% \begin{macrocode}
+ \let\ds@\@empty
+ \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
+ \ifx\@currext\@clsextension\else
+% \end{macrocode}
+% Bei Klassen ist die aktuelle Optionenliste gleichzeitig die globale
+% Optionenliste. Daher dürften Klassen nicht auch noch die globale Optionliste
+% verarbeiten. Paket verarbeiten jedoch auch die globale Optionenliste, geben
+% dazu jedoch keine Fehler oder Warnungen aus.
+% \changes{v3.18}{2015/06/17}{Behandlung von undefiniertem
+% \cs{@globaloptionslist}}^^A
+% \changes{v3.20}{2016/02/06}{\cs{@globaloptionslist} immer neu zuweisen}^^A
+% \begin{macrocode}
+ \let\@globaloptionslist\@classoptionslist
+ \scr@ifundefinedorrelax{XKV@classoptionslist}{%
+%<trace> \PackageInfo{scrbase}{Using \string\@classoptionslist}%
+ }{%
+ \ifx\XKV@classoptionslist\@empty
+%<trace> \PackageInfo{scrbase}{Using \string\@classoptionslist}%
+ \else
+%<trace> \PackageInfo{scrbase}{Using \string\XKV@classoptionslist}%
+ \let\@globaloptionslist\XKV@classoptionslist
+ \fi
+ }%
+ \scr@ifundefinedorrelax{@globaloptionslist}{}{%
+ \@for\CurrentOption:=\@globaloptionslist\do{%
+% \end{macrocode}
+% Die Optionen werden in der Reihenfolge verarbeitet, in der sie als globale
+% Optionen angegeben wurden. Dabei werden nur Optionen verarbeitet, die nicht
+% leer sind und die im aktuellen Paket bekannt sind. Das sind also keine
+% \textsf{keyval}-Optionen, sondern normale \LaTeX-Optionen.
+% \begin{macrocode}
+ \ifx\CurrentOption\@empty\else
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
+ \else
+% \end{macrocode}
+% Wenn die Option keine \LaTeX-Option ist, kann sie noch immer eine
+% \textsf{keyval}-Option sein. In diesem Fall wird geprüft, ob das
+% Mitglied (\#1) eine Option in der Familie (\#2) hat. Wenn das der Fall ist,
+% wird die Option unmittelbar ausgeführt und zwar einmal ohne Mitglied (also
+% Optionen, die global der Familie gehören) und dann mit Mitglied. Im Fall
+% einer unbekannnten Option oder eines unbekannten Wertes, geschieht hier gar
+% nichts.
+% \begin{macrocode}
+ \scr@ifprocess@curroption{#1}{#2}{%
+ \@expandtwoargs\@removeelement\CurrentOption
+ \@unusedoptionlist\@unusedoptionlist
+ }{}%
+ \fi
+ \fi
+ }%
+ }%
+ \fi
+% \end{macrocode}
+% Sowohl für Klassen als auch für Pakete werden nun die aktuellen Optionen
+% abgearbeitet. In diesem Fall ist zu beachten, dass nicht definierte Optionen
+% oder unbekannte Werte für Optionen unmittelbar zu einem Fehler führen, wenn
+% es sich um ein Paket handelt. Bei Klassen landet die Option hingegen in der
+% Liste der nicht benutzten globalen Optionen.
+% \begin{macrocode}
+ \@for\CurrentOption:=\@curroptions\do{%
+% \end{macrocode}
+% \changes{v3.26}{2018/10/22}{Optionen werden für Tests etc. nicht mehr
+% vollständig expandiert}^^A
+% \changes{v3.26}{2018/10/22}{\cs{@use@ption} wird für key-value-Optionen
+% nicht mehr aufgerufen}^^A
+% Ab \KOMAScript~3.26 wird für den Test, ob eine Option als normale Option
+% existiert, die Option nicht mehr komplett expandiert. Da die wirklich
+% notwendige Expansion bereits erfolgt ist, verhindert das Fehler wegen
+% angeblich fehlendem \cs{endcsname}. Gleichzeitig wird für key-value-Optionen
+% \cs{@use@ption} nicht mehr aufgerufen, da das darin enthaltene
+% |\csname ds@\CurrentOption\endcsname| dasselbe Problem hat. Stattdessen wird
+% die Option nur noch aus der Liste der nicht verwendeten Optionen entfernt.
+% \begin{macrocode}
+ \edef\reserved@a{\expandafter\detokenize\expandafter{\CurrentOption}}%
+ \scr@ifundefinedorrelax{ds@\reserved@a}{%
+ \@expandtwoargs\@removeelement\CurrentOption
+ \@unusedoptionlist\@unusedoptionlist
+ \scr@ifprocess@curroption{#1}{#2}{}\default@ds
+ }\@use@ption
+ }%
+% \end{macrocode}
+% Fast zum Schluss wird wir im \LaTeX-Kern der Optionencode für alle
+% deklarierten \LaTeX-Optionen gelöscht und dafür gesorgt, dass nach dem Paket
+% keine unverarbeiteten Optionen mehr vorhanden sind.
+% \begin{macrocode}
+ \@for\CurrentOption:=\@declaredoptions\do{%
+ \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
+ \let\CurrentOption\@empty
+ \let\@fileswith@pti@ns\@@fileswith@pti@ns
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
+% \end{macrocode}
+% Jetzt muss noch der Hook ausgeführt und wieder gelöscht werden.
+% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie
+% statt des Mitglieds}^^A
+% \begin{macrocode}
+ \@nameuse{scr@after@options@#2@hook}%
+}
+\@onlypreamble\FamilyProcessOptions
+% \end{macrocode}
+% \begin{macro}{\BeforeFamilyProcessOptions}
+% \changes{v3.18}{2015/06/17}{neu}
+% Über diese Anweisung kann man Code unmittelbar vor Ausführung von
+% \cs{FamilyProcessOptions} ausgeführt werden. Dabei muss zur Verwendung
+% des Hakens weder das Mitglied noch die Familie existieren. Man kann dies
+% also beispielsweise auch verwenden, um unmittelbar vor der Ausführung der
+% Optionen eines Pakets oder einer Klasse einzugreifen noch bevor das Paket
+% oder die Klasse geladen ist.
+% \begin{macrocode}
+\newcommand*{\BeforeFamilyProcessOptions}[3][.\@currname.\@currext]{%
+ \scr@ifundefinedorrelax{scr@before@process@options@#2#1@hook}{%
+ \@namedef{scr@before@process@options@#2#1@hook}{#3}%
+ }{%
+ \expandafter\g@addto@macro
+ \csname scr@before@process@options@#2#1@hook\endcsname{#3}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \BeforeFamilyProcessOptions
+% \begin{macro}{\AtEndOfFamilyOptions}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung}^^A
+% \changes{v3.23}{2017/02/16}{Sternvariante}^^A
+% Mit dieser Option kann innerhalb der Ausführung einer Option Material auf
+% das Ende der aktuellen \cs{FamilyProcessOptions}, \cs{FamilyExecuteOptions},
+% \cs{FamilyOptions} oder \cs{FamilyOption} verzögert werden. Als einziges
+% Argument wird der zu verzögernde Code erwartet, der an \cs{l@addto@macro}
+% delegiert wird. Die Normalvariante verzögert bei verschachtelten
+% \cs{FamilyOptions} bis zum Ende der aktuellen Schachtet, die Sternvariante
+% bis zum Ende der äußeren Schachtel.
+% \begin{macro}{\scr@AtEndOfFamilyOptions}
+% \changes{v3.12}{2013/05/29}{Neue Anweisung (intern)}^^A
+% \begin{macro}{\scr@@AtEndOfFamilyOptions}
+% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}^^A
+% \begin{macro}{\scr@AtEndOfFamilyOptions@immediate}
+% \changes{v3.23}{2017/02/16}{Neue Anweisung (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\scr@AtEndOfFamilyOptions}{%
+ \kernel@ifstar {\scr@@AtEndOfFamilyOptions{@topmost}}%
+ {\scr@@AtEndOfFamilyOptions\@empty}%
+}
+\newcommand*{\scr@@AtEndOfFamilyOptions}[1]{%
+ \expandafter
+ \l@addto@macro\csname scr@after@options@\FamilyOfKey @hook#1\endcsname
+}
+\newcommand*{\scr@AtEndOfFamilyOptions@immediate}{%
+ \kernel@ifstar {\@firstofone}{\@firstofone}%
+}
+\newcommand*{\AtEndOfFamilyOptions}{}
+\let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate
+% \end{macrocode}
+% \end{macro}^^A \scr@AtEndOfFamilyOptions@immediate
+% \end{macro}^^A \scr@@AtEndOfFamilyOptions
+% \end{macro}^^A \scr@AtEndOfFamilyOptions
+% \end{macro}^^A \AtEndOfFamilyOptions
+% \begin{macro}{\scr@ifprocess@curroption}
+% \changes{v3.13}{2014/01/04}{\cs{CurrentOption} innerhalb von \cs{setkeys}
+% in Klammern gesetzt}^^A
+% Dieses Makro führt eine aktuelle \textsf{keyval}-Option für das angegebene
+% Mitglied (\#1) der angegebenen Familie (\#2) aus. Falls die Option keinen
+% entsprechenden Wert hat, wird das vierte Argument ausgeführt, anderenfalls
+% nicht. Es ist zu beachten, dass vor der Option des Mitglieds die
+% Familien-Option auszuführen ist. Ggf. benötigt das Mitglied dann keine
+% entsprechende Option.
+% \begin{macrocode}
+\newcommand*\scr@ifprocess@curroption[2]{%
+% \end{macrocode}
+% \changes{v3.26}{2018/10/22}{\cs{scr@sp@def} statt \cs{def} für das Abtrennen
+% des Schlüssels}^^A
+% Da am 21. Oktober 2018 eine Diskussion begann, die darauf hindeutet, dass
+% das Entfernen der Leerzeichen in der Optionenliste sich jederzeit ändern
+% könnte, wird hier (und an einer weiteren Stelle) nun \cs{scr@sp@def}
+% verwendet, um den Schlüssel zu erhalten. Allerdings genügt dies nicht, falls
+% irgendwann tatsächlich gar keine Leerzeichen mehr entfernt werden. Dann
+% müsste nämlich der komplette Parser umgeschrieben werden. Ich bin alles
+% andere als begeistert von der Tatsache, dass hier im \LaTeX-Kern Jahrzehnte
+% altes Verhalten ohne Rücksicht auf Verluste zur Disposition gestellt wird.
+% \begin{macrocode}
+ \def\reserved@a##1=##2\@nil{\scr@sp@def\reserved@a{##1}}%
+ \expandafter\reserved@a\CurrentOption=\@nil
+ \scr@ifundefinedorrelax{KV@#2@\reserved@a}{%
+ \scr@ifundefinedorrelax{KV@#2#1@\reserved@a}{%
+ \let\FamilyKeyState\OptionNotUsed
+ }{%
+ \protected@edef\reserved@b{\noexpand\setkeys{#2#1}{{\CurrentOption}}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}}%
+ \reserved@b
+ \ifx\FamilyKeyState\FamilyKeyStateUnknown
+ \PackageInfo{scrbase}{Unknown processing state.\MessageBreak
+ Processing option `\CurrentOption'\MessageBreak
+ of member `#1' of family\MessageBreak
+ `#2' doesn't set\MessageBreak
+ a valid state. This will be interpreted\MessageBreak
+ as \string\FamilyKeyStateProcessed
+ }%
+ \FamilyKeyStateProcessed
+ \fi
+ }{%
+ \let\FamilyKeyState\OptionNotUsed
+ }%
+ }{%
+ \protected@edef\reserved@b{\noexpand\setkeys{#2}{{\CurrentOption}}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}}%
+ \reserved@b
+ \ifx\FamilyKeyState\FamilyKeyStateUnknown
+ \PackageInfo{scrbase}{Unknown processing state.\MessageBreak
+ Processing option `\CurrentOption'\MessageBreak
+ of family `#2'\MessageBreak
+ doesn't set a valid state.\MessageBreak
+ This will be interpreted\MessageBreak
+ as \string\FamilyKeyStateProcessed
+ }%
+ \FamilyKeyStateProcessed
+ \fi
+ \def\reserved@a##1=##2\@nil{\scr@sp@def\reserved@a{##1}}%
+ \expandafter\reserved@a\CurrentOption=\@nil
+ \scr@ifundefinedorrelax{KV@#2#1@\reserved@a}{}{%
+ \protected@edef\reserved@b{\noexpand\setkeys{#2#1}{{\CurrentOption}}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}}%
+ \ifx\FamilyKeyState\FamiliyKeyStateProcessed
+ \reserved@b
+ \FamilyKeyStateProcessed
+ \else
+ \reserved@b
+ \ifx\FamilyKeyState\FamilyKeyStateUnknown
+ \PackageInfo{scrbase}{Unknown processing state.\MessageBreak
+ Processing option `\CurrentOption'\MessageBreak
+ of member `#1' of family\MessageBreak
+ `#2' doesn't set\MessageBreak
+ a valid state. This will be interpreted\MessageBreak
+ as \string\FamilyKeyStateProcessed
+ }%
+ \FamilyKeyStateProcessed
+ \fi
+ \fi
+ }%
+ }%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@sp@def}
+% \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach
+% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A
+% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A
+% \begin{macro}{\scr@sp@d}
+% \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach
+% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A
+% \begin{macro}{\scr@sp@b}
+% \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach
+% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A
+% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A
+% \begin{macro}{\scr@sp@c}
+% \changes{v3.26}{2018/08/29}{von \texttt{tocbasic.dtx} nach
+% \texttt{scrkernel-basics.dtx} verschoben und umbenannt}^^A
+% \changes{v3.26b}{2019/01/17}{\cs{long}}^^A
+% Die Hilfsanweisung \cs{scr@sp@def} definiert eine Anweisung (erstes
+% Argument) mit einer Tokenliste (zweites Argument) und entfernt dabei
+% führende und abschließende Leerzeichen. Die Anweisung stammt ursprünglich
+% aus \textsf{keyval}. Der Rest sind Hilfsanweisungen für die Implementierung
+% der Hilfsanweisung.
+% \begin{macrocode}
+\def\@tempa#1{%
+ \long\def\scr@sp@def##1##2{%
+ \futurelet\scr@sp@tempa\scr@sp@d##2\@nil\@nil#1\@nil\relax##1}%
+ \def\scr@sp@d{%
+ \ifx\scr@sp@tempa\@sptoken
+ \expandafter\scr@sp@b
+ \else
+ \expandafter\scr@sp@b\expandafter#1%
+ \fi}%
+ \long\def\scr@sp@b#1##1 \@nil{\scr@sp@c##1}%
+}
+\@tempa{ }
+\long\def\scr@sp@c#1\@nil#2\relax#3{\@temptokena{#1}\edef#3{\the\@temptokena}}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@sp@c
+% \end{macro}^^A \scr@sp@b
+% \end{macro}^^A \scr@sp@d
+% \end{macro}^^A \scr@sp@def
+% \end{macro}^^A \scr@process@curroption
+% \end{macro}^^A \FamilyProcessOptions
+%
+% \begin{macro}{\KOMAProcessOptions}
+% \changes{v2.97c}{2007/04/18}{neu}%
+% \changes{v3.00}{2008/04/30}{kein optionales Argument mehr}%
+% Diese Anweisung führt alle Optionen, sowohl normal deklarierte als auch
+% keyval-Optionen eines Pakets bzw. einer Klasse in der Reihenfolge, in der
+% sie verwendet wurden aus -- zuerst globale Optionen, dann lokale
+% Optionen. Das entspricht der Verwendung von \cs{ProcessOptions*} mit dem
+% Unterschied, dass eben auch die keyval-Optionen abgearbeitet
+% werden. keyval-Optionen, die keiner einzelnen Klasse und keinem einzelnen
+% Paket zugeordnet werden, werden dabei vor gleichnamigen eigenen
+% keyval-Optionen ausgeführt.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}}
+\@onlypreamble\KOMAProcessOptions
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</prepare>
+%<*option>
+% \fi
+%
+% \begin{option}{internalonly}
+% \changes{v2.96}{2006/11/26}{neu}^^A
+% \changes{v2.97c}{2007/06/20}{geht auch ohne Argument}^^A
+% \begin{macro}{\dont@let@as@internal@defined}
+% \changes{v2.96}{2006/11/26}{neu (intern)}^^A
+% Anweisungen, die mit einem internen und einem Anwendername vorhanden sind,
+% können vor dem Anwender optional verborgen werden. Wird kein Argument
+% angegeben, so werden alle Anweisungen verborgen.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\dont@let@as@internal@defined}{/}
+\newif\if@let@as@internalonly@defined\@let@as@internalonly@definedfalse
+\DefineFamily{KOMA}
+\DefineFamilyMember{KOMA}
+\DefineFamilyKey{KOMA}{internalonly}[\relax]{%
+ \ifx\relax#1\relax
+ \@let@as@internalonly@definedtrue
+ \else
+ \@let@as@internalonly@definedfalse
+ \begingroup
+ \@expandtwoargs\in@{#1}\dont@let@as@internal@defined
+ \expandafter\endgroup
+ \ifin@\else\g@addto@macro\dont@let@as@internal@defined{#1/}\fi
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+%
+% \changes{v2.96}{2006/08/20}{Optionen werden abgearbeitet}^^A
+% \changes{v2.97c}{2007/04/18}{Optionen werden mit \cs{KOMAProcessOptions}^^A
+% abgearbeitet}
+% \begin{macrocode}
+%<koma>\KOMAProcessOptions\relax
+%<base>\FamilyProcessOptions{KOMA}\relax
+% \end{macrocode}
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Ein wenig zusätzliche Mathematik für \eTeX}
+%
+% \begin{macro}{\XdivY}
+% \changes{v3.05a}{2010/03/10}{Neu}^^A
+% Ergebnis ist erster Argument durch zweites abgerundet auf die nächst
+% kleinere ganze Zahl.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\XdivY}[2]{%
+ \numexpr ( #1 + #2 / 2 ) / #2 - 1\relax
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\XmodY}
+% \changes{v3.05a}{2010/03/10}{Neu}^^A
+% Ergebnis ist erstes Argument modulo zweites Argument.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\XmodY}[2]{%
+ \numexpr #1 - #2 * \XdivY{#1}{#2}\relax
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Häufig benötigte Befehle}
+%
+% \begin{macro}{\scr@trim@spaces}
+% \changes{v3.12}{2013/11/06}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{von \texttt{scrkernel-language.dtx} nach
+% \texttt{scrkernel-basics.dtx} verschoben}^^A
+% Diese Hilfsanweisung entfernt führende und abschließende
+% Leerzeichen. Argument ist die Anweisung, deren Inhalt von den Leerzeichen
+% befreit werden soll. Gedacht ist das ganze für die Listenverarbeitung mit
+% Hilfe von \cs{@for}. Als Argument wird ein Makro übergeben, in dessen
+% Definition führende und abschließende space-Tokens entfernt werden sollen.
+% \begin{macrocode}
+%<*base>
+\newcommand\scr@trim@spaces[1]{%
+ \expandafter\scr@sp@def\expandafter#1\expandafter{#1}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@trim@space
+%
+% \begin{macro}{\if@atdocument}
+% \changes{v2.95}{2002/12/05}{neuer Schalter}^^A
+% \begin{macro}{\@atdocumenttrue}
+% \begin{macro}{\@atdocumentfalse}
+% Dieser Schalter wird bei \cs{begin}\texttt{\{document\}} wahr. Er
+% wird von \KOMAScript{} für Befehle verwendet, die sich
+% unterschiedlich verhalten, je nachdem, ob sie in der Präambel oder
+% danach aufgerufen werden.
+% \begin{macrocode}
+%<*base>
+\newif\if@atdocument
+\AtBeginDocument{\@atdocumenttrue}
+\@onlypreamble\@atdocumentrue
+\@onlypreamble\@atdocumentfalse
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\let@as@internal@defined}
+% \changes{v2.95}{2002/08/19}{neu (intern)}^^A
+% \changes{v2.95c}{2006/08/12}{Warnung bei Umdefinierung}^^A
+% \changes{v2.96}{2006/11/26}{Herausreichen von internen Makros als
+% Benutzermakros kann verhindert werden}^^A
+% \changes{v2.97c}{2007/06/20}{Herausreichen von internen Makros kann
+% generell verhindert werden}^^A
+% \changes{v3.10}{2010/10/26}{\cs{ignorespaces} beim \cs{document}-Patch
+% ergänzt}
+% \changes{v3.13a}{2014/08/13}{potentielle Leerzeichen durch Zeilenumbruch
+% beseitigt}^^A
+% Dieses Makro wird intern verwendet, um dokumentierte Makros mit der
+% Definition von internen Makros zu versehen, falls sie nicht bereits
+% definiert oder als nicht zu definieren markiert sind. Der Name des
+% dokumentierten Makros wird als Parameter übergeben. Dies wird gleich
+% benötigt.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\let@as@internal@defined}[1]{%
+ \begingroup
+ \if@let@as@internalonly@defined
+ \in@true
+ \else
+ \@expandtwoargs\in@{/#1/}\dont@let@as@internal@defined
+ \fi
+ \expandafter\endgroup
+ \ifin@
+ \PackageInfo{%
+ scrbase%
+ }{%
+ \expandafter\string\csname #1\endcsname\space excluded from being
+ defined%
+ }%
+ \else
+ \@ifundefined{#1}{%
+ \begingroup
+ \expandafter\def\expandafter\reserved@a
+ \expandafter{\csname scr@#1\endcsname}%
+ \expandafter\def\expandafter\reserved@b
+ \expandafter{\csname #1\endcsname}%
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\expandafter\expandafter\let\expandafter\reserved@b\reserved@a
+ \if@atdocument\else
+ \g@addto@macro\document{%
+ \expandafter\ifx\csname #1\expandafter\endcsname
+ \csname scr@#1\endcsname
+ \else
+ \PackageWarning{scrbase}{%
+ \expandafter\string\csname #1\endcsname\space was
+ redefined\MessageBreak
+ at the document preamble.\MessageBreak
+ If you did not redefine it by yourself, have a\MessageBreak
+ a look at the description of this command at\MessageBreak
+ the manual of every package you are using\@gobble
+ }%
+ \fi
+ \ignorespaces
+ }%
+ \fi
+ }{%
+ \PackageInfo{%
+ scrbase%
+ }{%
+ \expandafter\string\csname #1\endcsname\space already
+ defined.\MessageBreak
+ If \expandafter\string\csname #1\endcsname\space does not behave
+ like\MessageBreak
+ it was described at the KOMA-Script manual, try to\MessageBreak
+ load `scrbase.\scr@pkgextension' earlier or find out at
+ which\MessageBreak
+ package or class \expandafter\string\csname #1\endcsname\space
+ was defined before\@gobble
+ }%
+ }%
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifundefinedorrelax}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \changes{v2.95c}{2006/08/12}{über interne Anweisung definiert}^^A
+% \changes{v2.97c}{2007/06/20}{umbenannt von \cs{ifundefined}}
+% Dieses Makro arbeitet wie \cs{@ifundefined}, definiert dabei aber
+% ein undefiniertes Makro nicht als \cs{relax}.
+% \begin{macrocode}
+%<*base>
+\let@as@internal@defined{ifundefinedorrelax}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifnotundefined}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \changes{v2.95c}{2006/08/12}{nutzt \eTeX{} wenn möglich}
+% \changes{v3.02c}{2009/02/19}{\eTeX{} ist zwingend}
+% Dieses Makro arbeitet genau umgekehrt zu \cs{ifundefined}. Manchmal
+% ist es ganz nützlich, auch das zu haben. Dieses Makro heißt nicht
+% \cs{ifdefined}, weil \eTeX\ bereits ein solches Primitiv bietet.
+% \begin{macrocode}
+%<*base>
+\newcommand{\ifnotundefined}[1]{%
+ \ifcsname #1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifstr}
+% \changes{v2.95}{2004/07/20}{if- und then-Teil werden nicht gefressen}^^A
+% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}
+% Dieses Makro vergleicht zwei Tokenfolgen. Eigentlich müsste es also
+% eher \cs{ifequal} oder ähnlich heißen.
+% \begin{macrocode}
+%<*base>
+\newcommand\ifstr[2]{%
+ \begingroup\protected@edef\reserved@a{#1}\protected@edef\reserved@b{#2}%
+ \ifx\reserved@a\reserved@b
+ \endgroup\expandafter\@firstoftwo
+ \else
+ \endgroup\expandafter\@secondoftwo
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifstrstart}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% Falls die Expansion des ersten Arguments mit der Expansion des zweiten
+% Arguments beginnt, wird das dritte Argument ausgeführt, sonst das vierte.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifstrstart}[2]{%
+ \begingroup
+ \edef\reserved@a{\noexpand\@ifstrstart{#1}{#2}}%
+ \reserved@a{\aftergroup\@firstoftwo}{\aftergroup\@secondoftwo}%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\@ifstrstart}
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
+% Hilfsmakro, damit die Argumente vollständig expandiert werden können.
+% \begin{macrocode}
+\newcommand*{\@ifstrstart}[2]{%
+ \def\reserved@a ##1#2##2\@nil{%
+ \if\relax\detokenize{##1}\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ \reserved@a#1#2\@nil
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \@ifstrstart
+% \end{macro}^^A \ifstrstart
+%
+% \begin{macro}{\IfArgIsEmpty}
+% \changes{v3.19}{2015/08/29}{neu}^^A
+% Falls das erste Argument tatsächlich leer ist, wird das zweite Argument
+% ausgeführt sonst das dritte.
+%<*base>
+% \begin{macrocode}
+\newcommand*{\IfArgIsEmpty}[1]{%
+ \if\relax\detokenize{#1}\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+%</base>
+% \end{macro}^^A \IfArgIsEmpty
+%
+%
+% \begin{macro}{\ifislengthprimitive}
+% \changes{v3.20}{2015/10/19}{neu}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem Primitiv
+% expandiert, das als Länge verwendet werden kann, wird das erste Argument
+% ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifislengthprimitive}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifislengthprimitive#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifislengthprimitive}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf diverse Primitive prüft.
+% \begin{macrocode}
+\newcommand*{\scr@ifislengthprimitive}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifislengthprimitive
+ }{%
+ \def\reserved@c{\aftergroup\scr@secondoftwoAfterNil}%
+ \@for\reserved@a:=\baselineskip,\dp,\hsize,\ht,\lineskip,%
+ \parindent,\parskip,\pdfpageheight,\pdfpagewidth,%
+ \wd,\vsize \do {%
+ \expandafter\ifstr\expandafter{\expandafter\string\reserved@a}{%
+ \meaning #1%
+ }{%
+ \def\reserved@c{\aftergroup\scr@TestDimenAssignTillNil}%
+ }%
+ }%
+ \reserved@c
+ }%
+ \endgroup
+ #1%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifislengthprimitive
+% \end{macro}^^A \ifislengthprimitive
+%
+%
+% \begin{macro}{\ifisdimen}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem
+% \cs{dimen}-Register (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisdimen}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimen#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisdimen}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf ein \cs{dimen}-Register prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisdimen}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisdimen
+ }{%
+ \ifstrstart{\meaning #1}{\string\dimen}{%
+ \aftergroup\scr@TestDimenAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisdimen
+% \begin{macro}{\scr@TestDimenAssignTillNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge
+% zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das
+% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte
+% Argument wird in jedem Fall komplett aufgebraucht.
+% \begin{macrocode}
+\newcommand*\scr@TestDimenAssignTillNil{}
+\def\scr@TestDimenAssignTillNil#1\@nil{%
+ \begingroup
+ \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil
+ \@tempdima=#1\relax\@nnil
+}
+% \end{macrocode}
+% \begin{macro}{\scr@IfAfterEndgroupArgIsRelaxTillNnil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% \begin{macro}{\scr@IfArgIsRelaxAfterRelaxTillNnil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Die Hilfsmakros lesen ein durch \cs{@nnil} begrenztes Argument. Falls dieses
+% Argument nur aus einer Folge von \cs{relax} besteht, wird das erste Argument
+% nach \cs{@nnil} ausgeführt, sonst das zweite.
+% \begin{macrocode}
+\newcommand*\scr@AfterEndGroupIfArgIsRelaxTillNnil{}
+\def\scr@AfterEndGroupIfArgIsRelaxTillNnil#1\@nnil{%
+ \endgroup
+ \ifstr{\detokenize{#1}}{\detokenize{\relax}}{\@firstoftwo}{%
+ \ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{%
+ \scr@IfArgIsRelaxAfterRelaxTillNnil #1\@nnil
+ }{\@secondoftwo}%
+ }%
+}
+\newcommand*\scr@IfArgIsRelaxAfterRelaxTillNnil{}
+\def\scr@IfArgIsRelaxAfterRelaxTillNnil \relax#1\@nnil{%
+ \ifstr{\detokenize{#1}}{\detokenize{\relax}}{\@firstoftwo}{%
+ \ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{%
+ \scr@IfArgIsRelaxAfterRelaxTillNnil #1\@nnil
+ }{\@secondoftwo}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@IfArgIsRelaxAfterRelaxTillNnil
+% \end{macro}^^A \scr@IfArgIsRelaxTillNnil
+% \end{macro}^^A \scr@TestSkipAssignTillNil
+% \begin{macro}{\scr@secondoftwoAfterNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Das Hilfsmakro liest ein durch \cs{@nil} begrenztes Argument und führt dann
+% das zweite Argument nach \cs{@nil} aus. Dabei wird auch Sorge dafür getrage,
+% dass das Argument eventuell leer sein könnte, was normalerweise dazu führen
+% würde, dass \cs{@nil} zum Argument selbst wird.
+% \begin{macro}{\scr@@secondoftwoAfterNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Zu diesem Zweck wird ein zweites Hilfsmakro benötigt.
+% \begin{macrocode}
+\newcommand*{\scr@secondoftwoAfterNil}{\scr@@secondoftwoAfterNil\@empty}
+\newcommand*{\scr@@secondoftwoAfterNil}{}
+\def\scr@@secondoftwoAfterNil#1\@nil{\@secondoftwo}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@@secondoftwoAfterNil
+% \end{macro}^^A \scr@secondoftwoAfterNil
+% \end{macro}^^A \ifisdimen
+%
+% \begin{macro}{\ifisskip}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.18a}{2015/07/07}{\cs{baselineskip} und \cs{parskip} werden als
+% skips akzeptiert}^^A
+% \changes{v3.20}{2015/10/19}{\cs{baselineskip} und \cs{parskip} sind keine
+% skips}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem
+% \cs{skip}-Register (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisskip}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisskip#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisskip}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf ein \cs{skip}-Register prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisskip}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisskip
+ }{%
+ \ifstrstart{\meaning #1}{\string\skip}{%
+ \aftergroup\scr@TestSkipAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisskip
+% \begin{macro}{\scr@TestSkipAssignTillNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge
+% zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das
+% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte
+% Argument wird in jedem Fall komplett aufgebraucht.
+% \begin{macrocode}
+\newcommand*\scr@TestSkipAssignTillNil{}
+\def\scr@TestSkipAssignTillNil#1\@nil{%
+ \begingroup
+ \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil
+ \@tempskipa=#1\relax\@nnil
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@TestSkipAssignTillNil
+% \end{macro}^^A \ifiskip
+%
+% \begin{macro}{\ifiscount}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem
+% \cs{count}-Register (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifiscount}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifiscount#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifiscount}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf ein \cs{count}-Register prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifiscount}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifiscount
+ }{%
+ \ifstrstart{\meaning #1}{\string\count}{%
+ \aftergroup\scr@TestCountAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@ifiscount
+% \begin{macro}{\scr@TestSkipCountTillNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge
+% zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das
+% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte
+% Argument wird in jedem Fall komplett aufgebraucht.
+% \begin{macrocode}
+\newcommand*\scr@TestCountAssignTillNil{}
+\def\scr@TestCountAssignTillNil#1\@nil{%
+ \begingroup
+ \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillNnil
+ \@tempcnta=#1\relax\@nnil
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@TestCountAssignTillNil
+% \end{macro}^^A \ifiscount
+%
+%
+% \begin{macro}{\ifisdimexpr}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer
+% \cs{dimexpr} (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem
+% wichtigen Punkt von \cs{ifisdimen}: Sollte das ganze zwar als \cs{dimexpr}
+% beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt,
+% sondern führt tatsächlich zu einer Fehlermeldung.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisdimexpr}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimexpr#1\relax\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisdimexpr}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf eine \cs{dimexpr} prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisdimexpr}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisdimexpr
+ }{%
+ \ifstrstart{\meaning #1}{\string\dimexpr}{%
+ \aftergroup\scr@TestDimenAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisdimexpr
+% \end{macro}^^A \ifisdimexpr
+%
+%
+% \begin{macro}{\ifisglueexpr}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer
+% \cs{glueexpr} (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem
+% wichtigen Punkt von \cs{ifisskip}: Sollte das ganze zwar als \cs{glueexpr}
+% beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt,
+% sondern führt tatsächlich zu einer Fehlermeldung.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisglueexpr}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisglueexpr#1\relax\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisglueexpr}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf eine \cs{glueexpr} prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisglueexpr}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisglueexpr
+ }{%
+ \ifstrstart{\meaning #1}{\string\glueexpr}{%
+ \aftergroup\scr@TestSkipAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisglueexpr
+% \end{macro}^^A \ifisglueexpr
+%
+%
+% \begin{macro}{\ifisnumexpr}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einer
+% \cs{numexpr} (und zu nichts weiterem!) expandiert, wird das erste
+% Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem
+% wichtigen Punkt von \cs{ifiscount}: Sollte das ganze zwar als \cs{numexpr}
+% beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt,
+% sondern führt tatsächlich zu einer Fehlermeldung.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisnumexpr}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisnumexpr#1\relax\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisnumexpr}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf eine \cs{numexpr} prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisnumexpr}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisnumexpr
+ }{%
+ \ifstrstart{\meaning #1}{\string\numexpr}{%
+ \aftergroup\scr@TestCountAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisnumexpr
+% \end{macro}^^A \ifisnumexpr
+%
+%
+% \begin{macro}{\ifisdefchar}
+% \changes{v3.20}{2015/10/19}{neu}^^A
+% Falls das erste Argument ggf. über mehrere Stufen hinweg zu einem mit
+% \cs{chardef} definierten Wert (und zu nichts weiterem!) expandiert, wird das
+% erste Argument ausgeführt, sonst das zweite. Dies unterscheidet sich in einem
+% wichtigen Punkt von \cs{ifiscount}: Sollte das ganze zwar wie ein \cs{char}
+% beginnen, aber syntaktisch nicht korrekt sein, so wird dies nicht erkannt,
+% sondern führt tatsächlich zu einer Fehlermeldung.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisdefchar}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdefchar#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisdefchar}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf eine \cs{char} prüft
+% \begin{macrocode}
+\newcommand*{\scr@ifisdefchar}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisdefchar
+ }{%
+ \ifstrstart{\meaning #1}{\string\char\string"}{%
+ \aftergroup\scr@TestCountAssignTillNil
+ }{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ }%
+ \endgroup
+ #1%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisdefchar
+% \end{macro}^^A \ifisdefchar
+%
+%
+% \begin{macro}{\ifiscounter}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% Falls die Expansion des ersten Arguments ein \LaTeX-Zähler ist, wird das
+% zweite Argument ausgeführt, sonst das dritte.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifiscounter}[1]{%
+ \begingroup
+ \scr@ifundefinedorrelax{c@#1}{%
+ \aftergroup\@secondoftwo
+ }{%
+ \aftergroup\@firstoftwo
+ }%
+ \endgroup
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \ifiscounter
+%
+%
+% \begin{macro}{\ifisinteger}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
+% \changes{v3.20}{2015/10/19}{Reimplementierung}^^A
+% Falls die Expansion des ersten Arguments eine (positive oder negative) ganze
+% Zahl ist, wird das zweite Argument ausgeführt, sonst das dritte.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisinteger}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisinteger#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisinteger}
+% \changes{v3.20}{2015/10/19}{neu (intern)}^^A
+% Hilfsmacro, das ggf. rekusiv auf ein Vorzeichen oder eine positive Zahl
+% prüft.
+% \begin{macrocode}
+\def\scr@ifisinteger#1{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisinteger\aftergroup#1%
+ }{%
+ \ifstrstart{\meaning #1}{\detokenize{the character}}{%
+ \if #1-\aftergroup\scr@ifisinteger
+ \else
+ \if #1+\aftergroup\scr@ifisinteger
+ \else
+ \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else
+ \if #14\else\if #15\else\if #16\else\if #17\else
+ \if #18\else\if #19\else 1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \relax
+ \aftergroup\scr@TestCountAssignTillNil
+ \aftergroup#1%
+ \else
+ \aftergroup\scr@secondoftwoAfterNil
+ \aftergroup#1%
+ \fi
+ \fi
+ \fi
+ }{%
+ \ifstrstart{\meaning #1}{\string\char\string"}{%
+ \aftergroup\scr@TestCountAssignTillNil
+ }{%
+ \def\reserved@c{%
+ \aftergroup\scr@secondoftwoAfterNil
+ }%
+ \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,%
+ \adjdemerits,%
+ \baselineskip,\belowdisplayskip,%
+ \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,%
+ \brokenpenalty,%
+ \clubpenalty,\count,%
+ \dimen,\dimexpr,\doublehyphendemerits,\dp,%
+ \emergenystretch,\exhyphenpenalty,%
+ \finalhyphendemerits,%
+ \glueexpr,%
+ \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,%
+ \lastskip,\lastpenalty,\linepenalty,%
+ \lineskip,\lineskiplimit,%
+ \maxdepth,\numexpr,%
+ \overfullrule,%
+ \parfillskip,\parindent,\parskip,%
+ \pdfpageheight,\pdfpagewidth,%
+ \predisplaypenalty,\pretolerance,%
+ \relpenalty,\widowpenalty,%
+ \skip,\splitmaxdepth,\splittopskip,%
+ \tolerance,\topskip,%
+ \wd,\vbadness,\vfuzz,\vsize
+ \do {%
+ \expandafter\ifstr\expandafter{\expandafter\string\reserved@a}{%
+ \meaning #1%
+ }{%
+ \def\reserved@c{\aftergroup\scr@TestCountAssignTillNil}%
+ }%
+ }%
+ \reserved@c
+ }%
+ \aftergroup#1%
+ }%
+ }%
+ \endgroup
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@ifisinteger
+% \end{macro}^^A \ifisinteger
+%
+%
+% \begin{macro}{\scr@ifrelax@to@nnil}
+% \changes{v3.12}{2013/11/05}{neu (intern)}^^A
+% Hilfsmakro, zur Verwendung beispielsweise nach Zuweissungen. Falls alles bis
+% zum ersten \cs{@nnil} aus genau einem \cs{relax} besteht, wird das erste
+% Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@ifrelax@to@nnil}{}
+\def\scr@ifrelax@to@nnil#1\@nnil{%
+ \begingroup
+ \def\reserved@a{#1}\def\reserved@b{\relax}%
+ \ifx\reserved@a\reserved@b
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifisdimension}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
+% \changes{v3.20}{2015/10/20}{Reimplementierung}^^A
+% Falls die stufenweise Expansion des ersten Arguments eine (positive oder
+% negative) Länge ist, wird das zweite Argument ausgeführt, sonst das
+% dritte.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisdimension}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisdimension#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisdimension}
+% \changes{v3.20}{2015/10/20}{neu (intern)}
+% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da eine Dimension recht
+% komplex aufgebaut sein darf. Ich habe aber beschlossen, hier mit einer
+% Heuristik zu Werke zu gehen: Wenn das Argument mit einer beliebigen Anzahl
+% Vorzeichen, gefolgt von max. einem Punkt, Komma oder einer Ziffer oder
+% gefolgt einem der für Längen zulässigen Primitiv beginnt, dann probieren wir
+% eine Zuweisung. Ist diese syntaktisch nicht korrekt, kann ein Fehler die
+% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich!
+% \begin{macrocode}
+\newcommand*{\scr@ifisdimension}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisdimension\aftergroup#1%
+ }{%
+ \ifstrstart{\meaning #1}{\detokenize{the character}}{%
+ \if #1-\aftergroup\scr@ifisdimension
+ \else
+ \if #1-\aftergroup\scr@ifisdimension
+ \else
+ \if #1.%
+ \aftergroup\scr@TestDimensionAssignTillNil
+ \aftergroup#1%
+ \else
+ \if #1,%
+ \aftergroup\scr@TestDimensionAssignTillNil
+ \aftergroup#1%
+ \else
+ \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else
+ \if #14\else\if #15\else\if #16\else\if #17\else
+ \if #18\else\if #19\else 1\fi\fi
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \relax
+ \aftergroup\scr@TestDimensionAssignTillNil
+ \aftergroup#1%
+ \else
+ \aftergroup\scr@secondoftwoAfterNil
+ \aftergroup#1%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }{%
+ \ifstrstart{\meaning #1}{\string\char\string"}{%
+ \aftergroup\scr@TestDimensionAssignTillNil
+ }{%
+ \def\reserved@c{%
+ \aftergroup\scr@secondoftwoAfterNil
+ \aftergroup\@empty
+ }%
+ \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,%
+ \adjdemerits,%
+ \baselineskip,\belowdisplayskip,%
+ \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,%
+ \brokenpenalty,%
+ \clubpenalty,\count,%
+ \dimen,\dimexpr,\doublehyphendemerits,\dp,%
+ \emergenystretch,\exhyphenpenalty,%
+ \finalhyphendemerits,%
+ \glueexpr,%
+ \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,%
+ \lastskip,\lastpenalty,\linepenalty,%
+ \lineskip,\lineskiplimit,%
+ \maxdepth,\numexpr,%
+ \overfullrule,%
+ \parfillskip,\parindent,\parskip,%
+ \pdfpageheight,\pdfpagewidth,%
+ \predisplaypenalty,\pretolerance,%
+ \relpenalty,\widowpenalty,%
+ \skip,\splitmaxdepth,\splittopskip,%
+ \tolerance,\topskip,%
+ \wd,\vbadness,\vfuzz,\vsize
+ \do {%
+ \expandafter\ifstr\expandafter{\expandafter\string\reserved@a}{%
+ \meaning #1%
+ }{%
+ \def\reserved@c{\aftergroup\scr@TestDimensionAssignTillNil}%
+ }%
+ }%
+ \reserved@c
+ }%
+ \aftergroup#1%
+ }%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scr@TestDimenionAssignTillNil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge
+% zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das
+% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte
+% Argument wird in jedem Fall komplett aufgebraucht.
+% \begin{macrocode}
+\newcommand*\scr@TestDimensionAssignTillNil{}
+\def\scr@TestDimensionAssignTillNil#1\@nil{%
+ \begingroup
+ \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillptNnil
+ \@tempdima=#1pt\@nnil
+}
+% \end{macrocode}
+% \begin{macro}{\scr@IfAfterEndgroupArgIsRelaxTillptNnil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% \begin{macro}{\scr@IfArgIsRelaxAfterRelaxTillptNnil}
+% \changes{v3.20}{2015/10/19}{neu (intern)}
+% Die Hilfsmakros lesen ein durch \cs{@nnil} begrenztes Argument. Falls dieses
+% Argument nur aus einer Folge von \cs{relax} besteht, wird das erste Argument
+% nach \cs{@nnil} ausgeführt, sonst das zweite.
+% \begin{macrocode}
+\newcommand*\scr@AfterEndGroupIfArgIsRelaxTillptNnil{}
+\def\scr@AfterEndGroupIfArgIsRelaxTillptNnil#1\@nnil{%
+ \endgroup
+ \ifstr{\detokenize{#1}}{\detokenize{pt}}{\@firstoftwo}{%
+ \ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{%
+ \scr@IfArgIsRelaxAfterRelaxTillptNnil #1\@nnil
+ }{\@secondoftwo}%
+ }%
+}
+\newcommand*\scr@IfArgIsRelaxAfterRelaxTillptNnil{}
+\def\scr@IfArgIsRelaxAfterRelaxTillptNnil \relax#1pt\@nnil{%
+ \ifstr{\detokenize{#1}}{\detokenize{pt}}{\@firstoftwo}{%
+ \ifstrstart{\detokenize{#1}}{\detokenize{\relax}}{%
+ \scr@IfArgIsRelaxAfterRelaxTillptNnil #1\@nnil
+ }{\@secondoftwo}%
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@IfArgIsRelaxAfterRelaxTillptNnil
+% \end{macro}^^A \scr@IfArgIsRelaxTillptNnil
+% \end{macro}^^A \scr@DimensionSkipAssignTillNil
+% \end{macro}^^A \scr@ifisdimension
+% \end{macro}^^A \ifisdimension
+%
+%
+% \begin{macro}{\ifisglue}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
+% \changes{v3.20}{2015/10/21}{Reimplementierung}^^A
+% Falls die stufenweise Expansion des ersten Arguments eine (positive oder
+% negative) Länge mit Leim ist, wird das zweite Argument ausgeführt, sonst das
+% dritte.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\ifisglue}[1]{%
+ \IfArgIsEmpty{#1}{\@secondoftwo}{\scr@ifisglue#1\@nil}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ifisglue}
+% \changes{v3.20}{2015/10/21}{neu (intern)}
+% Eigentlich wäre dieses Hilfsmakro extrem aufwändig, da Leim recht
+% komplex aufgebaut sein darf. Ich habe aber beschlossen, hier mit einer
+% Heuristik zu Werke zu gehen: Wenn das Argument mit einer beliebigen Anzahl
+% Vorzeichen, gefolgt von max. einem Punkt, Komma oder einer Ziffer oder
+% gefolgt einem der für Leim zulässigen Primitiv beginnt, dann probieren wir
+% eine Zuweisung. Ist diese syntaktisch nicht korrekt, kann ein Fehler die
+% Folge sein. Das mag unschön sein, vereinfacht den Test aber erheblich!
+% \begin{macrocode}
+\newcommand*{\scr@ifisglue}[1]{%
+ \begingroup
+ \ifstrstart{\meaning #1}{\detokenize{macro:}}{%
+ \aftergroup\expandafter\aftergroup\scr@ifisglue\aftergroup#1%
+ }{%
+ \ifstrstart{\meaning #1}{\detokenize{the character}}{%
+ \if #1-\aftergroup\scr@ifisglue
+ \else
+ \if #1-\aftergroup\scr@ifisdimension
+ \else
+ \if #1.%
+ \aftergroup\scr@TestGlueAssignTillNil
+ \aftergroup#1%
+ \else
+ \if #1,%
+ \aftergroup\scr@TestGlueAssignTillNil
+ \aftergroup#1%
+ \else
+ \ifnum 0=0\if #10\else\if #11\else\if #12\else\if #13\else
+ \if #14\else\if #15\else\if #16\else\if #17\else
+ \if #18\else\if #19\else 1\fi\fi
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \relax
+ \aftergroup\scr@TestGlueAssignTillNil
+ \aftergroup#1%
+ \else
+ \aftergroup\scr@secondoftwoAfterNil
+ \aftergroup#1%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }{%
+ \ifstrstart{\meaning #1}{\string\char\string"}{%
+ \aftergroup\scr@TestGlueAssignTillNil
+ }{%
+ \def\reserved@c{%
+ \aftergroup\scr@secondoftwoAfterNil
+ \aftergroup\@empty
+ }%
+ \@for\reserved@a:=\abovedisplayskip,\abovedisplayshortskip,%
+ \adjdemerits,%
+ \baselineskip,\belowdisplayskip,%
+ \belowdisplayshortskip,\binoppenalty,\boxmaxdepth,%
+ \brokenpenalty,%
+ \clubpenalty,\count,%
+ \dimen,\dimexpr,\doublehyphendemerits,\dp,%
+ \emergenystretch,\exhyphenpenalty,%
+ \finalhyphendemerits,%
+ \glueexpr,%
+ \hbadness,\hfuzz,\hsize,\ht,\hyphenpenalty,%
+ \lastskip,\lastpenalty,\linepenalty,%
+ \lineskip,\lineskiplimit,%
+ \maxdepth,\numexpr,%
+ \overfullrule,%
+ \parfillskip,\parindent,\parskip,%
+ \pdfpageheight,\pdfpagewidth,%
+ \predisplaypenalty,\pretolerance,%
+ \relpenalty,\widowpenalty,%
+ \skip,\splitmaxdepth,\splittopskip,%
+ \tolerance,\topskip,%
+ \wd,\vbadness,\vfuzz,\vsize
+ \do {%
+ \expandafter\ifstr\expandafter{\expandafter\string\reserved@a}{%
+ \meaning #1%
+ }{%
+ \def\reserved@c{\aftergroup\scr@TestGlueAssignTillNil}%
+ }%
+ }%
+ \reserved@c
+ }%
+ \aftergroup#1%
+ }%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scr@TestGlueAssignTillNil}
+% \changes{v3.20}{2015/10/21}{neu (intern)}
+% Das durch \cs{@nil} begrenzte Argument wird einer temporären Länge
+% zugewiesen. Wird dabei das Argument komplett aufgebraucht, so wird das
+% erste Argument nach \cs{@nil} ausgeführt, sonst das zweite. Das begrenzte
+% Argument wird in jedem Fall komplett aufgebraucht.
+% \begin{macrocode}
+\newcommand*\scr@TestGlueAssignTillNil{}
+\def\scr@TestGlueAssignTillNil#1\@nil{%
+ \begingroup
+ \afterassignment\scr@AfterEndGroupIfArgIsRelaxTillptNnil
+ \@tempskipa=#1pt\@nnil
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@TestGlueAssignTillNil
+% \end{macro}^^A \scr@ifisglue
+% \end{macro}^^A \ifisglue
+%
+%
+% \begin{macro}{\ifnumber}
+% \changes{v3.12}{2013/10/30}{using \cs{aftergroup} instead of
+% \cs{endgroup}\cs{expandafter}}^^A
+% \changes{v3.12a}{2014/01/24}{Leerzeichenfehler korrigiert}^^A
+% Dieses Makro testet, ob ein übergebener Parameter eine positive,
+% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter
+% ausgeführt, sonst der dritte.
+% \begin{macrocode}
+%<*base>
+\newcommand\ifnumber[1]{%
+ \begingroup\@tempswafalse\let\scr@next\test@number
+ \expandafter\scr@next#1\scr@next
+ \if@tempswa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\test@number}
+% Für den eigentlichen Test wird der erste Parameter Token für Token
+% gescannt und beurteilt.
+% \begin{macrocode}
+\newcommand*{\test@number}[1]{%
+ \ifx \scr@next#1%
+ \let\scr@next\relax
+ \else
+% \end{macrocode}
+% Dabei wird für einen schnelleren Vergleich die Tatsache genutzt, dass
+% Ziffernzeichen immer im selben durchgängigen Bereich liegen
+% \begin{macrocode}
+ \@tempcnta=\expandafter\expandafter\expandafter\number
+ \expandafter`#1\relax
+ \ifnum \@tempcnta>47
+ \ifnum \@tempcnta<58
+ \@tempswatrue
+ \else\@tempswafalse\fi
+ \else\@tempswafalse\fi
+% \end{macrocode}
+% Das zeichenweise Scannen und Parsen kann natürlich nicht einfach
+% abgebrochen werden. Stattdessen ist der Parameterrest noch zu
+% entfernen.
+% \begin{macrocode}
+ \if@tempswa\else\let\scr@next\gobble@till@scr@next\fi
+ \fi
+ \scr@next
+}
+% \end{macrocode}
+% \begin{macro}{\gobble@tillscr@@next}
+% Das geschieht mit einem einzigen "`Leermacro"'.
+% \begin{macrocode}
+\newcommand*{\gobble@till@scr@next}{}
+\def\gobble@till@scr@next#1\scr@next{}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifintnumber}
+% \changes{v3.12}{2013/10/30}{neu}^^A
+% Ist das erste Argument eine positive oder negative ganze Zahl, to wird das
+% zweite Argument ausgeführt, sonst das dritte. Wie bei \TeX{} auch sind
+% beliebig viele Vorzeichen erlaubt.
+% \begin{macrocode}
+%<*base>
+\newcommand\ifintnumber[1]{%
+ \begingroup\@tempswafalse\let\scr@next\scr@test@sign
+ \expandafter\scr@next#1\scr@next
+ \if@tempswa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scr@test@sign}
+% \changes{v3.12}{2013/10/30}{neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\scr@test@sign}[1]{%
+ \ifx \scr@next#1
+ \let\scr@next\relax
+ \else
+ \if #1-%
+ \else
+ \ifx #1+%
+ \else
+ \def\scr@next{\let\scr@next\test@number\scr@next #1}%
+ \fi
+ \fi
+ \fi
+ \scr@next
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifdimen}
+% Dieses Makro testet, ob ein übergebener Parameter eine Dimension
+% ist und führt in Abhängigkeit davon den zweiten oder dritten
+% Parameter aus.
+% \begin{macrocode}
+%<*base>
+\newcommand{\ifdimen}[1]{%
+ \begingroup\@tempswatrue\let\scr@next\test@posdimen
+ \expandafter\test@dimen#1\scr@next
+ \if@tempswa
+ \endgroup\expandafter\@firstoftwo
+ \else
+ \endgroup\expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\test@dimen}
+% Als erste muss ein Vorzeichen entfernt werden.
+% \begin{macrocode}
+\newcommand*{\test@dimen}[1]{%
+ \ifx -#1\else\ifx +#1\else
+ \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi
+ \scr@next
+}
+% \end{macrocode}
+% \begin{macro}{\test@posdimen}
+% Dann muss getestet werden, ob es sich beim Rest um eine Dimension
+% handelt. Dabei werden der Einfachheit halber mehrere Dezimalkomma
+% und -punkte erlaubt. Natürlich könnte man es auch wirklich richtig
+% machen, aber das wäre nochmal etwas aufwendiger. Ist das wirklich
+% notwendig?
+% \begin{macrocode}
+\newcommand*{\test@posdimen}[1]{%
+ \ifx \scr@next#1%
+ \@tempswafalse\let\scr@next\relax
+ \else
+ \if .#1\else\if ,#1\else
+ \@tempcnta=%
+ \expandafter\expandafter\expandafter\number\expandafter`#1\relax
+ \ifnum \@tempcnta>47
+ \ifnum \@tempcnta<58
+ \else\def\scr@next{\test@dimunt#1}\fi
+ \else\def\scr@next{\test@dimunt#1}\fi
+ \fi\fi
+ \fi
+ \scr@next
+}
+% \end{macrocode}
+% \begin{macro}{\test@dimunt}
+% \begin{macro}{\test@trueunt}
+% Außer einer Gleitkomma- bzw. Gleitpunktzahl muss auch noch die Einheit
+% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch
+% deren "`true"'-Variante zu berücksichtigen. Deshalb wird zuerst ein
+% eventuelles "`\texttt{true}"' weggeworfen.
+% \begin{macrocode}
+\newcommand*{\test@dimunt}{}
+\def\test@dimunt#1\scr@next{%
+ \expandafter\test@trueunt#1truetrue\test@trueunt
+}
+\newcommand*{\test@trueunt}{}
+\def\test@trueunt#1true#2true#3\test@trueunt{%
+ \edef\reserved@a{#1}%
+ \ifx\reserved@a\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi
+}
+% \end{macrocode}
+% \begin{macro}{\test@@ifdimunt}
+% \changes{v3.21}{2016/05/27}{elf bis zwölf Einheiten nicht neun}
+% Anschließend wird dann getestet, ob es sich um eine der elf bis zwölf
+% üblichen Einheiten handelt.
+% \begin{macrocode}
+\newcommand*\test@@ifdimunt[1]{%
+ \@tempswafalse
+ \ifstr{#1}{pt}{\@tempswatrue}{%
+ \ifstr{#1}{pc}{\@tempswatrue}{%
+ \ifstr{#1}{in}{\@tempswatrue}{%
+ \ifstr{#1}{bp}{\@tempswatrue}{%
+ \ifstr{#1}{cm}{\@tempswatrue}{%
+ \ifstr{#1}{mm}{\@tempswatrue}{%
+ \ifstr{#1}{dd}{\@tempswatrue}{%
+ \ifstr{#1}{cc}{\@tempswatrue}{%
+ \ifstr{#1}{sp}{\@tempswatrue}{%
+ \ifstr{#1}{ex}{\@tempswatrue}{%
+ \ifstr{#1}{em}{\@tempswatrue}{%
+ \scr@ifpdfoutput{%
+ \ifstr{#1}{px}{\@tempswatrue}{}%
+ }{}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ifpdftex}
+% \changes{v2.95}{2002/08/19}{neu}^^A
+% \begin{macro}{\scr@ifpdftex}
+% \changes{v2.95}{2002/08/19}{neu (intern)}^^A
+% If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} verwendet wird.
+% \begin{macrocode}
+%<*base>
+\newcommand{\scr@ifpdftex}{\ifnotundefined{pdftexversion}}
+\let@as@internal@defined{ifpdftex}
+\BeforePackage{pdfcprot}{\let\ifpdftex\relax}
+\AfterPackage{pdfcprot}{\let@as@internal@defined{ifpdftex}}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@ifluatex}
+% \changes{v3.21}{2016/05/27}{neu (intern)}^^A
+% If-the-else-Konstrukt, um zu testen, ob lua\TeX{} verwendet wird.
+% \begin{macrocode}
+%<*base>
+\newcommand{\scr@ifluatex}{\ifnotundefined{luatexversion}}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@ifpdforluatex}
+% \changes{v3.21}{2016/05/27}{neu (intern)}^^A
+% If-then-else-Konstrukt, um zu testen, ob pdf\TeX{} oder lua\TeX{} verwendet
+% wird.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@ifpdforluatex}{%
+ \scr@ifpdftex{\@firstoftwo}{\scr@ifluatex{\@firstoftwo}{\@secondoftwo}}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifVTeX}
+% \changes{v2.95}{2002/08/19}{neu}^^A
+% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{ifvtex}}
+% \begin{macro}{\scr@ifVTeX}
+% \changes{v2.95}{2002/08/19}{neu}^^A
+% \changes{v2.97c}{2007/06/20}{umdefiniert von \cs{scr@ifvtex}}
+% If-then-else-Konstrukt, um zu testen, ob V\TeX{} verwendet wird.
+% \begin{macrocode}
+%<*base>
+\newcommand{\scr@ifVTeX}{\ifnotundefined{VTeXversion}}
+\let@as@internal@defined{ifVTeX}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpdfoutput}
+% \changes{v2.7g}{2001/04/17}{neu}^^A
+% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu
+% \cs{relax}, wenn zuvor undefiniert}
+% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein}^^A
+% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}}
+% \begin{macro}{\scr@ifpdfoutput}
+% \changes{v2.8q}{2001/10/19}{neu (intern)}^^A
+% \changes{v2.8q}{2001/11/13}{funktioniert}^^A
+% \changes{v2.95}{2002/08/21}{berücksichtigt V\TeX}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
+% \changes{v3.21}{2016/05/27}{lua\TeX{} nach 0.85 berücksichtigt}^^A
+% If-then-else-Konstrukt, um abhängig davon, ob als \texttt{pdf}
+% ausgegeben wird oder nicht, Befehle auszuführen. Dieses Makro wird
+% für die Deklaration der Option \texttt{pagesize} benötigt.
+% \begin{macrocode}
+%<*base>
+\newcommand{\scr@ifpdfoutput}{%
+ \scr@ifundefinedorrelax{pdfoutput}{%
+ \scr@ifundefinedorrelax{outputmode}{%
+ \scr@ifundefinedorrelax{OpMode}{%
+ \expandafter\@secondoftwo%
+ }{%
+ \ifnum\OpMode=1
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\outputmode>0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\pdfoutput>0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}%
+\let@as@internal@defined{ifpdfoutput}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpsoutput}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \begin{macro}{\scr@ifpsoutput}
+% \changes{v2.95}{2002/08/21}{neu (intern)}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
+% If-then-else-Konstrukt, um abhängig davon, ob früher oder später
+% \texttt{ps} ausgegeben wird oder nicht, Befehle auszuführen.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@ifpsoutput}{%
+ \ifnotundefined{if@dvips}{%
+ \if@dvips
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }{%
+ \ifnotundefined{OpMode}{%
+ \ifnum\OpMode=2
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }{%
+ \expandafter\@secondoftwo
+ }%
+ }%
+}
+\let@as@internal@defined{ifpsoutput}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifdvioutput}
+% \changes{v2.95}{2002/08/21}{neu}^^A
+% \begin{macro}{\scr@ifdvioutput}
+% \changes{v2.95}{2002/08/21}{neu (intern)}^^A
+% \changes{v2.95}{2004/07/20}{Expandierbarkeit verbessert}^^A
+% \changes{v3.23}{2017/02/14}{lua\TeX{} nach 0.85 berücksichtigt}^^A
+% If-then-else-Konstrukt, um abhängig davon, ob \texttt{dvi}
+% ausgegeben wird oder nicht, Befehle auszuführen.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@ifdvioutput}{%
+ \scr@ifundefinedorrelax{pdfoutput}{%
+ \scr@ifundefinedorrelax{outputmode}{%
+ \scr@ifundefinedorrelax{OpMode}{%
+ \expandafter\@firstoftwo
+ }{%
+ \ifnum\OpMode=0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\outputmode>0
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }%
+ }{%
+ \ifnum\pdfoutput=0
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}
+\let@as@internal@defined{ifdvioutput}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@smashdp}
+% \changes{v2.97c}{2007/09/17}{neu (intern)}^^A
+% \changes{v3.02a}{2009/01/23}{\cs{smash} nicht direkt verwenden, weil
+% \textsf{amsmath} das inkompatibel umdefiniert}
+% Gibt Material aus, erzeugt dabei aber nur Höhe und Breite, jedoch keine
+% Tiefe.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@smashdp}[1]{%
+ \begingroup
+ \def\finsm@sh{\dp\z@\z@\box\z@}%
+ \ifmmode
+ \expandafter\mathpalette\expandafter\mathsm@sh
+ \else
+ \expandafter\makesm@sh
+ \fi
+ {#1}%
+ \endgroup
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfRTL}
+% \changes{v3.24}{2017/05/04}{neu}
+% Die Anweisung testet, ob wir uns gerade im Von-Rechts-Nach-Links-Modus von
+% Paketen wie \textsf{bidi} befinden. Ist das der Fall, wird das erste
+% Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\IfRTL}{%
+ \scr@ifundefinedorrelax{if@RTL}{\@secondoftwo}{%
+ \expandafter\ifx\csname if@RTL\expandafter\endcsname
+ \csname iftrue\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \IfRTL
+% \begin{macro}{\IfLTR}
+% \changes{v3.24}{2017/05/04}{neu}
+% Die Anweisung testet, ob wir uns gerade nicht im
+% Von-Rechts-Nach-Links-Modus von Paketen wie \textsf{bidi} befinden. Ist
+% das der Fall, wird das erste Argument ausgeführt, sonst das zweite.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\IfLTR}{%
+ \scr@ifundefinedorrelax{if@RTL}{\@firstoftwo}{%
+ \expandafter\ifx\csname if@RTL\expandafter\endcsname
+ \csname iftrue\endcsname
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \IfLTR
+%
+% \begin{macro}{\PackageInfoNoLine}
+% \changes{v2.97d}{2007/10/03}{neu}^^A
+% Arbeitet wie \cs{PackageInfo} aber ohne Ausgabe der Zeilennummer.
+% \begin{macrocode}
+%<*base>
+\providecommand*{\PackageInfoNoLine}[2]{%
+ \PackageInfo{#1}{#2\@gobble}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ClassInfoNoLine}
+% \changes{v2.98c}{2008/02/15}{neu}^^A
+% Arbeitet wie \cs{ClassInfo} aber ohne Ausgabe der Zeilennummer.
+% \begin{macrocode}
+%<*base>
+\providecommand*{\ClassInfoNoLine}[2]{%
+ \ClassInfo{#1}{#2\@gobble}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@removefromreset}
+% \changes{v3.15}{2014/11/21}{neue Anweisung, kompatibel mit
+% \textsf{remreset} und \textsf{chngcntr}}^^A
+% Dieser alte Bekannte aus dem Paket \textsf{remreset} wird auch von
+% \KOMAScript{} benötigt. Es ist einfacher, ihn selbst zu definieren, als sich
+% auf andere Pakete zu verlassen.
+% \begin{macrocode}
+%<*base>
+\providecommand*\@removefromreset[2]{%
+ {%
+ \expandafter\let\csname c@#1\endcsname\@removefromreset
+ \def\@elt##1{%
+ \expandafter\ifx\csname c@##1\endcsname\@removefromreset
+ \else\noexpand\@elt{##1}\fi
+ }%
+ \expandafter\xdef\csname cl@#2\endcsname{\csname cl@#2\endcsname}%
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+%
+% \selectlanguage{english}%
+% \begin{macro}{\IfActiveMkBoth}
+% \changes{v3.26}{2018/09/03}{new}^^A
+% \begin{macro}{\if@scrActiveMkBoth}
+% \changes{v3.26}{2018/09/03}{new}^^A
+% This command test, whether or not \cs{@mkboth} does change a mark or not.
+% \begin{macrocode}
+%<*base>
+\newif\ifscr@ActiveMkBoth
+\def\scr@ActiveMkBothfalse{\global\let\ifscr@ActiveMkBoth\iffalse}
+\def\scr@ActiveMkBothtrue {\global\let\ifscr@ActiveMkBoth\iftrue}
+\newcommand*{\IfActiveMkBoth}{%
+ \begingroup
+ \def\markboth##1##2{\scr@ActiveMkBothtrue}%
+ \def\markright##1{\scr@ActiveMkBothtrue}%
+ \def\markleft##1{\scr@ActiveMkBothtrue}%
+ \def\markboth##1{\scr@ActiveMkBothtrue}%
+ \def\markdouble##1{\scr@ActiveMkBothtrue}%
+ \def\mark##1{\scr@ActiveMkBothtrue}
+ \scr@ActiveMkBothfalse
+ \setbox\@tempboxa\vbox{\@mkboth{}{}}%
+ \endgroup
+ \ifscr@ActiveMkBoth
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A\if@scrActiveMkBoth
+% \end{macro}^^A\IfActiveMkBoth
+% \selectlanguage{ngerman}%
+%
+% \subsection{Definition von KOMA-\textsf{keyval}-Schlüsseln (Hauptteil)}
+%
+% \begin{macro}{\FamilyExecuteOptions}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}^^A
+% \changes{v3.04b}{2010/02/02}{\cs{scr@key@atlist} und \cs{scr@key@name}^^A
+% vor Überschreiben in \cs{setkeys} geschützt}^^A
+% \changes{v3.12}{2013/03/04}{neue Implementierung}^^A
+% \changes{v3.12}{2013/03/04}{darf auch noch nach der Präambel verwendet
+% werden}^^A
+% \changes{v3.14}{2014/10/17}{das dritte Argument wird \cs{long}^^A
+% verarbeitet}^^A
+% \begin{macro}{\@FamilyExecuteOptions}
+% \changes{v3.14}{2014/10/17}{Neue streng interne Anweisung}^^A
+% \changes{v3.23}{2017/02/16}{Korrektur: Haken danach verwendet die Familie
+% statt des Mitglieds}^^A
+% Entspriche \cs{ExecuteOptions} jedoch \textsf{keyval}-Optionen. Insbesondere
+% ist die Anweisung reentrant! Es ist jedoch zu beachten, dass der hook lokal
+% zum jeweiligen Aufruf ist.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyExecuteOptions}[2][.\@currname.\@currext]{%
+ \@FamilyExecuteOptions[{#1}]{#2}%
+}
+\newcommand{\@FamilyExecuteOptions}[3][.\@currname.\@currext]{%
+ \scr@ifundefinedorrelax{scr@after@options@#2@hook}{%
+ \@namedef{scr@after@options@#2@hook}{%
+ \@namedef{scr@after@options@#2@hook}{}%
+ }%
+ }{%
+ \expandafter\edef\csname scr@after@options@#2@hook\endcsname{%
+ \noexpand\@namedef{scr@after@options@#2@hook}{%
+ \unexpanded\expandafter\expandafter\expandafter
+ {\csname scr@after@options@#2@hook\endcsname}%
+ }%
+ }%
+ }%
+ \@for\scr@key@atlist:=#3\do{%
+ \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil
+ \ifx\scr@key@name\@empty\else
+ \ifx\scr@key@name\space\else
+ \scr@ifundefinedorrelax{KV@#2@\scr@key@name}{%
+ \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/18}{Besondere Behandlung der
+% \texttt{@else@}-Option}^^A
+% Es existiert zwar weder eine Familienoption noch eine Mitgliedsoption, aber
+% vielleicht existiert ja die Spezialoption \texttt{@else@}, die in einem
+% solchen Fall die eigentliche Option als Wert erhält.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{KV@#2#1@@else@}{%
+ \PackageError{scrbase}{%
+ unknown option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'%
+ }{%
+ Member `#1' of family `#2'\MessageBreak
+ cannot handle option `\scr@key@name'.\MessageBreak
+ So it cannot be set%
+ \ifx\scr@key@value\@empty\else
+ \space to value
+ `\expandafter\detokenize\expandafter{\scr@key@value}'%
+ \fi.%
+ }%
+ }{%
+ \scr@execute@elseoption{#2#1}%
+% \end{macrocode}
+% Im Gegensatz zu anderen Optionen bedeuten bei der \texttt{@else@}-Option
+% alle von \cs{FamilyKeyStateProcessed} abweichenden Ergebnisse, dass die
+% Option nicht korrekt verarbeitet werden konnte und deshalb die ursprüngliche
+% Option als Fehler zu melden ist.
+% \begin{macrocode}
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed\else
+ \PackageError{scrbase}{%
+ unknown option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'%
+ }{%
+ Member `#1' of family `#2'\MessageBreak
+ cannot handle option `\scr@key@name'.\MessageBreak
+ So it cannot be set%
+ \ifx\scr@key@value\@empty\else
+ \space to value
+ `\expandafter\detokenize\expandafter{\scr@key@value}'%
+ \fi.%
+ }%
+ \fi
+ }%
+ }{%
+ \scr@execute@option{#2#1}%
+ }%
+ }{%
+ \scr@execute@option{#2}%
+ \ifstr{#1}{}{}{%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/18}{Memberoptionstest nach Familyoptionsausführung
+% korrigiert}^^A
+% Auch wenn eine Familienoption ausgeführt wurde, muss eine existierende
+% Mitgliederoption ggf. noch ausgeführt werden. Existiert sie nicht, wird
+% ebenfalls eine existierende \texttt{@else@}-Option ausgeführt. Allerdings
+% führen in diesem Fall von \cs{FamilyKeyStateProcessed} abweichende
+% Ergebnisse nicht zu einer Fehlermeldung.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{KV@#2#1@\scr@key@name}{%
+ \scr@ifundefinedorrelax{KV@#2#1@@else@}{}{%
+ \scr@execute@elseoption{#2#1}%
+ }%
+ }{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \scr@execute@option{#2#1}%
+ \FamilyKeyStateProcessed
+ \else
+ \scr@execute@option{#2#1}%
+ \fi
+ }%
+ }%
+ }%
+ \scr@show@key@state@error
+ \fi
+ \fi
+ }%
+ \@nameuse{scr@after@options@#2@hook}%
+}
+%</base>
+% \end{macrocode}
+% \begin{macro}{\scr@show@key@state@error}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}%
+% Zeige abhängig von \cs{FamilyKeyState} eine Fehlermeldung. Alle
+% Informationen zu dem Fehler müssen in \cs{FamilyMemberOfKey}
+% (Familienmitglied oder \cs{@empty}), \cs{FamilyOfKey} (Familie oder
+% \cs{@empty}), \cs{scr@key@atlist} (Option, wie sie in der Liste stand),
+% \cs{scr@key@name} (Name der Option) und \cs{scr@key@value} (Wert der
+% Option) stehen. Es ist zu beachten, dass \cs{scr@key@atlist} und
+% \cs{scr@key@value} ebenfalls Macros enthalten können. Deshalb werden diese
+% Werte ggf. über \cs{detokenize} ausgegeben.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\scr@show@key@state@error}{%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed\else
+ \PackageError{scrbase}{%
+ unknown option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'%
+ }{%
+ Option
+ `\expandafter\detokenize\expandafter{\scr@key@name}'\MessageBreak
+ \ifx\FamilyMemberOfKey\@empty\else
+ of member `\FamilyMemberOfKey'\MessageBreak
+ \fi
+ \ifx\FamilyOfKey\@empty\else
+ of family `\FamilyOfKey'\MessageBreak
+ \fi
+ \ifx\FamilyKeyState\FamilyKeyStateNeedValue
+ expects a value, but has been used without any value.%
+ \else
+ cannot handle value\MessageBreak
+ `\expandafter\detokenize\expandafter{\scr@key@value}',%
+ \MessageBreak
+ \ifx\FamilyKeyState\FamilyKeyStateUnknownValue
+ because this is an unsupported value.%
+ \else
+ because \FamilyKeyState.
+ \fi
+ \fi
+ }%
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@show@key@state@error
+% \end{macro}^^A \@FamilyExecuteOptions
+% \end{macro}^^A \FamilyExecuteOptions
+%
+% \begin{macro}{\KOMAExecuteOptions}
+% \changes{v2.97c}{2007/04/19}{Neue Anweisung}^^A
+% \changes{v3.00}{2008/04/30}{Kein optionales Argument mehr}^^A
+% \changes{v3.12}{2013/03/04}{darf auch noch nach der Präambel verwendet
+% werden}^^A
+% Liste von Optionen für ein Mitglied der Familie \texttt{KOMA} ausführen.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAExecuteOptions}[1][.\@currname.\@currext]{%
+ \FamilyExecuteOptions[#1]{KOMA}%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FamilyOptions}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.12}{2013/03/02}{Neue Implementierung}^^A
+% \changes{v3.12}{2013/03/02}{\cs{scr@after@options@\#1@hook}}^^A
+% \changes{v3.14}{2014/10/17}{zweites Argument wird \cs{long} behandelt}^^A
+% \begin{macro}{\@FamilyOptions}
+% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}^^A
+% \begin{macro}{\Family@Options}
+% \changes{v3.00}{2008/04/30}{Neues Makro (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
+% \end{macro}^^A \FamilyOptions
+% Es werden Schlüssel einer Familie verwendet. Existiert ein Schlüssel nicht,
+% oder ist der Wert für alle Schlüssel unbekannt, so wird ein Fehler
+% ausgegeben. Diese Anweisung selbst ist reentrant, das heißt sie kann auch
+% innerhalb der Ausführung von Optionen aufgerufen werden. Es sei jedoch
+% erwähnt, dass der hook dabei nur die jeweilige Anweisung umfasst.
+% \begin{macrocode}
+%<*base>
+\newcommand{\FamilyOptions}[1]{\@FamilyOptions{#1}}
+\newcommand{\@FamilyOptions}[2]{%
+ \scr@ifundefinedorrelax{scr@after@options@#1@hook}{%
+ \@namedef{scr@after@options@#1@hook}{%
+ \@namedef{scr@after@options@#1@hook}{}%
+ }%
+ }{%
+ \expandafter\edef\csname scr@after@options@#1@hook\endcsname{%
+ \noexpand\@namedef{scr@after@options@#1@hook}{%
+ \unexpanded\expandafter\expandafter\expandafter
+ {\csname scr@after@options@#1@hook\endcsname}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \changes{v3.23}{2017/02/16}{neuer Haken für \cs{AtEndOfFamilyOptions*}}^^A
+% Seit Version 3.23 wird hier auch der neuen Haken vor
+% \cs{AtEndOfFamilyOptions*} initialisiert. Zunächst findet eine Art
+% Vorinitialisierung statt, bei der der Haken lediglich leer definiert wird,
+% falls er noch nicht existiert. Falls er nämlich existiert, kann an einem
+% leeren Haken die oberste Ebene erkannt werden.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@after@options@#1@hook@topmost}{%
+ \@namedef{scr@after@options@#1@hook@topmost}{}%
+ }{}%
+% \end{macrocode}
+% Dann wird an einem leeren Haken die oberste Ausführungsebene erkennt. In
+% diesem Fall wird zum einen die Ausführung des Hakens in den normalen
+% Ebenen-Haken (das ist dann automatische der oberste Ebenen-Haken)
+% eingehängt und zum anderen der Haken selbst so initialisiert, dass er sich
+% bei seiner Ausführung als erstes selbst löscht. Gleichzeitig ist der Haken
+% selbst dadurch nicht mehr leer, so dass sich tiefere Ebenen von der höchsten
+% eindeutig unterscheiden.
+% \begin{macrocode}
+ \expandafter\ifx\csname scr@after@options@#1@hook@topmost\endcsname\@empty
+ \expandafter\l@addto@macro\csname scr@after@options@#1@hook\endcsname{%
+ \@nameuse{scr@after@options@#1@hook@topmost}%
+ }%
+ \@namedef{scr@after@options@#1@hook@topmost}{%
+ \@namedef{scr@after@options@#1@hook@topmost}{}%
+ }%
+ \fi
+% \end{macrocode}
+% \begin{description}
+% \item[Anmerkung:] Es wird nicht auf \textsf{xkeyval} und den dortigen Befehl
+% \cs{setkeys+} gesetzt, weil dieser die Optionen nicht in der Reihenfolge
+% der Optionen, sondern in der Reihenfolge der Familien ausführt. Das passt
+% mir aber hier gar nicht.
+% \end{description}
+% In einer Schleife über alle Optionen werden die Optionen zunächst in Option
+% und Wert aufgespaltet.
+% \begin{macrocode}
+ \@for\scr@key@atlist:=#2\do{%
+% \end{macrocode}
+% \changes{v3.08}{2010/11/05}{leere Argumente in der Optionenliste}%
+% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere
+% Argumente in der Optionenliste erlaubt. Die erste Form wäre, wenn zwei
+% Kommas diret aufeinander folgen:
+% \begin{macrocode}
+ \ifx\scr@key@atlist\@empty\else
+% \end{macrocode}
+% Die zweite Möglichkeit wäre, dass noch Leerzeichen zwischen den Komma
+% übrig bleiben:
+% \begin{macrocode}
+ \ifx\scr@key@atlist\space\else
+ \expandafter\scr@key@split@name@value\scr@key@atlist==\@nil
+% \end{macrocode}
+% Die dritte Möglichkeit, dass auch noch ein Gleichheitszeichen übrig
+% gelassen wurde, werde ich aber nicht abfangen. Irgendwann müssen die
+% Anwender auch mal ihre Fehler einsehen und korrigieren!
+%
+% Wir haben jetzt also eine Option und diese aufgespaltet in Schlüssel und
+% Wert.
+% \changes{v3.12}{2013/03/04}{der Gesamtstatus wird gespeichert}^^A
+% Jetzt speichern wir den Gesamtstatus einfach, indem der Fehlerspeicher
+% gelöscht wird. Bei \cs{relax} wird er nicht weiter benötigt und es liegt
+% ebenso wie bei \cs{@empty} kein auszugebender Fehler vor. Bei anderen
+% Werten, enthält er Fehler, die zu melden sind.
+% \begin{macrocode}
+ \let\scr@key@run@errors\@empty
+% \end{macrocode}
+%
+% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}
+% \changes{v3.09a}{2011/06/07}{weniger Expansion durch sinnvollen Gebrauch
+% von \cs{unexpanded}}
+% Dann wird in einer Schleife über alle Familien festgestellt, ob die Option
+% in einer Familie bekannt ist und ggf. ausgeführt. Hier ist wichtig, dass
+% keines der internen Macros vom Aufruf verändert wird. Außerdem muss der
+% Status und die daraus resultierenden Meldungen aufgesammelt werden.
+% \begin{macrocode}
+ \scr@key@found@false
+ \edef\reserved@a{\csname #1@key@familylist\endcsname}%
+ \@for\reserved@a:=\reserved@a\do{%
+ \scr@ifundefinedorrelax{KV@\reserved@a @\scr@key@name}{}{%
+ \expandafter\scr@execute@option\expandafter{\reserved@a}%
+ \scr@key@found@true
+ \ifx\scr@key@run@errors\relax\else
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \let\scr@key@run@errors\relax
+ \else
+ \ifx\FamilyKeyState\FamilyKeyStateUnknownValue
+ \edef\scr@key@run@errors{%
+ \unexpanded\expandafter{\scr@key@run@errors}%
+ \noexpand\MessageBreak
+ \FamilyMemberOfKey: unkown value
+ `\expandafter\detokenize\expandafter{\scr@key@value}'.%
+ }%
+ \else
+ \ifx\FamilyKeyState\FamilyKeyStateNeedValue
+ \edef\scr@key@run@errors{%
+ \unexpanded\expandafter{\scr@key@run@errors}%
+ \noexpand\MessageBreak
+ \FamilyMemberOfKey: value expected.
+ }%
+ \else
+ \edef\scr@key@run@errors{%
+ \unexpanded\expandafter{\scr@key@run@errors}%
+ \noexpand\MessageBreak
+ \FamilyMemberOfKey: \FamilyKeyState.
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ \ifscr@key@found@
+ \ifx\scr@key@run@errors\relax\else
+ \ifx\scr@key@run@errors\@empty\else
+ \PackageError{scrbase}{%
+ unknown option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'%
+ }{%
+ The members of family `#1' cannot set option
+ `\scr@key@name'
+ \ifx\scr@key@value\@empty\else
+ \MessageBreak
+ to value
+ `\expandafter\detokenize\expandafter{\scr@key@value}'%
+ \fi.\MessageBreak
+ Here's what each member says:
+ \scr@key@run@errors
+ }%
+ \fi
+ \fi
+ \else
+ \PackageError{scrbase}{%
+ unknown option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'%
+ }{%
+ No one of the members of family `#1'\MessageBreak
+ can handle option `\scr@key@name'.\MessageBreak
+ So it cannot be set%
+ \ifx\scr@key@value\@empty\else
+ \space to value
+ `\expandafter\detokenize\expandafter{\scr@key@value}'%
+ \fi.%
+ }%
+ \fi
+ \fi
+ \fi
+ }%
+ \@nameuse{scr@after@options@#1@hook}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@execute@option}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}^^A
+% \changes{v3.13}{2014/06/30}{fehlendes \cs{expandafter} in \cs{PackageInfo}
+% ergänzt}^^A
+% \changes{v3.13a}{2014/08/13}{Leerzeichen durch fehlendes Prozentzeichen
+% beseitigt}^^A
+% \changes{v3.23}{2017/02/16}{den \cs{AtEndOfFamilyOptions} Haken hier zu
+% sichern nützt nichts}^^A
+% Es wird die bereits gesplittete Option ausgeführt, ohne dass die dabei
+% wesentlichen Macros (aber nicht \cs{reserved@a}!) verändert werden. Das
+% erste Argument ist bereits der Besitzer in \textsf{keyval}-Syntax.
+% \begin{macrocode}
+\newcommand*{\scr@execute@option}[1]{%
+ \protected@edef\reserved@a{%
+ \noexpand\let\noexpand\KV@err\noexpand\scr@KV@err
+ \noexpand\setkeys{#1}{%
+ \unexpanded\expandafter{\scr@key@atlist}}%
+ \noexpand\def\noexpand\scr@key@atlist{%
+ \unexpanded\expandafter{\scr@key@atlist}}%
+ \noexpand\def\noexpand\scr@key@name{%
+ \unexpanded\expandafter{\scr@key@name}}%
+ \noexpand\def\noexpand\scr@key@value{%
+ \unexpanded\expandafter{\scr@key@value}}%
+ \ifx\scr@key@run@errors\relax
+ \noexpand\let\noexpand\scr@key@run@errors\relax
+ \else
+ \noexpand\def\noexpand\scr@key@run@errors{%
+ \unexpanded\expandafter{\scr@key@run@errors}}%
+ \fi
+ \ifx\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions@immediate
+ \noexpand\let\noexpand\AtEndOfFamilyOptions
+ \noexpand\scr@AtEndOfFamilyOptions@immediate
+ \fi
+ }%
+ \let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions
+ \reserved@a
+ \ifx\FamilyKeyState\FamilyKeyStateUnknown
+ \PackageInfo{scrbase}{Unknown processing state.\MessageBreak
+ Processing option
+ `\expandafter\detokenize\expandafter{\scr@key@atlist}'\MessageBreak
+ \ifx\FamilyMemberOfKey\@empty\else
+ of member `\FamilyMemberOfKey'\MessageBreak
+ \fi
+ of family `\FamilyOfKey'\MessageBreak
+ doesn't set a valid state.\MessageBreak
+ This will be interpreted\MessageBreak
+ as \string\FamilyKeyStateProcessed
+ }%
+ \FamilyKeyStateProcessed
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@KV@err}
+% \changes{v3.12a}{2013/03/04}{missing internal command added}^^A
+% We just have to signal, that the option needs a value, that is missing.
+% \begin{macrocode}
+\newcommand*{\scr@KV@err}[1]{%
+ \FamilyKeyStateNeedValue
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@key@run@errors}
+% \changes{v3.12}{2013/03/04}{Neue Anweisung (intern)}^^A
+% Wird innerhalb von \cs{FamilyOptions} benötigt, um die Fehlermeldungen
+% aufzusammeln, aber erst auszugeben, wenn tatsächlich kein Mitglied die
+% Option verarbeiten konnte. Wir definieren das hier, damit oben die
+% Wiederherstellung korrekt funktioniert.
+% \begin{macrocode}
+\newcommand*{\scr@key@run@errors}{}
+% \end{macrocode}
+% \end{macro}^^A \scr@key@run@errors}
+% \end{macro}^^A \scr@execute@option
+% \begin{macro}{\scr@execute@elseoption}
+% \changes{v3.20}{2015/11/18}{neu (intern)}^^A
+% \changes{v3.25}{2017/11/16}{Gruppe eingefügt}^^A
+% \changes{v3.25}{2017/11/16}{\cs{scr@key@name@else} und
+% \cs{scr@key@value@else} neu}^^A
+% Ist eine Spezialoption mit dem Namen \texttt{@else@} definiert, so wird
+% diese von \cs{FamilyExecuteOptions} genau dann ausgeführt, wenn keine
+% passende Option gefunden wurde. Dafür dient dieses Makro, dessen Argumente
+% und Aufrufstatus genau \cs{scr@execute@option} entspricht. Es soll auch
+% genau dasselbe tun, außer dass es nicht die Option selbst aufruft, sondern
+% die Option als Wert an die \texttt{@else@}-Option übergibt. Es muss also
+% temporär \cs{scr@key@atlist}, \cs{scr@key@name} und \cs{scr@key@value}
+% geändert werden, bevor \cs{scr@execute@option} ausgeführt wird. Da
+% allerdings die Originalwerte ggf. von der \texttt{@else@}-Option ausgewertet
+% werden sollen, wird das originale \cs{scr@key@atlist} zum Wert der
+% \texttt{@else@}-Option. Damit diese nicht erneut aufgespaltet werden muss,
+% werden die originalen \cs{scr@key@name} und \cs{scr@key@value} zusätzlich in
+% \cs{scr@key@name@else} und \cs{scr@key@value@else} gespeichert.
+% \begin{macrocode}
+\newcommand*{\scr@execute@elseoption}[1]{%
+ \begingroup
+ \protected@edef\reserved@a{%
+ \unexpanded{%
+ \endgroup
+ \let\scr@key@name@else\scr@key@name
+ \let\scr@key@value@else\scr@key@value
+ \def\scr@key@name{@else@}%
+ }%
+ \noexpand\def\noexpand\scr@key@value{%
+ \unexpanded\expandafter{\scr@key@atlist}}%
+ \noexpand\def\noexpand\scr@key@atlist{%
+ @else@={\unexpanded\expandafter{\scr@key@atlist}}}%
+ \noexpand\scr@execute@option{#1}%
+ \noexpand\def\noexpand\scr@key@atlist{%
+ \unexpanded\expandafter{\scr@key@atlist}}%
+ \noexpand\def\noexpand\scr@key@name{%
+ \unexpanded\expandafter{\scr@key@name}}%
+ \noexpand\def\noexpand\scr@key@value{%
+ \unexpanded\expandafter{\scr@key@value}}%
+ \scr@ifundefinedorrelax{scr@key@name@else}{%
+ \unexpanded{\let\scr@key@name@else\relax}%
+ }{%
+ \noexpand\def\noexpand\scr@key@name@else{%
+ \unexpanded\expandafter{\scr@key@name@else}%
+ }%
+ }
+ \scr@ifundefinedorrelax{scr@key@value@else}{%
+ \unexpanded{\let\scr@key@value@else\relax}%
+ }{%
+ \noexpand\def\noexpand\scr@key@value@else{%
+ \unexpanded\expandafter{\scr@key@value@else}%
+ }%
+ }%
+ }\reserved@a
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@execute@elseoption
+% \begin{macro}{\ifscr@key@found@}
+% \changes{v2.97c}{2007/04/19}{Neuer Schalter (intern)}^^A
+% \changes{v3.00}{2008/04/30}{umbenannt von \cs{ifKOMA@key@found}}^^A
+% \begin{macro}{\scr@key@atlist}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@atlist}}^^A
+% \begin{macro}{\scr@key@name}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@name}}^^A
+% \begin{macro}{\scr@key@value}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@value}}^^A
+% \begin{macro}{\scr@key@split@name@value}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v2.97e}{2007/11/10}{verwendet \cs{KV@@sp@def} zur Entsorgung von
+% Leerzeichen}^^A
+% \changes{v3.00}{2008/04/30}{umbenannt von \cs{KOMA@key@split@name@value}}^^A
+% \changes{v3.13}{2014/10/17}{\cs{long}}^^A
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt
+% \cs{KV@@sp@def}}^^A
+% \begin{macrocode}
+\newif\ifscr@key@found@
+\newcommand*{\scr@key@atlist}{}
+\newcommand*{\scr@key@name}{}
+\newcommand*{\scr@key@value}{}
+\newcommand*{\scr@key@split@name@value}{}
+\long\def\scr@key@split@name@value#1=#2=#3\@nil{%
+ \scr@sp@def\scr@key@name{#1}%
+ \scr@sp@def\scr@key@value{#2}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \scr@key@split@name@value
+% \end{macro}^^A \scr@key@value
+% \end{macro}^^A \scr@key@name
+% \end{macro}^^A \scr@key@atlist
+% \end{macro}^^A \@FamilyOptions
+% \end{macro}^^A \FamilyOptions
+%
+% \begin{macro}{\FamilyOption}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.26b}{2019/01/09}{Tyischen Fehler abgefangen}^^A
+% \begin{macro}{\@FamilyOptions}
+% \changes{v3.14}[2014/10/17]{Neue streng interne Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt
+% \cs{KV@@sp@def}}^^A
+% \begin{macro}{\Family@Option}
+% \changes{v3.00}{2008/04/30}{Neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
+% \end{macro}
+% \changes{v3.04b}{2010/01/29}{\cs{edef} durch \cs{protected@edef} ersetzt}
+% Im Gegensatz zu \cs{FamilyOptions} kann man mit dieser Anweisung nur eine
+% einzige Option setzen. Dafür kann man gleich mehrere durch Komma getrennte
+% Argumente für diese Option setzen. Das erste obligatorische Argument ist
+% wieder die Familie, das zweite obligatorische Argument ist die Option, das
+% dritte, obligatorische Argument ist die Liste der Werte für diese Option.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyOption}[2]{%
+ \begingroup
+ \def\reserved@a##1,##2\@nil{\IfArgIsEmpty{##2}{}{\@tempswatrue}}%
+ \@tempswafalse\expandafter\reserved@a#2,\@nil
+ \if@tempswa
+ \PackageError{scrbase}{%
+ syntax error in key `\detokenize{#2}'%
+ }{%
+ You've used `\string\...Option' to set the key
+ `\detokenize{#2}'\MessageBreak
+ to new value(s), but `,' is not allowed in the key of
+ an option\MessageBreak
+ (and `\string\...Option' does not use `,' to separate several
+ keys).\MessageBreak
+ Maybe you've meant \string\...Options\space instead of
+ \string\...Option.\MessageBreak
+ If you'll continue, I'll give it a try, but you should expect
+ further\MessageBreak
+ and even strange error messages.%
+ }%
+ \else
+ \def\reserved@a##1=##2\@nil{%
+ \IfArgIsEmpty{##2}{}{\@tempswatrue\def\reserved@a{=}}}%
+ \expandafter\reserved@a#2=\@nil
+ \if@tempswa
+ \PackageError{scrbase}{%
+ syntax error in key `\detokenize{#2}'%
+ }{%
+ You've used `\string\...Option' to set the key
+ `\detokenize{#2}'\MessageBreak
+ to new value(s), but `=' is not allowed in the key of
+ an option\MessageBreak
+ (and `\string\...Option' does not use `=' to separate key and
+ value).\MessageBreak
+ Maybe you've meant \string\...Options\space instead of
+ \string\...Option.\MessageBreak
+ If you'll continue, I'll give it a try, but you should expect
+ further\MessageBreak
+ and even strange error messages.%
+ }%
+ \fi
+ \fi
+ \endgroup
+ \@FamilyOption{#1}{#2}%
+}
+\newcommand{\@FamilyOption}[3]{%
+ \expandafter\scr@sp@def\expandafter\scr@key@name\expandafter{#2}%
+% \end{macrocode}
+% Der einfachste Weg ist nun schlicht, die Liste der Werte durchzugehen und so
+% nach und nach eine Liste von Werten für \cs{FamilyOptions} zu erzeugen.
+% \begin{macrocode}
+ \let\reserved@a\@empty
+ \@for\reserved@b:=#3\do{%
+% \end{macrocode}
+% \changes{v3.08}{2010/11/05}{leere Argumente in der Werteliste}^^A
+% Auf vielfachen Wunsch und entgegen meiner Überzeugung, sind auch leere
+% Argumente in der Werteliste erlaubt, werden jedoch ignoriert:
+% \begin{macrocode}
+ \ifx\reserved@b\@empty\else
+% \end{macrocode}
+% \changes{v3.12}{2012/03/04}{auch Leerzeichenargumente werden ignoriert}^^A
+% Auch Argumente, die nur aus einem Leerzeichen bestehen, werden ignoriert:
+% \begin{macrocode}
+ \ifx\reserved@b\space\else
+ \edef\reserved@a{\unexpanded\expandafter{\reserved@a},%
+ \scr@key@name=\unexpanded\expandafter{\reserved@b}}%
+ \fi
+ \fi
+ }%
+ \def\reserved@b{\FamilyOptions{#1}}%
+ \expandafter\reserved@b\expandafter{\reserved@a}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMAoptions}
+% \changes{v2.96}{2006/08/20}{Neuer Hook nach den Optionen}^^A
+% \changes{v2.97c}{2007/04/19}{Optionen aller KOMA-Familien abarbeiten}^^A
+% \changes{v3.12}{2013/03/04}{Hook-Mechanismus von \cs{FamilyOptions}^^A
+% verwendent}
+% Simple kleine Abkürzung.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoptions}{\FamilyOptions{KOMA}}
+%</koma>
+% \end{macrocode}
+% \begin{macro}{\KOMA@options}
+% \changes{v2.97c}{2007/04/19}{Neues Makro (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
+% \end{macro}^^A \KOMA@options
+% \end{macro}^^A \KOMAoptions
+%
+% \begin{macro}{\KOMAoptionsOf}
+% \changes{v3.17}{2015/02/25}{neue Anweisung}^^A
+% Mit dieser Anweisung können die aktuell gesetzten \KOMAScript-Optionen
+% eines Pakets oder einer Klasse abgefragt werden, sobald ein Paket oder eine
+% Klasse das unterstützt. Das erste (optionale) Argument gibt dabei eine
+% Anweisung an, die für die Optionenliste ausgeführt werden soll. Das zweite
+% (nicht optionale Argument) ist der Name eines KOMA-Script-Pakets oder einer
+% KOMA-Script-Klasse einschließlich Dateiendung.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoptionsOf}[2][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionsOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionsOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defall\reserved@b{.#2}%
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}^^A \KOMAoptionsOf
+%
+% \begin{macro}{\KOMAoptionOf}
+% \changes{v3.17}{2015/02/26}{neue Anweisung}^^A
+% Mit dieser Anweisung kann eine aktuell gesetzte \KOMAScript-Option
+% eines Pakets oder einer Klasse abgefragt werden, sobald ein Paket oder eine
+% Klasse das unterstützt. Das erste (optionale) Argument gibt dabei eine
+% Anweisung an, die für die Optionenliste ausgeführt werden soll. Das zweite
+% (nicht optionale Argument) ist der Name eines KOMA-Script-Pakets oder einer
+% KOMA-Script-Klasse einschließlich Dateiendung, das dritte (nicht optionale
+% Argument) ist der Name der Option, die abgefragt werden soll.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoptionOf}[3][\@firstofone]{%
+ \scr@ifundefinedorrelax{scr@kav@KOMA.#2}{%
+ \PackageError{scrkbase}{\string\KOMAoptionOf\space not supported}{%
+ #2 is not the name of a KOMA-Script package or\MessageBreak
+ KOMA-Script class, that supports \string\KOMAoptionOf.}%
+ }{%
+ \begingroup
+ \def\reserved@a{#1}%
+ \KOMA@kav@defone\reserved@b{.#2}{#3}%
+ \ifx\reserved@b\@empty
+ \PackageWarning{scrkbase}{option `#3' for `#2' unset}%
+ \endgroup
+ \else
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\reserved@a\expandafter{\reserved@b}%
+ \fi
+ }%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\post@kopt@hook}
+% \changes{v3.12}{2013/03/04}{entfernt}^^A
+% \end{macro}^^A \post@kopt@hook
+% \begin{macro}{\AfterKOMAoptions}
+% \changes{v3.12}{2013/03/04}{Verwendung von \cs{AtEndOfFamilyOptions}}^^A
+% \changes{v3.23}{2017/02/16}{kein \cs{let}}^^A
+% Eine Option kann dafür sorgen, dass nach den Optionen noch etwas passiert.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\AfterKOMAoptions}{\AtEndOfFamilyOptions}
+%</koma>
+% \end{macrocode}
+% \end{macro}^^A \AfterKOMAoptions
+%
+% \begin{macro}{\l@addto@macro}
+% \changes{v2.8p}{2001/09/22}{neu (intern)}
+% Damit \cs{AfterKOMAoptions} lokal möglich ist, wird eine lokal arbeitende
+% Variante von \cs{g@addto@macro} benötigt, wie sie hier vorgestellt wird.
+% \changes{v2.95}{2006/06/02}{korrigiert, damit es sich bezüglich
+% Erweiterung um Makrodefinitonen mit Argumenten wie \cs{g@addto@macro}^^A
+% verhält}
+% \changes{v3.12}{2013/04/20}{veraltete \eTeX-freie Version entfernt}^^A
+% \changes{v3.12}{2013/04/20}{Warnung, falls eine inkompatible Definition
+% von \cs{l@addto@macro} entdeckt wird}
+% \changes{v3.23}{2017/02/16}{in den Optionen-Teil verschoben}^^A
+% \begin{macrocode}
+%</body>
+%<*base&prepare>
+\@ifundefined{l@addto@macro}{}{%
+ \begingroup
+ \long\def\reserved@a#1#2{%
+ \edef#1{\unexpanded\expandafter{#1#2}}%
+ }%
+ \ifx\reserved@a\l@addto@macro\else
+ \PackageWarning{scrbase}{%
+ Someone also uses macro name \string\l@addto@macro.\MessageBreak
+ When KOMA-Script author decided to use macro name\MessageBreak
+ \string\l@addto@macro\space first, there was no other
+ free\MessageBreak
+ LaTeX package using this macro name.\MessageBreak
+ In the meantime other package authers decided to use\MessageBreak
+ same macro name, but unfortunatly not all of those\MessageBreak
+ are compatible with KOMA-Script's definition, e.g.,\MessageBreak
+ while adding definitions with arguments to macros.\MessageBreak
+ Because of such potentially incompatible definitions,\MessageBreak
+ KOMA-Script will redefine the command now.\MessageBreak
+ Please ask the author of the other package to\MessageBreak
+ rename his macro, if a problem results in the\MessageBreak
+ redefinition%
+ }%
+ \fi
+ \endgroup
+}
+\long\def\l@addto@macro#1#2{%
+ \edef#1{\unexpanded\expandafter{#1#2}}%
+}%
+%</base&prepare>
+%<*body>
+% \end{macrocode}
+% \end{macro}^^A \l@addto@macro
+%
+% \begin{macro}{\l@addto@macro@a}
+% \changes{v3.20}{2015/11/20}{neu (intern)}
+% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine
+% Anweisung erweitert werden soll, die genau ein obligatorisches Argument
+% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein
+% als \cs{l@addto@macro} und wird deshalb nie offiziell dokumentiert!
+% \begin{macrocode}
+%<*base>
+\begingroup
+ \catcode`\^^A=\catcode`\#
+ \@makeother\#
+ \gdef\l@addto@macro@a^^A1{%
+ \begingroup
+ \@makeother\#
+ \def\l@addto@macro@a@cmd{^^A1}%
+ \l@addto@macro@a@
+ }
+ \gdef\l@addto@macro@a@^^A1{%
+ \def\l@addto@macro@a@add{^^A1}%
+ \l@addto@macro@a@@
+ }
+\endgroup
+\begingroup
+ \@makeother\#
+ \gdef\l@addto@macro@a@@{%
+ \@makeother\#
+ \edef\reserved@a{%
+ \detokenize{\endgroup\def}%
+ \detokenize\expandafter{\l@addto@macro@a@cmd#1}%
+ {%
+ \expandafter\detokenize%
+ \expandafter\expandafter\expandafter{\l@addto@macro@a@cmd{#1}}%
+ \expandafter\detokenize\expandafter{\l@addto@macro@a@add}%
+ }%
+ }%
+ \expandafter\scantokens\expandafter{\reserved@a}%
+ }%
+\endgroup
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \l@addto@macro@a
+%
+% \begin{macro}{\l@preto@macro}
+% \changes{v3.20}{2015/11/25}{neu (intern)}^^A
+% In gewisser Weise das gleiche wie \cs{l@appto@macro}, allerdings wird vorn
+% statt hinten angefügt.
+% \begin{macrocode}
+%<*base>
+\newcommand\l@preto@macro[2]{%
+ \edef#1{\unexpanded{#2}\unexpanded\expandafter{#1}}%
+}%
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \l@preto@macro
+%
+% \begin{macro}{\l@preto@macro@a}
+% \changes{v3.20}{2015/11/25}{neu (intern)}
+% So eine ähnliche Anweisung benötige ich außerdem für den Fall, dass eine
+% Anweisung erweitert werden soll, die genau ein obligatorisches Argument
+% benötigt. Achtung! Diese Anweisung funktioniert deutlich weniger allgemein
+% als \cs{l@preto@macro} und wird deshalb nie offiziell dokumentiert!
+% \begin{macrocode}
+%<*base>
+\begingroup
+ \catcode`\^^A=\catcode`\#
+ \@makeother\#
+ \gdef\l@preto@macro@a^^A1{%
+ \begingroup
+ \@makeother\#
+ \def\l@preto@macro@a@cmd{^^A1}%
+ \l@preto@macro@a@
+ }
+ \gdef\l@preto@macro@a@^^A1{%
+ \def\l@preto@macro@a@add{^^A1}%
+ \l@preto@macro@a@@
+ }
+\endgroup
+\begingroup
+ \@makeother\#
+ \gdef\l@preto@macro@a@@{%
+ \@makeother\#
+ \edef\reserved@a{%
+ \detokenize{\endgroup\def}%
+ \detokenize\expandafter{\l@preto@macro@a@cmd#1}%
+ {%
+ \expandafter\detokenize\expandafter{\l@preto@macro@a@add}%
+ \expandafter\detokenize%
+ \expandafter\expandafter\expandafter{\l@preto@macro@a@cmd{#1}}%
+ }%
+ }%
+ \expandafter\scantokens\expandafter{\reserved@a}%
+ }%
+\endgroup
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \l@preto@macro@a
+%
+% \begin{macro}{\KOMAoption}
+% \changes{v2.98c}{2008/03/12}{Neue Anweisung}^^A
+% \changes{v3.12}{2013/03/04}{Einfacher Aufruf von \cs{FamilyOption}}
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMAoption}{\FamilyOption{KOMA}}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FamilyUnknownKeyValue}
+% \changes{v3.10}{2011/09/12}{no error while processing global options}^^A
+% \changes{v3.11a}{2012/05/28}{prevent remove from list of unused global
+% options globally}^^A
+% \changes{v3.14}{2014/10/17}{\cs{long}}^^A
+% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an einen
+% Schlüssel. Das erste Argument ist die Familie, das zweite der Schlüssel,
+% das dritte der Wert und das vierte die Liste der möglichen Werte.
+% \begin{macrocode}
+%<*base>
+\newcommand{\FamilyUnknownKeyValue}[4]{%
+ \FamilyKeyStateUnknownValue
+ \ifx\FamilyElseValues\@empty\else
+ \PackageWarning{scrbase}{non empty \string\FamilyElseValue
+ ignored.\MessageBreak
+ Setting this command to a non empty\MessageBreak
+ value for option `#2' of\MessageBreak
+ family `#1' is deprecated,\MessageBreak
+ but has been found
+ }%
+ \fi
+}
+%</base>
+% \end{macrocode}
+% \begin{macro}{\FamilyElseValues}
+% \changes{v3.00}{2008/05/02}{Neue Anweisung}^^A
+% \changes{v3.12}{2013/03/04}{wird intern nicht mehr verwendet}^^A
+% Diese Anweisung konnte ursprünglich vor dem Setzen eines Wertes definiert
+% werden, um bei einer etwaigen Fehlermeldung weitere Werte als erlaubt
+% auszugeben. Am Ende von \cs{FamilySetBool} und \cs{FamilySetNumerical}
+% wird die Anweisung automatisch zu \cs{@empty}. Seit Version~3.12 wird
+% diese Anweisung jedoch nicht mehr ausgewertet.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyElseValues}{}
+%</base>
+% \end{macrocode}
+% \end{macro}^^A \FamilyUnknownKeyValue
+% \end{macro}^^A \FamilyElseValue
+%
+% \begin{macro}{\FamilyBoolKey}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% Dieses Makro definiert einen Schlüssel für eine Familie. Dieser Schlüssel
+% ist ein Schalter, der über diverse Werte geschaltet werden kann.
+% Das erste, optionale Argument ist das Familienmitglied, das zweite,
+% obligatorische Argument ist die Familie, das dritte der Name des Schlüssels,
+% das vierte der Schalter.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyBoolKey}[4][.\@currname.\@currext]{%
+ \@ifundefined{if#4}{%
+ \expandafter\newif\csname if#4\endcsname
+ }{}%
+ \DefineFamilyKey[{#1}]{#2}{#3}[true]{\FamilySetBool{#2}{#3}{#4}{##1}}%
+}
+% \end{macrocode}
+% \begin{macro}{\FamilySetBool}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.11a}{2012/05/25}{Argument in Fehlermeldung korrigiert}^^A
+% Über diese Anweisung wird der Wert dann gesetzt. Dabei ist das erste
+% Argument die Familie, das zweite der Name des Schlüssels, das dritte der
+% Schalter und das vierte schließlich der gewünschte Wert.
+% \begin{macrocode}
+\newcommand*{\FamilySetBool}[4]{%
+ \ifstr{#4}{true}{\@nameuse{#3true}\FamilyKeyStateProcessed}{%
+ \ifstr{#4}{on}{\@nameuse{#3true}\FamilyKeyStateProcessed}{%
+ \ifstr{#4}{yes}{\@nameuse{#3true}\FamilyKeyStateProcessed}{%
+ \ifstr{#4}{false}{\@nameuse{#3false}\FamilyKeyStateProcessed}{%
+ \ifstr{#4}{off}{\@nameuse{#3false}\FamilyKeyStateProcessed}{%
+ \ifstr{#4}{no}{\@nameuse{#3false}\FamilyKeyStateProcessed}{%
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ `true', `on', `yes', `false', `off', `no'%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \let\FamilyElseValues\@empty
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@unknown@keyval}
+% Dieses Makro berichtet über Fehler wegen unbekannter Wertübergabe an
+% einen Schlüssel. Das erste Argument ist der Schlüssel, das zweite
+% der Wert und das dritte die Liste der möglichen Werte.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@unknown@keyval}{\FamilyUnknownKeyValue{KOMA}}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@ifkey}
+% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}^^A
+% \changes{v3.17}{2015/03/02}{ersetzt den gespeicherten Wert}^^A
+% Dieses Makro definiert einen Schlüssel, der einen Schalter an Hand des
+% Wertes setzt. Als Werte sind "`\texttt{true}"', "`\texttt{false}"',
+% "`\texttt{on}"', "`\texttt{off}"', "`\texttt{yes}"' und
+% "`\texttt{no}"' erlaubt. Der Default-Wert für den Schalter ist
+% grundsätzlich "`false"', so dass der Default-Wert für die Verwendung
+% des Schküssels grundsätzlich "`true"' ist. Das erste Argument ist
+% der Name des Schlüssels, der zweite ist der Name des Schalters.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@ifkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ifkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ifkey}[3]{%
+ \@ifundefined{if#3}{%
+ \expandafter\newif\csname if#3\endcsname
+ }{}%
+ \KOMA@key[{#1}]{#2}[true]{%
+ \KOMA@set@ifkey{#2}{#3}{##1}%
+ \KOMA@kav@replacebool{#1}{#2}{#3}%
+ }%
+ \csname if#3\endcsname
+ \KOMA@kav@xadd{#1}{#2}{true}%
+ \else
+ \KOMA@kav@xadd{#1}{#2}{false}%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \begin{macro}{\KOMA@set@ifkey}
+% Die eigentliche Arbeit bei der ganzen Sache wird von diesem internen
+% Makro erledigt. Dabei wird der Name des Schlüssels zu Argument 1, der
+% Name des Schalters zu Argument 2 und der Wert des Schlüssels wird
+% Argument 3.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@set@ifkey}{\FamilySetBool{KOMA}}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\FamilyCounterKey}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
+% unterstützt}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Dieses Makro definiert einen Schlüssel, der einen \LaTeX-Zähler an Hand
+% des Wertes setzt. Das erste, optionale Argument ist das Familienmitglied,
+% das zweite, obligatorische Argument ist die Familie, das dritte der Name
+% des Schlüssels, das vierte, optionale ist der Säumniswert, das fünfte der
+% Name des \LaTeX-Zählers. Erlaubt sind alle Integer-Werte.
+% \begin{macro}{\Family@@Counter@@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macro}{\Family@Counter@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyCounterKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@Counter@@Key{#1}{#2}{#3}}%
+ {\Family@Counter@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@Counter@@Key}{}
+\def\Family@@Counter@@Key#1#2#3[#4]#5{%
+ \@ifundefined{c@#5}{\newcounter{#5}}{}%
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounter{#2}{#3}{#5}{##1}}%
+}
+\newcommand*{\Family@Counter@Key}[4]{%
+ \@ifundefined{c@#4}{\newcounter{#4}}{}%
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounter{#2}{#3}{#4}{##1}}%
+}
+% \end{macrocode}
+% \begin{macro}{\FamilySetCounter}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.23}{2017/02/23}{Leerzeichen durch \cs{relax} ersetzt}^^A
+% Über diese Anweisung wird der Wert dann gesetzt. Dabei ist das erste
+% Argument die Familie, das zweite der Name des Schlüssels, das dritte der
+% Name des \LaTeX-Zählers, das vierte schließlich der gewünschte Wert.
+% \begin{macrocode}
+\newcommand*{\FamilySetCounter}[4]{%
+ \begingroup
+ \protected@edef\reserved@a{#4}%
+ \def\reserved@b{\endgroup\value{#3}=#4\relax\FamilyKeyStateProcessed}%
+ \expandafter\ifiscount\expandafter{\reserved@a}{}{%
+ \expandafter\ifisdimen\expandafter{\reserved@a}{}{%
+ \expandafter\ifisskip\expandafter{\reserved@a}{}{%
+ \expandafter\ifisnumexpr\expandafter{\reserved@a}{}{%
+ \expandafter\ifisdimexpr\expandafter{\reserved@a}{}{%
+ \expandafter\ifisinteger\expandafter{\reserved@a}{}{%
+ \expandafter\ifiscounter\expandafter{\reserved@a}{%
+ \def\reserved@b{%
+ \endgroup\value{#3}=\value{#4}\FamilyKeyStateProcessed
+ }%
+ }{%
+ \def\reserved@b{%
+ \endgroup
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ integer numbers, counters, lengths, skips, dimens
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \reserved@b
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FamilyCounterMacroKey}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
+% unterstützt}^^A
+% Diese Anweisung arbeitet fast wie \cs{FamilyCounterKey}, allerdings wird
+% dabei nicht ein Zähler, sondern ein Marko auf einen Wert definiert. Dabei
+% ist das erste (optionale) Argument das Mitglied, das zweite die Familie, das
+% dritte der Schlüssel, das vierte (optionale) der Säumniswert, das fünfte das
+% Makro.
+% \begin{macro}{\FamilySetCounterMacro}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Diese Anweisung arbeitet fast wie \cs{FamilySetCounter}, allerdings wird
+% nicht ein Zähler gesetzt, sondern ein Makro auf einen Wert definiert. Dabei
+% ist das erste Argument die Familie, das zweite der Name des Schlüssels, das
+% dritte das Makro, das vierte schließlich der gewünschte Wert.
+% \begin{macro}{\Family@@Counter@@Macro@@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macro}{\Family@Counter@Macro@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyCounterMacroKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@Counter@@Macro@@Key{#1}{#2}{#3}}%
+ {\Family@Counter@Macro@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@Counter@@Macro@@Key}{}
+\def\Family@@Counter@@Macro@@Key#1#2#3[#4]#5{%
+ \ifdefined#4\else\let#4\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetCounterMacro{#2}{#3}{#5}{##1}}%
+}
+\newcommand*{\Family@Counter@Macro@Key}[4]{%
+ \ifdefined#4\else\let#4\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetCounterMacro{#2}{#3}{#4}{##1}}%
+}
+\newcommand*{\FamilySetCounterMacro}[4]{%
+ \begingroup
+% \end{macrocode}
+% An dieser Stelle wird nun der immer definierte Zähler page als lokaler
+% Zähler verwendet. Das ist nur möglich, weil \cs{FamilySetCounter} nicht
+% global mit \cs{setcounter} arbeitet, sondern lokal mit einer Zuweisung an
+% \cs{value}.
+% \begin{macrocode}
+ \FamilySetCounter{#1}{#2}{page}{#4}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \edef\reserved@a{%
+ \unexpanded{\endgroup\def#3}%
+ {\the\value{page}}%
+ \noexpand\FamilyKeyStateProcessed
+ }%
+ \else
+ \def\reserved@a{%
+ \endgroup
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ integer numbers, counters, lengths, skips, dimens
+ }%
+ }%
+ \fi
+ \reserved@a
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\FamilyLengthKey}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
+% unterstützt}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Dieses Makro definiert einen Schlüssel, der eine \LaTeX-Länge an Hand
+% des Wertes setzt. Das erste, optionale Argument ist das Familienmitglied,
+% das zweite, obligatorische Argument ist die Familie, das dritte der Name
+% des Schlüssels, das vierte der name der \LaTeX-Länge.
+% \begin{macro}{\Family@@Length@@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macro}{\Family@Length@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyLengthKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@Length@@Key{#1}{#2}{#3}}%
+ {\Family@Length@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@Length@@Key}{}
+\def\Family@@Length@@Key#1#2#3[#4]#5{%
+ \ifdefined#5\else\newlength{#5}\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLength{#2}{#3}{#5}{##1}}%
+}
+\newcommand*{\Family@Length@Key}[4]{%
+ \ifdefined#4\else\newlength{#4}\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLength{#2}{#3}{#4}{##1}}%
+}
+% \end{macrocode}
+% \begin{macro}{\FamilySetLength}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}^^A
+% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.20}{2016/04/27}{Expansion vor dem Test}^^A
+% Über diese Anweisung wird der Wert dann gesetzt. Dabei ist das erste
+% Argument die Familie, das zweite der Name des Schlüssels, das dritte der
+% Name der \LaTeX-Länge, das vierte schließlich der gewünschte Wert.
+% \begin{macrocode}
+\newcommand*{\FamilySetLength}[4]{%
+ \begingroup
+ \protected@edef\reserved@a{#4}%
+ \expandafter\ifiscount\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisdimen\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisskip\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisnumexpr\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisdimexpr\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisglueexpr\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifisglue\expandafter{\reserved@a}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \aftergroup\@secondoftwo
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \endgroup
+ {#3=#4\FamilyKeyStateProcessed}%
+ {%
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ length values, counters, lengths, skips, dimens
+ }%
+ }%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\FamilyLengthMacroKey}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.15}{2014/12/03}{er wird ein (optionaler) Säumniswert
+% unterstützt}^^A
+% \begin{macro}{\FamilySetLengthMacro}
+% \changes{v3.12}{2013/11/05}{neu}^^A
+% \changes{v3.14a}{2014/11/24}{fix: \cs{@tempskipa} statt \cs{@temskipa}}^^A
+% \changes{v3.15}{2014/12/17}{\cs{aftergroup} vor
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.15}{2015/01/02}{\cs{ifglueexpr} hinzugefügt}^^A
+% \changes{v3.18a}{2015/07/06}{korrekte Verwendung von
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} ersetzt durch
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.20}{2016/04/27}{interne Verwendung von \cs{FamilySetLength}}^^A
+% Diese Anweisungen arbeitet fast wie \cs{FamilyLengthKey} und
+% \cs{FamilySetLengt}, allerdings wird nicht eine Länge gesetzt, sondern
+% ein Makro auf einen Wert definiert. Dabei ist das erste Argument die
+% Familie, das zweite der Name des Schlüssels, das dritte das Makro, das
+% vierte schließlich der gewünschte Wert.
+% \begin{macro}{\Family@@Length@@Macro@@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macro}{\Family@Length@Macro@Key}
+% \changes{v3.15}{2014/12/03}{neu (intern)}^^A
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyLengthMacroKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@Length@@Macro@@Key{#1}{#2}{#3}}%
+ {\Family@Length@Macro@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@Length@@Macro@@Key}{}
+\def\Family@@Length@@Macro@@Key#1#2#3[#4]#5{%
+ \ifdefined#5\else\let#5\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\FamilySetLengthMacro{#2}{#3}{#5}{##1}}%
+}
+\newcommand*{\Family@Length@Macro@Key}[4]{%
+ \ifdefined#4\else\let#4\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetLengthMacro{#2}{#3}{#4}{##1}}%
+}
+\newcommand*{\FamilySetLengthMacro}[4]{%
+ \begingroup
+ \FamilySetLength{#1}{#2}{\@tempskipa}{#4}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \edef\reserved@a{%
+ \unexpanded{\endgroup\def#3}%
+ {\the\@tempskipa}%
+ \noexpand\FamilyKeyStateProcessed
+ }%
+ \else
+ \def\reserved@a{%
+ \endgroup
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ length values, counters, lengths, skips, dimens
+ }%
+ }%
+ \fi
+ \reserved@a
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\FamilyUseLengthMacroKey}
+% \changes{v3.20}{2016/04/27}{neu}^^A
+% \begin{macro}{\FamilySetUseLengthMacro}
+% \changes{v3.20}{2016/04/27}{neu}^^A
+% Diese Anweisungen arbeitet fast wie \cs{FamilyLengthKey} und
+% \cs{FamilySetLengt}, allerdings wird das Makro nicht als den Wert des Werts,
+% sondern als den Wert selbst definiert. Eine Expansion des Werts findet nur
+% für die Prüfung statt. Änderungen am Wert wirken sich also ggf. weiterhin
+% aus. Dabei ist das erste Argument die Familie, das zweite der Name des
+% Schlüssels, das dritte das Makro, das vierte schließlich der gewünschte
+% Wert.
+% \begin{macro}{\Family@@UseLength@@Macro@@Key}
+% \changes{v3.20}{2016/04/27}{neu (intern)}^^A
+% \begin{macro}{\Family@USeLength@Macro@Key}
+% \changes{v3.20}{2016/04/27}{neu (intern)}^^A
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyUseLengthMacroKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@UseLength@@Macro@@Key{#1}{#2}{#3}}%
+ {\Family@UseLength@Macro@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@UseLength@@Macro@@Key}{}
+\def\Family@@UseLength@@Macro@@Key#1#2#3[#4]#5{%
+ \ifdefined#5\else\let#5\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{%
+ \FamilySetUseLengthMacro{#2}{#3}{#5}{##1}%
+ }%
+}
+\newcommand*{\Family@UseLength@Macro@Key}[4]{%
+ \ifdefined#4\else\let#4\z@\fi
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetUseLengthMacro{#2}{#3}{#4}{##1}}%
+}
+\newcommand*{\FamilySetUseLengthMacro}[4]{%
+ \begingroup
+ \FamilySetLength{#1}{#2}{\@tempskipa}{#4}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \def\reserved@a{%
+ \endgroup\def#3{#4}%
+ \FamilyKeyStateProcessed
+ }%
+ \else
+ \def\reserved@a{%
+ \endgroup
+ \FamilyUnknownKeyValue{#1}{#2}{#4}{%
+ length values, counters, lengths, skips, dimens
+ }%
+ }%
+ \fi
+ \reserved@a
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\FamilyNumericalKey}
+% \changes{v3.00}{2008/04/30}{Neue Anweisung}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\Family@Numerical@Key}
+% \changes{v3.00}{2008/05/28}{Neu (intern)}^^A
+% \changes{v3.08b}{2011/03/31}{fehlendes Argument bei \cs{ifundefined}}
+% Ein ähnliches Makro definiert einen Schlüssel, der ein nummerisches Makro
+% auf einen bestimmten Wert setzt. Dabei können auch verschiedene symbolische
+% Werte auf denselben nummerischen Wert abgebildet werden. Das erste,
+% optionale Argument ist das Familienmitglied, das zweite, obligatorische
+% Argument ist die Familie, das dritte, obligatorische Argument ist der Name
+% der Option, das vierte, optionale Artument ist der Defaultwert für den
+% Schlüssel, das fünfte, obligatorische Argument ist der Name des Makros, das
+% (in der Voreinstellung als 0) definiert werden soll, das sechste,
+% obligatorische Argument ist die Liste der symbolischen und nummerischen
+% Werte. Die Liste hat die Form:
+% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots
+% Das interne Makro wird benötigt, um das vierte, optionale Argument zu
+% ermöglichen. Dabei ist dann das erste Argument nicht mehr optional, sondern
+% obligatorisch.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyNumericalKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@Numerical@Key{#1}{#2}{#3}}{\Family@Numerical@Key{#1}{#2}{#3}[]}%
+}
+\newcommand*{\Family@Numerical@Key}{}
+\def\Family@Numerical@Key#1#2#3[#4]#5#6{%
+ \@ifundefined{#5}{\@namedef{#5}{0}}{}%
+ \ifx\relax#4\relax
+ \DefineFamilyKey[{#1}]{#2}{#3}{\FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}%
+ \else
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{%
+ \FamilySetNumerical{#2}{#3}{#5}{#6}{##1}}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\FamilySetNumerical}
+% \changes{v3.11a}{2012/05/28}{call of \cs{FamilyUnknownKeyValue} outside of
+% local group}^^A
+% \changes{v3.25}{2017/12/04}{komplett leere Listenelemente werden
+% ignoriert}^^A
+% Die eigentliche Arbeit dabei wird von diesem Makro erledigt. Dabei
+% wird die Familie zu Argument 1, der Name des Schlüssels zu Argument 2, der
+% Name des Makros, das definiert werden soll zu Argument 3, die Liste zu
+% Argument 4 und der Wert, auf den gesetzt werden soll, zu Argument 5.
+% \begin{macrocode}
+\newcommand*{\FamilySetNumerical}[5]{%
+ \begingroup
+ \edef\@searched{#5}%
+ \let\reserved@a=\@empty
+ \let\reserved@b=\@empty
+ \@tempswafalse
+ \@for\@valuelist:=#4\do{%
+ \ifx\@valuelist\@empty\else
+ \if@tempswa\else
+ \edef\reserved@c{\expandafter\@firstoftwo\@valuelist}%
+ \edef\reserved@a{\reserved@a\reserved@b`\reserved@c'}%
+ \edef\reserved@b{, }%
+ \ifx\reserved@c\@searched
+ \@tempswatrue
+ \edef\reserved@a{\expandafter\@secondoftwo\@valuelist}%
+ \fi
+ \fi
+ \fi
+ }%
+ \if@tempswa
+ \edef\reserved@a{\endgroup
+ \noexpand\@namedef{#3}{\reserved@a}%
+ \noexpand\FamilyKeyStateProcessed
+ }%
+ \else
+ \edef\reserved@a{\endgroup
+ \noexpand\FamilyUnknownKeyValue{#1}{#2}{#5}{\reserved@a}%
+ }%
+ \fi
+ \reserved@a
+ \let\FamilyElseValues\@empty
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\KOMA@ncmdkey}
+% \changes{v3.02c}{2009/02/04}{definiert ebenfalls das Familienmitglied}^^A
+% \changes{v3.17}{2015/03/16}{neu implementiert mit Speicherung der
+% Werte und optionalem erstem Argument}^^A
+% \begin{macro}{\KOMA@@ncmdkey}
+% \changes{v3.17}{2015/03/16}{neu (intern)}^^A
+% \begin{macro}{\KOMA@@@ncmdkey}
+% \changes{v3.17}{2015/03/16}{neu (intern)}^^A
+% Wie \cs{FamilyNumericalKey} mit zwei entscheidenden Unterschieden:
+% \begin{itemize}
+% \item Die Familien ist immer \texttt{KOMA} und entfällt daher als zweites
+% Argument.
+% \item Der gespeicherte Wert wird ausgetauscht. Daher kann es nicht nur für
+% Optionen verwendet werden, bei denen die Werte exklusiv sind.
+% \end{itemize}
+% Wichtig: Die Voreinstellung muss anschließend noch in jedem Fall mit
+% \cs{KOMA@kav@add} gesetzt werden!
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@ncmdkey}[2][.\@currname.\@currext]{%
+ \begingroup\edef\reserved@a{\noexpand\KOMA@@ncmdkey{#1}{#2}}%
+ \expandafter\endgroup\reserved@a
+}
+\newcommand*{\KOMA@@ncmdkey}[2]{%
+ \kernel@ifnextchar [%]
+ {\KOMA@@@ncmdkey{#1}{#2}}{\KOMA@@@ncmdkey{#1}{#2}[]}
+}
+\newcommand*{\KOMA@@@ncmdkey}{}
+\def\KOMA@@@ncmdkey#1#2[#3]#4#5{%
+ \@ifundefined{#4}{\@namedef{#4}{0}}{}%
+ \ifx\relax#3\relax
+ \KOMA@key[{#1}]{#2}{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \else
+ \KOMA@key[{#1}]{#2}[{#3}]{%
+ \KOMA@set@ncmdkey{#2}{#4}{#5}{##1}%
+ \KOMA@kav@replacevalue{#1}{#2}{##1}%
+ }%
+ \fi
+}
+%</koma>
+% \end{macrocode}
+% \begin{macro}{\KOMA@set@ncmdkey}
+% Die eigentliche Arbeit dabei wird wahlweise von diesem Makro erledigt. Dabei
+% wird der Name des Schlüssels zu Argument 1, der Name des Makros,
+% das definiert werden soll zu Argument 2, die Liste zu Argument 3 und
+% der Wert, auf den gesetzt werden soll, zu Argument 4. Dabei wird allerdings
+% kein gespeicherter Wert ersetzt!
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@set@ncmdkey}{\FamilySetNumerical{KOMA}}
+%</koma>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\FamilyStringKey}
+% \changes{v3.08}{2010/11/05}{Neue Anweisung}^^A
+% \changes{v3.08b}{2011/03/31}{\cs{Family@String@Key} und
+% \cs{Family@@String@@Key} vertauscht}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\Family@String@Key}
+% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A
+% \begin{macro}{\Family@@String@@Key}
+% \changes{v3.08}{2010/11/05}{Neu (intern)}^^A
+% Ein ähnliches Makro definiert einen Schlüssel, der ein Makro auf einen
+% beliegigen Wert setzt. Das erste, optionale Argument ist das
+% Familienmitglied, das zweite, obligatorische Argument ist die Familie, das
+% dritte, obligatorische Argument ist der Name der Option, das vierte,
+% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte,
+% obligatorische Argument ist das Makros, das (in der Voreinstellung
+% als leer) definiert werden soll. Die internen Makro werden benötigt, um das
+% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument
+% nicht mehr optional, sondern obligatorisch.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyStringKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@String@@Key{#1}{#2}{#3}}{\Family@String@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@String@@Key}{}
+\long\def\Family@@String@@Key#1#2#3[#4]#5{%
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\def#5{##1}}%
+}
+\newcommand{\Family@String@Key}[4]{%
+ \DefineFamilyKey[{#1}]{#2}{#3}{\def#4{##1}\FamilyKeyStateProcessed}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\FamilyCSKey}
+% \changes{v3.25}{2017/12/08}{Neue Anweisung}^^A
+% \begin{macro}{\Family@CS@Key}
+% \changes{v3.25}{2017/12/08}{Neu (intern)}^^A
+% \begin{macro}{\Family@@CS@@Key}
+% \changes{v3.25}{2017/12/08}{Neu (intern)}^^A
+% \changes{v3.26}{2018/11/06}{Es wird wirklich diese Anweisung (statt erneut
+% \cs{Family@@String@@Key}) definiert}^^A
+% Ein ähnliches Makro definiert einen Schlüssel, der eine Befehlssequenz auf
+% einen beliegigen Wert setzt. Das erste, optionale Argument ist das
+% Familienmitglied, das zweite, obligatorische Argument ist die Familie, das
+% dritte, obligatorische Argument ist der Name der Option, das vierte,
+% optionale Artument ist der Defaultwert für den Schlüssel, das fünfte,
+% obligatorische Argument ist der Name des Makros, das (in der Voreinstellung
+% als leer) definiert werden soll. Die internen Makro werden benötigt, um das
+% vierte, optionale Argument zu ermöglichen. Dabei ist dann das erste Argument
+% nicht mehr optional, sondern obligatorisch.
+% \begin{macrocode}
+%<*base>
+\newcommand*{\FamilyCSKey}[3][.\@currname.\@currext]{%
+ \kernel@ifnextchar [%]
+ {\Family@@CS@@Key{#1}{#2}{#3}}{\Family@CS@Key{#1}{#2}{#3}}%
+}
+\newcommand*{\Family@@CS@@Key}{}
+\long\def\Family@@CS@@Key#1#2#3[#4]#5{%
+ \DefineFamilyKey[{#1}]{#2}{#3}[{#4}]{\@namedef{#5}{##1}}%
+}
+\newcommand{\Family@CS@Key}[4]{%
+ \DefineFamilyKey[{#1}]{#2}{#3}{\@namedef{#4}{##1}\FamilyKeyStateProcessed}%
+}
+%</base>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\KOMA@DeclareDeprecatedOption}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\KOMA@@DeclareDeprecatedOption}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
+% \begin{macro}{\KOMA@@@DeclareDeprecatedOption}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
+% Mit Hilfe dieses Makros kann eine Option definiert werden, die
+% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel
+% verwendet. Das erste Argument ist optional und muss dann der Paketname
+% sein. Ist es nicht gesetzt, so wird stattdessen die Klasse
+% \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der
+% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@DeclareDeprecatedOption}{%
+ \kernel@ifnextchar [%]
+ {\KOMA@@DeclareDeprecatedOption}%
+ {\KOMA@@@DeclareDeprecatedOption{\ClassWarningNoLine{\KOMAClassName}}}%
+}
+\newcommand*{\KOMA@@DeclareDeprecatedOption}[1][]{%
+ \KOMA@@@DeclareDeprecatedOption{\PackageWarningNoLine{#1}}%
+}
+\newcommand*{\KOMA@@@DeclareDeprecatedOption}[3]{%
+ \DeclareOption{#2}{\KOMA@UseDeprecatedOption{#1}{#2}{#3}}%
+}
+% \end{macrocode}
+% \begin{macro}{\KOMA@UseDeprecatedOption}
+% \changes{v3.01a}{2008/11/20}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{Test für \texttt{version!=first}}^^A
+% \changes{v3.12a}{2014/01/22}{vertauschte Logic für
+% \texttt{version!=first} korrigiert}^^A
+% \changes{v3.22}{2016/07/29}{diverse \cs{detokenize} eingefügt}^^A
+% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind
+% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels.
+% \begin{macrocode}
+\newcommand*{\KOMA@UseDeprecatedOption}[3]{%
+ \begingroup
+ \scr@ifundefinedorrelax{KV@KOMA.\@currname.\@currext @version}{%
+ \edef\reserved@a{\noexpand\endgroup
+ \noexpand#1{%
+ You've used obsolete option `\detokenize{#2}'.\noexpand\MessageBreak
+ Usage of this option is deprecated.\noexpand\MessageBreak
+ You should simply replace `\detokenize{#2}'\noexpand\MessageBreak
+ by `\detokenize{#3}'%
+ }%
+ \noexpand\KOMAExecuteOptions{#3}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
+ }%
+ }{%
+ \edef\reserved@a{\noexpand\endgroup
+ \noexpand#1{%
+ You've used obsolete option `\detokenize{#2}'.\noexpand\MessageBreak
+ Usage of this option indicates an old document\noexpand\MessageBreak
+ and changes compatibility level using\noexpand\MessageBreak
+ `\detokenize{#3},version=first,\noexpand\MessageBreak
+ enabledeprecatedfontcommands' that may result\noexpand\MessageBreak
+ in further warnings.\noexpand\MessageBreak
+ If you don't want this, you should simply\noexpand\MessageBreak
+ replace option `\detokenize{#2}' by `\detokenize{#3}'%
+ }%
+ \noexpand\KOMAExecuteOptions{%
+ #3,version=first}%
+ \noexpand\ExecuteOptions{enabledeprecatedfontcommands}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
+ }%
+ }%
+ \reserved@a
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}^^A \KOMA@UseDeprecatedOption
+% \end{macro}^^A \KOMA@@@DeclareDeprecatedOption
+% \end{macro}^^A \KOMA@@DeclareDeprecatedOption
+% \end{macro}^^A \KOMA@DeclareDeprecatedOption
+%
+%
+% \begin{macro}{\KOMA@DeclareStandardOption}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\KOMA@@DeclareStandardOption}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
+% \begin{macro}{\KOMA@@@DeclareStandardOption}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
+% Mit Hilfe dieses Makros kann eine Option definiert werden, die
+% eigentlich obsolete ist. Statt dieser Option wird dann ein Schlüssel
+% verwendet. Das erste Argument ist optional und muss dann der Paketname
+% sein. Ist es nicht gesetzt, so wird stattdessen die Klasse
+% \cs{KOMAClassName} angenommen. Das zweite Argument ist der Name der
+% Option. Das vierte Argument ist das Setzen des gewünschten Schlüssels.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@DeclareStandardOption}{%
+ \kernel@ifnextchar [%]
+ {\KOMA@@DeclareStandardOption}%
+ {\KOMA@@@DeclareStandardOption{\ClassInfoNoLine{\KOMAClassName}}}%
+}
+\newcommand*{\KOMA@@DeclareStandardOption}[1][]{%
+ \KOMA@@@DeclareStandardOption{\PackageInfoNoLine{#1}}%
+}
+\newcommand*{\KOMA@@@DeclareStandardOption}[3]{%
+ \DeclareOption{#2}{\KOMA@UseStandardOption{#1}{#2}{#3}}%
+}
+% \end{macrocode}
+% \begin{macro}{\KOMA@UseStandardOption}
+% \changes{v3.01a}{2008/11/21}{neu (intern)}^^A
+% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind
+% 1. Meldungsbefehl, 2. obsolete Option, 3. Setzen des Schlüssels.
+% \begin{macrocode}
+\newcommand*{\KOMA@UseStandardOption}[3]{%
+ \begingroup
+ \edef\reserved@a{\noexpand\endgroup
+ \noexpand#1{%
+ You've used standard option `#2'.\noexpand\MessageBreak
+ This is correct!\noexpand\MessageBreak
+ Internally I'm using `#3'.\noexpand\MessageBreak
+ If you'd like to set the option with \string\KOMAoptions,%
+ \noexpand\MessageBreak
+ you'd have to use `#3' there\noexpand\MessageBreak
+ instead of `#2', too%
+ }%
+ \noexpand\KOMAExecuteOptions{#3}%
+ \noexpand\def\noexpand\CurrentOption{\CurrentOption}%
+ }%
+ \reserved@a
+}
+%</koma>
+% \end{macrocode}
+% \begin{macro}{\scr@sr@co}
+% \changes{v2.96}{2006/08/20}{neu (intern)}^^A
+% \changes{v3.12a}{2014/01/22}{beseitigt}^^A
+% \end{macro}^^A \scr@sr@co
+% \end{macro}^^A \KOMA@UseStandardOption
+% \end{macro}^^A \KOMA@@@DeclareStandardOption
+% \end{macro}^^A \KOMA@@DeclareStandardOption
+% \end{macro}^^A \KOMA@DeclareStandardOption
+%
+%
+% \begin{macro}{\KOMA@DeclareObsoleteOption}
+% \changes{v2.96}{2006/08/20}{\cs{CurrentOption wir geschützt}}
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
+% \begin{macro}{\KOMA@@DeclareObsoleteOption}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
+% \begin{macro}{\KOMA@@@DeclareObsoleteOption}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
+% \begin{macro}{\KOMA@iv@DeclareObsoleteOption}
+% \changes{v2.98c}{2008/02/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
+% \begin{macro}{\KOMA@UseObsoleteOption}
+% \changes{v2.97c}{2007/04/19}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{entfernt weil unbenutzt}^^A
+% \end{macro}^^A \KOMA@UseObsoleteOption
+% \end{macro}^^A \KOMA@iv@DeclareObsoleteOption
+% \end{macro}^^A \KOMA@iii@DeclareObsoleteOption
+% \end{macro}^^A \KOMA@ii@DeclareObsoleteOption
+% \end{macro}^^A \KOMA@i@DeclareObsoleteOption
+%
+%
+% \begin{macro}{\KOMA@newdeprecatedcommand}
+% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@newobsoletecommand} into
+% \cs{KOMA@newdeprecatedcommand}}
+% Mit Hilfe dieses Makros kann ein Makro definiert werden, das
+% eigentlich obsolete ist. Das Makro verwendet dann schlicht einen
+% Schlüssel. Das erste Argument ist optional und muss dann entweder
+% \cs{PackageInfo}, \cs{PackageInfoNoLine}, \cs{PackageWarning} oder
+% \cs{PackageWarningNoLine} sein. Das zweite Argument ist das Makro.
+% Das dritte Argument ist das Setzen des gewünschten Schlüssels. Das
+% definierte Makro selbst hat Schaltercharakter, ist also nicht
+% \cs{long} und versteht auch keine Argumente.
+% \begin{macrocode}
+%<*koma>
+\newcommand*{\KOMA@newdeprecatedcommand}[3][\@gobbletwo]{%
+ \newcommand*{#2}{\KOMA@UseDeprecatedCommand{#1}{\string#2}{#3}}%
+}
+% \end{macrocode}
+% \begin{macro}{\KOMA@UseDeprecatedCommand}
+% \changes{v2.97c}{2007/04/19}{neu (intern)}^^A
+% \changes{v3.12}{2013/03/04}{renamed \cs{KOMA@UseObsoleteCommand} into
+% \cs{KOMA@UseDeprecatedCommand}}
+% Die eigentliche Arbeit wird von diesem Makro erledigt. Die Argumente sind
+% dieselben.
+% \begin{macrocode}
+\newcommand*{\KOMA@UseDeprecatedCommand}[3]{%
+ #1{%
+ scrkbase%
+ }{%
+ You've used deprecated command `#2'.\MessageBreak
+ \protect\KOMAoptions{#3} will be used instead.\MessageBreak
+ You should also replace `#2' by `\protect\KOMAoptions{#3}'%
+ }%
+ \KOMAoptions{#3}%
+}
+%</koma>
+% \end{macrocode}
+% \end{macro}^^A \KOMA@UseDeprecatedCommand
+% \end{macro}^^A \KOMA@newdeprecatedcommand
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-basics.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-bibliography.dtx b/macros/latex/contrib/koma-script/source/scrkernel-bibliography.dtx
new file mode 100644
index 0000000000..0963bc4d7a
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-bibliography.dtx
@@ -0,0 +1,741 @@
+% \CheckSum{421}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-bibliography.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-bibliography.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-bibliography.dtx 3016 2018-09-03 11:40:59Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-09-03 13:40:59 +0200 (Mon, 03 Sep 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-bibliography.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (bibliography)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-bibliography.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/30}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Literaturverzeichnis}
+%
+% Das Literaturverzeichnis unterscheidet sich bei \KOMAScript{} nicht
+% wesentlich von den Standardklassen.
+%
+% Briefe haben kein Literaturverzeichnis.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+% \subsection{Anweisungen, die für die Optionen benötigt werden}
+%
+% Einige Anweisungen werden über Optionen verändert. Dazu müssen sie aber
+% bereits vor der Abarbeitung der Optionen definiert sein.
+%
+% \subsubsection{Literaturverzeichnisstile}
+%
+% \begin{macro}{\newbibstyle}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% \changes{v3.17}{2015/03/12}{interne Speicherung des Werts für Option
+% \texttt{bibliography}}^^A
+% Neue Literaturverzeichnisstile müssen mit dieser Anweisung definiert werden,
+% wenn sie von der Fehlermeldung korrekt angezeigt werden sollen. Das erste,
+% optionale Argument ist der Name eines Elternstils. Das zweite
+% Argument ist der Name des Stils. Das dritte Argument ist Code für den
+% Stil. Darin sollten normalerweise Umdefinierungen für \cs{@openbib@code},
+% \cs{newblock}, \cs{bib@beginhook}, \cs{bib@endhook} enthalten sein. Die
+% genannten Makros werden am Anfang des Stils zurückgesetzt. Danach wird der
+% Elternstil geladen und dann die eigenen Definitionen.
+% \begin{macrocode}
+\newcommand{\newbibstyle}[3][]{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#2}{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#1}{%
+ \ClassError{\KOMAClassName}{%
+ parent bibliography style `#1' does not exist}{%
+ You've told me to define the new bibliography style `#2'\MessageBreak
+ to be a child of bibliography style `#1', but bibliography
+ style\MessageBreak
+ `#1' does not exist.\MessageBreak
+ You have to remove the parent declaration or use an existing parent!
+ See the KOMA-Script manual for more information.%
+ }%
+ }{%
+ \@namedef{scr@bibstyle@#2}{%
+ \let\@openbib@code\@empty
+ \let\newblock\@empty
+ \let\bib@beginhook\@empty
+ \let\bib@endhook\@empty
+% \end{macrocode}
+% \begin{macro}{\scr@current@bibstyle}
+% \changes{v3.17}{2015/03/12}{Neu (intern)}^^A
+% Das Makro \cs{scr@current@bibstyle} wird benötigt, um den aktuellen Wert von
+% Option \texttt{bibliography} korrigieren zu können. Es wird direkt vom Stil
+% definiert, der auch die Korrektur des Optionenwerts durchführt.
+% \begin{macrocode}
+ \@ifundefined{scr@current@bibstyle}{}{%
+ \ifstr{\scr@current@bibstyle}{}{}{%
+ \edef\reserved@a{%
+ \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}%
+ {\scr@current@bibstyle}%
+ }\reserved@a
+ }%
+ }%
+ \def\scr@current@bibstyle{#2}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \KOMA@kav@xadd{.\KOMAClassFileName}{bibliography}{#2}%
+ \csname scr@bibstyle@#1\endcsname
+ #3%
+ }%
+ \g@addto@macro\scr@bibstylelist{, `#2'}%
+ }%
+ }{%
+ \ClassError{\KOMAClassName}{bibliography style `#2' already exists}{%
+ You've told me to define the new bibliography style `#2',\MessageBreak
+ but this style already exists.\MessageBreak
+ You have to use another bibliography style name.\MessageBreak
+ See the KOMA-Script manual for more information.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@bibstyle@}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
+% Nur ein Dummy, wenn kein Elternstil existiert.
+% \begin{macrocode}
+\newcommand*{\scr@bibstyle@}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bib@beginhook}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
+% \begin{macro}{\bib@endhook}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
+% Die beiden Haken, wie sie durch den Literaturverzeichnisstil vorgegeben
+% werden.
+% \begin{macrocode}
+\newcommand*{\bib@beginhook}{}
+\newcommand*{\bib@endhook}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@bibstylelist}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
+% Liste der mit \cs{newbibstyle} definierten und daher bekannten
+% Literaturverzeichnisstile.
+% \begin{macro}{\@openbib@code}
+% \changes{v2.3g}{1996/01/14}{Neu (intern)}^^A
+% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}^^A
+% Code, der am Anfang des Literaturverzeichnisses ausgeführt wird und
+% normalerweise ursprünglich für die \texttt{openbib}-Funktionalität verwendet
+% wurde. Inzwischen wird er für die komplette Stilauswahl verwendet.
+% \begin{macro}{\newblock}
+% \changes{v2.3g}{1996/01/14}{Grundeinstellung geändert}^^A
+% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}^^A
+% \begin{macrocode}
+\newcommand*{\scr@bibstylelist}{\@gobble}
+\newcommand*{\@openbib@code}{}
+\newcommand*{\newblock}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@bibstyle@openstyle}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
+% Vordefiniert sind zwei Stile. Mit dem Bibliographystil \texttt{openstyle}
+% kann eine alternative Darstellung der Literatureinträge aktiviert
+% werden. Dabei fügt \cs{newblock} keinen horizontalen Abstand mehr ein,
+% sondern beginnt einen neuen Absatz (in Form einer neuen Zeile).
+% \begin{macro}{\scr@bibstyle@oldstyle}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% Der Stil \texttt{oldstyle} entspricht hingegen der Voreinstellung.
+% \begin{macrocode}
+\newbibstyle{openstyle}{%
+ \renewcommand*{\@openbib@code}{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand*{\newblock}{\par}%
+}
+\newbibstyle{oldstyle}{%
+ \renewcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}%
+}
+\scr@bibstyle@oldstyle
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Überschrift des Literaturverzeichnisses}
+%
+% \begin{macro}{\bib@heading}
+% \changes{v2.3h}{1995/01/21}{neu (intern)}^^A
+% \changes{v2.6c}{2000/06/10}{die Präambel wird gesetzt}^^A
+% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet}^^A
+% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
+% \texttt{thebibliography}-Umgebung verschoben}^^A
+% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}^^A
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}^^A
+% \changes{v3.12}{2012/02/06}{\cs{ifbib@leveldown} wird beachtet}^^A
+% \changes{v3.13b}{2014/10/10}{running head with \texttt{leveldown}^^A
+% fixed}^^A
+% \changes{v3.25}{2017/10/13}{use always \cs{@mkright} and \cs{@mkdouble}}^^A
+% \changes{v3.25}{2017/10/13}{using \cs{bibliography@heading}}^^A
+% \begin{macro}{\bibliography@heading}
+% \changes{v3.25}{2017/10/13}{neu (intern)}
+% \changes{v3.26}{2018/09/03}{Verwendung von \cs{addsecmark}
+% oder \cs{subsectionmark} statt \cs{@mkright}}^^A
+% Befehl zum Setzen der Überschrift des Literaturverzeichnisses.
+% \begin{macrocode}
+\newcommand*{\bib@heading}{%
+%<article> \bibliography@heading{\refname}%
+%<book|report> \bibliography@heading{\bibname}%
+}
+\newcommand*{\bibliography@heading}[1]{%
+ \ifbib@leveldown
+%<article> \subsection*{#1}%
+%<book|report> \section*{#1}%
+%<book|report> \addsecmark{#1}%
+%<*article>
+ \begingroup
+ \c@secnumdepth=-\maxdimen
+ \subsectionmark{#1}%
+ \endgroup
+%</article>
+ \else
+%<article> \section*{#1}%
+%<book|report> \chapter*{#1}%
+ \@mkdouble{\MakeMarkcase{#1}}%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}%
+%
+%
+% \subsection{Optionen für das Literaturverzeichnis}
+%
+% \begin{option}{bibliography}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}^^A
+% \changes{v3.12}{2013/02/06}{neuer Wert \texttt{leveldown}}^^A
+% \changes{v3.12}{2013/02/06}{neuer Wert \texttt{standardlevel}}^^A
+% \changes{v3.12}{2013/03/05}{an die Änderungen in \textsf{scrbase}^^A
+% angepasst}^^A
+% \changes{v3.12}{2013/09/28}{Verwendung von \cs{addxcontentsline} statt
+% \cs{addcontentsline}}^^A
+% \changes{v3.12}{2013/09/28}{Es werden keine Kapiteleinträge in andere
+% Verzeichnisse geschrieben.}^^A
+% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}^^A
+% \changes{v3.25}{2017/10/13}{use always \cs{@mkright} and
+% \cs{@mkdouble}}^^A
+% \changes{v3.25}{2017/10/13}{redefines \cs{bibliography@heading} instead of
+% \cs{bib@heading}}^^A
+% Dies ist der Generalschlüssel für alle Optionen, die das
+% Literaturverzeichnis betreffen. Neu ist, dass verschiedene Stile definiert
+% werden können. Desweiteren kann man \texttt{totoc} und
+% \texttt{totocnumbered} wieder mit \texttt{nottotoc} aufgeben.
+% \begin{macro}{\ifbib@leveldown}
+% \changes{v3.12}{2013/02/06}{neuer Schalter (intern)}^^A
+% Für den ab Version~3.12 neuen Wert \texttt{leveldown} und dessen
+% Gegenstück \texttt{standardlevel} wird außerdem ein Schalter benötigt.
+% \begin{macrocode}
+\newif\ifbib@leveldown
+\KOMA@key{bibliography}{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#1}{%
+ \KOMA@set@ncmdkey{bibliography}{@tempa}{%
+ {notoc}{0},{nottotoc}{0},{plainheading}{0},%
+ {totoc}{1},{toc}{1},{notnumbered}{1},%
+ {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},%
+ {numberedtoc}{2},%
+ {leveldown}{3},%
+ {standardlevel}{4}%
+ }{#1}%
+ \ifcase \@tempa\relax % notoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{notoc}%
+ \renewcommand*{\bibliography@heading}[1]{%
+ \ifbib@leveldown
+%<article> \subsection*{##1}%
+%<book|report> \section*{##1}%
+ \@mkright{\MakeMarkcase{##1}}%
+ \else
+%<article> \section*{##1}%
+%<book|report> \chapter*{##1}%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+ }%
+ \or% totoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{totoc}%
+ \renewcommand*{\bibliography@heading}[1]{%
+%<*article>
+ \ifbib@leveldown
+% \end{macrocode}
+% \changes{v3.23}{2017/02/23}{Verwendung von \cs{ext@toc}}^^A
+% \changes{v3.25}{2017/10/13}{Verwendung von \cs{addsubsectiontocentry} statt
+% \cs{addxcontentsline}}^^A
+% Ab Version 3.23 wird das von \textsf{tocbasic} bereitgestellte
+% \cs{ext@toc} statt dem hart codierten \texttt{toc} verwendet.
+% \begin{macrocode}
+ \subsection*{%
+ \addsubsectiontocentry{}{##1}%
+ ##1%
+ }%
+ \@mkright{\MakeMarkcase{##1}}%
+ \else
+ \addsec{##1}%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+%</article>
+%<*book|report>
+ \ifbib@leveldown
+ \addsec{##1}%
+ \else
+ \if@chaptertolists
+ \@chaptertolistsfalse\addchap{##1}\@chaptertoliststrue
+ \else
+ \addchap{##1}%
+ \fi
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+%</book|report>
+ }%
+ \or% numbered
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{numbered}%
+ \renewcommand*{\bibliography@heading}[1]{%
+%<*article>
+ \ifbib@leveldown
+ \subsection{##1}%
+ \else
+ \section{##1}%
+ \@mkdouble{\MakeMarkcase{\sectionmarkformat ##1}}%
+ \fi
+%</article>
+%<*book|report>
+ \ifbib@leveldown
+ \section{##1}%
+ \else
+ \if@chaptertolists
+ \@chaptertolistsfalse\chapter{##1}\@chaptertoliststrue
+ \else
+ \chapter{##1}
+ \fi
+ \@mkdouble{\MakeMarkcase{\chaptermarkformat ##1}}%
+ \fi
+%</book|report>
+ }
+ \or% leveldown
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \bib@leveldowntrue
+ \or% standardlevel
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \bib@leveldownfalse
+ \fi
+ }{%
+ \FamilyKeyStateProcessed
+ \edef\reserved@a{%
+ \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}%
+ {\scr@current@bibstyle}%
+ }\reserved@a
+ \csname scr@bibstyle@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{openbib}
+% \changes{v2.3g}{1996/01/14}{\cs{if@openbib} (\cs{@openbibtrue},
+% \cs{@openbibfalse}) entfernt}
+% \changes{v2.3g}{1996/01/14}{Definition der openbib Option neu
+% implementiert}^^A
+% \changes{v2.98c}{2008/02/15}{obsolete}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% Mit dieser Option kann eine alternative Darstellung der
+% Literatureinträge aktiviert werden. Dabei fügt \cs{newblock} keinen
+% horizontalen Abstand mehr ein, sondern beginnt einen neuen Absatz
+% (in Form einer neuen Zeile).
+% \begin{macrocode}
+\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{bibtotoc}
+% \changes{v2.3h}{1995/01/21}{neue Option}^^A
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingefügt}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingefügt}
+% \changes{v2.7}{2001/01/03}{Klammerung korrigiert}^^A
+% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
+% thebibliography-Umgebung verschoben}^^A
+% \changes{v2.98c}{2008/02/15}{obsolete}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{bibtotocnumbered}
+% \changes{v2.3h}{1995/01/21}{neue Option}^^A
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingefügt}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingefügt}
+% \changes{v2.7}{2001/01/03}{Klammerung korrigiert}^^A
+% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird
+% verwendet}
+% \changes{v2.7i}{2001/05/17}{\cs{chapter} statt \cs{addchap}}
+% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
+% thebibliography-Umgebung verschoben}^^A
+% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel}^^A
+% \changes{v2.98c}{2008/02/15}{obsolete}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Die Option \texttt{bibtotoc} sorgt dafür, dass das
+% Literaturverzeichnis im Inhaltsverzeichnis aufgeführt wird.
+% Demgegenüber erweitert die Option \texttt{bibtotocnumbered} zu einem
+% normalen Kapitel einschließlich Nummerierung.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc}
+\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+%
+% \subsection{Standardbezeichner}
+%
+% \begin{macro}{\refname}
+% \begin{macro}{\bibname}
+% Je nach Klasse wird \cs{refname} oder \cs{bibname} verwendet.
+% \begin{macrocode}
+%<article>\newcommand*\refname{References}
+%<book|report>\newcommand*\bibname{Bibliography}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Definitionen für das Literaturverzeichnis}
+%
+% \begin{macro}{\setbibpreamble}
+% \changes{v2.6c}{2000/06/10}{neu}^^A
+% \changes{v2.7j}{2001/05/27}{\cs{renewcommand} durch \cs{def}
+% ersetzt zur Erhöhung der \textsf{natbib}-Kompatibilität}
+% \begin{macro}{\bibpreamble}
+% \changes{v2.6c}{2000/06/10}{neue (intern)}^^A
+% \changes{v2.6d}{2000/07/20}{Makro funktioniert nachdem \cs{let}^^A
+% durch \cs{newcommand*} ersetzt wurde}
+% \changes{v2.8q}{2002/01/10}{wieder \cs{let}}
+% \cs{bibpreamble} kann vom Benutzer mit \cs{setbibpreamble} auf
+% einen Text gesetzt werden, der nach der Überschrift eingefügt
+% wird. Dasselbe Makro wird von \textsf{natbib} als \cs{relax}
+% definiert; aus Kompatibilitätsgründen wird hier vergleichbar
+% verfahren und \cs{let} bzw. \cs{def} statt \cs{renewcommand}
+% verwendet.
+% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
+% \texttt{thebibliography}-Umgebung verschoben}
+% Außerdem wird ab Version 2.7j die Präambel nicht mehr in
+% \cs{bib@heading} gesetzt, sondern in der
+% \texttt{thebibliography}-Umgebung. Dies dient ebenfalls der
+% Kompatibilität mit natbib. Trotz aller Kompatibilität ist
+% \cs{bibpreamble} als internes Makro zu betrachten.
+% \begin{macrocode}
+\newcommand*{\bibpreamble}{\relax}
+\let\bibpreamble\relax
+\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{Length}{bibindent}
+% Der Einzug der Einträge bei \texttt{openbib}. Voreingestellt sind
+% 1,5\,em.
+% \begin{macrocode}
+\newdimen\bibindent
+\bibindent=1.5em
+% \end{macrocode}
+% \end{Length}
+%
+% \begin{environment}{thebibliography}
+% \changes{v2.2a}{1995/02/01}{in \textsf{scrartcl} \cs{bibname}
+% vollständig durch \cs{refname} ersetzt}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{bib@heading}}
+% \changes{v2.8q}{2002/01/10}{Erkennung und gesonderte Behandlung
+% leerer Präambeln}^^A
+% \changes{v2.9o}{2003/03/06}{Vergleich \cs{bibpreamble} mit \cs{@empty}
+% korrigiert}
+% \changes{v2.98c}{2008/02/15}{Neue Haken \cs{bib@before@hook} und
+% \cs{bib@after@hook} eingefügt}
+% Nun werden noch die Umgebung für das Literaturverzeichnis und der
+% Befehl für die einzelnen Einträge definiert.
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+ \if@bib@break@
+ \bib@beginhook
+ \else
+%<*book|report>
+ \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+ \setchapterpreamble{\bibpreamble}%
+ \fi\fi
+%</book|report>
+ \bib@heading
+%<*article>
+ \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+ \noindent\bibpreamble\par\nobreak
+ \fi\fi
+%</article>
+ \bib@beginhook
+ \bib@before@hook
+ \fi
+% \end{macrocode}
+% \begin{macro}{\BreakBibliography}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% An dieser Stelle wird \cs{BreakBibliography} passend umdefiniert.
+% \begin{macrocode}
+ \renewcommand{\BreakBibliography}[1]{%
+ \@bib@break
+ \end{thebibliography}%
+ \begingroup ##1\endgroup
+ \begin{thebibliography}{#1}
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% Hier geht es jetzt mit \texttt{thebibliography} weiter.
+ \list{%
+ \@biblabel{\@arabic\c@enumiv}%
+ }{%
+ \settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \if@bib@break@
+ \edef\@tempa{%
+ \noexpand\usecounter{enumiv}%
+ \noexpand\setcounter{enumiv}{\the\c@enumiv}%
+ }\@tempa
+ \no@bib@break
+ \else
+ \usecounter{enumiv}%
+ \fi
+ \let\p@enumiv\@empty
+ \renewcommand*\theenumiv{\@arabic\c@enumiv}%
+ }%
+ \sloppy\clubpenalty4000 \widowpenalty4000
+ \sfcode`\.=\@m
+}{%
+ \if@bib@break@
+ \def\@noitemerr{%
+ \@latex@warning{%
+ \string\BreakBibliography\space at begin of `thebibliography'
+ environment\MessageBreak
+ or following \string\BreakBibliography}%
+ }%
+ \else
+ \def\@noitemerr{%
+ \@latex@warning{%
+ Empty `thebibliography' environment or
+ \string\BreakBibliography\MessageBreak
+ before end of `thebibliography' environment}%
+ }%
+ \fi
+ \endlist
+ \if@bib@break@
+ \else
+ \bib@after@hook
+ \let\bib@before@hook\@empty
+ \let\bib@after@hook\@empty
+ \fi
+ \bib@endhook
+}
+% \end{macrocode}
+% \begin{macro}{\if@bib@break@}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% \begin{macro}{\no@bib@break}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% \begin{macro}{\@bib@break}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% Dieser Hilfsschalter arbeitet immer global!
+% \begin{macrocode}
+\newif\if@bib@break@
+\newcommand{\no@bib@break}{\global\let\if@bib@break@\iffalse}
+\newcommand*{\@bib@break}{\global\let\if@bib@break@\iftrue}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\bib@before@hook}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% \begin{macro}{\bib@after@hook}
+% \changes{v2.98c}{2008/02/15}{Neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\bib@before@hook}{}
+\newcommand*{\bib@after@hook}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+% \begin{macro}{\BreakBibliography}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% Diese Anweisung unterbricht normalerweise das Literaturverzeichnis für ein
+% paar eigene Anweisungen (z. B. Unterüberschriften). Wenn jedoch nicht das
+% \KOMAScript-Literaturverzeichnis verwendet wird, dann gibt es eine Warnung
+% aus.
+% \begin{macrocode}
+\newcommand{\BreakBibliography}[1]{%
+ \ClassWarning{\KOMAClassName}{%
+ You've used \string\BreakBibliography\space either outside of\MessageBreak
+ the bibliography or `thebibliography' was redefined\MessageBreak
+ incompatible, e.g., using a bibliography package.\MessageBreak
+ \string\BreakBibliography\space ignored%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterBibliographyPreamble}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% \begin{macro}{\AtEndBibliography}
+% \changes{v2.98c}{2008/02/15}{Neu}^^A
+% Zwei neue Anweisungen, um am Anfang des Literaturverzeichnisses, nach
+% Überschrift und Präambel, und am Ende des Literaturverzeichnisses, nach
+% Abschluss der Liste, Code einschleusen zu können. Das funktioniert natürlich
+% nur so lange, wie keine Paket verwendet wird, das die Umgebung umdefiniert.
+% \begin{macrocode}
+\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook}
+\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-bibliography.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-circularletters.dtx b/macros/latex/contrib/koma-script/source/scrkernel-circularletters.dtx
new file mode 100644
index 0000000000..af2f1319d4
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-circularletters.dtx
@@ -0,0 +1,174 @@
+% \CheckSum{36}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-circularletters.dtx
+% Copyright (c) Markus Kohm, 2006-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.
+% ----------------------------------------------------------------------
+% scrkernel-circularletters.dtx
+% Copyright (c) Markus Kohm, 2006-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-circularletters.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-circularletters.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (circular letters)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-circularletters.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/22}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{Serienbriefe und Adressdateien}
+%
+% Die \KOMAScript-Brief-Klasse unterstützt die Verwendung von Adressdateien
+% beispielsweise für Serienbriefe.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*letter>
+%<*option>
+% \fi
+%
+% \subsection{Option}
+% Die Implementierung ist von Optionen unabhängig.
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Makos für Serienbriefe und Adressdateien}
+%
+% \begin{macro}{\adrentry}
+% \changes{v2.8q}{2002/05/19}{\cs{adrentry} verwendet das neue
+% \cs{addrentry}}
+% \begin{macro}{\adrchar}
+% \changes{v2.8q}{2002/05/19}{\cs{adrchar} verwendet das neue \cs{addrchar}}
+% Serienbriefe werden mit Hilfe der Funktionen |\adrentry| und |\adrchar| und
+% einer Adressdatei realisiert. Darüber hinaus werden mit diesen Befehlen
+% Abkürzungen für Adressen definiert. Durch die Definition mit Hilfe von
+% \cs{addrentry} bzw. \cs{addrchar} müssen vom Anwender für neue Anwendungen
+% nur die neuen Befehle umdefiniert werden.
+% \begin{macrocode}
+\newcommand*{\adrentry}[7]{%
+ \addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}}
+\newcommand*{\adrchar}{\addrchar}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addrentry}
+% \changes{v2.8n}{2001/09/06}{Neu}^^A
+% \begin{macro}{\addrchar}
+% \changes{v2.8n}{2001/09/06}{Neu}^^A
+% Diese Makros ermöglichen ab Version 2.8n die Verwendung von bis zu 9
+% Argumenten.
+% \begin{macrocode}
+\newcommand*{\addrentry}[9]{\def\@tempa{#1}\ifx \@tempa\@empty \else
+ \def\@tempa{#2}\ifx \@tempa\@empty
+ \expandafter\def\csname #9\endcsname{#1\\#3}%
+ \else
+ \expandafter\def\csname #9\endcsname{#2 #1\\#3}%
+ \fi \fi}
+\newcommand*{\addrchar}[1]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</body>
+%</letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-circularletters.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx b/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx
new file mode 100644
index 0000000000..191a302d6d
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-compatibility.dtx
@@ -0,0 +1,697 @@
+% \CheckSum{218}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-compatibility.dtx
+% Copyright (c) Markus Kohm, 2006-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-compatibility.dtx
+% Copyright (c) Markus Kohm, 2006-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-compatibility.dtx 3063 2019-02-01 07:39:11Z kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-02-01 08:39:11 +0100 (Fri, 01 Feb 2019) $
+ \def\filerevision$#1: #2 ${\def\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-compatibility.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (compatibility)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-compatibility.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/16}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+%
+% \section{Kompatibilität mit den Standardklassen oder
+% zu früheren Versionen}
+%
+% \KOMAScript{} ist bezüglich der Anwenderschnittstelle von vornherein
+% aufwärtskompatibel mit den Standardklassen. Allerdings unterscheiden sich
+% diverse Voreinstellungen doch sehr erheblich von denen der
+% Standardklassen. In Zukunft soll man beim Laden der Klassen (nicht jedoch
+% später!) mit Option \texttt{emulatestandardclasses} die Voreinstellungen
+% anpassen können. Dabei wird jedoch nicht komplette Umbruchkompatibilität mit
+% den Standardklassen erreicht, sondern nur einige Einstellungen werden
+% angepasst.
+%
+%
+% Manchmal ist es sinnvoll, dass sich eine neue Version von \KOMAScript{}
+% etwas anders verhält als frühere Versionen. Gleichzeitig ist es aber für den
+% Anwender manchmal auch notwendig, dass sich neue Versionen ganz genau so
+% verhalten wie frühere. Daher wird eine Option geboten, mit der man die
+% Kompatibilität selbst steuern kann. Voreingestellt ist jeweils maximale
+% Kompatibilität.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+%
+% \subsection{Optionen für die Kompatibilität mit den Standardklassen}
+% Hier gibt es derzeit nur eine Option, die nur beim Laden aber nicht zur
+% Laufzeit verwendet werden kann:
+%
+% \begin{option}{emulatestandardclasses}
+% \changes{v3.12}{2013/11/11}{Neue Option}^^A
+% \changes{v3.20}{2016/02/16}{\texttt{headings!=standardclasses} auch für
+% \textsf{scrartcl}}^^A
+% Diese Option muss sich auf diverse andere Einstellungen auswirken und
+% sollte deshalb so früh wie möglich verwendet werden. Vieles ändert sie
+% sofort, manches aber auch erst später.
+% \begin{macro}{\if@scr@emulatestandardclasses}
+% \changes{v3.12}{2013/11/11}{Neuer Schalter (intern)}^^A
+% Für die späteren Änderungen wird ein Schalter benötigt, der jedoch nicht
+% wie gewohnt geändert werden kann.
+% \begin{macrocode}
+%<*option&class&!letter>
+\newif\if@scr@emulatestandardclasses
+\let\scr@emulatestandardclassestrue\relax
+\let\scr@emulatestandardclassesfalse\relax
+\DeclareOption{emulatestandardclasses}{%
+ \let\if@scr@emulatestandardclasses\iftrue
+ \KOMAExecuteOptions{%
+ fontsize=10pt,%
+%<article|book|report> headings=standardclasses,%
+ cleardoublepage=current
+ }%
+ \newcommand*{\defaultpapersize}{letter}%
+ \AtEndOfClass{%
+ \setkomafont{descriptionlabel}{\bfseries}%
+ \setkomafont{dictum}{\normalfont\small}%
+ \setkomafont{caption}{}%
+ \setkomafont{captionlabel}{}%
+ \setcapindent{0pt}%
+ \RequirePackage[pagestyleset=standard,markcase=upper]{scrlayer-scrpage}%
+ \PreventPackageFromLoading{scrpage2}%
+ \setkomafont{pagenumber}{\normalfont}%
+ \setkomafont{pageheadfoot}{\normalfont}%
+ \cfoot[\pagemark]{}%
+%<article|report> \pagestyle{plain}%
+ }%
+}
+%</option&class&!letter>
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsection{Option für die Kompatibilität zu früheren Versionen}
+% Die gesamte Kompatibilitätssteuerung erfolgt mit einer einzigen Option, bei
+% der man angibt, zu welcher Version Kompatibilität hergestellt werden
+% soll. Dies bedeutet ggf. dann auch, dass einzelne neuere Möglichkeiten nicht
+% zur Verfügung stehen.
+% \changes{v3.01b}{2008/12/09}{Kompatibilitätseinstellungen werden in Paketen
+% nur definiert, wenn sie noch nicht vorhanden sind}^^A
+%
+% \begin{option}{version}
+% \changes{v2.9u}{2005/03/05}{Neue Option}^^A
+% \changes{v2.95}{2006/03/16}{Option kann nur beim Laden der Klasse gesetzt
+% werden}^^A
+% \begin{macro}{\scr@compatibility}
+% \changes{v2.9u}{2005/03/05}{Neues Macro}^^A
+% \changes{v3.01a}{2008/11/20}{Voreinstellung auf \textit{last} geändert}
+% \begin{macro}{\scr@ta@compatibility}
+% \changes{v3.01b}{2008/12/09}{Neues Macro}^^A
+% In einigen Fällen sind Verbesserungen nicht kompatibel mit früheren
+% Versionen. Deshalb sind solche Verbesserungen nur verfügbar, wenn mit diesem
+% Schalter die neue Version ausgewählt wird. Aber es gilt: Entweder kompatibel
+% oder in allen Dingen neu. Mischmasch machen wir nicht. Die aktuell
+% eingestellte Kompatibilität wird in \cs{scr@compatibility} als Zahl
+% gespeichert. In den Makros \cs{scr@v@\emph{Version}} werden die
+% zugehörigen Nummern gespeichert.
+% \begin{macrocode}
+%<*init>
+%<class>\newcommand*
+%<package>\providecommand*
+ {\scr@compatibility}{\scr@v@last}
+%<typearea>\newcommand*{\scr@ta@compatibility}{\scr@compatibility}
+%</init>
+%<*option>
+\KOMA@key{version}[last]{%
+ \scr@ifundefinedorrelax{scr@v@#1}{%
+ \def\scr@compatibility{0}%
+%<class> \ClassWarningNoLine{\KOMAClassName}{%
+%<*package>
+ \PackageWarningNoLine{%
+%<extend> scrextend%
+%<typearea> typearea%
+%<letter> scrletter%
+ }{%
+%</package>
+ You have set option `version' to value `#1', but\MessageBreak
+ this value of version is not supported.\MessageBreak
+ Because of this, version was set to `first'%
+ }%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+%<package&typearea> typearea.\scr@pkgextension
+%<package&letter> scrletter.\scr@pkgextension
+ }{version}{first}%
+ }{%
+%<class> \ClassInfoNoLine{\KOMAClassName}{%
+%<*package>
+ \PackageInfoNoLine{%
+%<extend> scrextend%
+%<typearea> typearea%
+%<letter> scrletter%
+ }{%
+%</package>
+ Switching compatibility level to `#1'%
+ }%
+%<class|extend|letter> \edef\scr@compatibility{\@nameuse{scr@v@#1}}%
+%<typearea> \edef\scr@ta@compatibility{\@nameuse{scr@v@#1}}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+%<package&typearea> typearea.\scr@pkgextension
+%<package&letter> scrletter.\scr@pkgextension
+ }{version}{#1}%
+ }%
+}
+%<class>\KOMA@kav@add{.\KOMAClassFileName}{version}{last}
+% \end{macrocode}
+% Eine zusätzliche Bedingung gibt es noch: Die Kompatibilität kann nur beim
+% Laden gesetzt werden. Danach geht es nicht mehr. Ausnahmsweise wird hier
+% auch nicht mit \cs{FamilyKeyState} signalisiert, sondern direkt ein Fehler
+% ausgegeben.
+% \begin{macrocode}
+%<class>\AtEndOfClass{%
+%<package>\AtEndOfPackage{%
+ \KOMA@key{version}[]{%
+%<class> \ClassError{\KOMAClassName}{%
+%<*package>
+ \PackageError{%
+%<extend> scrextend%
+%<typearea> typearea%
+%<letter> scrletter%
+ }{%
+%</package>
+ Option `version' too late%
+ }{%
+ Option `version' may be set only while loading the
+%<class> class.\MessageBreak
+%<package> package.\MessageBreak
+ But you've tried to set it up later.%
+ }%
+ \FamilyKeyStateProcessed
+ }%
+}
+%</option>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*init>
+% \end{macrocode}
+% \begin{macro}{\scr@v@first}
+% \changes{v2.9u}{2005/03/05}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.9}
+% \changes{v2.9u}{2005/03/05}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.9t}
+% \changes{v2.9u}{2005/03/05}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.95}
+% \changes{v2.95}{2006/03/23}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.95a}
+% \changes{v2.96a}{2006/11/27}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.95b}
+% \changes{v2.96a}{2006/11/27}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.96}
+% \changes{v2.96a}{2006/11/27}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.96a}
+% \changes{v2.96a}{2006/11/27}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.97}
+% \changes{v2.97}{2007/03/02}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.97a}
+% \changes{v2.97a}{2007/03/07}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.97b}
+% \changes{v2.97b}{2007/03/25}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.97c}
+% \changes{v2.97c}{2007/05/12}{Neues Macro}^^A
+% \changes{v2.97d}{2007/10/09}{Wert geändert}^^A
+% \begin{macro}{\scr@v@2.97d}
+% \changes{v2.97d}{2007/10/03}{Neues Macro}^^A
+% \changes{v2.97d}{2007/10/09}{Wert geändert}^^A
+% \begin{macro}{\scr@v@2.97e}
+% \changes{v2.97e}{2007/11/27}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.98}
+% \changes{v2.98}{2007/12/24}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.98a}
+% \changes{v2.98a}{2008/01/08}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.98b}
+% \changes{v2.98b}{2008/01/30}{Neues Macro}^^A
+% \begin{macro}{\scr@v@2.98c}
+% \changes{v2.98c}{2008/02/01}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.00}
+% \changes{v3.00}{2008/11/04}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.01}
+% \changes{v3.01}{2008/11/14}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.01a}
+% \changes{v3.01a}{2008/11/20}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.01b}
+% \changes{v3.01b}{2008/11/24}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.01c}
+% \changes{v3.01c}{2008/12/09}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.02}
+% \changes{v3.02}{2009/01/01}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.02b}
+% \changes{v3.02b}{2009/01/24}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.02c}
+% \changes{v3.02c}{2009/01/28}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.03}
+% \changes{v3.03}{2009/04/01}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.03a}
+% \changes{v3.03a}{2009/04/02}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.03b}
+% \changes{v3.03b}{2009/04/12}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.04}
+% \changes{v3.04}{2009/07/07}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.05}
+% \changes{v3.05}{2009/07/08}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.04a}
+% \changes{v3.04a}{2009/07/24}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.05a}
+% \changes{v3.05a}{2010/03/10}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.06}
+% \changes{v3.06}{2010/06/17}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.07}
+% \changes{v3.07}{2010/09/14}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.08}
+% \changes{v3.08}{2010/10/28}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.08a}
+% \changes{v3.08a}{2011/01/25}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.08b}
+% \changes{v3.08b}{2011/02/22}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.09}
+% \changes{v3.09}{2011/04/02}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.09a}
+% \changes{v3.09a}{2011/04/12}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.10}
+% \changes{v3.10}{2011/08/30}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.10a}
+% \changes{v3.10a}{2012/03/08}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.10b}
+% \changes{v3.10b}{2012/03/13}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.11}
+% \changes{v3.11}{2012/05/15}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.11a}
+% \changes{v3.11a}{2012/05/25}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.11b}
+% \changes{v3.11b}{2012/07/29}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.12}
+% \changes{v3.12}{2013/03/05}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.13}
+% \changes{v3.13}{2014/03/19}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.13a}
+% \changes{v3.13a}{2014/08/07}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.14}
+% \changes{v3.14}{2014/10/28}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.15}
+% \changes{v3.15}{2014/11/20}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.16}
+% \changes{v3.16}{2015/02/08}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.17}
+% \changes{v3.17}{2015/02/08}{Neues Macro}^^A
+% \begin{macro}{\scr@v@3.17a}
+% \changes{v3.17a}{2015/05/06}{Neues Macro}
+% \begin{macro}{\scr@v@3.17c}
+% \changes{v3.17c}{2015/05/13}{Neues Macro}
+% \begin{macro}{\scr@v@3.18}
+% \changes{v3.18}{2015/05/14}{Neues Macro}
+% \begin{macro}{\scr@v@3.18a}
+% \changes{v3.18a}{2015/07/03}{Neues Macro}
+% \begin{macro}{\scr@v@3.19}
+% \changes{v3.19}{2015/07/26}{Neues Macro}
+% \begin{macro}{\scr@v@3.19a}
+% \changes{v3.19a}{2015/10/03}{Neues Macro}
+% \begin{macro}{\scr@v@3.20}
+% \changes{v3.20}{2015/10/06}{Neues Macro}
+% \begin{macro}{\scr@v@3.21}
+% \changes{v3.21}{2016/05/19}{Neues Macro}
+% \begin{macro}{\scr@v@3.22}
+% \changes{v3.22}{2016/07/29}{Neues Macro}
+% \begin{macro}{\scr@v@3.23}
+% \changes{v3.23}{2017/02/04}{Neues Macro}
+% \begin{macro}{\scr@v@3.23}
+% \changes{v3.24}{2017/04/22}{Neues Macro}
+% \begin{macro}{\scr@v@3.25}
+% \changes{v3.25}{2017/09/07}{Neues Macro}
+% \begin{macro}{\scr@v@3.26}
+% \changes{v3.26}{2018/03/31}{Neues Macro}
+% \begin{macro}{\scr@v@3.26a}
+% \changes{v3.26a}{2018/12/30}{Neues Macro}
+% \begin{macro}{\scr@v@3.26b}
+% \changes{v3.26b}{2018/12/30}{Neues Macro}
+% \begin{macro}{\scr@v@last}
+% \changes{v2.9u}{2005/03/05}{Neues Macro}^^A
+% Nun die unterschiedlichen möglichen Werte (|\scr@v@last| ist jeweils die
+% höchste vorhandene Nummer):
+% \begin{macrocode}
+\@namedef{scr@v@first}{0}
+\@namedef{scr@v@2.9}{0}
+\@namedef{scr@v@2.9t}{0}
+\@namedef{scr@v@2.9u}{1}
+\@namedef{scr@v@2.95}{2}
+\@namedef{scr@v@2.95a}{2}
+\@namedef{scr@v@2.95b}{2}
+\@namedef{scr@v@2.96}{2}
+\@namedef{scr@v@2.96a}{3}
+\@namedef{scr@v@2.97}{3}
+\@namedef{scr@v@2.97a}{3}
+\@namedef{scr@v@2.97b}{3}
+\@namedef{scr@v@2.97c}{4}
+\@namedef{scr@v@2.97d}{5}
+\@namedef{scr@v@2.97e}{6}
+\@namedef{scr@v@2.98}{6}
+\@namedef{scr@v@2.98a}{6}
+\@namedef{scr@v@2.98b}{6}
+\@namedef{scr@v@2.98c}{7}
+\@namedef{scr@v@3.00}{8}
+\@namedef{scr@v@3.01}{8}
+\@namedef{scr@v@3.01a}{8}
+\@namedef{scr@v@3.01b}{9}
+\@namedef{scr@v@3.01c}{9}
+\@namedef{scr@v@3.02}{9}
+\@namedef{scr@v@3.02b}{9}
+\@namedef{scr@v@3.02c}{10}
+\@namedef{scr@v@3.03}{10}
+\@namedef{scr@v@3.03a}{10}
+\@namedef{scr@v@3.03b}{10}
+\@namedef{scr@v@3.04}{10}
+\@namedef{scr@v@3.04a}{10}
+\@namedef{scr@v@3.05}{10}
+\@namedef{scr@v@3.05a}{10}
+\@namedef{scr@v@3.06}{10}
+\@namedef{scr@v@3.07}{10}
+\@namedef{scr@v@3.08}{10}
+\@namedef{scr@v@3.08a}{10}
+\@namedef{scr@v@3.08b}{10}
+\@namedef{scr@v@3.09}{10}
+\@namedef{scr@v@3.09a}{10}
+\@namedef{scr@v@3.10}{10}
+\@namedef{scr@v@3.10a}{10}
+\@namedef{scr@v@3.10b}{10}
+\@namedef{scr@v@3.11}{10}
+\@namedef{scr@v@3.11a}{10}
+\@namedef{scr@v@3.11b}{10}
+\@namedef{scr@v@3.12}{11}
+\@namedef{scr@v@3.13}{12}
+\@namedef{scr@v@3.13a}{13}
+\@namedef{scr@v@3.14}{13}
+\@namedef{scr@v@3.15}{14}
+\@namedef{scr@v@3.16}{14}
+\@namedef{scr@v@3.17}{15}
+\@namedef{scr@v@3.17a}{15}
+\@namedef{scr@v@3.17c}{15}
+\@namedef{scr@v@3.18}{15}
+\@namedef{scr@v@3.18a}{15}
+\@namedef{scr@v@3.19}{15}
+\@namedef{scr@v@3.19a}{15}
+\@namedef{scr@v@3.20}{15}
+\@namedef{scr@v@3.21}{15}
+\@namedef{scr@v@3.22}{16}
+\@namedef{scr@v@3.23}{16}
+\@namedef{scr@v@3.24}{16}
+\@namedef{scr@v@3.25}{17}
+\@namedef{scr@v@3.26}{17}
+\@namedef{scr@v@3.26a}{17}
+\@namedef{scr@v@3.26b}{17}
+\@namedef{scr@v@last}{17}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \begin{macrocode}
+%</init>
+% \end{macrocode}
+%
+% \begin{macro}{\scr@v@is@lt}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version jünger als die angegebene ist.
+% \begin{macrocode}
+%<*option&(class|extend)>
+\newcommand*{\scr@v@is@lt}[1]{%
+ \scr@compatibility<\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@v@is@gt}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version älter als die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@v@is@gt}[1]{%
+ \scr@compatibility>\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@v@is@le}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version jünger als oder die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@v@is@le}[1]{%
+ \numexpr\scr@compatibility-\@ne\relax<\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@v@is@ge}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version älter als oder die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@v@is@ge}[1]{%
+ \numexpr\scr@compatibility+\@ne\relax>\@nameuse{scr@v@#1}
+}
+%</option&(class|extend)>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@ta@v@is@lt}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version jünger als die angegebene ist.
+% \begin{macrocode}
+%<*option&package&typearea>
+\newcommand*{\scr@ta@v@is@lt}[1]{%
+ \scr@ta@compatibility<\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@ta@v@is@gt}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version älter als die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@ta@v@is@gt}[1]{%
+ \scr@ta@compatibility>\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@ta@v@is@le}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version jünger als oder die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@ta@v@is@le}[1]{%
+ \numexpr\scr@ta@compatibility-\@ne <\@nameuse{scr@v@#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@ta@v@is@ge}
+% \changes{v3.17}{2015/03/10}{Neu (intern)}^^A
+% Bedingung, dass die eingestellte Version älter als oder die angegebene ist.
+% \begin{macrocode}
+\newcommand*{\scr@ta@v@is@ge}[1]{%
+ \numexpr\scr@ta@compatibility+\@ne >\@nameuse{scr@v@#1}
+}
+%</option&package&typearea>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Kompatibilität mit früheren Versionen von \textsf{scrlttr2}}
+% In früheren Versionen von \textsf{scrlttr2} gab es weitere Befehle, die
+% eventuell von \texttt{lco}-Dateien oder Paketen verwendet werden.
+% Gemeldete Inkompatibitlitäten sind nach Möglichkeit zu lösen.
+%
+% \begin{macro}{\@setif}
+% \changes{v2.8q}{2001/10/08}{Neu}^^A
+% \changes{v2.95}{2006/03/31}{Nur vor Version 2.95}^^A
+% Dies war ein Makro, mit dem man einen Schalter über die symbolischen
+% Werte \texttt{true}, \texttt{false}, \texttt{on} und \texttt{off} setzen
+% kann. Das erste, optionale Argument war der Name des Schalters ohne Präfix
+% "`\texttt{if}"'. Das zweite Argument war der Name der Option und das dritte
+% der gewünschte Wert. War das optionale Argument nicht gesetzt oder leer, so
+% wurde der Optionenname mit einem vorangestellten "`\texttt{@}"' als Name des
+% Schalters verwendet. Dieses Makro wird nun mit Hilfe von \cs{KOMA@set@ifkey}
+% nachgebildet. Dadurch ist es nicht absolut fehlerkompatibel, das es nun mehr
+% Werte versteht als vorher.
+% \begin{macrocode}
+%<*class&letter&body>
+\expandafter\ifnum \@nameuse{scr@v@2.95}>\scr@compatibility\relax
+ \newcommand*{\@setif}[2][]{%
+ \begingroup
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \def\@tempa{\KOMA@set@ifkey{#2}{@#2}}%
+ \else
+ \def\@tempa{\KOMA@set@ifkey{#2}{#1}}%
+ \fi
+ \expandafter\endgroup\@tempa
+ }%
+\fi
+%</class&letter&body>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-compatibility.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-floats.dtx b/macros/latex/contrib/koma-script/source/scrkernel-floats.dtx
new file mode 100644
index 0000000000..ab752b1b0c
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-floats.dtx
@@ -0,0 +1,2062 @@
+% \CheckSum{1692}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-floats.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrkernel-floats.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-floats.dtx 2701 2017-11-15 14:02:01Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-11-15 15:02:01 +0100 (Wed, 15 Nov 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-floats.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (floats)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-floats.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/25}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Gleitumgebungen}
+%
+% \KOMAScript{} verfügt bezüglich der Gleitumgebungen über einige
+% Features, die über das, was die Standardklassen bieten, hinaus
+% geht. \marginline{Geplant!} Allerdings ist das hier verwendete Interface
+% gnadenlos veraltet und wird deshalb irgendwann ersetzt. Dabei wird
+% höchstwahrscheinlich grundsätzlich auf das \textsf{caption}-Paket aufgebaut
+% werden. Man betrachte dieses Modul daher als grundsätzlich zur Disposition
+% stehend.
+%
+% Die einzige Gleitumgebung, über die Briefe derzeit verfügen sind
+% Randnotizen.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \iffalse
+%<*class>
+%<*!letter>
+% \fi
+%
+% \subsection{Einige Anweisungen und Einstellungen für die Optionen}
+%
+% Einige Anweisungen und Einstellungen werden bereits benötigt, bevor die
+% Optionen abgearbeitet werden.
+%
+% \begin{macro}{\if@captionabove}
+% \changes{v2.8h}{2001/07/19}{neu}^^A
+% \changes{v3.09}{2011/03/23}{Initialisierung vor den Optionen}^^A
+% Ob es sich bei \cs{caption} um eine Unter- oder Überschrift handelt und also
+% \cs{abovecaptionskip} davor und \cs{belowcaptionskip} danach steht
+% oder umgekehrt, wird über diesen Schalter gesteuert. Voreingestellt
+% sind Unterschriften.
+% \begin{macrocode}
+\newif\if@captionabove\@captionabovefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{neu Option}^^A
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{Definition erfolgt etwas früher}^^A
+% \begin{macro}{\@tablecaptionabovetrue}
+% \begin{macro}{\@tablecaptionabovefalse}
+% Die Einstellung, ob es Tabellenüber- oder -unterschriften sind, wird in
+% einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@tablecaptionabove\@tablecaptionabovefalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@figurecaptionabove}
+% \changes{v3.09}{2011/03/23}{neu Option}^^A
+% \begin{macro}{\@figurecaptionabovetrue}
+% \changes{v3.09}{2011/03/23}{neu (intern)}^^A
+% \begin{macro}{\@figurecaptionabovefalse}
+% \changes{v3.09}{2011/03/23}{neu (intern)}^^A
+% Die Einstellung, ob es Abbildungsüber- oder -unterschriften sind, wird in
+% einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@figurecaptionabove\@figurecaptionabovefalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifonelinecaptions}
+% \changes{v2.8q}{2001/11/17}{neuer Schalter}^^A
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}^^A
+% \begin{macro}{\onelinecaptionstrue}
+% \begin{macro}{\onelinecaptionsfalse}
+% Die Entscheidung, ob die Sonderbehandlung für einzeilige caption-Texte
+% durchgeführt werden soll, wird in einem Schalter gespeichert. In der
+% Hoffnung, beim Laden von \textsf{caption2} Speicher zu sparen, wird
+% der gleiche Name verwendet, den auch \textsf{caption2}
+% verwendet. Trotzdem sollte man diesen Schalter als internen Schalter
+% betrachten.
+% \begin{macrocode}
+\newif\ifonelinecaptions\onelinecaptionstrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scap@pos}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}^^A
+% Hier wird gespeichert, ob die Beschreibung bei |captionbeside| links oder
+% rechts vom Rest stehen soll. Voreingestellt ist rechts davon
+% (\emph{\textbf{r}ight}). Andere Möglichkeiten sind \emph{\textbf{l}eft},
+% \emph{\textbf{o}uter}, \emph{\textbf{i}nner}.
+% \begin{macrocode}
+\newcommand*{\scap@pos}{r}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@valign}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}^^A
+% Hier wird gespeichert, ob bei |captionbeside| die beiden Boxen (siehe
+% Definition der Umgebung) \emph{\textbf{t}op}, \emph{\textbf{b}ottem} oder
+% \emph{\textbf{c}enter} ausgerichtet werden sollen. Andere Buchstaben
+% sind nicht erlaubt. Voreingestellt ist \emph{\textbf{b}ottem}.
+% \begin{macrocode}
+\newcommand*{\scap@valign}{b}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Optionen für Titel von Gleitumgebungen}
+%
+% \begin{option}{captions}
+% \changes{v2.98c}{2008/02/18}{Neuer Zentralschalter für caption}^^A
+% \changes{v3.09}{2011/04/02}{Neue Werte (\texttt{heading},
+% \texttt{signature}, \texttt{figureheading},
+% \texttt{figuresignature})}^^A
+% \changes{v3.17}{2015/03/11}{Beachtung der Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/11}{Verwendung der internen Werteliste}^^A
+% Dies ist nun die zentrale Option für Einstellungen zu \cs{caption}. Als
+% besondere Schwierigkeit ergibt sich dabei jedoch, dass das Paket
+% \textsf{caption} einige Sonderbehandlungen für \KOMAScript{} enthält, die
+% darauf angewiesen sind, dass die alte Optionenschnittstelle verwendet
+% wird. Erfreulicherweise funktioniert das aber ab Version~3.1g über eine
+% Erweiterung der Schalter-Umschaltbefehle (|\@tablecaptionabovetrue|,
+% |\@tablecaptionabovefalse|, |\onelinecaptionstrue|,
+% |\onelinecaptionsfalse|), so dass lediglich dafür georgt werden muss,
+% dass diese weiterhin verwendet werden.
+% \begin{macrocode}
+\KOMA@key{captions}{%
+ \KOMA@set@ncmdkey{captions}{@tempa}{%
+ {heading}{0},{above}{0},{top}{0},%
+ {signature}{1},{below}{1},{bot}{1},{bottom}{1},%
+ {tableheading}{2},%
+ {tableabove}{2},{abovetable}{2},{abovetabular}{2},{topattable}{2},%
+ {tablesignature}{3},%
+ {tablebelow}{3},{belowtable}{3},{belowtabular}{3},{bottomattable}{3},%
+ {figureheading}{4},{figureabove}{4},{abovefigure}{4},{topatfigure}{4},%
+ {figuresignature}{5},{figurebelow}{5},{belowfigure}{5},{bottomatfigure}{5},%
+ {oneline}{6},%
+ {nooneline}{7},%
+ {rightbeside}{8},{besideright}{8},%
+ {leftbeside}{9},{besideleft}{9},%
+ {innerbeside}{10},{besideinner}{10},%
+ {outerbeside}{11},{besideouter}{11},%
+ {topbeside}{12},{besidetop}{12},%
+ {centeredbeside}{13},{besidecentered}{13},%
+ {middlebeside}{13},{besidemiddle}{13},%
+ {bottombeside}{14},{besidebottom}{14}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax % heading
+ \@tablecaptionabovetrue
+ \@figurecaptionabovetrue
+ \@captionabovetrue
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{heading}%
+ \or % signature
+ \@tablecaptionabovefalse
+ \@figurecaptionabovefalse
+ \@captionabovefalse
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{heading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{signature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{signature}%
+ \or % tableheading
+ \@tablecaptionabovetrue
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{tableheading}%
+ \or % tablesignature
+ \@tablecaptionabovefalse
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tableheading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{tablesignature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature}%
+ \or % figureheading
+ \@figurecaptionabovetrue
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{figureheading}%
+ \or % figuresignature
+ \@figurecaptionabovefalse
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figureheading}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{figuresignature}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature}%
+ \or % oneline
+ \onelinecaptionstrue
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline}%
+ \or % nooneline
+ \onelinecaptionsfalse
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{oneline}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{nooneline}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{nooneline}%
+ \or % rightbeside
+ \renewcommand*{\scap@pos}{r}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside}%
+ \or % leftbeside
+ \renewcommand*{\scap@pos}{l}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{leftbeside}%
+ \or % innerbeside
+ \renewcommand*{\scap@pos}{i}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{innerbeside}%
+ \or % outerbeside
+ \renewcommand*{\scap@pos}{o}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{rightbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{leftbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{innerbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{outerbeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{outerbeside}%
+ \or % topbeside
+ \renewcommand*{\scap@valign}{t}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{topbeside}%
+ \or % centeredbeside
+ \renewcommand*{\scap@valign}{c}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{centeredbeside}%
+ \or % bottombeside
+ \renewcommand*{\scap@valign}{b}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{topbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{centeredbeside}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{captions}{bottombeside}%
+ \KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside}%
+ \fi
+ \fi
+}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{signature}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{tablesignature}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{figuresignature}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{oneline}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{rightbeside}
+\KOMA@kav@add{.\KOMAClassFileName}{captions}{bottombeside}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{neue Option}^^A
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{tablecaptionbelow}
+% \changes{v2.8h}{2001/07/19}{neue Option}^^A
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Es besteht nun die Wahl, ob \cs{caption} bei Tabellen für Unter-
+% oder Überschriften voreingestellt ist. Die Defaulteinstellung ist
+% aus Kompatibilitätsgründen die Tabellenunterschrift.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{tablecaptionabove}{captions=tableheading}
+\KOMA@DeclareDeprecatedOption{tablecaptionbelow}{captions=tablesignature}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{origlongtable}
+% \changes{v2.8l}{2001/08/16}{neue Option}^^A
+% Wenn das \textsf{longtable}-Paket geladen ist, werden die
+% Tabellentitel dafür normalerweise von den Klassen umdefiniert. Dies
+% geschieht automatisch nicht, wenn das \textsf{caption2}-Paket
+% geladen ist. Es geschieht ausserdem nicht, wenn diese Option gesetzt
+% ist.
+% \begin{macro}{\if@komalongtable}
+% \changes{v2.8l}{2001/08/16}{neue Option}^^A
+% \begin{macro}{\@komalongtabletrue}
+% \begin{macro}{\@komalongtablefalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@komalongtable\@komalongtabletrue
+\DeclareOption{origlongtable}{\@komalongtablefalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{onelinecaption}
+% \changes{v2.8q}{2001/11/17}{neue Option}^^A
+% \changes{v2.98c}{2008/03/03}{obsolete}
+% \changes{v2.98c}{2008/03/03}{keine Sonderbehandlung für \textsf{caption2}^^A
+% mehr}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{noonelinecaption}
+% \changes{v2.8q}{2001/11/17}{neue Option}^^A
+% \changes{v2.98c}{2008/03/03}{obsolete}
+% \changes{v2.98c}{2008/03/03}{keine Sonderbehandlung für \textsf{caption2}^^A
+% mehr}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Da für diese Option nicht der gleiche Name verwendet wird, wie bei
+% \textsf{caption2}, wurde von den Optionen bis Version~2.98b nicht nur der
+% Schalter entsprechend gesetzt, sondern auch die korrespondierende Option an
+% \textsf{caption2} weitergeleitet. Der gleiche Name konnte schlecht
+% verwendet werden, weil er bei einer Klasse auch nicht ansatzweise
+% als selbsterklärend bezeichnet werden kann. Ab Version~2.98c entfällt die
+% Sonderbehandlung von \textsf{caption2}.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{onelinecaption}{captions=oneline}
+\KOMA@DeclareDeprecatedOption{noonelinecaption}{captions=nooneline}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \iffalse
+%</!letter>
+%</class>
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Randnotizen}
+%
+% Randnotizen sind ebenfalls eine Art von Gleitumgebung.
+%
+% \begin{macro}{\marginline}
+% \KOMAScript{} stellt zusätzlich ein Randzeilenmakro zur Verfügung,
+% das je nach gerader oder ungerader Seite in doppelseitigen Layout
+% rechts- oder linksbündig gesetzt werden muss.
+% \changes{v2.4l}{1997/02/06}{Definition mit Hilfe des optionalen
+% Parameters von \cs{marginpar} deutlich vereinfacht}
+% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}^^A
+% \begin{macrocode}
+\newcommand\marginline[1]{%
+ \marginpar[\raggedleft{#1}]{\raggedright #1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%<*class>
+%<*!letter>
+% \fi
+%
+% \subsection{Definitionen für Titel von Gleitumgebungen}
+%
+% \begin{macro}{\caption}
+% \changes{v2.2c}{1995/05/25}{Fließtitel auf CJK umgestellt}^^A
+% Es ist möglich, die Fließumgebungen mit einem Titel und einer
+% Beschreibung zu versehen. Diese wird vom ggf. etwas abgesetzt.
+% \begin{Length}{abovecaptionskip}
+% \begin{Length}{belowcaptionskip}
+% Um wieviel ist in zwei Längenregistern gespeichert:
+% \begin{macrocode}
+\newlength{\abovecaptionskip}
+\newlength{\belowcaptionskip}
+\setlength{\abovecaptionskip}{10\p@}
+\setlength{\belowcaptionskip}{0\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \begin{macro}{\captionformat}
+% \changes{v2.3c}{1995/08/06}{neu}^^A
+% Trennung von Label und Text:
+% \begin{macrocode}
+\newcommand*{\captionformat}{:\ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@caption}
+% \changes{v2.8h}{2001/07/19}{neu (intern)}^^A
+% \begin{macro}{\captionabove}
+% \changes{v2.8h}{2001/07/19}{neu}^^A
+% \begin{macro}{\captionbelow}
+% \changes{v2.8h}{2001/07/19}{neu}^^A
+% Damit überhaupt zwischen Unter- und Überschriften unterschieden
+% werden kann, muss zunächst das Originalmakro gesichert werden. Dies
+% geschieht erst zu Beginn des Dokuments, damit Pakete ggf. noch ihre
+% eigenen Definitionen von \cs{caption} vornehmen können. Das
+% \textsf{hyperref}-Paket ist so ein Kandidat.
+% \begin{macrocode}
+\newcommand{\scr@caption}{}
+\AtBeginDocument{\let\scr@caption\caption}
+% \end{macrocode}
+% \end{macro}
+% Jetzt ist es möglich durch einfaches Umlegen des Schalters für die
+% korrekte Darstellung zu sorgen:
+% \begin{macrocode}
+\newcommand{\captionabove}{\@captionabovetrue\scr@caption}
+\newcommand{\captionbelow}{\@captionabovefalse\scr@caption}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu}^^A
+% Um einiges komplizierter als die Beschreibung unter oder über die
+% Tabelle oder Abbildung zu setzen, ist der Versuch, sie daneben zu
+% setzen. Dies funktioniert frundsätzlich auch nicht mit
+% \texttt{longtable}-Tabellen.
+%
+% \begin{macro}{\scap@caption}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% Die Beschreibung, die der Umgebung als Parameter übergeben wird,
+% muss zwischengespeichert werden. Hier wird lediglich das Makro
+% dafür reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@caption}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@width}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% Die Breite, die Tabelle bzw. Abbildung einschließlich Beschreibung
+% und insgesamt haben dürften. Voreingestellt ist die gesamte
+% verfügbare Breite.
+% \begin{macrocode}
+\newcommand*{\scap@width}{\linewidth}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@move}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% Der Wert, um den die Tabelle bzw. Abbildung einschließlich
+% Beschreibung nach rechts bzw. außen verschoben werden.
+% Voreingestellt ist keine Verschiebung.
+% \begin{macrocode}
+\newcommand*{\scap@move}{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@currentlabel}
+% \changes{v2.8q}{2001/11/24}{neu (intern)}^^A
+% Da \cs{caption} innerhalb einer Umgebung (\cs{parbox} und
+% \texttt{captionbeside}) aufgerufen wird, würde ein \cs{label}, das
+% zwar innerhalb der Gleitumgebung aber nach der
+% \texttt{captionbeside}-Umgebung eingefügt wird, nicht die
+% Gleitumgebung, sondern die umgebende Referenzebene
+% referenzieren. Damit das nicht geschieht, wird in der
+% \texttt{captionbeside}-Umgebung in der \cs{parbox} die aktuelle
+% Referenz \cs{@currentlabel} in dem globalen Makro
+% \cs{scap@currentlabel} zwischengespeichert und am Ende der
+% \texttt{captionbeside}-Umgebung mit Hilfe von \cs{aftergroup} nach
+% dem Ende der Umgebung wiederhergestellt. Da die
+% \texttt{captionbeside}-Umgebung ohnehin nicht geschachtelt werden
+% kann, funktioniert das problemlos. Für diese Aktion wird hier ein
+% globales Makro reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@currentlabel}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifscap@alt}
+% \changes{v2.8q}{2001/11/22}{neuer Schalter}^^A
+% \begin{macro}{\scap@alttrue}
+% \begin{macro}{\scap@altfalse}
+% Der Schalter, der angibt, ob die Verschiebung \cs{scap@move} im
+% doppelseitigen Modus aus linken Seiten vom rechten Rand aus nach
+% links erfolgen soll.
+% \begin{macrocode}
+\newif\ifscap@alt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Die Umgebung soll einmal folgende Parameter besitzen:
+% \begin{description}
+% \item[(optional)] Verzeichniseintrag
+% \item[(obligatorisch)] Beschreibung
+% \item[(optional)] lokaler Wert für \cs{scap@pos}
+% \item[(optional)] lokaler Wert für \cs{scap@width}
+% \item[(optional)] lokaler Wert für \cs{scap@move}
+% \item[(*)] lokaler Wert für \cs{ifscap@alt} (Stern gesetzt
+% entspricht \cs{scap@alttrue}
+% \end{description}
+% Wie man sieht, sollte man bei Angabe aller optionalen Parameter auch
+% bewusst den Stern setzen oder darauf verzichten.
+%
+% Damit alle Parameter ausgewertet werden können, werden einige
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+\newcommand*{\@captionbeside}{}
+\long\def\@captionbeside[#1]#2{%
+ \kernel@ifnextchar [%]
+ {\@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@captionbeside}{}
+\long\def\@@captionbeside[#1]#2[#3]{%
+ \def\scap@pos{#3}%
+ \kernel@ifnextchar [%]
+ {\@@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@@captionbeside}{}
+\long\def\@@@captionbeside[#1]#2[#3]{%
+ \def\scap@width{#3}%
+ \kernel@ifnextchar [%]
+ {\@@@@captionbeside[{#1}]{#2}}
+ {\setlength{\@tempdima}{#3}%
+ \addtolength{\@tempdima}{-\linewidth}%
+ \setlength{\@tempdima}{-.5\@tempdima}%
+ \edef\scap@move{\the\@tempdima}%
+ \c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@@@captionbeside}{}
+\long\def\@@@@captionbeside[#1]#2[#3]{%
+ \def\scap@move{#3}%
+ \kernel@ifstar
+ {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}}
+ {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@b@x}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% Es wird noch eines der kostbaren Boxregister benötigt.
+% \begin{macrocode}
+\newbox\c@pti@nb@sid@b@x
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v2.98c}{2008/03/11}{vertikale Ausrichtung korrigiert}^^A
+% \changes{v3.07a}{2010/11/04}{vertikale Ausrichtung im t- und b-Fall erneut
+% korrigiert}^^A
+% Hier wird nun die Umgebung eigentlich geöffnet, während zuvor nur
+% die Parameter ausgewertet wurden.
+% \begin{macrocode}
+\newcommand{\c@pti@nb@sid@}{}
+\long\def\c@pti@nb@sid@[#1]#2{%
+ \def\scap@caption{%
+ \if c\scap@valign
+ \setlength{\abovecaptionskip}{\z@}%
+ \else \if t\scap@valign
+ \setlength{\abovecaptionskip}{-\ht\strutbox}%
+ \else \if b\scap@valign
+ \setlength{\abovecaptionskip}{\z@}%
+ \fi
+ \fi
+ \fi
+ \setlength{\belowcaptionskip}{-\dp\strutbox}%
+ \captionbelow[{#1}]{#2}%
+ }%
+ \begin{lrbox}{\c@pti@nb@sid@b@x}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Jetzt endlich können wir uns auf die Umgebung stürzen. Die
+% Umgebung zu starten ist einfach. Es wird ein Doppelargumentmakro
+% ausgeführt.
+% \begin{macrocode}
+\newenvironment*{captionbeside}{%
+ \@dblarg\@captionbeside%
+}{%
+% \end{macrocode}
+% Komplizierter ist die Beendigung der Umgebung. Hier fällt der
+% gesamte Satzaufwand an.
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \begin{macrocode}
+ \end{lrbox}%
+ \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}%
+ \setlength{\@tempdimb}{\scap@width}%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+ \addtolength{\@tempdimb}{-\columnsep}%
+ \ifdim \@tempdimb<2em
+ \ClassWarning{\KOMAClassName}{%
+ caption beside will be very, very small.\MessageBreak
+ In most cases this will result in overfull and\MessageBreak
+ underfull \string\hbox\space messages%
+ }%
+ \fi
+ \onelinecaptionsfalse
+ \setcapwidth[r]{\@tempdimb}%
+ \let\@tempa\scap@pos
+ \setlength{\@tempdimc}{\scap@move}%
+ \if i\scap@pos\def\@tempa{l}\fi
+ \if o\scap@pos\def\@tempa{r}\fi
+ \if@twoside
+ \ifthispageodd{}{%
+ \if o\scap@pos\def\@tempa{l}\fi
+ \if i\scap@pos\def\@tempa{r}\fi
+ \ifscap@alt
+ \addtolength{\@tempdimc}{\scap@width}%
+ \addtolength{\@tempdimc}{-\linewidth}%
+ \setlength{\@tempdimc}{-\@tempdimc}%
+ \fi
+ }%
+ \fi
+ \hspace*{\@tempdimc}%
+% \end{macrocode}
+% \changes{v2.9p}{2003/12/10}{\cs{@temdima} replaced by
+% \cs{wd}\cs{c@pti@nb@sid@b@x}, because \cs{@temdima} would be changed}
+% \begin{macrocode}
+ \if l\@tempa
+ \rlap{%
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ \nobreak\hskip\columnsep
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ }%
+ \else
+ \rlap{%
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ \nobreak\hskip\columnsep
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ }%
+ \fi
+ \par
+ \aftergroup\let\aftergroup\@currentlabel
+ \aftergroup\scap@currentlabel
+}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \begin{macro}{\capfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% Die Schriftart der Titel kann eingestellt werden. Dazu dient dieses
+% Makro, das als internes Makro zu verstehen ist,
+% \begin{macro}{\caplabelfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% Davon unabhängig kann auch die Schriftart der Titel-Titel
+% ("`Abbildung X:"') eingestellt werden. Auch dieses Makro ist als
+% internes Makro zu verstehen.
+% \begin{macrocode}
+\newcommand*\capfont{\normalfont\normalcolor}
+\newcommand*\caplabelfont{\normalfont\normalcolor}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@fnt@caption}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{caption}}
+% \begin{macro}{\scr@fnt@captionlabel}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{captionlabel}}
+% Die eigentliche Änderung der Schriftart erfolgt über das Element
+% \texttt{caption} bzw. \texttt{captionlabel}.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@caption}{\capfont}
+\newcommand*{\scr@fnt@captionlabel}{\caplabelfont}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@makecaption}
+% \changes{v2.3a}{1995/07/08}{\cs{setbox}\cs{tempboxa}\cs{hbox}
+% durch \cs{sbox}\cs{@tempboxa} ersetzt}
+% \changes{v2.3a}{1995/07/08}{Minipage-Flag zurückgesetzt (ist das
+% ok?)}
+% \changes{v2.3f}{1995/12/09}{Fontumschaltung einheitlich für lange
+% und kurze Unter-/Überschriften}^^A
+% \changes{v2.5g}{1999/10/09}{neben den komplett hängenden
+% Titeln sind nun auch nicht hängende oder teilweise hängende
+% möglich}^^A
+% Bis Version 2.5f sah die Definition wie folgt aus.
+% \begin{verbatim}
+% \long\def\@makecaption#1#2{%
+% \vskip\abovecaptionskip
+% \sbox\@tempboxa{{\caplabelfont #1\captionformat}{\capfont #2}}%
+% \ifdim \wd\@tempboxa >\hsize
+% \@hangfrom{{\caplabelfont #1\captionformat}}{\capfont #2\par}
+% \else
+% \global \@minipagefalse
+% \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+% \fi
+% \vskip\belowcaptionskip}
+% \end{verbatim}
+% \begin{macro}{\ifdofullc@p}
+% Nun jedoch wird das ganze etwas komplizierter. Als erstes wird ein
+% Schalter benötigt, der angibt, ob auf die volle Länge des "`Labels"'
+% eingezogen werden soll, oder nicht:
+% \begin{macrocode}
+\newif\ifdofullc@p
+% \end{macrocode}
+% wobei die Standardeinstellung der volle Einzug ist, um zum bisherigen
+% Verhalten kompatibel zu bleiben.
+% \begin{macrocode}
+\dofullc@ptrue
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\if@capbreak}
+% \changes{v2.8j}{2001/07/30}{neu}^^A
+% Außerdem gibt es einen Schalter, der angibt, ob nach dem Label ein
+% Umbruch erfolgen soll. Dies ist normalerweise nicht der Fall.
+% \begin{macrocode}
+\newif\if@capbreak\@capbreakfalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapindent}
+% \changes{v2.8j}{2001/07/30}{\cs{if@capbreak} wird verwendet}^^A
+% \changes{v2.8l}{2001/08/17}{\cs{edef}\cs{cap@indent} statt
+% \cs{def}\cs{cap@indent}}^^A
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \textsf{caption2} umdefiniert}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Dann wird weiter ein Befehl benötigt, mit dem der Benutzer die
+% Weite des Einzugs selbst einstellen kann. Da intern für die Weite
+% ein Makro verwendet werden soll, findet hier sicherheitshalber eine
+% Zuweisung an eine Dimension statt. So sollten Fehlermeldungen hier
+% und nicht erst bei Verwendung auftauchen. Natürlich muss hier auch
+% der automatische Einzug abgeschaltet werden. In der Sternform wird
+% außerdem dafür gesorgt, dass zwischen "`Label"' und Beschreibung
+% ein Umbruch erfolgt. In der normalen Version wird stattdessen für
+% Kompatibilität zu früheren Versionen gesorgt.
+% \begin{macro}{\@setcapindent}
+% \begin{macro}{\@@setcaptindent}
+% Für die Implementierung der Sternform werden zwei interne Makros
+% benötigt.
+% \begin{macrocode}
+\newcommand*{\setcapindent}{\kernel@ifstar{\@@setcapindent}{\@setcapindent}}
+\newcommand*{\@setcapindent}[1]{%
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima>\hsize
+ \addtolength{\@tempdima}{-\hsize}\@capbreaktrue
+ \else
+ \@capbreakfalse
+ \fi
+ \edef\cap@indent{\the\@tempdima}%
+ \dofullc@pfalse
+}
+\newcommand*{\@@setcapindent}[1]{%
+ \setlength{\@tempdima}{#1}%
+ \edef\cap@indent{\the\@tempdima}%
+ \dofullc@pfalse\@capbreaktrue
+}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapindent}{%
+ \ClassWarning{\KOMAClassName}{%
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use `\string\captionstyle'
+ and\MessageBreak
+ set length '\string\captionindent' instead of
+ using\MessageBreak
+ `\string\setcapindent'%
+ }%
+ \captionstyle{indent}%
+ \kernel@ifstar{\setlength{\captionindent}}{\setlength{\captionindent}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcaphanging}
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \textsf{caption2} umdefiniert}
+% Andererseits soll es auch möglich sein, nachträglich wieder den
+% automatischen Einzug einzuschalten. Dafür gibt es ein weiteres
+% Makro.
+% \begin{macrocode}
+\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcaphanging}{%
+ \ClassWarning{\KOMAClassName}{%
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\captionstyle'\MessageBreak
+ instead of `\string\setcaphang'%
+ }
+ \captionstyle{hang}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Nun aber zur neuen Definition der Titel. Zunächst geht alles wie
+% gehabt.
+% \changes{v2.5g}{1999/10/09}{\cs{@makecaption} per \cs{newcommand}
+% definiert statt mit \cs{long}\cs{def}}
+% \changes{v2.8h}{2001/07/19}{Unterscheidung zwischen Über- und
+% Unterschriften}^^A
+% \changes{v2.8j}{2001/07/30}{\cs{@makecaption} verwendet
+% \cs{@@makecaption}}
+% \changes{v2.8q}{2001/11/17}{die Sonderbehandlung für einzeilige
+% \emph{caption}s ist abschaltbar}
+% \changes{v2.8q}{2001/11/17}{Titel können in ihrer Breite
+% beschränkt werden}^^A
+% \begin{macrocode}
+\newcommand{\@makecaption}[2]{%
+ \if@captionabove
+ \vskip\belowcaptionskip
+ \else
+ \vskip\abovecaptionskip
+ \fi
+ \@@makecaption\@firstofone{#1}{#2}%
+ \if@captionabove
+ \vskip\abovecaptionskip
+ \else
+ \vskip\belowcaptionskip
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\@@makecaption}
+% Tatsächlich gesetzt wird der Titel mit diesem Makro. Dabei muss der
+% erste Parameter entweder \cs{@gobble} oder \cs{@firstofone} sein.
+%
+% \begin{macro}{\cap@width}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% \begin{macro}{\cap@left}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% \begin{macro}{\cap@right}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% Die Breite der mehrzeiligen bzw. die maximale Breite der einzeiligen
+% \emph{caption}s sowie das Makro das links und rechts von der Box mit
+% der mehrzeiligen \emph{caption} aufgerufen wird. In der
+% Voreinstellung wird für Zentrierung gesorgt.
+% \begin{macrocode}
+\newcommand*{\cap@width}{\hsize}
+\newcommand*{\cap@left}{\hfill}
+\newcommand*{\cap@right}{\hfill}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcapwidth}
+% \changes{v2.8q}{2001/11/17}{neu}^^A
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \changes{v2.97}{2007/02/27}{Mindestbreite für captions ist 0\,pt}^^A
+% Hier wird \cs{cap@width} gesetzt. Dabei werden optional auch
+% \cs{cap@left} und \cs{cap@right} angepasst.
+% \begin{macrocode}
+\newcommand*{\setcapwidth}[2][]{%
+ \begingroup%
+ \setlength{\@tempdima}{#2}%
+ \ifdim\@tempdima <\z@
+ \@tempdima\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \fi
+ \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}%
+ \@tempa
+ \begingroup
+ \edef\@tempa{#1}%
+ \def\@tempb{c}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}%
+ \else
+ \def\@tempb{l}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}%
+ \else
+ \def\@tempb{r}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}%
+ \else
+ \def\@tempb{i}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ }%
+ \fi
+ }%
+ \else
+ \def\@tempb{o}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ }%
+ \fi
+ }%
+ \else
+ \ifx \@tempa\@empty\else
+ \ClassError{\KOMAClassName}{%
+ unknown optional position argument%
+ }{%
+ You've used `#1' as position argument at
+ \string\setcaptionwidth,\MessageBreak
+ but only ONE of `c', `l', `r', `i`, `o` ist
+ allowed.\MessageBreak
+ Argument will be ignored, if you'll continue.%
+ }%
+ \fi
+ \endgroup
+ \fi\fi\fi\fi\fi
+}
+% \end{macrocode}
+% Falls \textsf{caption2} geladen wird, ändert sich die Funktion. Das
+% optionale Argument wird dann ignorriert.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapwidth}[2][]{%
+ \ClassWarning{\KOMAClassName}{%
+ Ignorring optional argument of `\string\setcapwidth'!\MessageBreak
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\setcaptionwidth'\MessageBreak
+ instead of `\string\setcapwidth'%
+ }%
+ \setcaptionwidth{#2}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}^^A \setcapwidth
+% \begin{macro}{\setcapdynwidth}
+% \changes{v3.20}{2016/03/31}{neu}
+% Ulrike findet es blöd, dass \cs{setcapwidth} wie \cs{setlength} arbeitet und
+% ist der Meinung, dass das Argument erst zur Laufzeit ausgewertet werden
+% sollte. Also ein neuer Befehl genau dafür. Es sei allerdings darauf
+% hingewiesen, dass Fehler im Argument dann ggf. erst bei jeder
+% \cs{caption}-Anweisung und nicht bereits hier ausgegeben werden!
+% \begin{macrocode}
+\newcommand*{\setcapdynwidth}[2][]{%
+ \def\cap@width{#2}%
+ \begingroup
+ \edef\@tempa{#1}%
+ \def\@tempb{c}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \ifdim \cap@width<\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \let\cap@width\z@
+ \fi
+ \let\cap@left=\hfill\let\cap@right=\hfill}%
+ \else
+ \def\@tempb{l}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \ifdim \cap@width<\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \let\cap@width\z@
+ \fi
+ \let\cap@left=\relax\let\cap@right\hfill}%
+ \else
+ \def\@tempb{r}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \ifdim \cap@width<\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \let\cap@width\z@
+ \fi
+ \let\cap@left=\hfill\let\cap@right=\relax}%
+ \else
+ \def\@tempb{i}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \ifdim \cap@width<\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \let\cap@width\z@
+ \fi
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ }%
+ \fi
+ }%
+ \else
+ \def\@tempb{o}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \ifdim \cap@width<\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \let\cap@width\z@
+ \fi
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ }%
+ \fi
+ }%
+ \else
+ \ifx \@tempa\@empty\else
+ \ClassError{\KOMAClassName}{%
+ unknown optional position argument%
+ }{%
+ You've used `#1' as position argument at
+ \string\setcaptionwidth,\MessageBreak
+ but only ONE of `c', `l', `r', `i`, `o` ist
+ allowed.\MessageBreak
+ Argument will be ignored, if you'll continue.%
+ }%
+ \fi
+ \endgroup
+ \fi\fi\fi\fi\fi
+}
+% \end{macrocode}
+% \end{macro}^^A \setcapdynwidth
+% \begin{macro}{\cap@margin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% Dieses Makro beinhaltet nicht den Wert der Ränder, sondern das
+% Makro, mit dem innerhalb von \cs{@@makecaption} die Makros
+% \cs{cap@left} und \cs{cap@right} neu definiert werden. Dies
+% geschieht nur, wenn die Ränder mit \cs{setcapmargin} gesetzt
+% werden. Vordefiniert ist also keinerlei Aktion.
+% \begin{macrocode}
+\newcommand*{\cap@margin}{}
+\let\cap@margin=\relax%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \begin{macro}{\@@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}^^A
+% Statt die Breite der \emph{caption} zu setzen, können auch die
+% Ränder gesetzt werden. In der Sternvariante werden im zweiseitigen
+% Modus die Ränder auf linken Seiten vertauscht.
+% \begin{macrocode}
+\newcommand*{\setcapmargin}{\kernel@ifstar{\@setcapmargin}{\@@setcapmargin}}
+\newcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse
+ \begingroup
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \noexpand\if@twoside
+ \noexpand\ifthispageodd{%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ }{%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}%
+ }%
+ \noexpand\else
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ \noexpand\fi
+ }%
+ \@tempa
+ }%
+}
+\newcommand*{\@@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse
+ \begingroup
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ }%
+ \@tempa
+ }%
+}
+% \end{macrocode}
+% Wenn \textsf{caption2} geladen ist, ändert sich die Bedeutung.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \setlength{\@tempdimb}{#2}%
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima\@tempdimb\else
+ \ClassWarning{\KOMAClassName}{%
+ Can set only centered caption!\MessageBreak
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\setcaptionmargin'\MessageBreak
+ instead of `\string\setcapmargin'%
+ }%
+ \fi
+ \addtolength{\@tempdimb}{\@tempdimb}%
+ \setcaptionmargin{.5\@tempdimb}}%
+ \let\@@setcapmargin=\@setcapmargin
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Jetzt aber zum Eigentlichen. Die Breite der \emph{caption} muss nur
+% bestimmte werden, wenn Option \texttt{onelinecaption} verwendet
+% wird. Das bedeutet auch, dass bei \texttt{noonelinecaption} das
+% Problem mit dem Hochzählen der Fußnoten nicht auftritt.
+% \changes{v2.8q}{2002/05/17}{Problem mit doppelten Fußnoten behoben}%
+% \changes{v2.95}{2004/01/30}{Korrekturen für vertikalen Abstand und
+% \textsl{float}-Paket}%
+% \changes{v2.95a}{2006/07/13}{diverse Korrekturen für den vertikalen
+% Abstand u.\,a. bei Verwendung des \textsl{color}-Pakets}%
+% \changes{v2.97c}{2007/06/06}{\cs{unskip}\cs{strut} eingefügt, um die
+% vertikale Ausrichtung im \emph{above}-Fall in eingen Fällen zu
+% verbessern}%
+% \changes{v3.02a}{2009/01/24}{diverse Gruppen- bzw. Argumentklammern ergänzt}%
+% \changes{v3.11c}{2013/06/12}{\cs{capfont} durch
+% \cs{usekomafont{caption}}ersetzt}%
+% \changes{v3.11c}{2013/06/12}{\cs{caplabelfont} durch
+% \cs{usekomafont{captionlabel}}ersetzt}%
+% \changes{v3.12}{2013/06/12}{ein \cs{usekomafont} durch
+% \cs{usesizeofkomafont} ersetzt}
+% \changes{v3.21}{2016/05/31}{Neuimplementierung}
+% \begin{macrocode}
+\newcommand{\@@makecaption}[3]{%
+% \end{macrocode}
+% Als erstes werden die Makros für den linken und rechten Rand generiert.
+% \begin{macrocode}
+ \cap@margin
+% \end{macrocode}
+% Danach wird der Test vorgenommen, ob der Text einzeilig oder
+% mehrzeilig zu setzen ist und entsprechend gehandelt:
+% \changes{v3.22}{2016/09/01}{Umdefinierung von \cs{stepcounter} und
+% \cs{refstepcounter} auf lokale Erhöhung des Zählers geändert, um Probleme
+% mit \textsf{isodate} zu umgehen}^^A
+% \begin{macrocode}
+ \begingroup
+ \ifonelinecaptions
+ \def\stepcounter##1{\advance\value{##1}\@ne}%
+ \let\refstepcounter\stepcounter
+ \let\label\@gobble
+ \let\@footnotetext=\@gobble
+ \let\hypertarget\@gobbletwo
+% \end{macrocode}
+% \changes{v3.22}{2016/09/01}{Sonderbehandlung für \string\\ u.\,ä. im Text}
+% Falls im Text ein \texttt{\string\\} oder \cs{newline} enthalten ist,
+% wird ein Infotext ausgegeben und dafür gesorgt, dass mehrzeilig gearbeitet
+% wird.
+% \begin{macrocode}
+ \edef\@xnewline{%
+ \unexpanded{\ClassInfo{\KOMAClassName}{%
+ Workaround for not recommended usage of \string\\ or\MessageBreak
+ \string\newline in caption text
+ }%
+ \hspace*{\linewidth}\hspace{1sp}%
+ }%
+ \unexpanded\expandafter{\@xnewline}%
+ }%
+ \edef\@xcentercr{%
+ \unexpanded{\ClassInfo{\KOMAClassName}{%
+ Workaround for not recommended usage of \string\\ or\MessageBreak
+ \string\newline in caption text
+ }%
+ \hspace*{\linewidth}\hspace{1sp}%
+ }%
+ \unexpanded\expandafter{\@xcentercr}%
+ }%
+ \settowidth{\@tempdima}{\scr@@makesinglelinecaption{#1}{#2}{#3}}%
+ \ifdim\@tempdima>\linewidth
+ \aftergroup\scr@makemultilinecaption
+ \else
+ \aftergroup\scr@makesinglelinecaption
+ \fi
+ \else
+ \aftergroup\scr@makemultilinecaption
+ \fi
+ \endgroup
+ {#1}{#2}{#3}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@makesinglelinecaption}
+% \changes{v3.21}{2016/05/31}{neu (intern)}
+% \begin{macro}{\scr@@makesinglelinecaption}
+% \changes{v3.21}{2016/05/31}{neu (intern)}
+% Diesen Anweisungen übernehmen die komplette Ausgabe von einzeiligen Texten.
+% Das erste Argumen hat \cs{@gobble} oder \cs{@firstofone} zu sein und
+% bestimmt darüber ob das Label ausgegeben wird oder nicht. Der Text wird
+% dagegen immer ausgegeben! Das vierte Argument im internen Makro ist entweder
+% \cs{par} oder leer.
+% \begin{macrocode}
+\newcommand{\scr@makesinglelinecaption}[3]{%
+ {%
+ \usefontofkomafont{caption}{%
+ \hb@xt@\hsize{%
+ \cap@left
+ \scr@@makesinglelinecaption{#1}{#2}{#3}%
+ \cap@right
+ }\par\kern\dp\strutbox%
+ }%
+ }\kern-\dp\strutbox
+}
+\newcommand{\scr@@makesinglelinecaption}[3]{%
+ \usekomafont{caption}{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat}}}%
+ \ignorespaces #3\unskip}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@makesinglelinecaption
+% \end{macro}^^A \scr@makesinglelinecaption
+% \begin{macro}{\scr@makemultilinecaption}
+% \changes{v3.21}{2016/05/31}{neu (intern)}^^A
+% \begin{macrocode}
+\newcommand{\scr@makemultilinecaption}[3]{%
+ {%
+ \usefontofkomafont{caption}{%
+ \hb@xt@\hsize{%
+ \cap@left
+ \vbox{\hsize\cap@width\linewidth\hsize
+% \end{macrocode}
+% \changes{v3.25}{2017/11/15}{caption Ausrichtung hinzugefügt}^^A
+% Bevor wir irgend etwas anderes machen, führen wir an der Stelle die
+% Ausrichtung für die gesamte \emph{caption} einschließlich Label aus. Dabei
+% hat eine vorhandene spezielle Ausrichtung für den Gleitungebungstyp Vorrang
+% vor der allgemeinen Ausrichtung für alle Gleitumgebungen:
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{@captype}{%
+ \ClassWarning{\KOMAClassName}{%
+ `\string\caption' outside float.\MessageBreak
+ Seems you are using `\string\caption' outside a
+ float.\MessageBreak
+ Maybe you are using a package that uses
+ `\string\@makecaption'\MessageBreak
+ without setting `\string\@captype' before.\MessageBreak
+ Because I cannot detect the caption type, I'm using\MessageBreak
+ the empty one.%
+ }%
+ \let\@captype\@empty
+ }{}%
+ \scr@ifundefinedorrelax{ragged\@captype caption}{\raggedcaption}{%
+ \@nameuse{ragged\@captype caption}%
+ }%
+% \end{macrocode}
+% Wenn der Schalter \cs{ifdofullc@p} gesetzt ist, wird der Text bezüglich des
+% Labels vollständig hängend gesetzt:
+% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
+% \cs{unskip}\cs{strut}}^^A
+% \begin{macrocode}
+ \ifdofullc@p
+ \@hangfrom{%
+ \strut
+ \scr@smashdp{%
+ #1{%
+ \usekomafont{caption}{%
+ \usekomafont{captionlabel}{#2\captionformat}%
+ }%
+ }%
+ }%
+ }%
+ {\usekomafont{caption}{#3\scr@endstrut\par}}%
+% \end{macrocode}
+% Anderenfalls soll entweder nach dem Label direkt ein Umbruch erfolgen und
+% ein Einzug nur der ersten Zeile zu setzen:
+% \begin{macrocode}
+ \else
+ \ifdim\cap@indent<\z@
+ \strut
+ #1{%
+ \usekomafont{caption}{%
+ \usekomafont{captionlabel}{#2\captionformat\par}%
+ }%
+ }%
+ \noindent{\usekomafont{caption}{%
+ \hspace*{-\cap@indent}#3\scr@endstrut\par
+ }}%
+% \end{macrocode}
+% Oder es soll nach dem Label ein Umbruch erfolgen und danach alle Zeilen mit
+% dem entsprechenden Einzug gesetzt werden:
+% \begin{macrocode}
+ \else
+ \if@capbreak
+ \strut
+ #1{%
+ \usekomafont{caption}{%
+ \usekomafont{captionlabel}{#2\captionformat\par}%
+ }%
+ }%
+ \noindent\@hangfrom{\hspace*{\cap@indent}}%
+ {\usekomafont{caption}{#3\scr@endstrut\par}}%
+% \end{macrocode}
+% Oder es soll gar kein Umbruch erfolgen aber trotzdem alles mit einem
+% gewissen Einzug gesetzt werden:
+% \begin{macrocode}
+ \else
+ \@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}%
+ {%
+ \hspace{-\cap@indent}%
+ \scr@smashdp{%
+ #1{\usekomafont{captionlabel}{#2\captionformat}}%
+ }%
+ {\usekomafont{caption}{#3\scr@endstrut}\par}%
+ }%
+ \fi
+ \fi
+ \fi
+% \end{macrocode}
+% Eigentlich fehlt hier nur die einfachste, gar nicht hängende Form:
+% \begin{macrocode}
+%<*neverusethis>
+% #1{{\usekomafont{captionlabel}{#2\captionformat}}}%
+% \ignorespaces #3\scr@endstrut\par
+%</neverusethis>
+% \end{macrocode}
+% Die allerdings durch die Form mit Einzug 0 abgedeckt wird.
+% \begin{macrocode}
+ }%
+ \cap@right
+ }\par\kern\dp\strutbox
+ }%
+ }\kern-\dp\strutbox
+}
+% \end{macrocode}
+% \begin{macro}{\setcaptionalignment}
+% \changes{v3.25}{2017/11/15}{neu}^^A
+% Da es etwas lästig und fehleranfällig ist, die ganzen \cs{raggedcaption}
+% und \cs{ragged\dots caption} von Hand zu definieren, gibt es dafür einen
+% Befehl. Das erste, optionale Argument ist dabei die Gleitungebung für die
+% die Definition erfolgen soll. Ist das Argument nicht leer, wird bei
+% definiertem \cs{@captype} dieses als Gleitumgebung angenommen. Ist das
+% Argument leer wird stattdessen die allgemeine Ausrichtung festgelegt. Das
+% zweite Argument ist ein einzelner Buchstaben, der für die Ausrichtung steht.
+% \begin{macrocode}
+\newcommand*\setcaptionalignment{%
+ \kernel@ifnextchar [%]
+ {\@setcaptionalignment}
+ {%
+ \scr@ifundefinedorrelax{@captype}{\@setcaptionalignment}{%
+ \edef\reserved@a{\noexpand\@setcaptionalignment[{\@captype}]}\reserved@a
+ }%
+ }%
+}%
+\newcommand*\@setcaptionalignment[2][]{%
+% \end{macrocode}
+% Wenn das optionale Argument nicht leer ist, sollte es eine bereits
+% definierte Gleitumgebung sein. Anderenfalls wird vorsichtshalber zumindest
+% eine Warnung ausgegeben. Die Ausrichtung wird aber trotzde, definiert.
+% \begin{macrocode}
+ \IfArgIsEmpty{#1}{}{%
+ \expandafter\ifnum
+ \scr@ifundefinedorrelax{#1}{0}{\scr@ifundefinedorrelax{end#1}{0}{1}}=0
+ \ClassWarning{\KOMAClassName}{%
+ float type `#1' defined not yet,\MessageBreak
+ but setting ragged mode for captions of\MessageBreak
+ float type `#1'%
+ }%
+ \fi
+ }%
+% \end{macrocode}
+% Danach gehen wir die Buchstaben durch. Erlaubt sind:
+% \begin{description}
+% \item[\texttt{j}] -- Blocksatz (\cs{ragged\dots caption} wird \cs{relax}.
+% \item[\texttt{l}] -- Blocksatz (\cs{ragged\dots caption} wird
+% \cs{raggedright}.
+% \item[\texttt{r}] -- Blocksatz (\cs{ragged\dots caption} wird
+% \cs{raggedleft}.
+% \item[\texttt{c}] -- Blocksatz (\cs{ragged\dots caption} wird
+% \cs{centering}.
+% \end{description}
+% Ist das Paket \textsf{ragged2e} geladen, werden stattdessen die Befehle
+% \cs{LaTeXraggedright}, \cs{LaTeXraggedleft} und \cs{LaTeXcentering}
+% verwendet. Außerdem führen dann die entsprechenden Großbuchstaben zu
+% \cs{justifying}, \cs{RaggedRight}, \cs{RaggedLeft} und
+% \cs{Centering}. Anderenfalls werden die Großbuchstaben wie die
+% Kleinbuchstaben behandelt und geben zusätzlich eine Warnung aus.
+% \begin{macrocode}
+ \def\reserved@a{#2}%
+ \ifstr{\reserved@a}{j}{%
+ \expandafter\let\csname ragged#1caption\endcsname\@empty
+ }{%
+ \ifstr{\reserved@a}{l}{%
+ \scr@ifundefinedorrelax{LaTeXraggedright}{%
+ \expandafter\let\csname ragged#1caption\endcsname\raggedright
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedright
+ }%
+ }{%
+ \ifstr{\reserved@a}{r}{%
+ \scr@ifundefinedorrelax{LaTeXraggedleft}{%
+ \expandafter\let\csname ragged#1caption\endcsname\raggedleft
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\LaTeXraggedleft
+ }%
+ }{%
+ \ifstr{\reserved@a}{c}{%
+ \scr@ifundefinedorrelax{LaTeXcentering}{%
+ \expandafter\let\csname ragged#1caption\endcsname\centering
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\LaTeXcentering
+ }%
+ }{%
+ \ifstr{\reserved@a}{J}{%
+ \scr@ifundefinedorrelax{justifying}{%
+ \scr@caption@raggede@warning{J}{\justifying}%
+ \expandafter\let\csname ragged#1caption\endcsname\@empty
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\justifying
+ }%
+ }{%
+ \ifstr{\reserved@a}{L}{%
+ \scr@ifundefinedorrelax{RaggedRight}{%
+ \scr@caption@raggede@warning{L}{\RaggedRight}%
+ \expandafter\let\csname ragged#1caption\endcsname\raggedright
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\RaggedRight
+ }%
+ }{%
+ \ifstr{\reserved@a}{R}{%
+ \scr@ifundefinedorrelax{RaggedLeft}{%
+ \scr@caption@raggede@warning{R}{\RaggedLeft}%
+ \expandafter\let\csname ragged#1caption\endcsname\raggedleft
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\RaggedLeft
+ }%
+ }{%
+ \ifstr{\reserved@a}{C}{%
+ \scr@ifundefinedorrelax{Centering}{%
+ \scr@caption@raggede@warning{C}{\Centering}%
+ \expandafter\let\csname ragged#1caption\endcsname\centering
+ }{%
+ \expandafter\let\csname ragged#1caption\endcsname\Centering
+ }%
+ }{%
+ \ifstr{\reserved@a}{}{%
+ \expandafter\let\csname ragged#1caption\endcsname\relax
+ }{%
+ \ClassError{\KOMAClassName}{unknown alignment char `#2'}{%
+ \string\setcaptionalignment\space supports
+ only:\MessageBreak
+ \space\space c - centered captions,\MessageBreak
+ \space\space j - justified captions,\MessageBreak
+ \space\space l - left align captions,\MessageBreak
+ \space\space r - right aligned captions,\MessageBreak
+ \space\space C - centered captions with
+ `ragged2e',\MessageBreak
+ \space\space J - justified captions with
+ `ragged2e',\MessageBreak
+ \space\space L - left align captions with
+ `ragged2e',\MessageBreak
+ \space\space R - right aligned captions with
+ `ragged2e',\MessageBreak
+ or an empty argument to remove special
+ alignment.\MessageBreak
+ If you'd continue, I'd not change the alignment.%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@caption@raggede@warning}
+% \changes{v3.25}{2017/11/15}{neu (intern)}^^A
+% Das ist die oben erwähnte Warnung.
+% \begin{macrocode}
+\newcommand*{\scr@caption@raggede@warning}[2]{%
+ \begingroup
+ \lowercase{\def\reserved@a{#1}}%
+ \ClassWarning{\KOMAClassName}{%
+ `\string#2' undefined!\MessageBreak
+ To avoid replacing caption alignment `#1' by `\reserved@a'\MessageBreak
+ you should load package `ragged2e' before using\MessageBreak
+ `\string\setcaptionalignment'%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\raggedcaption}
+% \changes{v3.25}{2017/11/15}{neu}^^A
+% Und natürlich wird eine Standardausrichtung benötigt. Ich bevorzuge hier die
+% leere Ausrichtung, weil \LaTeX{} \cs{relax} nicht als definiert erkennt.
+% \begin{macrocode}
+\newcommand*\raggedcaption{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}^^A \scr@caption@raggede@warning
+% \end{macro}^^A \setcaptionalignment
+% \end{macro}^^A \scr@makemultilinecaption
+% \end{macro}^^A \@@makecaption
+% \end{macro}^^A \@makecaption
+% \end{macro}^^A \caption
+%
+% \begin{macro}{\LT@makecaption}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}^^A
+% \changes{v2.8k}{2001/08/15}{keine Umdefinierung, wenn das
+% \textsf{caption2}-Paket erkannt oder die Option
+% \texttt{origlongtable} gesetzt wurde}
+% \changes{v2.8q}{2001/11/18}{Breite und Anordnung wird über
+% \KOMAScript-Makros bestimmt}^^A
+% \changes{v2.8q}{2001/11/18}{Verwendung von \cs{AfterPackage}}
+% \changes{v2.9s}{2004/08/24}{vertikale Abstände durch verschieben von
+% \cs{vskip} korrigiert}
+% \begin{macro}{\LT@array}
+% \changes{v2.8q}{2001/11/18}{neu (intern)}^^A
+% \begin{macro}{\LT@caption}
+% \changes{v2.8q}{2001/11/18}{neu (intern)}^^A
+% \begin{macro}{\scr@caption@before@longtable@warning}
+% \changes{v2.98c}{2008/03/03}{neu (intern)}^^A
+% Ab Version 2.8j wird auf vielfachen Wunsch das
+% \textsf{longtable}-Paket berücksichtigt. Da Pakete aber nach
+% Klassen geladen werden, kann dies erst nach dem Laden des Pakets
+% aktiviert werden. Die Definition entspricht der obigen. Wird das
+% \textsf{caption2}-Paket nach \textsf{longtable} geladen, so wird
+% automatisch die Definition von \textsf{caption2} verwendet. Wird
+% \textsf{caption2} vor \textsf{longtable} geladen, so liegt
+% voraussichtlich eine Fehlbedienung vor, auf die hingewiesen wird.
+% \begin{macrocode}
+\newcommand*{\scr@caption@before@longtable@warning}[1]{%
+ \ClassWarning{\KOMAClassName}{%
+ you've loaded package `#1' before package\MessageBreak
+ `longtable'!\MessageBreak
+ Because of this package `#1' isn't able to\MessageBreak
+ control `\string\caption' at longtables. \space After loading
+ \MessageBreak
+ package `#1' KOMA-Script also doesn't control\MessageBreak
+ `\string\caption'.\MessageBreak
+ I think, you should load package `caption' after\MessageBreak
+ package `longtable'%
+ }%
+}
+\AfterPackage{longtable}{%
+ \@ifpackageloaded{caption2}{\@komalongtablefalse
+ \scr@caption@before@longtable@warning{caption2}%
+ }{}%
+ \if@komalongtable
+ \renewcommand{\LT@makecaption}[3]{%
+ \noalign{%
+ \if@captionabove
+ \vskip\belowcaptionskip
+ \else
+ \vskip\abovecaptionskip
+ \fi
+ }%
+ \LT@mcol\LT@cols c{%
+ \hbox to\z@{\hss\parbox[t]\linewidth{%
+% \end{macrocode}
+% \changes{v3.25}{2017/11/15}{\cs{@captype} auf \texttt{table} gesetzt}^^A
+% Damit \cs{raggedtablecaption} ggf. verwendet wird, wird hier \cs{@captype}
+% explizit auf \texttt{table} gesetzt.
+% \begin{macrocode}
+ \def\@captype{table}%
+ \@@makecaption{#1}{#2}{#3}%
+ \endgraf
+ \if@captionabove
+ \vskip\abovecaptionskip
+ \else
+ \vskip\belowcaptionskip
+ \fi
+ }%
+ \hss
+ }%
+ }%
+ }%
+ \newcommand*{\scr@LT@array}{}%
+ \let\scr@LT@array=\LT@array
+ \renewcommand*{\LT@array}{%
+ \let\scr@caption=\LT@caption
+ \def\captionabove{\noalign{\global\@captionabovetrue}%
+ \scr@caption}%
+ \def\captionbelow{\noalign{\global\@captionabovefalse}%
+ \scr@caption}%
+ \if@tablecaptionabove
+ \let\LT@caption=\captionabove
+ \else
+ \let\LT@caption=\captionbelow
+ \fi
+ \scr@LT@array
+ }%
+ \ClassInfo{\KOMAClassName}{%
+ longtable captions redefined%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fs@komaabove}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}^^A
+% \begin{macro}{\fs@komabelow}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}^^A
+% \begin{macro}{\floatc@komascript}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}^^A
+% Ab Version 2.8j werden für das \textsf{float}-Paket zwei float-Stile
+% Namens \texttt{komaabove} und \texttt{komabelow} definiert. Da
+% möglicherweise auch andere Pakete darauf zurückgreifen, wird das
+% unabhängig von der Existenz von \textsf{float} getan. Verwendet wird
+% dies innerhalb von \KOMAScript{} jedoch nicht. Es werden außerdem
+% interne Makros von \textsf{float} verwendet!
+% \begin{macrocode}
+\newcommand*{\fs@komaabove}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}%
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iftrue}
+\newcommand*{\fs@komabelow}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}%
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iffalse}
+\newcommand{\floatc@komascript}{\@@makecaption\@firstofone}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Verteilung der Gleitumgebungen}
+%
+% \begin{Counter}{topnumber}
+% \begin{macro}{\topfraction}
+% \begin{Counter}{bottomnumber}
+% \begin{macro}{\bottomfraction}
+% \begin{Counter}{totalnumber}
+% \begin{macro}{\textfraction}
+% \begin{macro}{\floatpagefraction}
+% \begin{Counter}{dbltopnumber}
+% \begin{macro}{\dbltopfraction}
+% \begin{macro}{\dblfloatpagefraction}
+% Für die Fließumgebungen müssen verschiedene Konstanten definiert
+% werden, die Aufteilung zwischen Text und Fließumgebung und Ähnliches
+% regeln.
+% \begin{macrocode}
+\setcounter{topnumber}{2}
+\renewcommand*\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand*\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\renewcommand*\textfraction{.2}
+\renewcommand*\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand*\dbltopfraction{.7}
+\renewcommand*\dblfloatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+%
+%
+% \subsection{Titel ohne Gleitumgebung}
+%
+% \begin{macro}{\captionof}
+% \changes{v3.05}{2009/07/08}{Neue Anweisung}^^A
+% \changes{v3.09}{2011/03/21}{Verwendung des internen \cs{scr@caption}}
+% \changes{v3.09a}{2011/04/13}{Berücksichtigung von
+% \texttt{captions=tableheading} und \texttt{captions=figureheading}}
+% \begin{macro}{\captionaboveof}
+% \changes{v3.09}{2011/03/21}{Neue Anweisung}^^A
+% \begin{macro}{\captionbelowof}
+% \changes{v3.09}{2011/03/21}{Neue Anweisung}^^A
+% Obwohl es inzwischen mehrere Pakete gibt, die diese Anweisung bereit
+% stellen, kommt es doch immer wieder zu Fehlern, weil einige Anwender diese
+% Pakete nicht nutzen. Also habe ich beschlossen, das selbst zu
+% implementieren. Um die Kompatibilität mit \textsf{capt-of} nicht zu stören,
+% wird die Definition vor dme Laden jenes Pakets zurück genommen. Mit dem
+% Paket \textsf{caption} gibt es solche Probleme nicht, da dieses
+% \cs{captionof} ohnehin per \cs{def} definiert. Allerdings berücksichtigt das
+% \cs{captionof} von \textsf{caption} und \textsf{capt-of} eventuell die
+% Einstellungen für darüber oder darunter nicht in gleicher Weise.
+% \begin{macrocode}
+\newcommand*{\captionof}[1]{\def\@captype{#1}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@#1captionabove\endcsname\iftrue
+ \@captionabovetrue
+ \fi
+ \scr@caption}
+\newcommand*{\captionaboveof}{\@captionabovetrue\captionof}
+\newcommand*{\captionbelowof}{\@captionabovefalse\captionof}
+\BeforePackage{capt-of}{\let\captionof\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{captionofbeside}
+% \changes{v3.10}{2011/09/02}{Neue Umgebung}^^A
+% Analog zu \texttt{captionbeside} hier eine Umgebung mit Angabe des
+% Gleitumgebungstyps als erstes Argument.
+% \begin{macrocode}
+\newenvironment{captionofbeside}[1]{%
+ \def\@captype{#1}%
+ \captionbeside
+}{%
+ \endcaptionbeside
+}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{Standardbezeichner}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% So heißen die Dinger:
+% \begin{macrocode}
+\newcommand*\figurename{Figure}
+\newcommand*\tablename{Table}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Abbildungsumgebung}
+%
+% \begin{environment}{figure}
+% \changes{v2.2c}{1995/05/25}{Abbildungsausgabe auf CJK umgestellt}^^A
+% \changes{v2.8h}{2001/07/19}{\cs{caption} wird explizit zu
+% \cs{captionbelow}}^^A
+% \changes{v3.25}{2017/10/10}{Reimplementierung mit \textsf{tocbasic}}^^A
+% Zunächst werden \texttt{figure}s, also Abbildungen behandelt.
+% \begin{Counter}{figure}
+% \changes{v3.25}{2017/10/10}{Der Zähler wird implizit von
+% \cs{DeclareNewTOC} definiert.}^^A
+% \end{Counter}
+% Der ganze Rest kann mit \cs{DeclareNewTOC} erledigt werden.
+% \begin{macrocode}
+\DeclareNewTOC[%
+ type=figure,
+ float,
+%<book|report> counterwithin=chapter,
+% \end{macrocode}
+% \begin{macro}{\fps@figure}
+% Die Standardplatzierung für Abbildungen ist \emph{t}op,
+% \emph{b}ottom, \emph{p}age.
+% \begin{macrocode}
+ floatpos=tbp,
+% \end{macro}
+% \begin{macro}{\ftype@figure}
+% Um die verschiedenen \emph{float}-Typen unterscheiden zu können,
+% benötigen sie eine Nummer. Abbildungen bekommen hier willkürlich
+% die Nummer 1.
+% \begin{macrocode}
+ floattype=1,
+% \end{macrocode}
+% \end{macro}
+% \changes{v3.11c}{2013/03/01}{fix: one \cs{caption} change removed}^^A
+% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A
+% \begin{macrocode}
+ tocentryindent=1.5em,
+ tocentrynumwidth=2.3em,
+ atbegin=\def\caption{%
+ \if@figurecaptionabove\expandafter\captionabove
+ \else\expandafter\captionbelow\fi
+ }
+% \end{macrocode}
+% \begin{macro}{\ext@figure}
+% Die Extension der Datei für das Abbildungsverzeichnis.
+% \begin{macrocode}
+]{lof}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thefigure}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A
+% \begin{macrocode}
+%<*book|report>
+\renewcommand*\thefigure{%
+%<*book>
+ \expandafter\ifnum\scr@v@is@gt{2.97d}\relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+ \thechapter.%
+%<book> \fi
+ \@arabic\c@figure
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fnum@figure}
+% \begin{macro}{\figureformat}
+% \changes{v2.3c}{1995/08/06}{neu}^^A
+% Die Ausgabe der Abbildungsnummer wird implizit von \cs{DeclareNewTOC} als
+% \iffalse
+%<*ignore>
+% \fi
+% \begin{macrocode}
+\newcommand*{\fnum@figure}{\figureformat}
+\newcommand*{\figureformat}{%
+ \figurename~\thefigure
+ \csname autodot\endcsname
+}
+% \end{macrocode}
+% \iffalse
+%</ignore>
+% \fi
+% definiert.
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+%
+% \subsection{Tabellengleitumgebung}
+%
+% \begin{environment}{table}
+% \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt}^^A
+% \changes{v2.8h}{2001/07/19}{bei Tabellen kann der Default für
+% \cs{caption} von Unter- auf Überschriften geändert werden}
+% \changes{v3.25}{2017/10/10}{Reimplementierung mit \textsf{tocbasic}}^^A
+% Auch verschiebbare Tabellen sind möglich. Das Prinzip ist das
+% gleiche wie bei den Abbildungen.
+% \begin{Counter}{table}
+% \changes{v3.25}{2017/10/10}{Der Zähler wird implizit von
+% \cs{DeclareNewTOC} definiert.}^^A
+% \end{Counter}
+% Der ganze Rest kann mit \cs{DeclareNewTOC} erledigt werden.
+% \begin{macrocode}
+\DeclareNewTOC[%
+ type=table,
+ float,
+%<book|report> counterwithin=chapter,
+% \end{macrocode}
+% \begin{macro}{\fps@table}
+% Die Standardplatzierung für Tabellen ist \emph{t}op,
+% \emph{b}ottom, \emph{p}age.
+% \begin{macrocode}
+ floatpos=tbp,
+% \end{macro}
+% \begin{macro}{\ftype@table}
+% Um die verschiedenen \emph{float}-Typen unterscheiden zu können,
+% benötigen sie eine Nummer. Tabellen bekommen hier willkürlich
+% die Nummer 2.
+% \begin{macrocode}
+ floattype=2,
+% \end{macrocode}
+% \end{macro}
+% \changes{v3.20}{2016/04/07}{Interne Umdefinierung von \cs{caption}}^^A
+% \begin{macrocode}
+ tocentryindent=1.5em,
+ tocentrynumwidth=2.3em,
+ atbegin=\def\caption{%
+ \if@tablecaptionabove\expandafter\captionabove
+ \else\expandafter\captionbelow\fi
+ }
+% \end{macrocode}
+% \begin{macro}{\ext@table}
+% Die Extension der Datei für das Abbildungsverzeichnis.
+% \begin{macrocode}
+]{lot}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thetable}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A
+% \begin{macrocode}
+%<*book|report>
+%<book|report>\renewcommand*\thetable{%
+%<*book>
+ \expandafter\ifnum\scr@v@is@gt{2.97d}\relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+%<book|report> \thechapter.%
+%<book> \fi
+ \@arabic\c@table
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fnum@table}
+% \begin{macro}{\tableformat}
+% \changes{v2.3c}{1995/08/06}{neu}^^A
+% Die Ausgabe der Abbildungsnummer wird implizit von \cs{DeclareNewTOC} als
+% \iffalse
+%<*ignore>
+% \fi
+% \begin{macrocode}
+\newcommand*{\fnum@table}{\tableformat}
+\newcommand*{\tableformat}{%
+ \tablename~\thetable
+ \csname autodot\endcsname
+}
+% \end{macrocode}
+% \iffalse
+%</ignore>
+% \fi
+% definiert.
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+% \iffalse
+%</!letter>
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-floats.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-fonts.dtx b/macros/latex/contrib/koma-script/source/scrkernel-fonts.dtx
new file mode 100644
index 0000000000..a5bc0c9828
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-fonts.dtx
@@ -0,0 +1,2251 @@
+% \CheckSum{3406}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-fonts.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrkernel-fonts.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-fonts.dtx 3047 2018-12-22 15:51:54Z kohm $
+%<identify>%%% (run: identify)
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<10pt>%%% (run: 10pt)
+%<11pt>%%% (run: 11pt)
+%<11pt>%%% (run: 12pt)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-12-22 16:51:54 +0100 (Sat, 22 Dec 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1827 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-fonts.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (font size)]
+ }%
+\reserved@a
+% \changes{v3.09}{2011/02/23}{Neues Paket \texttt{scrfontsizes}}
+%</dtx>
+%<*package&generator&identify>
+%<package&generator&identify>\ProvidesPackage{scrfontsizes}[%
+%!KOMAScriptVersion
+%<package&generator&identify> package (font size file generator)]
+%</package&generator&identify>
+%<*dtx>
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-fonts.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/25}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Schriftauswahl}
+%
+% Dieser Bereich befasst sich mit allem, was zur Schriftauswahl
+% gehört. Die einzelnen Elemente, für die eine Schriftauswahl möglich
+% ist, sind jedoch in den Dateien definiert, in denen diese Elemente
+% auftreten.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Der Generator für Schriftgrößendateien}
+%
+% \iffalse
+%<*generator>
+% \fi
+% Ab Version 3.09 gibt es einen Generator für neue
+% Schriftgrößendateien. Dieser richtet sich vor allem an Klassenautoren und
+% bietet die Möglichkeit, eine eigene berechnete Schriftgrößendatei als
+% Grundlage für eine spezifisch angepasste Schriftgrößendateie zu erstellen.
+% Optionen besitzt dieser jedoch nicht. Daher reduziert sich der Optionenteil
+% auf ein einfaches
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+% \iffalse
+%</generator>
+% \fi
+%
+% \subsection{Option zur Auswahl der Größe der Grundschrift}
+%
+% \iffalse
+%<*class|extend>
+% \fi
+% \begin{option}{10pt}
+% \begin{option}{11pt}
+% \begin{option}{12pt}
+% Diese Optionen existieren nicht mehr als explizite Optionen, sondern
+% werden in \texttt{scrtarea.dtx} über \cs{DeclareOption*}
+% ausgewertet.
+% \begin{macro}{\@ptsize}
+% \changes{v2.96}{2006/08/11}{\cs{@ptsize} hat temporär eine andere
+% Bedeutung}
+% Wir definieren \cs{@ptsize} als Grundschriftgrößee minus 10\,pt.
+% Hier wird die Standardeinstellung 11\,pt für alle Klassen außer der
+% Briefklasse gewählt. Bis zum Einstellen tatsächlichen Einstellen der
+% Schriftgröße wird in \cs{@ptsize} allerdings die tatsächliche Größe
+% angegeben, damit sich Rundungsfehler nicht so leicht summieren.
+% \begin{macrocode}
+%<*!extend>
+\newcommand*\@ptsize{%
+%<!letter> 11%
+%<letter> 12%
+}
+%</!extend>
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{macro}{\@pt@scan}
+% \changes{v2.6}{2000/01/04}{neu (intern)}^^A
+% \begin{macro}{\@pt@@scan}
+% \changes{v2.6}{2000/01/04}{neu (intern)}^^A
+% \changes{v2.97c}{2007/05/12}{\cs{KOMA@UseObsolete} durch
+% \cs{KOMA@UseObsoleteOption} ersetzt}
+% \changes{v2.98c}{2008/03/22}{Verwendung von \cs{KOMA@UseObsoleteOption}^^A
+% korrigiert}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch
+% \cs{PackageInfoNoLine} ersetzt}
+% \changes{v3.12}{2013/03/04}{Alle Schriftgrößen-Optionen außer
+% \texttt{10pt}, \texttt{11pt} und \texttt{12pt} sind überholt.}
+% Das Macro \cs{@pt@scan} wird benötigt, um die Schriftgröße nach der alten
+% Methode zu erkennen.
+% \begin{macrocode}
+%<*!extend>
+\newcommand*{\@pt@scan}{%
+ \expandafter\@pt@@scan\CurrentOption pt\@pt@@scan%
+}
+\newcommand*{\@pt@@scan}{}
+\def\@pt@@scan #1pt#2\@pt@@scan{%
+ \ifstr{#2}{pt}{%
+ \ifnumber{#1}{%
+ \ifstr{#1}{10}{%
+ \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}%
+ {#1#2}{fontsize=#1#2}%
+ }{%
+ \ifstr{#1}{11}{%
+ \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}%
+ {#1#2}{fontsize=#1#2}%
+ }{%
+ \ifstr{#1}{12}{%
+ \KOMA@UseStandardOption{\PackageInfoNoLine{\KOMAClassName}}%
+ {#1#2}{fontsize=#1#2}%
+ }{%
+ \KOMA@UseDeprecatedOption{\PackageWarningNoLine{\KOMAClassName}}%
+ {#1#2}{fontsize=#1#2}%
+ }%
+ }%
+ }
+ }{\@headlines}%
+ }{\@headlines}%
+}
+%</!extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@fontsizefilebase}
+% \changes{v2.96}{2006/08/11}{neu (intern)}^^A
+% \changes{v3.00}{2008/05/01}{Definition für \textsf{scrextend} vorgezogen}
+% Dieses Makro speichert den Präfix der primären
+% Schriftgrößenoptionsdateien. Es wird nur definiert, wenn es nicht bereits
+% definiert ist. Damit können Wrapperklassen komplett andere Größen vorgeben,
+% ohne mit \cs{ReplaceInput} arbeiten zu müssen.
+% \begin{macrocode}
+\providecommand*{\@fontsizefilebase}{scrsize}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v3.17}{2015/03/10}{die Schriftgröße wird in der internen
+% Optionenliste gespeichert}^^A
+% \begin{option}{fontsize}
+% \changes{v2.96}{2006/08/11}{Funktion komplett geändert}^^A
+% \changes{v2.98c}{2008/03/26}{lädt nach Möglichkeit die zugehörige
+% Schriftgrößendatei}^^A
+% \changes{v3.12}{2013/03/05}{Status wird mit \cs{FamilyKeyStateProcessed}^^A
+% gesetzt.}
+% Hier nun die Option, die tatsächlich verwendet wird. Es sei darauf
+% hingewiesen, dass damit auch Schriftgrößen wie \texttt{10.3pt} denkbar
+% wären.
+% \begin{macrocode}
+\KOMA@key{fontsize}{%
+%<*!extend>
+ \scr@ifundefinedorrelax{changefontsizes}{%
+ \@defaultunits\@tempdima#1pt\relax\@nnil
+ \edef\@ptsize{#1}%
+ }{%
+%</!extend>
+ \expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil
+ \edef\@tempa{#1}%
+ \setlength{\@tempdimb}{\@tempdima}%
+ \edef\@tempb{\strip@pt\@tempdimb}%
+ \addtolength{\@tempdimb}{-10\p@}%
+ \edef\@ptsize{\strip@pt\@tempdimb}%
+ \edef\@tempa{%
+ \noexpand\makeatletter
+ \noexpand\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{%
+%<!extend> \noexpand\ClassInfo{\KOMAClassName}{%
+%<extend> \noexpand\PackageInfo{scrextend}{%
+ File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}%
+ }{%
+ \noexpand\InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{%
+%<!extend> \noexpand\ClassInfo{\KOMAClassName}{%
+%<extend> \noexpand\PackageInfo{scrextend}{%
+ File `\@fontsizefilebase\@tempb pt.clo' used instead of%
+ \noexpand\MessageBreak
+ file `\@fontsizefilebase\@tempa.clo' to setup font sizes}%
+ }{%
+ \noexpand\changefontsizes{#1}%
+ }%
+ }%
+ \noexpand\catcode`\noexpand\@=\the\catcode`\@
+ }%
+%<extend> \scr@ifundefinedorrelax{changefontsizes}{%
+%<extend> \expandafter\AtEndOfPackage\expandafter{\@tempa}%
+%<extend> }{%
+ \@tempa
+ }%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<extend> scrextend.\scr@pkgextension
+ }{fontsize}{#1}%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \iffalse
+%</class|extend>
+% \fi
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Sicherstellen der Umgebung des Generators}
+%
+% \iffalse
+%<*generator>
+% \fi
+% Der Generator benötigt die Anweisung \cs{changefontsizes}, die entweder von
+% einer \KOMAScript-Klasse oder vom Paket \texttt{scrextend} bereitgestellt
+% wird:
+% \begin{macrocode}
+\@ifundefined{changefontsizes}{\RequirePackage{scrextend}}{}
+% \end{macrocode}
+% \iffalse
+%</generator>
+% \fi
+%
+% \subsection{Einlesen der Schriftgrößendatei}
+%
+% \changes{v2.6}{2000/01/04}{Einlesen der Schriftgrößen-Options-Datei
+% funktioniert nun mit diversen Größen}^^A
+% \changes{v2.98c}{2008/03/26}{Eigene \texttt{scrsize}-Dateien definiert}
+%
+% \iffalse
+%</body>
+%<*10pt|11pt|12pt>
+% \fi
+%
+% Es werden min. drei Schriftgrößendateien benötigt. Ab Version 2.98c
+% verwendet \KOMAScript{} vorzugsweise eigene Dateien, die auch noch zu einem
+% späteren Zeitpunkt geladen werden können. Ansonsten sind diese Dateien
+% weitestgehend dem Quellcode der Standardklassen \texttt{classes.dtx}
+% entnommen.
+%
+% \begin{macrocode}
+\ProvidesFile{%
+%<10pt> scrsize10pt.clo%
+%<11pt> scrsize11pt.clo%
+%<12pt> scrsize12pt.clo%
+}[\KOMAScriptVersion\space font size class option %
+%<10pt> (10pt)%
+%<11pt> (11pt)%
+%<12pt> (12pt)%
+]
+% \end{macrocode}
+%
+% \begin{macro}{\normalsize}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\small}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\footnotesize}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\scriptsize}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\tiny}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\large}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\Large}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\LARGE}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\huge}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\Huge}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% Siehe \texttt{classes.dtx}.
+% \begin{macrocode}
+\def\normalsize{%
+%<*10pt>
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+%</10pt>
+%<*11pt>
+ \@setfontsize\normalsize\@xipt{13.6}%
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</11pt>
+%<*12pt>
+ \@setfontsize\normalsize\@xiipt{14.5}%
+ \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+%</12pt>
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI
+}
+\def\small{%
+%<*10pt>
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\small\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\small\@xipt{13.6}%
+ \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip
+}
+\def\footnotesize{%
+%<*10pt>
+ \@setfontsize\footnotesize\@viiipt{9.5}%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</10pt>
+%<*11pt>
+ \@setfontsize\footnotesize\@ixpt{11}%
+ \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+%</11pt>
+%<*12pt>
+ \@setfontsize\footnotesize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@
+ \parsep 3\p@ \@plus2\p@ \@minus\p@
+ \itemsep \parsep}%
+%</12pt>
+ \belowdisplayskip \abovedisplayskip
+}
+%<*10pt>
+\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\def\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\def\large{\@setfontsize\large\@xiipt{14}}
+\def\Large{\@setfontsize\Large\@xivpt{18}}
+\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\def\huge{\@setfontsize\huge\@xxpt{25}}
+\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+%</10pt>
+%<*11pt>
+\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\def\large{\@setfontsize\large\@xiipt{14}}
+\def\Large{\@setfontsize\Large\@xivpt{18}}
+\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\def\huge{\@setfontsize\huge\@xxpt{25}}
+\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+%</11pt>
+%<*12pt>
+\def\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
+\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\def\large{\@setfontsize\large\@xivpt{18}}
+\def\Large{\@setfontsize\Large\@xviipt{22}}
+\def\LARGE{\@setfontsize\LARGE\@xxpt{25}}
+\def\huge{\@setfontsize\huge\@xxvpt{30}}
+\let\Huge=\huge
+%</12pt>
+\normalsize
+% \end{macrocode}
+% \begin{Length}{\footnotesep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\footins}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\floatsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\textfloatsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\intextsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\dblfloatsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\sbltextfloatsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@fptop}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@fpsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@fpbot}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@dblfptop}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@dblfpsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\@dblfpbot}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{Length}{\partopsep}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% Siehe \texttt{classes.dtx}.
+% \begin{macrocode}
+%<*10pt>
+\setlength\footnotesep {6.65\p@}
+\setlength{\skip\footins} {9\p@ \@plus 4\p@ \@minus 2\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\@fptop {0\p@ \@plus 1fil}
+\setlength\@fpsep {8\p@ \@plus 2fil}
+\setlength\@fpbot {0\p@ \@plus 1fil}
+\setlength\@dblfptop {0\p@ \@plus 1fil}
+\setlength\@dblfpsep {8\p@ \@plus 2fil}
+\setlength\@dblfpbot {0\p@ \@plus 1fil}
+\setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@}
+%</10pt>
+%<*11pt>
+\setlength\footnotesep {7.7\p@}
+\setlength{\skip\footins} {10\p@ \@plus 4\p@ \@minus 2\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\@fptop {0\p@ \@plus 1fil}
+\setlength\@fpsep {8\p@ \@plus 2fil}
+\setlength\@fpbot {0\p@ \@plus 1fil}
+\setlength\@dblfptop {0\p@ \@plus 1fil}
+\setlength\@dblfpsep {8\p@ \@plus 2fil}
+\setlength\@dblfpbot {0\p@ \@plus 1fil}
+\setlength\partopsep {3\p@ \@plus 1\p@ \@minus 1\p@}
+%</11pt>
+%<*12pt>
+\setlength\footnotesep {8.4\p@}
+\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
+\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\@fptop {0\p@ \@plus 1fil}
+\setlength\@fpsep {10\p@ \@plus 2fil}
+\setlength\@fpbot {0\p@ \@plus 1fil}
+\setlength\@dblfptop {0\p@ \@plus 1fil}
+\setlength\@dblfpsep {10\p@ \@plus 2fil}
+\setlength\@dblfpbot {0\p@ \@plus 1fil}
+\setlength\partopsep {3\p@ \@plus 2\p@ \@minus 2\p@}
+%</12pt>
+% \end{macrocode}
+% \begin{macro}{\@listi}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\@listii}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\@listiii}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\@listiv}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\@listv}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% \begin{macro}{\@listvi}
+% \changes{v2.98c}{2008/03/26}{in eigener \texttt{scrsize}-Datei definiert}
+% Siehe \texttt{classes.dtx}.
+% \begin{macrocode}
+\def\@listi{\leftmargin\leftmargini
+%<*10pt>
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemsep4\p@ \@plus2\p@ \@minus\p@}
+%</10pt>
+%<*11pt>
+ \parsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \topsep 9\p@ \@plus3\p@ \@minus5\p@
+ \itemsep4.5\p@ \@plus2\p@ \@minus\p@}
+%</11pt>
+%<*12pt>
+ \parsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \topsep 10\p@ \@plus4\p@ \@minus6\p@
+ \itemsep5\p@ \@plus2.5\p@ \@minus\p@}
+%</12pt>
+\let\@listI\@listi
+\def\@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+%<*10pt>
+ \topsep 4\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</10pt>
+%<*11pt>
+ \topsep 4.5\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+%</11pt>
+%<*12pt>
+ \topsep 5\p@ \@plus2.5\p@ \@minus\p@
+ \parsep 2.5\p@ \@plus\p@ \@minus\p@
+%</12pt>
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+%<10pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<11pt> \topsep 2\p@ \@plus\p@\@minus\p@
+%<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@
+ \parsep \z@
+ \partopsep \p@ \@plus\z@ \@minus\p@
+ \itemsep \topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+% \end{macrocode}
+% \iffalse
+%</10pt|11pt|12pt>
+%<*body>
+% \fi
+%
+% \iffalse
+%<*class|extend>
+% \fi
+%
+% \begin{macro}{\changefontsizes}
+% \changes{v2.96}{2006/08/11}{neue Anweisung (benötigt \eTeX)}^^A
+% \changes{v3.08b}{2011/02/22}{drei falsche \cs{def} durch \cs{edef}
+% ersetzt}^^A
+% \changes{v3.17}{2015/02/23}{wird nur definiert, wenn nicht vorhanden}^^A
+% \begin{macro}{\simple@changefontsizes}
+% \changes{v3.17}{2015/02/23}{auf speziellen Wunsch von Falk}^^A
+% \changes{v3.17}{2015/03/25}{\cs{par@updaterelative} hinzugefügt}^^A
+% Diese Anweisung bietet berechnete Schriftgrößen als Fallbacklösung an. Das
+% optionale erste Argument ist dabei der Grundlinienabstand. Das zweite
+% Argument ist die gewünschte Grundschriftgröße.
+% \begin{macro}{\scr@setlength}
+% \changes{v3.12}{2013/10/08}{neue Anweisung (intern)}^^A
+% Setzt die Länge in |#1| auf den Wert |#2| plus |#3| minus |#4|, wobei
+% allerdings für |#2|, |#3| und |#4| Mindestwerte von 1\,pt verwendet werden.
+% \begin{macrocode}
+\newcommand*\scr@setlength[4]{%
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{#1}{#2 \@plus#3 \@minus#4}%
+ \else
+ \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus\p@ \@minus#4}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus#3 \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus#3 \@minus#4}%
+ \fi
+ \fi
+ \else
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{#2 \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{#2 \@plus\p@ \@minus#4}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{#2 \@plus#3 \@minus\p@}%
+ \else
+ \setlength{#1}{#2 \@plus#3 \@minus#4}%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \changes{v3.17}{2015/03/10}{e-\TeX-Warnung entfernt}^^A
+% \begin{macrocode}
+\providecommand*{\simple@changefontsizes}[2][1.2\@tempdima]{%
+ \KOMA@kav@removekey{.%
+%<class> \KOMAClassFileName
+%<extend> scrextend.\scr@pkgextension
+ }{fontsize}%
+ \@defaultunits\@tempdima#2pt\relax\@nnil
+ \setlength{\@tempdimc}{\@tempdima}%
+ \addtolength{\@tempdimc}{-10\p@}%
+ \edef\@ptsize{\strip@pt\@tempdimc}%
+ \@defaultunits\@tempdimb#1pt\relax\@nnil
+ \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}%
+ \edef\@tempb{\the\@tempdimc}%
+ \setlength{\@tempdimc}{\@tempdima}%
+ \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}%
+ \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil%
+% \end{macrocode}
+% Ab hier ist \cs{@tempdimc} die gewünschte Grundschriftgröße in pt und
+% \cs{@tempb} der Faktor für den Grundlinienabstand auf 2 Stellen hinter dem
+% Komma. Zunächst ist auch \cs{@tempdima} noch die geforderte
+% Grundschriftgröße und \cs{@tempdimb} der geforderte
+% Grundlinienabstand. Allerdings verändern sich \cs{@tempdima} und
+% \cs{@tempdimb} im Laufe der nachfolgenden Definitionen abhängig von der zu
+% definierenden Schriftgröße.
+%
+% Berechnungen für und Definition von \cs{normalsize}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\abovedisplayskip}{%
+ \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
+ \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
+ \setlength{\belowdisplayshortskip}{%
+ .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
+ \else
+ \scr@setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \scr@setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \fi
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\normalsize{%
+ \noexpand\@setfontsize\noexpand\normalsize
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listI
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{small}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{0.9125\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\abovedisplayskip}{%
+ \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
+ \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
+ \setlength{\belowdisplayshortskip}{%
+ .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
+ \else
+ \scr@setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \scr@setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \fi
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\small{%
+ \noexpand\@setfontsize\noexpand\small
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listi@small
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{footnotesize}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{.83334\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\abovedisplayskip}{%
+ \@tempdima \@plus .25\@tempdima \@minus .58\@tempdima}%
+ \setlength{\abovedisplayshortskip}{\z@ \@plus .25\@tempdima}%
+ \setlength{\belowdisplayshortskip}{%
+ .55\@tempdima \@plus .3\@tempdima \@minus .25\@tempdima}%
+ \else
+ \scr@setlength{\abovedisplayskip}%
+ {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
+ \scr@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
+ \scr@setlength{\belowdisplayshortskip}%
+ {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
+ \fi
+ \setlength{\belowdisplayskip}{\abovedisplayskip}%
+ \edef\footnotesize{%
+ \noexpand\@setfontsize\noexpand\footnotesize
+ {\the\@tempdima}{\the\@tempdimb}%
+ \abovedisplayskip \the\abovedisplayskip
+ \abovedisplayshortskip \the\abovedisplayshortskip
+ \belowdisplayskip \the\belowdisplayskip
+ \belowdisplayshortskip \the\belowdisplayshortskip
+ \let\noexpand\@listi\noexpand\@listi@footnotesize
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{scriptsize}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{.66667\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\scriptsize{%
+ \noexpand\@setfontsize\noexpand\scriptsize
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{tiny}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{.5\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\tiny{%
+ \noexpand\@setfontsize\noexpand\tiny
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{large}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{1.2\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\large{%
+ \noexpand\@setfontsize\noexpand\large
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{Large}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{1.44\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\Large{%
+ \noexpand\@setfontsize\noexpand\Large
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{LARGE}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{1.728\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\LARGE{%
+ \noexpand\@setfontsize\noexpand\LARGE
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{huge}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{2.074\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\huge{%
+ \noexpand\@setfontsize\noexpand\huge
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{Huge}:
+% \begin{macrocode}
+ \setlength{\@tempdima}{2.488\@tempdimc}%
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \edef\Huge{%
+ \noexpand\@setfontsize\noexpand\Huge
+ {\the\@tempdima}{\the\@tempdimb}%
+ }%
+% \end{macrocode}
+% Wechsel zu \cs{normalsize} und Berechnung weiterer schriftabhängigen
+% Abstände für diese Schriftgröße.
+% \begin{macrocode}
+ \normalsize
+%<!extend> \expandafter\ifnum\scr@v@is@ge{3.17}\@nameuse{par@updaterelative}\fi
+% \end{macrocode}
+% Ab hier kann nun \cs{f@size} für die Schriftgröße und \cs{f@baselineskip}
+% für den normalen Grundlinienabstand (ohne \cs{baselinestretch}) verwendet
+% werden. Allerdings ist das keine Länge!
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\footnotesep}{.7\@tempdimc}%
+ \setlength{\skip\footins}{.9\@tempdimc \@plus .3333\@tempdimc \@minus
+ .6\@tempdimc}%
+ \setlength{\floatsep}{\@tempdimc \@plus .1667\@tempdimc \@minus
+ .3333\@tempdimc}%
+ \setlength{\textfloatsep}{1.6667\@tempdimc \@plus .1667\@tempdimc \@minus
+ .3333\@tempdimc}%
+ \setlength{\intextsep}{\@tempb\@tempdimc \@plus .3333\@tempdimc \@minus
+ .3333\@tempdimc}%
+ \setlength{\dblfloatsep}{\@tempb\@tempdimc \@plus .1667\@tempdimc \@minus
+ .3333\@tempdimc}%
+ \setlength{\dbltextfloatsep}{\textfloatsep}%
+ \setlength{\@fptop}{0\p@ \@plus 1fil}%
+ \setlength{\@fpsep}{.8333\@tempdimc \@plus 2fil}%
+ \setlength{\@fpbot}{\@fptop}%
+ \setlength{\@dblfptop}{0\p@ \@plus 1fil}%
+ \setlength{\@dblfpsep}{.8333\@tempdimc \@plus 2fil}%
+ \setlength{\@dblfpbot}{\@fptop}%
+ \fi
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listi} und \cs{@listI}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\topsep}{.8333\@tempdimc \@plus .3333\@tempdimc \@minus
+ .5\@tempdimc}%
+ \setlength{\parsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}%
+ \else
+ \setlength{\@tempdimb}{\f@baselineskip}%
+ \scr@setlength{\parsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}%
+ \scr@setlength{\topsep}%
+ {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}%
+ \fi
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+ \let\@listI\@listi
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listi@small}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\topsep}{.75\@tempdimc \@plus .25\@tempdimc \@minus
+ .41667\@tempdimc}%
+ \setlength{\parsep}{.375\@tempdimc \@plus .16667\@tempdimc \@minus \p@}%
+ \else
+ \scr@setlength{\parsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \scr@setlength{\topsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}%
+ \fi
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi@small{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listi@footnotesize}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\topsep}{.5\@tempdimc \@plus .16667\@tempdimc \@minus
+ .16667\@tempdimc}%
+ \setlength{\parsep}{.25\@tempdimc \@plus .16667\@tempdimc \@minus \p@}%
+ \else
+ \scr@setlength{\parsep}%
+ {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}%
+ \scr@setlength{\topsep}%
+ {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb}%
+ \fi
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listi\endcsname
+ \endgroup
+ \edef\@listi@footnotesize{\leftmargin\leftmargini
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listii}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\topsep}{.4167\@tempdimc \@plus .2083\@tempdimc \@minus \p@}%
+ \setlength{\parsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}%
+ \else
+ \scr@setlength{\parsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \scr@setlength{\topsep}%
+ {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}%
+ \fi
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listii\endcsname
+ \endgroup
+ \edef\@listii{\leftmargin\leftmarginii
+ \labelwidth=\dimexpr \leftmargin-\labelsep
+ \topsep \the\topsep
+ \parsep \the\parsep
+ \itemsep \parsep
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listiii}:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\topsep}{.2083\@tempdimc \@plus \p@ \@minus \p@}%
+ \else
+ \scr@setlength{\topsep}%
+ {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}%
+ \fi
+ \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}%
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listiii\endcsname
+ \endgroup
+ \edef\@listiii{\leftmargin\leftmarginiii
+ \labelwidth=\dimexpr \leftmargin-\labelsep
+ \topsep \the\topsep
+ \parsep \z@
+ \partopsep \the\partopsep
+ \itemsep \topsep
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listiv}:
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listiv\endcsname
+ \endgroup
+ \edef\@listiv{\leftmargin\leftmarginiv
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listv}:
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listv\endcsname
+ \endgroup
+ \edef\@listv{\leftmargin\leftmarginv
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+% \end{macrocode}
+% Berechnungen für und Definition von \cs{@listvi}:
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \def\@list@extra{\aftergroup\@tempswatrue}%
+ \csname @listvi\endcsname
+ \endgroup
+ \edef\@listvi{\leftmargin\leftmarginvi
+ \labelwidth=\dimexpr \leftmargin-\labelsep\relax
+ \if@tempswa\noexpand\@list@extra\fi
+ }%
+ \@listi
+% \end{macrocode}
+% Einige Platzierungsabstände sind ebenfalls schriftgrößenabhängig. ^^A
+% \changes{v2.97c}{2007/07/04}{\cs{intextsep} setzen}^^A
+% \changes{v2.97c}{2007/07/04}{\cs{dblfloatsep} setzen}^^A
+% \changes{v2.97c}{2007/07/04}{\cs{partopsep} setzen}^^A
+% \changes{v3.12}{2013/10/08}{Berechnung einiger Größen verändert}^^A
+% Ab Version~3.12 wird deren Berechnung korrigiert. Viele der Größen sind nun
+% nicht mehr von der Schriftgröße, sondern dem Grundlinienabstand abhängig.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.12}\relax
+ \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \setlength{\@tempdima}{\dimexpr \@tempdimb-\@tempdimc}%
+ \setlength\intextsep{\@tempdimb \@plus.2\@tempdima \@minus.2\@tempdima}%
+ \setlength\dblfloatsep\intextsep
+ \setlength\partopsep{.2\@tempdimc \@plus.1\@tempdimc \@minus.1\@tempdimc}%
+ \else
+ \setlength{\@tempdimb}{\f@baselineskip}%
+ \setlength{\footnotesep}{.555\@tempdimb}%
+ \scr@setlength{\skip\footins}%
+ {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}%
+ \scr@setlength{\floatsep}%
+ {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}%
+ \scr@setlength{\textfloatsep}%
+ {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}%
+ \setlength{\intextsep}{\floatsep}%
+ \setlength{\dblfloatsep}{\floatsep}%
+ \setlength{\dbltextfloatsep}{\textfloatsep}%
+ \setlength{\@fptop}{\z@ \@plus 1fil}%
+ \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}%
+ \setlength{\@fpbot}{\@fptop}%
+ \setlength{\@dblfptop}{\@fptop}%
+ \setlength{\@dblfpsep}{\@fpsep}%
+ \setlength{\@dblfpbot}{\@fptop}%
+ \scr@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}%
+% \end{macrocode}
+% Hinweis: \cs{topsep} und \cs{parsep} werden hier nicht gesetzt, weil dies
+% bereits durch das \cs{@listi} zurvor erfolgte.
+% \begin{macrocode}
+ \fi
+}
+\scr@ifundefinedorrelax{changefontsizes}{%
+ \let\changefontsizes\simple@changefontsizes
+}{%
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package&extend> \PackageWarning{scrextend}{%
+ \string\changefontsizes\space already defined.\MessageBreak
+ I hope, the definition is compatible,\MessageBreak
+ because I do not change it%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \simple@changefontsizes
+% \end{macro}^^A \changefontsizes
+% \iffalse
+%</class|extend>
+%<*generator>
+% \fi
+% \begin{macro}{\generatefontfile}
+% \changes{v3.09}{2011/02/23}{Neu}^^A
+% \changes{v3.17}{2015/03/26}{\cs{par@updaterelative} added}^^A
+% Dies ist die zentrale Anweisung des neuen Generators. Es wird eine neue
+% Schriftgrößendatei ausgegeben. Der Name dieser Datei setzt sich aus dem
+% ersten obligaorischen Argument gefolgt von der Schriftgröße und der
+% Erweiterung \texttt{.clo} zusammen. Da Schriftgrößendateien, die mit
+% "`\texttt{scrsize}"' beginnen, \KOMAScript{} vorbehalten sind wird dieses
+% erste Argument verweigert.
+% \begin{macrocode}
+\newcommand*{\generatefontfile}[1]{%
+ \ifstr{#1}{scrsize}{%
+ \ClassError{\KOMAClassName}{%
+ Font file name `scrsize' not allowed%
+ }{%
+ Font files with name `scrsize<fontsize>.clo' are reserved for
+ KOMA-Script.\MessageBreak
+ You should use another prefix and rename \string\@fontsizefilebase\space
+ either before\MessageBreak
+ loading a KOMA-Script class using one of \string\documentclass,
+ \string\LoadClass,\MessageBreak
+ or \string\LoadClassWithOptions\space or before loading package
+ `scrextend' using another\MessageBreak
+ class.}%
+ \@@@generatefontfile
+ }{%
+% \end{macrocode}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Das zweite Argument ist optional. Ist es angegeben, so gibt es den
+% gewünschten Zeilenabstand an. Ist es nicht angegeben, so wird der
+% Zeilenabstand |\changefontsized| überlassen. Das dritte Argument ist
+% schließlich die gewünschte Schriftgröße.
+% \begin{macrocode}
+ \kernel@ifnextchar [{\@generatefontfile{#1}}{\@@generatefontfile{#1}}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\@generatefontfile}
+% \changes{v3.09}{2011/02/23}{Neu (intern)}^^A
+% \begin{macro}{\@@generatefontfile}
+% \changes{v3.09}{2011/02/23}{Neu (intern)}^^A
+% Diese beiden Hilfsmakros werden benötigt, um Aufrufe von |\generatefontfile|
+% mit oder ohne optionales, zweites Argument zu behandeln. In jedem Fall wird
+% die gewünschte Schriftgröße innerhalb einer Gruppe mit Hilfe von
+% |\changefontsizes| bestimmt und dann eine Datei mit den dabei ermittelten
+% Einstellungen ausgegeben.
+% \begin{macrocode}
+\newcommand*{\@generatefontfile}{}
+\def\@generatefontfile#1[#2]#3{%
+ \begingroup
+ \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}%
+ {\setparsizes{0pt}{0pt}{0pt}}%
+ \changefontsizes[{#2}]{#3}%
+ \generate@fontfile{#1}{#3}%
+ \endgroup
+}
+\newcommand\@@generatefontfile[2]{%
+ \begingroup
+ \@ifundefined{setparsizes}{\setlength{\parskip}{0pt}}%
+ {\setparsizes{0pt}{0pt}{0pt}}%
+ \changefontsizes{#2}%
+ \generate@fontfile{#1}{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@@@generatorfontfile}
+% \changes{v3.09}{2011/02/23}{Neu (intern)}^^A
+% Dieses Hilfsmakro wird hingegen im Fehlerfall aufgerufen, um die Ausgabe
+% einer Schriftgrößendatei zu verhindern.
+% \begin{macrocode}
+\newcommand*{\@@@generatefontfile}[2][]{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@fontfile}
+% \changes{v3.09}{2011/02/23}{Neu (intern)}^^A
+% Da später die Verwendung von |\generatefontfile| noch auf die Präambel
+% beschränkt werden wird, ist es kein Problem hier |\@mainaux| für die Ausgabe
+% zu missbrauchen. Das funktioniert aber nur, weil |\@mainaux| erst innerhalb
+% von |\begin{document}| tatsächlich geöffnet wird. Die Dateisparsamkeit an
+% dieser Stelle ist also eigentlich ein ziemlich unsauberer Hack!
+% \begin{macrocode}
+\newcommand*{\@fontfile}{}
+\let\@fontfile\@mainaux
+% \end{macrocode}
+% \begin{macro}{\generate@fontfile}
+% \changes{v3.09}{2011/02/23}{Neu (intern)}^^A
+% \changes{v3.16a}{2015/02/11}{\cs{footnotesize} korrigiert}
+% Es wird nun eine Schriftgrößendatei ausgegeben. Dabei werden die aktuellen
+% Einstellungen verwendet. Dabei wird die Tatsache ausgenutzt, dass diese
+% Anweisung immer innerhalb einer Gruppe aufgerufen wird. Das erste Argument
+% ist der Dateinamenpräfix (also so etwas wie "`\texttt{scrsize}"', das zweite
+% Argument die gewünschte Schriftgröße. Es ist zu beachten, dass alle Werte in
+% der Datei in pt angegeben werden, auch wenn die gewünschte Schriftgröße eine
+% ganz andere Einheit besitzt. Das macht schlicht die Arbeit etwas einfacher.
+% \begin{macrocode}
+\newcommand*{\generate@fontfile}[2]{%
+ \def\@ind{\space\space}%
+ \immediate\openout\@fontfile #1#2.clo
+ \immediate\write\@fontfile{\@percentchar^^J%
+ \@percentchar\space This is file `#1#2.clo', generated with^^J%
+ \@percentchar\space scrfontsizes
+ \csname ver@scrfontsizes.\scr@pkgextension\endcsname,^^J%
+ \@percentchar\space Copyright (c) Markus Kohm.^^J%
+ \@percentchar^^J%
+ \string\ProvidesFile{#1#2.clo}[%
+ \the\year/\ifnum\month<10 0\fi\the\month/\ifnum\day<10 0\fi\the\day%
+ \space generated font size class option (#2)]}%
+ \immediate\write\@fontfile{%
+ \string\def\string\normalsize{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\normalsize{\f@size}{\f@baselineskip}%
+ \@percentchar^^J%
+ \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
+ \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J%
+ \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J%
+ \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J%
+ \@ind\string\let\string\@listi\string\@listI^^J%
+ }\@percentchar%
+ }%
+ \begingroup\small\@listi
+ \immediate\write\@fontfile{%
+ \string\def\string\small{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\small{\f@size}{\f@baselineskip}%
+ \@percentchar^^J%
+ \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
+ \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J%
+ \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J%
+ \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J%
+ \@ind\string\def\string\@listi{\@percentchar^^J%
+ \@ind\@ind\string\leftmargin\string\leftmargini^^J%
+ \@ind\@ind\string\topsep \the\topsep^^J%
+ \@ind\@ind\string\parsep \the\parsep^^J%
+ \@ind\@ind\string\itemsep \string\parsep^^J%
+ \@ind}\@percentchar^^J%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\footnotesize\@listi
+ \immediate\write\@fontfile{%
+ \string\def\string\footnotesize{\@percentchar^^J%
+ \@ind\string\@setfontsize\string\footnotesize{\f@size}{\f@baselineskip}%
+ \@percentchar^^J%
+ \@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
+ \@ind\string\abovedisplayshortskip\space \the\abovedisplayshortskip^^J%
+ \@ind\string\belowdisplayskip\space \the\belowdisplayskip^^J%
+ \@ind\string\belowdisplayshortskip\space \the\belowdisplayshortskip^^J%
+ \@ind\string\def\string\@listi{\@percentchar^^J%
+ \@ind\@ind\string\leftmargin\string\leftmargini^^J%
+ \@ind\@ind\string\topsep \the\topsep^^J%
+ \@ind\@ind\string\parsep \the\parsep^^J%
+ \@ind\@ind\string\itemsep \string\parsep^^J%
+ \@ind}\@percentchar^^J%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\scriptsize
+ \immediate\write\@fontfile{%
+ \string\def\string\scriptsize{%
+ \string\@setfontsize\string\scriptsize{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\tiny
+ \immediate\write\@fontfile{%
+ \string\def\string\tiny{%
+ \string\@setfontsize\string\tiny{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\large
+ \immediate\write\@fontfile{%
+ \string\def\string\large{%
+ \string\@setfontsize\string\large{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\Large
+ \immediate\write\@fontfile{%
+ \string\def\string\Large{%
+ \string\@setfontsize\string\Large{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\LARGE
+ \immediate\write\@fontfile{%
+ \string\def\string\LARGE{%
+ \string\@setfontsize\string\LARGE{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\huge
+ \immediate\write\@fontfile{%
+ \string\def\string\huge{%
+ \string\@setfontsize\string\huge{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \begingroup\Huge
+ \immediate\write\@fontfile{%
+ \string\def\string\Huge{%
+ \string\@setfontsize\string\Huge{\f@size}{\f@baselineskip}%
+ }\@percentchar%
+ }%
+ \endgroup
+ \immediate\write\@fontfile{\string\normalsize}%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\footnotesep}{\the\footnotesep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\skip\string\footins}{\the\skip\footins}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\floatsep}{\the\floatsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\textfloatsep}{\the\textfloatsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\intextsep}{\the\intextsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\dblfloatsep}{\the\dblfloatsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\dbltextfloatsep}{\the\dbltextfloatsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@fptop}{\the\@fptop}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@fpsep}{\the\@fpsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@fpbot}{\the\@fpbot}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@dblfptop}{\the\@dblfptop}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@dblfpsep}{\the\@dblfpsep}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\@dblfpbot}{\the\@dblfpbot}\@percentchar
+ }%
+ \immediate\write\@fontfile{%
+ \string\setlength{\string\partopsep}{\the\partopsep}\@percentchar
+ }%
+ \begingroup
+ \@listi
+ \immediate\write\@fontfile{%
+ \string\def\string\@listi{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmargini^^J%
+ \@ind\string\topsep \the\topsep^^J%
+ \@ind\string\parsep \the\parsep^^J%
+ \@ind\string\itemsep \string\parsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \immediate\write\@fontfile{%
+ \string\let\string\@listI\string\@listi
+ }%
+ \begingroup
+ \@listii
+ \immediate\write\@fontfile{%
+ \string\def\string\@listii{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmarginii^^J%
+ \@ind\string\labelwidth\string\leftmarginii^^J%
+ \@ind\string\advance\string\labelwidth-\string\labelsep^^J%
+ \@ind\string\topsep \the\topsep^^J%
+ \@ind\string\parsep \the\parsep^^J%
+ \@ind\string\itemsep \string\parsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \begingroup
+ \@listiii
+ \immediate\write\@fontfile{%
+ \string\def\string\@listiii{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmarginiii^^J%
+ \@ind\string\labelwidth\string\leftmarginiii^^J%
+ \@ind\string\advance\string\labelwidth-\string\labelsep^^J%
+ \@ind\string\topsep \the\topsep^^J%
+ \@ind\string\parsep \the\parsep^^J%
+ \@ind\string\partopsep \the\partopsep^^J%
+ \@ind\string\itemsep \string\topsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \begingroup
+ \@listiv
+ \immediate\write\@fontfile{%
+ \string\def\string\@listiv{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmarginiv^^J%
+ \@ind\string\labelwidth\string\leftmarginiv^^J%
+ \@ind\string\advance\string\labelwidth-\string\labelsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \begingroup
+ \@listv
+ \immediate\write\@fontfile{%
+ \string\def\string\@listv{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmarginv^^J%
+ \@ind\string\labelwidth\string\leftmarginv^^J%
+ \@ind\string\advance\string\labelwidth-\string\labelsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \begingroup
+ \@listvi
+ \immediate\write\@fontfile{%
+ \string\def\string\@listvi{\@percentchar^^J%
+ \@ind\string\leftmargin\string\leftmarginvi^^J%
+ \@ind\string\labelwidth\string\leftmarginvi^^J%
+ \@ind\string\advance\string\labelwidth-\string\labelsep^^J%
+ }\@percentchar
+ }%
+ \endgroup
+ \immediate\write\@fontfile{%
+ \string\@ifundefined{@list@extra}{}{\@percentchar^^J%
+ \string\expandafter\string\ifnum\string\scr@v@is@ge{3.17}%
+ \string\par@updaterelative\string\fi^^J%
+ \@ind\string\l@addto@macro{\string\@listi}{\string\@list@extra}%
+ \@percentchar^^J%
+ \@ind\string\let\string\@listI=\string\@listi^^J%
+ \@ind\string\l@addto@macro{\string\@listii}{\string\@list@extra}%
+ \@percentchar^^J%
+ \@ind\string\l@addto@macro{\string\@listiii}{\string\@list@extra}%
+ \@percentchar^^J%
+ \@ind\string\l@addto@macro{\string\footnotesize}{\string\protect
+ \string\add@extra@listi{ftns}}\@percentchar^^J%
+ \@ind\string\l@addto@macro{\string\small}{\string\protect
+ \string\add@extra@listi{sml}}\@percentchar^^J%
+ }\@percentchar^^J%
+ \string\@listi^^J%
+ \string\endinput^^J%
+ \@percentchar^^J%
+ \@percentchar\space End of file `#1#2.clo'.
+ }
+ \immediate\closeout\@fontfile
+}
+\@onlypreamble\generatefontfile
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \iffalse
+%</generator>
+%<*class|extend>
+% \fi
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Zunächst wird die gewünschte Größe, die in \cs{@ptsize} abgelegt ist, als
+% Länge ermittelt. In \cs{@tempa} wird die ursprünglich gewünschte Größe
+% abgelegt, damit zwischen \texttt{10pt}, \texttt{10} und \texttt{10dd}
+% unterschieden werden kann. In \cs{@tempb} wird hingegen die Größe in pt
+% abgelegt, damit die Standard-Dateien verwendet werden können. Dann wird
+% \cs{@ptsize} schon einmal richtig eingestellt.
+% \begin{macrocode}
+%<*!extend>
+\expandafter\@defaultunits\expandafter\@tempdima\@ptsize pt\relax\@nnil
+\edef\@tempa{\@ptsize}%
+\setlength{\@tempdimb}{\@tempdima}%
+\edef\@tempb{\strip@pt\@tempdimb}%
+\addtolength{\@tempdimb}{-10\p@}%
+\edef\@ptsize{\strip@pt\@tempdimb}%
+% \end{macrocode}
+% Jetzt wird zunächst versucht, ob eine Datei
+% "`\texttt{\cs{fontsizefilebase}\cs{@tempa}.clo}"' vorhanden ist, also eine,
+% bei der die ursprünliche Einheit im Namen angegeben ist. Wenn das der Fall
+% ist, wird diese verwendet. Wenn nicht wird das Ganze für \cs{@tempb} um die
+% Einheit pt erweitert wiederholt.
+% \begin{macrocode}
+\InputIfFileExists{\@fontsizefilebase\@tempa.clo}{%
+ \ClassInfo{\KOMAClassName}{%
+ File `\@fontsizefilebase\@tempa.clo' used to setup font sizes}%
+ \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}%
+ \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}%
+}{%
+ \InputIfFileExists{\@fontsizefilebase\@tempb pt.clo}{%
+ \ClassInfo{\KOMAClassName}{%
+ File `\@fontsizefilebase\@tempb pt.clo' used instead of\MessageBreak
+ file `\@fontsizefilebase\@tempa.clo' to setup font sizes}%
+ \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}%
+ \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb pt}%
+ }{%
+% \end{macrocode}
+% Wurde bis hier noch keine Datei geladen, wird nun versucht, die
+% Größendateien der Standardklassen zu verwenden.
+% \begin{macrocode}
+%<*book>
+ \InputIfFileExists{bk\@tempb.clo}{%
+ \ClassInfo{\KOMAClassName}{%
+ File `bk\@tempb.clo' used to setup font sizes}%
+ \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}%
+ \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}%
+ }{%
+%</book>
+ \InputIfFileExists{size\@tempb.clo}{%
+ \ClassInfo{\KOMAClassName}{%
+ File `size\@tempb.clo' used to setup font sizes}%
+ \KOMA@kav@removekey{.\KOMAClassFileName}{fontsize}%
+ \KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempb}%
+ }{%
+% \end{macrocode}
+% Sind auch diese Dateien nicht vorhanden, so wird als Fallback eine
+% Berechnung der Schriftgrößen verwendet. Es sei darauf hingewiesen, dass
+% dabei auch \cs{@tempa}, \cs{@tempb} und \cs{@ptsize} neu gesetzt werden.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \noexpand\changefontsizes{\@tempa}%
+ \noexpand\KOMA@kav@xadd{.\KOMAClassFileName}{fontsize}{\@tempa}%
+ }\@tempa
+% \end{macrocode}
+% Damit sollten nun die Schriftgrößen eingestellt sein.
+% \begin{macrocode}
+ }%
+%<book> }%
+ }%
+}
+%</!extend>
+%</class|extend>
+%</body>
+% \end{macrocode}
+%
+%
+% \subsection{"`Alte"' Font-Auswahlbefehle}
+%
+% \begin{option}{enabledeprecatedfontcommands}
+% \changes{v3.20}{2015/10/14}{neue (veraltete) Option}^^A
+% Diese Option ist bereits bei ihrer Definition veraltet. Sie stellt quasi die
+% nächste Eskalation für die veralteten Font-Auswahlbefehle dar. Man kann mit
+% ihrer Hilfe notfalls noch einmal die alten Befehle zurück holen. Dabei wird
+% in der Voreinstellung weiterhin eine Warnung ausgegeben.
+% \begin{macro}{\scr@defineobsoletefonts}
+% \changes{v3.20}{2015/10/14}{neue (veraltete) Anweisung (intern)}^^A
+% Über diese Anweisung wird eingestellt, ob die veralteten Befehle mit
+% Fehlermeldung, Warnung, Info oder gar nicht gemeldet werden.
+% Negative Werte bedeuten, dass die Befehle nicht definiert werden. Null steht
+% für interne Fehlermeldung. Eins ist eine Warnung. Zwei ist eine Info und
+% darüber hinaus werden die Befehle einfach definiert. Voreingestellt ist
+% derzeit noch Null. In naher Zukunft wird das aber -1 werden.
+% \begin{macrocode}
+%<*option>
+%<*class>
+\DeclareOption{enabledeprecatedfontcommands}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ deprecated option `enabledeprecatedfontcommands'.\MessageBreak
+ Note, that this option was already depreacted when\MessageBreak
+ it has been defined. Support for old font commands\MessageBreak
+ has been removed from KOMA-Script more than one\MessageBreak
+ decade ago. It is not recommended to use them any\MessageBreak
+ longer. Therefore usage of this class option also\MessageBreak
+ is not recommended%
+ }%
+ \let\scr@defineobsoletefonts\@ne
+}
+\scr@ifundefinedorrelax{scr@defineobsoletefonts}{%
+ \let\scr@defineobsoletefonts\z@
+}{}
+\BeforePackage{tex4ht}{%
+ \let\scr@defineobsoletefonts\thr@@
+}
+%</class>
+%</option>
+% \end{macrocode}
+% \end{macro}^^A \scr@degineobsoletefonts
+% \end{option}^^A enabledeprecatedfontscommands
+%
+% \begin{macro}{\scr@DeclareOldFontCommand}
+% \changes{v3.12}{2013/10/31}{neu}^^A
+% \changes{v3.20}{2015/10/14}{veraltet eskaliert}^^A
+% Diese Anweisung arbeitet prinzipiell wie die \LaTeX-Kern-Anweisung
+% \cs{DeclareOldFontCommand}, wirft aber zusätzlich mit Warnungen um sich, um
+% dem Anwender die Verwendung der alten Befehle zu versauern.
+% \begin{macrocode}
+%<*body>
+%<*class|extend>
+%<*!extend>
+\newcommand*{\scr@DeclareOldFontCommand}[3]{%
+ \ifnum\scr@defineobsoletefonts<\z@\else
+ \ifnum\scr@defineobsoletefonts>\tw@
+ \DeclareOldFontCommand{#1}{#2}{#3}%
+ \else
+ \DeclareOldFontCommand{#1}{%
+ \scr@ErrorWarningInfo{#1}{#2}#2%
+ }{%
+ \scr@ErrorWarningInfo{#1}{#3}#3%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ErrorWarningInfo}
+% \changes{v3.20}{2015/10/14}{neu (intern)}^^A
+% \changes{v3.22}{2016/09/28}{message fixed}^^A
+% \begin{macrocode}
+\DeclareRobustCommand*{\scr@ErrorWarningInfo}[2]{%
+% \end{macrocode}
+% Wenn \cs{scr@defineobsoletefonts} Null ist, wird eine Fehlermeldung
+% ausgegeben.
+% \begin{macrocode}
+ \ifnum \scr@defineobsoletefonts=\z@
+ \ClassError{\KOMAClassName}{undefined old font command `\string#1'}{%
+ You should note that since 1994 LaTeX2e provides a new font selection
+ scheme\MessageBreak
+ called NFSS2 with several new, combinable font commands.
+ KOMA-Script\MessageBreak
+ classes had defined the old font commands like `\string#1'
+ only for compatibility\MessageBreak
+ with old LaTeX 2.09 document styles of Script 2.0. Nevertheless,
+ these\MessageBreak
+ commands are deprecated and undocumented at least since 2003. Since
+ 2013\MessageBreak
+ KOMA-Script classes warned about soon removement of these deprecated
+ commands.\MessageBreak
+ Now, after two decades of LaTeX2e and NFSS2, these commands will not
+ work any\MessageBreak
+ more. If loading a package results in this error message, you should
+ contact\MessageBreak
+ the author of that package and ask him to replace the deprecated font
+ command\MessageBreak
+ `\string#1', e.g., by `\detokenize{#2}`. Otherwise you should
+ reconfigure\MessageBreak
+ or replace the package. If you have used the old font command
+ `\string#1' yourself,\MessageBreak
+ you should replace it, e.g., by `\detokenize{#2}'.\MessageBreak
+ To make it work for now, you can use the already also deprecated class
+ option\MessageBreak
+ `enabledeprecatedfontcommands'.%
+ }%
+ \else
+ \ifcase \scr@defineobsoletefonts
+% \end{macrocode}
+% Bei Eins gibt es eine Warnung:
+% \begin{macrocode}
+ \or
+ \expandafter\ClassWarning
+% \end{macrocode}
+% Bei Zwei gibt es eine Info:
+% \begin{macrocode}
+ \or
+ \expandafter\ClassInfo
+% \end{macrocode}
+% Sonst gibt es nichts:
+% \begin{macrocode}
+ \else
+ \expandafter\@gobbletwo
+ \fi
+ {\KOMAClassName}{deprecated old font command `\string#1' used.\MessageBreak
+ You should note, that since 1994 LaTeX2e provides a\MessageBreak
+ new font selection scheme called NFSS2 with several\MessageBreak
+ new, combinable font commands. New KOMA-Script classes\MessageBreak
+ defined the old font commands like `\string#1' only for\MessageBreak
+ compatibility with LaTeX 2.09 document styles of\MessageBreak
+ Script 2.0. These commands are deprecated and\MessageBreak
+ undocumented at least since 2003. Since 2013,\MessageBreak
+ KOMA-Script classes warned about soon removement of\MessageBreak
+ these deprecated commands. Now, after two decades of\MessageBreak
+ LaTeX2e, NFSS2, and KOMA-Script these commands will\MessageBreak
+ not work any longer. If loading a package results in\MessageBreak
+ this message you should contact the author of that\MessageBreak
+ package and ask him to replace the depracted font\MessageBreak
+ command `\string#1', e.g., by `\detokenize{#2}'.\MessageBreak
+ Otherwise you should reconfigure or replace the\MessageBreak
+ package. If you have used the old font command\MessageBreak
+ `\string #1' yourself you should replace it, e.g., by\MessageBreak
+ `\detokenize{#2}'%
+ }%
+ \fi
+}
+%</!extend>
+% \end{macrocode}
+% \end{macro}^^A \scr@OldFontErrorWarningInfo
+% \end{macro}^^A \scr@DeclareOldFontCommand
+%
+% \begin{macro}{\rm}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\sf}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\tt}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\bf}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\it}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\sl}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\sc}
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% \begin{macro}{\sfb}
+% \changes{v2.2c}{1995/05/25}{nicht mehr mathematisch}^^A
+% \changes{v2.3a}{1995/07/08}{keine Unterscheidung mehr für den
+% Kompatibilitätsmodus}^^A
+% \changes{v3.12}{2013/10/13}{Anweisung ist veraltet}^^A
+% Um die Umstellung von \LaTeX\ auf \LaTeXe\ zu erleichtern, gibt es
+% die alten Font-Auswahlbefehle \cs{rm}, \cs{sf}, \cs{tt}, \cs{bf},
+% \cs{it}, \cs{sl} und \cs{sc} auch in den Klassen. Es ist zu
+% beachten, dass diese Befehle hier nach dem alten
+% Fontauswahlverfahren arbeiten. Es werden also immer alle Parameter
+% zugleich geändert. Somit ist zu empfehlen, dass statt dieser Befehle
+% zukünftig in der Regel die neuen \cs{text\dots}-Befehle verwendet
+% werden.
+%
+% Der aus der \textsf{Script 2.0}-Familie bekannte Befehl \cs{sfb} ist
+% hier ebenfalls definiert.
+% \begin{macrocode}
+%<*!extend>
+\scr@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\scr@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\scr@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\scr@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\scr@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\scr@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\scr@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\scr@DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{%
+ \@nomath\sfb}
+%</!extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cal}
+% \changes{v2.3}{1995/06/25}{hier statt im \LaTeX-Kern}^^A
+% Der Befehl ist in \LaTeX{} nicht mehr definiert. Deshalb wird er nun
+% neu und gleich robust deklariert. Dafür fällt \cs{pcal} weg.
+% \changes{v2.3g}{1996/01/14}{überflüssige Klammerpaare entfernt}^^A
+% \begin{macro}{\mit}
+% \changes{v2.3}{1995/06/25}{hier statt im \LaTeX-Kern}^^A
+% Der Befehl ist in \LaTeX{} nicht mehr definiert. Deshalb wird er nun
+% neu und gleich robust deklariert. Dafür fällt \cs{pmit} weg.
+% \changes{v2.3g}{1996/01/14}{überflüssige Klammerpaare entfernt}^^A
+%
+% Die beiden Befehle \cs{cal} und \cs{mit} war bis zur \LaTeX-Version
+% vom 1.12.1994 patch level 3 noch im Kernal definiert. Jetzt sind die
+% beiden den Klassen überlassen. Hier ist die Definition aus den
+% Standard-classes übernommen.
+% \begin{macrocode}
+%<*!extend>
+\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
+%</!extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</class|extend>
+% \fi
+%
+% \subsection{Setzen der Schrift eines Elements}
+%
+% \iffalse
+%<*scrkbase>
+% \fi
+%
+% \begin{macro}{\IfExistskomafont}
+% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
+% Führe das zweite Argument aus, wenn ein Fontelement existiert, sonst das
+% dritte.
+% \begin{macrocode}
+\newcommand*{\IfExistskomafont}[1]{%
+ \scr@ifundefinedorrelax{scr@fnt@#1}{%
+ \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}%
+ }{%
+ \@firstoftwo
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfIsAliaskomafont}
+% \changes{v3.25}{2017/12/08}{neue Anweisung}^^A
+% Führe das zweite Argument aus, wenn ein Fontelement ein Alias is, sonst das
+% dritte.
+% \begin{macrocode}
+\newcommand*{\IfIsAliaskomafont}[1]{%
+ \scr@ifundefinedorrelax{scr@fnt@#1}{%
+ \scr@ifundefinedorrelax{scr@fnt@instead@#1}{\@secondoftwo}{\@firstoftwo}%
+ }{%
+ \@secondoftwo
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setkomafont}
+% \changes{v2.8o}{2001/09/14}{neu}^^A
+% \changes{v3.05a}{2010/03/24}{nach \textsf{scrkbase} verschoben}
+% Mit Hilfe dieses Makros kann die Schriftart von
+% \KOMAScript-Elementen gesetzt werden.
+% \begin{macrocode}
+\newcommand*{\setkomafont}[2]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \PackageError{scrkbase}{%
+ font of element `#1' can't be set}{%
+ You've told me to redefine the font selection of the
+ element,\MessageBreak%
+ but either no such element is known by
+ KOMA-Script\MessageBreak%
+ or the element does not use a special font selection%
+ }%
+ }{%
+ \PackageInfo{scrkbase}{%
+ You've told me to redefine the font selection of the\MessageBreak
+ element `#1' that is an alias of element\MessageBreak
+ `\csname scr@fnt@instead@#1\endcsname'%
+ }%
+ \expandafter\setkomafont\expandafter{%
+ \csname scr@fnt@instead@#1\endcsname}{#2}%
+ }%
+ }{%
+ \expandafter\expandafter\expandafter\def\csname scr@fnt@#1\endcsname{#2}%
+ }%
+ \@ifundefined{scr@fnt@wrn@#1}{}{%
+ \PackageWarning{scrkbase}{%
+ \csname scr@fnt@wrn@#1\endcsname{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\addtokomafont}
+% \changes{v2.8p}{2001/09/22}{neu}^^A
+% \changes{v3.05a}{2010/03/24}{nach \textsf{scrkbase} verschoben}
+% Dieses Makro funktioniert fast wie obiges, allerdings fügt es der
+% vorhandenen Definition etwas an. Dazu wird \cs{l@addto@macro} aus
+% \textsf{scrkbase} verwendet.
+% \begin{macrocode}
+\newcommand*{\addtokomafont}[2]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \PackageError{scrkbase}{%
+ font of element `#1' can't be extended%
+ }{%
+ You've told me to extend the font selection of the
+ element,\MessageBreak
+ but either no such element is known by
+ KOMA-Script\MessageBreak
+ or the element does not use a special font selection%
+ }%
+ }{%
+ \PackageInfo{scrkbase}{%
+ You've told me to extend the font selection of the\MessageBreak
+ element `#1' that is an alias of element\MessageBreak
+ `\csname scr@fnt@instead@#1\endcsname'%
+ }%
+ \expandafter\addtokomafont\expandafter{%
+ \csname scr@fnt@instead@#1\endcsname}{#2}%
+ }%
+ }{%
+ \expandafter\expandafter\expandafter\l@addto@macro
+ \csname scr@fnt@#1\endcsname{#2}%
+ }%
+ \@ifundefined{scr@fnt@wrn@#1}{}{%
+ \PackageWarning{scrkbase}{%
+ \csname scr@fnt@wrn@#1\endcsname{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usekomafont}
+% \changes{v2.8p}{2001/09/28}{neu}^^A
+% \changes{v2.96}{2006/08/18}{Benutzung eines Fontalias korrigiert}^^A
+% \changes{v3.05a}{2010/03/24}{nach \textsf{scrkbase} verschoben}
+% Mit Hilfe dieses Makros kann auf die Schriftart von
+% \KOMAScript-Elementen umgeschaltet werden.
+% \begin{macrocode}
+\newcommand*{\usekomafont}[1]{%
+ \@ifundefined{scr@fnt@#1}{%
+ \@ifundefined{scr@fnt@instead@#1}{%
+ \PackageError{scrkbase}{%
+ font of element `#1' can't be used%
+ }{%
+ You've told me to use the font selection of the
+ element,\MessageBreak
+ but either no such element is known by
+ KOMA-Script\MessageBreak
+ or the element does not use a special font selection%
+ }%
+ }{%
+ \PackageInfo{scrkbase}{%
+ You've told me to use the font selection of the
+ element\MessageBreak
+ `#1' that is an alias of element `\csname
+ scr@fnt@instead@#1\endcsname'\MessageBreak
+ }%
+ \expandafter\expandafter\expandafter\usekomafont
+ \expandafter\expandafter\expandafter{%
+ \csname scr@fnt@instead@#1\endcsname}%
+ }%
+ }{%
+ \@nameuse{scr@fnt@#1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usesizeofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.17}{2015/04/03}{robustere Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{robustere Neuimplementierung}^^A
+% \begin{macro}{\usefamilyofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.17}{2015/04/03}{basiert auf robusterer Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{basiert auf robusterer Neuimplementierung}^^A
+% \begin{macro}{\useseriesofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.17}{2015/04/03}{basiert auf robusterer Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{basiert auf robusterer Neuimplementierung}^^A
+% \begin{macro}{\useshapeofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.16a}{2015/02/20}{Makroname korrigiert}^^A
+% \changes{v3.17}{2015/04/03}{basiert auf robusterer Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{basiert auf robusterer Neuimplementierung}^^A
+% \begin{macro}{\useencodingofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.17}{2015/04/03}{basiert auf robusterer Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{basiert auf robusterer Neuimplementierung}^^A
+% \begin{macro}{\usefontofkomafont}
+% \changes{v3.12}{2013/03/30}{neu}^^A
+% \changes{v3.17}{2015/04/03}{robustere Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{robustere Neuimplementierung}^^A
+% Manchmal wollen die Leute tatsächlich gar nicht den kompletten Font eines
+% Elements, sondern nur einen Teilaspekt davon. Aber Version~3.12 wird das mit
+% Hilfe neuer Anweisungen unterstützt.
+% \begin{macrocode}
+\newcommand*{\usesizeofkomafont}[1]{%
+ \begingroup
+ \scr@prepareforkomafont
+ \def\selectfont{%
+ \global\let\g@scr@f@size\f@size
+ \global\let\g@scr@f@baselineskip\f@baselineskip
+ \global\let\g@scr@f@linespread\f@linespread
+ }%
+ \selectfont
+ \sbox\@tempboxa{%
+ \usekomafont{#1}{\relax}%
+ }%
+ \endgroup
+ \linespread{\g@scr@f@linespread}%
+ \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}%
+ \selectfont
+}
+\newcommand*{\usefamilyofkomafont}{\use@ofkomafont{family}}
+\newcommand*{\useseriesofkomafont}{\use@ofkomafont{series}}
+\newcommand*{\useshapeofkomafont}{\use@ofkomafont{shape}}
+\newcommand*{\useencodingofkomafont}{\use@ofkomafont{encoding}}
+\newcommand*{\usefontofkomafont}[1]{%
+ \begingroup
+ \scr@prepareforkomafont
+ \def\selectfont{%
+ \global\let\g@scr@f@encoding\f@encoding
+ \global\let\g@scr@f@family\f@family
+ \global\let\g@scr@f@series\f@series
+ \global\let\g@scr@f@shape\f@shape
+ \global\let\g@scr@f@size\f@size
+ \global\let\g@scr@f@baselineskip\f@baselineskip
+ \global\let\g@scr@f@linespread\f@linespread
+ }%
+ \selectfont
+ \sbox\@tempboxa{%
+ \usekomafont{#1}{\relax}%
+ }%
+ \endgroup
+ \linespread{\g@scr@f@linespread}%
+ \fontsize{\g@scr@f@size}{\g@scr@f@baselineskip}%
+ \usefont{\g@scr@f@encoding}{\g@scr@f@family}{\g@scr@f@series}{\g@scr@f@shape}%
+}
+% \end{macrocode}
+% \begin{macro}{\use@ofkomafont}
+% \changes{v3.12}{2013/03/30}{neu (intern)}^^A
+% \changes{v3.17}{2015/04/03}{robustere Neuimplementierung}^^A
+% \changes{v3.24}{2017/05/06}{robustere Neuimplementierung}^^A
+% Kleines Hilfsmakro für all diese Anweisungen bis auf die erste und die letzte.
+% \begin{macrocode}
+\newcommand*{\use@ofkomafont}[2]{%
+ \begingroup
+ \scr@prepareforkomafont
+ \def\selectfont{%
+ \global\expandafter\let\csname g@scr@f@#1\expandafter\endcsname
+ \csname f@#1\endcsname
+ }%
+ \selectfont
+ \sbox\@tempboxa{%
+ \usekomafont{#2}{\relax}%
+ }%
+ \endgroup
+ \@nameuse{font#1}{\csname g@scr@f@#1\endcsname}%
+ \selectfont
+}
+% \end{macrocode}
+% \begin{macro}{\g@scr@usefont}
+% \changes{v3.17}{2015/04/03}{neu (intern)}^^A
+% \changes{v3.24}{2017/05/06}{entfernt}^^A
+% \end{macro}^^A \g@scr@usefont
+% \begin{macro}{\g@scr@f@encoding}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@family}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@series}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@shape}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@size}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@baselineskip}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macro}{\g@scr@f@linespread}
+% \changes{v3.24}{2017/05/06}{neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\g@scr@f@encoding}{}\let\g@scr@f@encoding\f@encoding
+\newcommand*{\g@scr@f@family}{}\let\g@scr@f@family\f@family
+\newcommand*{\g@scr@f@series}{}\let\g@scr@f@series\f@series
+\newcommand*{\g@scr@f@shape}{}\let\g@scr@f@shape\f@shape
+\newcommand*{\g@scr@f@size}{}\let\g@scr@f@size\f@size
+\newcommand*{\g@scr@f@baselineskip}{}\let\g@scr@f@baselineskip\f@baselineskip
+\newcommand*{\g@scr@f@linespread}{}\let\g@scr@f@linespread\f@linespread
+% \end{macrocode}
+% \end{macro}^^A \g@scr@f@linespread
+% \end{macro}^^A \g@scr@f@family
+% \end{macro}^^A \g@scr@f@series
+% \end{macro}^^A \g@scr@f@shape
+% \end{macro}^^A \g@scr@f@size
+% \end{macro}^^A \g@scr@f@baselineskip
+% \end{macro}^^A \g@scr@f@linespread
+% \begin{macro}{\scr@komafontrelaxlist}
+% \changes{v3.17}{2015/04/03}{neu (intern)}^^A
+% \changes{v3.24}{2017/05/05}{\cs{uppercase} und \cs{lowercase} entfernt}^^A
+% \changes{v3.24}{2017/05/05}{\cs{MakeUppercase} und \cs{MakeLowercase} nach
+% \cs{scr@komafontonearglist} verschoben}^^A
+% Hilfsmakro mit einer |\do|-Liste aller Makros, die in obigen Font-Makros vor
+% der Anwendung des Fonts |\relax| verwenden sollen.
+% \begin{macrocode}
+\newcommand*{\scr@komafontrelaxlist}{%
+ \do\normalcolor
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@komafontrelaxlist
+% \begin{macro}{scr@komafontgobblelist}
+% \changes{v3.19}{2015/08/20}{neu (intern)}^^A
+% Wie \cs{scr@komafontrelaxlist} nur dass |\@gobble| statt |\relax| verwendet
+% wird.
+% \begin{macrocode}
+\newcommand*{\scr@komafontgobblelist}{%
+ \do\color
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@komafontgobblelist
+% \begin{macro}{\scr@komafontonearglist}
+% \changes{v3.24}{2017/05/05}{neu (intern)}^^A
+% Hilfsmakro mit einer |\do|-Liste aller Makros, die in obige Font-Makros
+% vor der Anwendung des Fonts |\@firstofone| verwenden sollen.
+% \begin{macrocode}
+\newcommand*{\scr@komafontonearglist}{%
+ \do\MakeUppercase \do\MakeLowercase
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@prepareforkomafont}
+% \changes{v3.17}{2015/04/03}{neu (intern)}^^A
+% \changes{v3.19}{2015/08/20}{abarbeiten von \cs{scr@komafontgobblelist}}^^A
+% \changes{v3.24}{2017/05/05}{abarbeiten von \cs{scr@komafontonearglist}}^^A
+% Hilfsmakro, das die Vorbereitungen für die obigen Font-Makros trifft. In der
+% Voreinstellung ist das lediglich die Anwendung der |\do|-Liste, so dass die
+% dort angegebenen Makros alle |\relax| bzw. |\@gobble| werden. Da die
+% Anweisung dazu |\do| umdefiniert, sollte die Anweisung immer in einer Gruppe
+% eingeschlossen werden.
+% \begin{macrocode}
+\newcommand*{\scr@prepareforkomafont}{%
+ \long\def\do##1{\let##1\relax}\scr@komafontrelaxlist
+ \long\def\do##1{\let##1\@gobble}\scr@komafontgobblelist
+ \long\def\do##1{\let##1\@firstofone}\scr@komafontonearglist
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@prepareforkomafont
+% \begin{macro}{\addtokomafontrelaxlist}
+% \changes{v3.17}{2015/04/03}{Neu}
+% Diese Anweisung erlaubt es genau ein Makro der obigen |\do|-Liste
+% hinzuzufügen.
+% \begin{macrocode}
+\newcommand*{\addtokomafontrelaxlist}[1]{%
+ \l@addto@macro\scr@komafontrelaxlist{\do#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \addtokomafontrelaxlist
+% \begin{macro}{\addtokomafontgobblelist}
+% \changes{v3.19}{2015/08/20}{Neu}
+% Diese Anweisung erlaubt es genau ein Makro der obigen |\do|-Liste
+% hinzuzufügen.
+% \begin{macrocode}
+\newcommand*{\addtokomafontgobblelist}[1]{%
+ \l@addto@macro\scr@komafontgobblelist{\do#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \addtokomafontgobblelist
+% \begin{macro}{\addtokomafontonearglist}
+% \changes{v3.24}{2017/05/05}{Neu}
+% Diese Anweisung erlaubt es genau ein Makro der obigen |\do|-Liste
+% hinzuzufügen
+% \begin{macrocode}
+\newcommand*{\addtokomafontonearglist}[1]{%
+ \l@addto@macro\scr@komafontonearglist{\do#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \addtokonafontonearglist
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Um dann ein Element zu definieren, definiert man zunächst ein
+% Makro, das die Schriftart enthält. Dann definiert man
+% \cs{scr@fnt@\emph{Elementname}}. Wobei der Inhalt dieses Makros das
+% Makro ist, das die Schriftart speichert. Damit ist das Element
+% definiert. Soll ein Element durch ein anderes Element gesteuert
+% werden, so definiert man stattdessen
+% \cs{scr@fnt@instead@\emph{Elementname}}, wobei der Inhalt des Makros
+% dann der Name jenes anderen Elements ist. Soll beim Ändern der
+% Schrift eines Elements eine zusätzliche Warnung ausgegeben werden,
+% so kann der Text dieser Warnung in
+% \cs{scr@fnt@wrn@\emph{Elementname}} abgelegt werden. Die Warnung wird dann
+% als Befehl mit einem Argument definiert. Also alles
+% eigentlich ganz einfach. Damit es noch einfacher wird, ein paar
+% Hilfsmakros:
+%
+% \begin{macro}{\newkomafont}
+% \changes{v2.95}{2004/07/21}{neu}^^A
+% \changes{v3.05a}{2010/03/24}{nach \textsf{scrkbase} verschoben}
+% \changes{v3.11c}{2013/02/18}{die Warnung hat ein Argument}^^A
+% \changes{v3.25}{2017/12/08}{Warnung, wenn bereits als Alias definiert}^^A
+% Mit \cs{newkomafont} wird ein neues Element definiert. Das erste optionale
+% Argument ist dabei die optionale Warnung. Ist dieses nicht gesetzt oder
+% \cs{relax}, so wird keine Warnung definiert. Das erste obligatorische
+% Argument ist der Name des Elements. Als letztes folgt die Voreinstellung für
+% die Schrift dieses Elements. Als Fontmakro wird übrigens
+% \cs{@\emph{Elementname}font} definiert.
+% \begin{macrocode}
+\newcommand*{\newkomafont}[3][\relax]{%
+ \scr@ifundefinedorrelax{scr@fnt@instead@#2}{}{%
+ \PackageWarning{scrkbase}{%
+ Making stand-alone element `#2' from\MessageBreak
+ alias to `\@nameuse{scr@fnt@instead@#2}'
+ }%
+ \expandafter\let\csname scr@fnt@instead@#2\endcsname\relax
+ }%
+ \expandafter\newcommand\expandafter*\csname @#2font\endcsname{#3}%
+ \expandafter\expandafter\expandafter\newcommand
+ \expandafter\expandafter\expandafter*%
+ \expandafter\csname scr@fnt@#2\expandafter\endcsname\expandafter{%
+ \csname @#2font\endcsname%
+ }%
+ \ifx\relax#1\relax\else
+ \expandafter\newcommand\expandafter*\csname scr@fnt@wrn@#2\endcsname[1]{#1}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\aliaskomafont}
+% \changes{v2.95}{2004/07/21}{neu}^^A
+% \changes{v3.05a}{2010/03/24}{nach \textsf{scrkbase} verschoben}^^A
+% \changes{v3.25}{2017/12/08}{Warnung, wenn bereits als Font definiert}^^A
+% Mit \cs{aliaskomafont} wird hingegen einfach ein Alias definiert. Dieser
+% Befehl kennt zwei Argumente: der Name des Elements und der Names des
+% Elements, das stattdessen verwendet werden soll.
+% \begin{macrocode}
+\newcommand*{\aliaskomafont}[2]{%
+ \scr@ifundefinedorrelax{scr@fnt@#1}{}{%
+ \PackageWarning{scrkbase}{%
+ Redefining stand alone element `#1' as\MessageBreak
+ alias to `#2'%
+ }
+ \expandafter\let\csname scr@fnt@#1\endcsname\relax
+ }%
+ \scr@ifundefinedorrelax{scr@fnt@wrn@#1}{}{%
+ \expandafter\let\csname scr@fnt@wrn@#1\encsname\relax
+ }
+ \expandafter\newcommand\expandafter*\csname scr@fnt@instead@#1\endcsname{%
+ #2%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</scrkbase>
+% \fi
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-fonts.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-footnotes.dtx b/macros/latex/contrib/koma-script/source/scrkernel-footnotes.dtx
new file mode 100644
index 0000000000..8c06f3c78b
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-footnotes.dtx
@@ -0,0 +1,695 @@
+% \CheckSum{476}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-footnotes.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-footnotes.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-footnotes.dtx 2979 2018-04-17 06:01:18Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-04-17 08:01:18 +0200 (Tue, 17 Apr 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-footnotes.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (footnotes)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-footnotes.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Fußnoten}
+%
+% Die Fußnotengestaltung in \KOMAScript{} basiert auf einem Hinweis
+% aus dem dokumentierten \LaTeX-Kern.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Option}
+%
+% \begin{option}{footnotes}
+% \changes{v2.98c}{2008/02/01}{Neue Option für Mehrfachfußnoten}^^A
+% \changes{v3.10}{2011/09/13}{\cs{let} durch \cs{def} ersetzt, damit die
+% Option auch als Klassenoption funktioniert}^^A
+% \changes{v3.12}{2013/03/05}{Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/11}{interne Wert-Speicherung}^^A
+% Mehrfachfußnoten gibt es dann, wenn zu einer Textstelle mehrere Fußnoten
+% hintereinander gesetzt werden. Normalerweise werden die einfach ohne
+% Abstand hintereinander geklatscht. Man kann dann aber die beiden Fußnoten
+% 1 und 2 beispielsweise nicht von der Fußnote 12 unterscheiden. Besser ist
+% es, wenn mehrere Fußnoten automatisch durch ein Trennzeichen getrennt
+% werden. Die Funktion ist \textsf{footmisc} entnommen und sollte inklusive
+% Ein- und Ausschalten auch zusammen mit diesem Paket funktionieren.
+% \begin{macrocode}
+\KOMA@key{footnotes}{%
+ \ifx\@footnotemark\scr@saved@footnotemark
+ \else
+ \ifx\@footnotemark\scr@footnotemark
+ \else
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package> \PackageWarning{scrextend}{%
+ Change of `\string\@footnotemark' detected!\MessageBreak
+ Use of `footnotes=#1' may break\MessageBreak
+ another package!\MessageBreak
+ Maybe you should remove the usage of\MessageBreak
+ option `footnotes=#1'}%
+ \fi
+ \fi
+ \ifstr{#1}{multiple}{%
+ \let\@footnotemark\scr@footnotemark
+ \def\FN@mf@prepare{\scr@mf@prepare}%
+ \def\scr@footmisc@options{multiple}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{multiple}%
+ }{%
+ \ifstr{#1}{nomultiple}{%
+ \let\@footnotemark\scr@saved@footnotemark
+ \let\FN@mf@prepare\relax
+ \let\scr@footmisc@options\@empty
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{nomultiple}%
+ }{%
+ \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}%
+ }%
+ }%
+}
+\AtBeginDocument{%
+ \ifx\@footnotemark\scr@saved@footnotemark
+ \KOMA@kav@removekey{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{nomultiple}%
+ \else\ifx\@footnotemark\scr@footnotemark
+ \KOMA@kav@removekey{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{multiple}%
+ \fi\fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@footmisc@options}
+% \changes{v2.98c}{2008/02/14}{Neuer (intern)}^^A
+% Für etwas mehr Kompatibilität mit \textsf{footmisc}, wird die aktuelle
+% Einstellung der \texttt{multifootnotes} an das Paket weitergereicht.
+% \begin{macrocode}
+\newcommand*{\scr@footmisc@options}{}
+\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@saved@footnotemark}
+% \changes{v2.98c}{2008/02/01}{Neu (intern)}^^A
+% \begin{macro}{\scr@footnotemark}
+% \changes{v2.98c}{2008/02/01}{Neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\scr@saved@footnotemark}{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
+ \@makefnmark
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+\expandafter\CheckCommand\expandafter*\expandafter\@footnotemark
+\expandafter{\scr@saved@footnotemark}
+\newcommand*{\scr@footnotemark}{%
+ \leavevmode
+ \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi
+ \@makefnmark
+ \csname FN@mf@prepare\endcsname
+ \ifhmode\spacefactor\@x@sf\fi
+ \relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Definitionen für Fußnoten}
+%
+% \begin{macro}{\footnoterule}
+% \changes{v2.3a}{1995/07/08}{\cs{@width} verwendet}
+% \changes{v2.8q}{2002/02/06}{\cs{raggedbottom}-Verbesserung
+% eingefügt}
+% \changes{v2.95}{2002/01/07}{\texttt{.05fil} statt
+% \texttt{.005fil}}
+% \changes{v3.06}{2010/04/03}{die neuen Längenmakros werden genutzt}^^A
+% \changes{v3.07}{2010/09/14}{neues Font-Element \texttt{footnoterule} wird
+% verwendet}
+% Im Fall, dass \cs{raggedbottom} verwendet wird, die Fußnotenlinie
+% nach unten gedrückt. Dies funktioniert nur dann nicht, wenn
+% Abbildungen oder Tabellen mit der Option "`\texttt{b}"' an das Ende
+% der Seite gesetzt werden. \cs{raggedbottom} wird daran erkannt, dass
+% \cs{@textbottom} nicht \cs{relax} ist. Das kann natürlich auch
+% einmal schief gehen, ist dann aber auch nicht ganz so tragisch.
+% \begin{macrocode}
+%<*class>
+\renewcommand*\footnoterule{%
+ \normalsize\ftn@rule@test@values
+ \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax
+ \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi
+ {\usekomafont{footnoterule}{%
+ \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}%
+ \kern 2.6\p@}
+% \end{macrocode}
+% \begin{macro}{\ftn@rule@test@values}
+% \changes{v3.06}{2010/04/03}{neu (intern)}^^A
+% \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}^^A
+% Test, ob die Einstellungen für die Längen der Fußnotenlinie halbwegs
+% vernünftig sind.
+% \begin{macrocode}
+\newcommand*{\ftn@rule@test@values}{%
+ \ifdim\ftn@rule@height <\z@
+ \ClassWarning{\KOMAClassName}{%
+ You might get into trouble, because the\MessageBreak
+ height of the footnote rule has a value\MessageBreak
+ less than 0%
+ }%
+ \else
+ \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax
+ \ClassWarning{\KOMAClassName}{%
+ You might get into trouble, because the\MessageBreak
+ height of the footnote rule has a value\MessageBreak
+ greater than \the\dimexpr\skip\footins -2.6\p@\relax
+ }%
+ \fi
+ \fi
+ \ifdim\ftn@rule@width <\z@
+ \ClassWarning{\KOMAClassName}{%
+ You might get into trouble, because the width\MessageBreak
+ or length of the footnote rule has a value\MessageBreak
+ less than 0pt%
+ }%
+ \else
+ \ifdim\ftn@rule@width >\columnwidth
+ \ClassWarning{\KOMAClassName}{%
+ You might get into trouble, because the width\MessageBreak
+ or length of the footnote rule has a value\MessageBreak
+ greater than \string\columnwidth
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{KOMAfont}{footnoterule}
+% \changes{v3.07}{2010/09/14}{\texttt{footnoterule} ist ein eneues
+% Fontelement}
+% \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}^^A
+% Damit man die Farbe der Fußnotentrennlinie ändern kann, gibt es nun ein
+% eigenes Element dafür. Die Voreinstellung ist jedoch leer.
+% \begin{macrocode}
+\newkomafont{footnoterule}{}
+% \end{macrocode}
+% \end{KOMAfont}
+% \begin{macro}{\ftn@rule@width}
+% \changes{v3.06}{2010/04/03}{neu (intern)}^^A
+% \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}^^A
+% Die Länge der Fußnotentrennlinie.
+% \begin{macrocode}
+\newcommand*{\ftn@rule@width}{.4\columnwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ftn@rule@height}
+% \changes{v3.06}{2010/04/03}{neu (intern)}^^A
+% \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}^^A
+% Die Höhe der Fußnotentrennlinie (die Tiefe ist immer 0).
+% \begin{macrocode}
+\newcommand*{\ftn@rule@height}{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setfootnoterule}
+% \changes{v3.06}{2010/04/03}{neue Anweisung}^^A
+% \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}^^A
+% Das erste, optionale Argument ist die Höhe der Linie, das zweite nicht
+% optionale die Länge.
+% \begin{macrocode}
+\newcommand*{\setfootnoterule}[2][]{%
+ \ifstr{#1}{}{}{%
+ \renewcommand*{\ftn@rule@height}{#1}%
+ }%
+ \ifstr{#2}{}{}{%
+ \renewcommand*{\ftn@rule@width}{#2}%
+ }%
+ \ftn@rule@test@values
+}
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{Counter}{footnote}
+% Der Fußnotenzähler wird mit \cs{chapter} zurückgesetzt, die Fußnoten
+% werden also kapitelweise nummeriert.
+% \begin{macrocode}
+%<book|report>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{Counter}
+%
+% \begin{macro}{\deffootnote}
+% \changes{v2.4l}{1997/02/06}{neu}^^A
+% \changes{v2.95}{2002/07/09}{Absatzeinzug korrigiert}^^A
+% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempa} ersetzt}
+% \changes{v2.9q}{2004/01/31}{\cs{ftn@font} erlaubt aus Gr"unden der
+% Kompatibilität mit dem \textsl{footnote} Paket kein Argument mehr}^^A
+% \changes{v3.22}{2017/01/03}{Neuimplementierung}^^A
+% \changes{v3.23}{2017/03/27}{neues \cs{raggedfootnote} eingefügt}^^A
+% Dieses Makro zur Definition der Gestalt von Fußnoten erlaubt einen
+% optionalen und erwartet drei weitere Parameter. Der erste, optionale
+% gibt den Einzug der ersten Zeile des Fußnotentextes vom linken Rand
+% an. Die Fußnotenmarkierungen werden rechtsbündig in diesen Einzug
+% gesetzt. Der zweite, also erste nicht optionale Parameter gibt den
+% Einzug jeder weiteren Zeile des Fußnotentextes vom linken Rand
+% an. Fehlt der optionale Parameter so ist er gleich diesem. Der
+% dritte, also zweite nicht optionale Parameter gibt den zusätzlichen
+% Einzug jedes weiteren Absatzes einer Fußnote an. Der letzte
+% Parameter schließlich bestimmt die Ausgabe der Fußnotenmarkierung in
+% der Fußnote. Diese wird zusätzlich in eine \cs{hbox} gesetzt.
+% \begin{macrocode}
+\newcommand\deffootnote[4][]{%
+ \expandafter\ifnum\scr@v@is@ge{3.22}\relax
+ \long\def\@makefntext##1{%
+ \raggedfootnote
+ \leftskip #2
+ \l@addto@macro\@trivlist{%
+ \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi
+ }%
+ \parindent #3\noindent
+ \IfArgIsEmpty{#1}{}{%
+ \hskip \dimexpr #1-#2\relax
+ }%
+ \ftn@font\hbox to \z@{\hss\@@makefnmark}##1%
+ }%
+ \else
+%<class> \ClassInfo{\KOMAClassName}{%
+%<package> \PackageInfo{scrextend}{%
+ Using old \string\@makefntext\space due to compatibility
+ level\MessageBreak
+ less than 3.22}%
+ \long\def\@makefntext##1{%
+ \setlength{\@tempdimc}{#3}%
+ \def\@tempa{#1}\ifx\@tempa\@empty
+ \@setpar{\@@par
+ \@tempdima = \hsize
+ \addtolength{\@tempdima}{-#2}%
+ \parshape \@ne #2 \@tempdima}%
+ \else
+ \addtolength{\@tempdimc}{#2}%
+ \addtolength{\@tempdimc}{-#1}%
+ \@setpar{\@@par
+ \@tempdima = \hsize
+ \addtolength{\@tempdima}{-#1}%
+ \@tempdimb = \hsize
+ \addtolength{\@tempdimb}{-#2}%
+ \parshape \tw@ #1 \@tempdima #2 \@tempdimb
+ }%
+ \fi
+ \par
+ \parindent\@tempdimc\noindent
+ \ftn@font\hbox to \z@{\hss\@@makefnmark}##1%
+ }%
+ \fi
+% \end{macrocode}
+% \begin{macro}{\@@makefnmark}
+% \changes{v2.4l}{1997/02/06}{neu}^^A
+% Makro zum Setzen der Fußnotenmarkierung in der Fußnote:
+% \begin{macrocode}
+ \def\@@makefnmark{\hbox{\ftnm@font{#4}}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}^^A \@@makefnmark
+%
+% \begin{macro}{\raggedfootnote}
+% \changes{v3.23}{2017/03/27}{neue Anweisung}
+% Auf Wunsch von Falk kann man die Ausrichtrung des Fußnotentextes damit
+% beeinflussen. Die Voreinstellung ist leer also keine Änderung der
+% Ausrichtung.
+% \begin{macrocode}
+\newcommand*{\raggedfootnote}{}
+% \end{macrocode}
+% \end{macro}^^A \raggedfootnote
+%
+% \begin{macro}{\ftn@font}
+% \changes{v2.8q}{2001/11/16}{neu (intern)}^^A
+% \begin{macro}{\scr@fnt@footnote}
+% \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnote}}
+% \begin{macro}{\ftnm@font}
+% \changes{v2.8q}{2001/11/16}{neu (intern)}^^A
+% \begin{macro}{\scr@fnt@footnotenumber}
+% \changes{v2.8q}{2001/11/16}{neues Element
+% \texttt{footnotenumber}}
+% \begin{macro}{\scr@fnt@footnotenlabel}
+% \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnotelabel}}
+% \begin{macro}{\scr@fnt@instead@footnotetext}
+% \changes{v2.8q}{2001/11/16}{neuer Ersatz für Element
+% \texttt{footnotetext}}
+% Das erste Element gibt die Schrift an, in der die Fußnote gesetzt
+% wird. Davon abweichend kann mit dem zweiten Element die Schriftart
+% für die Fußnotennummer getrennt angegeben werden. Aufgrund der
+% Definition kann bei letzteren auch ein Makro verwendet werden, das ein
+% Argument erwartet.
+% \begin{macrocode}
+\newcommand*{\ftn@font}{\normalfont}
+\newcommand*{\scr@fnt@footnote}{\ftn@font}
+\newcommand*{\ftnm@font}{}
+\newcommand*{\scr@fnt@footnotenumber}{\ftnm@font}
+\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font}
+\newcommand*{\scr@fnt@instead@footnotetext}{footnote}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\deffootnotemark}
+% \changes{v2.4l}{1997/02/06}{neu}^^A
+% Makro zur Definition der Fußnotenmarkierung im Text:
+% \begin{macrocode}
+\newcommand*\deffootnotemark[1]{%
+ \def\@makefnmark{\hbox{\ftntm@font{#1}}}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ftntm@font}
+% \changes{v2.8q}{2001/11/16}{neu (intern)}^^A
+% \begin{macro}{\scr@fnt@footnotereference}
+% \changes{v2.8q}{2001/11/16}{neues Element
+% \texttt{footnotereference}}
+% \begin{macro}{\scr@fnt@footnoteref}
+% \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnoteref}}
+% Dies ist die Schriftart der Fußnotenreferenz im Text. Auch hier kann
+% ggf. ein Makro verwendet werden, das ein Argument erwartet.
+% \begin{macrocode}
+\newcommand*{\ftntm@font}{}
+\newcommand*{\scr@fnt@footnotereference}{\ftntm@font}
+\newcommand*{\scr@fnt@footnoteref}{\ftntm@font}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\FN@mf@check}
+% \changes{v2.98c}{2008/02/01}{Neu (intern)}^^A
+% Dafür sorgen, dass hier ggf. der Trenner eingefügt wird.
+% \begin{macrocode}
+%<package>\providecommand*{\FN@mf@check}{%
+%<class>\newcommand*{\FN@mf@check}{%
+ \ifdim\lastkern=\multiplefootnotemarker\relax
+ \edef\@x@sf{\the\spacefactor}%
+ \unkern\multiplefootnoteseparator
+ \spacefactor\@x@sf\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@mf@prepare}
+% \changes{v2.98c}{2008/02/01}{Neu (intern)}^^A
+% Damit |\FN@mf@check| informiert ist, dass es etwas zu tun hat.
+% \begin{macrocode}
+\newcommand*{\scr@mf@prepare}{%
+ \kern-\multiplefootnotemarker
+ \kern\multiplefootnotemarker\relax
+}
+% \end{macro}
+% \begin{macro}{\F@mf@prepare}
+% \changes{v2.98c}{2008/02/14}{Neu (intern)}^^A
+% \changes{v3.25a}{2018/04/17}{Definition wird explizit vorgenommen}^^A
+% Aus Gründen der Kompatibilität mit \textsf{footmisc} wird das dann
+% vorsoglich auch noch definiert (und zwar als \cs{relax}, wenn es bisher noch
+% nicht definiert ist).
+\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@footnotetext}
+% \changes{v3.01a}{2008/11/22}{long}^^A
+% \begin{macro}{\scr@saved@footnotetext}
+% \changes{v2.98c}{2008/02/01}{Neu (intern)}^^A
+% \changes{v3.01a}{2008/11/22}{long}^^A
+% Auch hier muss dafür gesorgt werden, dass die Markierung erfolgt.
+% \begin{macrocode}
+\newcommand{\scr@saved@footnotetext}{}
+\let\scr@saved@footnotetext\@footnotetext
+\renewcommand{\@footnotetext}[1]{%
+ \scr@saved@footnotetext{#1}%
+ \csname FN@mf@prepare\endcsname
+}
+% \end{macrocode}
+%
+% Es muss auch dafür gesorgt werden, dass \textsf{footmisc} nicht unnötig
+% mit Warnung um sich wirft.
+% \begin{macrocode}
+\BeforePackage{footmisc}{%
+ \ifx\@footnotemark\scr@footnotemark
+ \let\@footnotemark\scr@saved@footnotemark
+ \fi
+ \let\@footnotetext\scr@saved@footnotetext
+}
+% \end{macrocode}
+%
+% \changes{v3.10}{2011/09/12}{Workaround für die zerstörerische Wirkung von
+% \textsf{setspace}}%
+% Außerdem zerstört das Paket \textsf{setspace} die Erweiterung von
+% \cs{@footnotetext}. Deshalb schalten wir sie vor dem Paket lieber gleich ab
+% und reaktivieren sie anschließend wieder:
+% \begin{macrocode}
+\BeforePackage{setspace}{%
+ \let\@footnotetext\scr@saved@footnotetext
+}
+\AfterPackage{setspace}{%
+ \let\scr@saved@footnotetext\@footnotetext
+ \renewcommand{\@footnotetext}[1]{%
+ \scr@saved@footnotetext{#1}%
+ \csname FN@mf@prepare\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\multiplefootnoteseparator}
+% \changes{v2.98c}{2008/02/01}{Neu}^^A
+% Das ist der formatierte Separator!
+% \begin{macrocode}
+\newcommand*{\multiplefootnoteseparator}{%
+ \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\multfootsep}
+% \changes{v2.98c}{2008/02/01}{Neu}^^A
+% Und hier \textsf{footmisc}-kompatibel unformatiert
+% \begin{macrocode}
+%<class>\newcommand*{\multfootsep}{,}
+%<package>\providecommand*{\multfootsep}{,}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\multiplefootnotemarker}
+% \changes{v2.98c}{2008/02/01}{Neu}^^A
+% \changes{v3.19}{2015/08/24}{im Paket mit \cs{providecommand} definieren}^^A
+% Das Markierungskerning wieder \textsf{footmisc}-kompatibel.
+% \begin{macrocode}
+%<class>\newcommand*{\multiplefootnotemarker}{3sp}
+%<package>\providecommand*{\multiplefootnotemarker}{3sp}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thefootnotemark}
+% \changes{v2.4l}{1997/02/06}{neu}^^A
+% Makro, damit \cs{@thefnmark} auf Anwenderebene verfügbar wird:
+% \begin{macrocode}
+%<class>\newcommand*{\thefootnotemark}{\@thefnmark}
+%<package>\providecommand*{\thefootnotemark}{\@thefnmark}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.4l}{1997/02/06}{Verwendung der neuen Makros zur
+% Fußnotengestaltgebung}^^A
+% \begin{macro}{\@makefnmark}
+% \changes{v3.10}{2011/09/27}{\textsf{scrextend} redefines \cs{@makefnmark}
+% to use \cs{thefootnotemark}}^^A
+% \begin{macrocode}
+%<*class>
+\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}}
+%</class>
+%<*package>
+\def\reserved@a{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+\ifx\reserved@a\@makefnmark
+%</package>
+\deffootnotemark{\textsuperscript{\thefootnotemark}}
+%<*package>
+\else
+ \IfFileExists{etoolbox.\@pkgextension}{%
+ \PackageInfo{scrextend}{%
+ unexpected definition of `\string\@makefnmark'.\MessageBreak
+ Trying to patch it%
+ }%
+ \RequirePackage{etoolbox}%
+ \patchcmd{\@makefnmark}{\@thefnmark}{\thefootnotemark}{%
+ \PackageInfo{scrextend}{patch seems to be successfull}%
+ }{%
+ \PackageWarning{scrextend}{%
+ patching `\string\@makefnmark' failed.\MessageBreak
+ Using hard coded redefinition%
+ }%
+ \deffootnotemark{\textsuperscript{\thefootnotemark}}%
+ }%
+ }{%
+ \PackageWarning{scrextend}{%
+ unexpected definition of `\string\@makefnmark'.\MessageBreak
+ Using hard coded redefintion%
+ }%
+ \deffootnotemark{\textsuperscript{\thefootnotemark}}%
+ }%
+\fi
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Fußnotenreferenz}
+%
+% \begin{macro}{\footref}
+% \changes{v2.98c}{2008/02/01}{Neue Anweisung}^^A
+% Damit man nicht nur zu diesem Zweck das Paket \textsf{footmisc} laden muss,
+% kann man jetzt auch mit \KOMAScript{} alleine Fußnoten setzen, die
+% Referenzen auf andere Fußnoten sind. Der Code stammt einerseits aus footmisc
+% andererseits auf der Usenet-Gruppe comp.text.tex. Wer den zuerst hatte, ist
+% für mich nicht mehr reproduzierbar. Jedenfalls steht er in footmisc unter
+% LPPL und \KOMAScript{} steht ebenfalls unter LPPL. Das sollte also im
+% Zweifelsfall nicht das Problem sein.
+% \begin{macrocode}
+%<class>\newcommand*{\footref}[1]{%
+%<package>\providecommand*{\footref}[1]{%
+ \begingroup
+ \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
+ \endgroup
+ \@footnotemark
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-footnotes.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-index.dtx b/macros/latex/contrib/koma-script/source/scrkernel-index.dtx
new file mode 100644
index 0000000000..d3e9cdd4c0
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-index.dtx
@@ -0,0 +1,449 @@
+% \CheckSum{242}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-index.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-index.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-index.dtx 3016 2018-09-03 11:40:59Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-09-03 13:40:59 +0200 (Mon, 03 Sep 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-index.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (index)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-index.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Index}
+%
+% Der Index unterscheidet sich bei \KOMAScript{} scheinbar nicht
+% wesentlich von dem, was die Standardklassen zu bieten haben. In
+% Wirklichkeit sind die Unterschiede jedoch erheblich.
+%
+% Briefe haben keinen Index.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Anweisungen und Einstellungen für die Optionen}
+%
+% Einige Anweisungen und Einstellungen werden bereits benötigt, bevor die
+% Optionen abgearbeitet werden.
+%
+% \begin{macro}{\idx@@heading}
+% \changes{v2.98c}{2008/03/04}{neu (intern)}^^A
+% \changes{v3.18}{2015/06/15}{Beachtung von \texttt{leveldown}}^^A
+% Diese Anweisung wird verwendet, um nur die Überschrift zu setzen (nichts
+% weiter!). Sie hat genau ein Argument, nämlich den Text der Überschrift und
+% wird innerhalb von |\idx@heading| verwendet.
+% \begin{macrocode}
+\newcommand*{\idx@@heading}{%
+ \ifidx@leveldown
+%<article> \expandafter\subsection
+%<book|report> \expandafter\section
+ \else
+%<article> \expandafter\section
+%<book|report> \expandafter\chapter
+ \fi*%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Optionen für den Index}
+%
+% \begin{option}{index}
+% \changes{v2.98c}{2008/03/04}{Neue Option}^^A
+% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}^^A
+% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{numbered}}^^A
+% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{leveldown}}^^A
+% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{standardlevel}}^^A
+% \begin{macro}{\idx@@heading}
+% Die Option sorgt dafür, dass der Index auch im Inhaltsverzeichnis
+% erscheint. Dazu wird das interne Makro \cs{idx@@heading} umdefiniert, über
+% das die Überschrift gesetzt und der Kolumnentitel angepasst wird.
+% \changes{v2.4c}{1996/04/04}{Kolumnentitel werden nun korrekt
+% behandelt}^^A
+% \changes{v2.4g}{1996/11/04}{Index auch bei \textsf{scrartcl}^^A
+% wieder zweispaltig}
+% \changes{v2.6c}{2000/06/10}{im Index kann nach der Überschrift
+% eine Präambel gesetzt werden}^^A
+% \changes{v2.7a}{2001/01/04}{für \textsf{scrbook} und
+% \textsf{scrreprt} die Link-Erzeugung mit \texttt{hyperref}
+% verbessert}
+% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
+% \texttt{theindex}-Umgebung verschoben}
+% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch
+% \cs{if@openright} ersetzt}
+% \changes{v2.98c}{2008/03/04}{statt \cs{idx@heading} wird nun
+% \cs{idx@@heading} umdefiniert}
+% \changes{v3.18}{2015/06/15}{Beachtung von \texttt{leveldown}}^^A
+% An dieser Stelle muss dafür gesorgt werden, dass im Falle von
+% \textsf{scrbook} und \textsf{scrreprt} das Makro \cs{@schapter}
+% verwendet wird. Damit dies hier möglich ist mussten tiefreifendere
+% Änderungen am \LaTeX-Kernel bzw. am Gliederungsbefehl \cs{chapter}
+% vorgenommen werden.
+% \begin{macro}{\ifidx@leveldown}
+% \changes{v3.18}{2015/06/15}{neuer Schalter (intern)}^^A
+% Für den ab Version~3.18neuen Wert \texttt{leveldown} und dessen
+% Gegenstück \texttt{standardlevel} wird außerdem ein Schalter benötigt.
+% \begin{macrocode}
+\newif\ifidx@leveldown
+\KOMA@key{index}{%
+ \KOMA@set@ncmdkey{index}{@tempa}{%
+ {notoc}{0},{nottotoc}{0},{default}{0},{plainheading}{0},%
+ {totoc}{1},{toc}{1},{notnumbered}{1},%
+ {numbered}{2},{totocnumbered}{2},{numberedtotoc}{2},{tocnumbered}{2},%
+ {numberedtoc}{2},%
+ {leveldown}{3},%
+ {standardlevel}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}%
+ \KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}%
+ \renewcommand*{\idx@@heading}{%
+ \ifidx@leveldown
+%<article> \expandafter\subsection
+%<book|report> \expandafter\section
+ \else
+%<article> \expandafter\section
+%<book|report> \expandafter\chapter
+ \fi*%
+ }%
+ \or
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{index}%
+ \KOMA@kav@add{.\KOMAClassFileName}{index}{toc}%
+ \renewcommand*{\idx@@heading}{%
+ \ifidx@leveldown
+%<article> \expandafter\subsection\expandafter*
+%<book|report> \expandafter\addsec
+ \else
+%<article> \expandafter\addsec
+%<book|report> \expandafter\addchap
+ \fi
+ }%
+ \or
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{noindex}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indexnumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{index}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{numbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{toc}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{indexnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{index}{numbered}%
+ \renewcommand*{\idx@@heading}{%
+ \ifidx@leveldown
+%<article> \expandafter\subsection
+%<book|report> \expandafter\section
+ \else
+%<article> \expandafter\section
+%<book|report> \expandafter\chapter
+ \fi
+ }%
+ \or
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{index}{leveldown}%
+ \idx@leveldowntrue
+ \or
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{index}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}%
+ \idx@leveldownfalse
+ \fi
+ \fi
+}
+\KOMA@kav@add{.\KOMAClassFileName}{toc}{noindex}
+\KOMA@kav@add{.\KOMAClassFileName}{index}{notoc}
+\KOMA@kav@add{.\KOMAClassFileName}{index}{standardlevel}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{idxtotoc}
+% \changes{v2.3h}{1995/01/21}{neue Option}^^A
+% \changes{v2.98c}{2008/03/04}{obsolete}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc}
+% \end{macrocode}
+% \end{option}
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Definitionen für den Index}
+%
+% \begin{macro}{\index@preamble}
+% \changes{v2.6c}{2000/06/10}{neu (intern)}^^A
+% \begin{macro}{\setindexpreamble}
+% \changes{v2.6c}{2000/06/10}{neu}^^A
+% \changes{v2.6d}{2000/07/20}{Befehl funktioniert nachdem \cs{let}^^A
+% durch \cs{newcommand*} ersetzt wurde}
+% \changes{v2.95}{2002/07/01}{\cs{let} und \cs{def}}
+% Analog zu \cs{bibpreamble} kann \cs{index@preamble} vom Benutzer mit
+% \cs{setindexpreamble} auf einen Text gesetzt werden, der nach der
+% Indexüberschrift eingefügt wird. Hier wird ein echtes internes Makro
+% verwendet, da nicht auf Kompatibilität geachtet werden muss.
+% \begin{macrocode}
+\newcommand*{\index@preamble}{}
+\let\index@preamble=\relax
+\newcommand{\setindexpreamble}[1]{\def\index@preamble{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\idx@heading}
+% \changes{v2.3h}{1995/01/21}{neu (intern)}^^A
+% \changes{v2.4c}{1995/04/04}{Kolumnentitel werden nun korrekt behandelt}^^A
+% \changes{v2.4g}{1996/11/04}{Index auch bei \texttt{scrartcl} wieder
+% zweispaltig}^^A
+% \changes{v2.6c}{2000/06/10}{Verwendung von \cs{index@preamble} eingefügt}^^A
+% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
+% \texttt{theindex}-Umgebung verschoben}^^A
+% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch \cs{if@openright}
+% ersetzt}^^A
+% \changes{v2.98c}{2008/03/04}{Verwendung von \cs{idx@@heading}}^^A
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}^^A
+% \changes{v3.10a}{2012/03/08}{Falsche Klammerung der letzten Änderung
+% behoben}^^A
+% \changes{v3.12}{2013/09/24}{Index wird nie in andere Verzeichnisse
+% eingetragen (außer Inhaltsverzeichnis)}^^A
+% \changes{v3.25}{2017/10/13}{\cs{@mkright} und \cs{@mkdouble} verwenden}^^A
+% Befehl zum Setzen der Überschrift des Indexes. Bis Version 2.7a sah diese
+% Definition so aus:
+% \begin{verbatim}
+% \newcommand*{\idx@heading}{%
+% \if@twoside\cleardoublepage\else\clearpage\fi%
+% \@mkboth{\indexname}{\indexname}%
+% \twocolumn[%
+% %<article> \section*%
+% %<report|book> \@makeschapterhead%
+% {\indexname}\index@preamble]
+% }
+% \end{verbatim}\vspace{-\baselineskip}
+% Dagegen ist grundsätzlich nichts zu sagen. Allerdings gibt es seit
+% Version 2.7b die neue Methode der Kapitel-Präambel, die extra
+% eingeführt wurde, um die \textsf{hyperref}-Links -- insbesondere
+% den des Index -- zumindest bei Verwendung von \texttt{hpdftex.def}
+% zu verbessern. Deshalb wurde die Implementierung entsprechend
+% abgeändert. Außerdem wurde das Setzen der Präambel aus
+% Konsistenzgründen in Version 2.7j übereinstimmten mit der
+% \texttt{thebibliography}-Umgebung in die \texttt{theindex}-Umgebung
+% verschoben.
+% \changes{v3.26}{2018/09/03}{usage of \cs{addsecmark} or \cs{subsectionmark}
+% instead of \cs{@mkright}}^^A
+% \begin{macrocode}
+\newcommand*{\idx@heading}{%
+%<report|book> \if@openright\cleardoublepage\else\clearpage\fi%
+ \twocolumn[%
+%<report|book> \@chaptertolistsfalse
+ \idx@@heading{\indexname}]%
+ \ifidx@leveldown
+%<report|book> \addsecmark{\indexname}%
+%<*article>
+ \begingroup
+ \c@secnumdepth=-\maxdimen
+ \subsectionmark{\indexname}%
+ \endgroup
+%</article>
+ \else
+ \@mkdouble{\MakeMarkcase{\indexname}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{theindex}
+% \changes{v2.8d}{2001/07/05}{\cs{indexpagestyle} statt
+% \texttt{plain}}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{idx@heading}}
+% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
+% \texttt{theindex}-Umgebung verschoben}
+% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn nicht leer}^^A
+% Der Index ist wie üblich definiert.
+% \begin{macrocode}
+\newenvironment{theindex}{%
+ \if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+%<book|report> \setchapterpreamble{\index@preamble}%
+ \idx@heading%
+%<article> \index@preamble\par\nobreak
+ \ifx\indexpagestyle\@empty\else\thispagestyle{\indexpagestyle}\fi
+ \parindent\z@
+ \setlength{\parskip}{\z@ \@plus .3\p@}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \let\item\@idxitem
+}{%
+ \if@restonecol\onecolumn\else\clearpage\fi
+}
+% \end{macrocode}
+% \begin{macro}{\@idxitem}
+% Hier haben wird den Anfang eines Eintrags in den Index
+% \begin{macro}{\subitem}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart
+% Speicher}
+% \begin{macro}{\subsubitem}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart
+% Speicher}
+% \begin{macro}{\indexspace}
+% und ebenso Unter- und Unteruntereinträge sowie ein vertikaler
+% Abstand.
+% \begin{macrocode}
+\newcommand*\@idxitem{\par\hangindent 40\p@}
+% \begin{macrocode}
+\newcommand*\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand*\indexspace{%
+ \par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+%
+%
+% \subsection{Standardbezeichner}
+%
+% \begin{macro}{\indexname}
+% Names des Index:
+% \begin{macrocode}
+\newcommand*\indexname{Index}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-index.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-language.dtx b/macros/latex/contrib/koma-script/source/scrkernel-language.dtx
new file mode 100644
index 0000000000..6181653de8
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-language.dtx
@@ -0,0 +1,1709 @@
+% \CheckSum{2080}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-language.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-language.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-language.dtx 3011 2018-08-29 07:35:17Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-language.dtx}
+ [\filedate\space\filerevision\space
+ KOMA-Script (language)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-language.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Sprachabhängigkeiten}
+%
+% Aus verschiedenen Gründen ist es nicht so einfach, neue,
+% sprachabhängige Begriffe zu definieren oder vorhandene
+% umzudefinieren. Mit \KOMAScript{} geht das etwas einfacher.
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Option}
+% Für Briefe gibt es die Möglichkeit, zwischen symbolischem und numerischem
+% Datum umzuschalten.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{option}{numericaldate}
+% \changes{v2.8q}{2001/10/07}{Neue Option (an Stelle von
+% \texttt{scrdate} und \texttt{orgdate})}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.17}{2015/03/10}{Speicherung des aktuellen Werts}^^A
+% Es kann zwischen dem Originaldatum, das beispielsweise von
+% \texttt{german.sty} definiert wird, und dem \texttt{scrlttr2}-Datum
+% gewählt werden. Natürlich gibt es diese Optionen nur bei Briefen.
+% \begin{macro}{\if@orgdate}
+% \begin{macro}{\@orgdatetrue}
+% \begin{macro}{\@orgdatefalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@orgdate\@orgdatetrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Dummerweise besitzt der alte Schalter genau die gegenteilige
+% Bedeutung der Option, deshalb muss der Schalter zweimal invertiert
+% werden.
+% \begin{macrocode}
+\KOMA@key{numericaldate}[true]{%
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+ \KOMA@set@ifkey{numericaldate}{@orgdate}{#1}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&letter> scrletter.\scr@pkgextension
+ }{numericaldate}{@orgdate}%
+ \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&letter> scrletter.\scr@pkgextension
+}{orgdate}{true}
+% \end{macrocode}
+% \begin{option}{scrdate}
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{option}{orgdate}
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{scrdate}{numericaldate=true}
+\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Definitionen für sprachabhängige Bezeichner}
+%
+% Dieser Teil ist so grundlegend, dass er ab Version~3.00 in das Paket
+% \textsf{scrbase} ausgelagert wird.
+%
+% \iffalse
+%<*package&base>
+% \fi
+%
+% \begin{macro}{\defcaptionname}
+% \changes{3.12}{2013/07/29}{neu}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Für eine Reihe von Sprachen (durch Komma separierte Liste in \#1)
+% wird ein Makro (\#2) auf einen bestimmten Inhalt (\#3) definiert. Die
+% Sternversion verwendet dabei zwingend \cs{extras\meta{Sprache}}, während
+% die Normalversion \cs{captions\meta{Sprache}} verwendet, außer wenn der
+% Begriff bereits in \cs{extras\meta{Sprache}} definiert ist. Falls der
+% Befehl in der Dokumentpräambel aufgerufen wird, wird er verzögert.
+% \begin{macrocode}
+\newcommand*{\defcaptionname}{%
+ \kernel@ifstar\scr@def@scaptionname\scr@def@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@def@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Die Sternvariante von \cs{defcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@def@scaptionname}[3]{%
+% \end{macrocode}
+% Als erstes findet die Verzögerung bis \cs{begin{document}} statt.
+% \begin{macrocode}
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Dann arbeiten wir in einer lokalen Schleife alle Sprachen aus Argument \#1
+% ab und \dots
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+% \end{macrocode}
+% \dots\ fügen dabei \cs{extras\meta{Sprache}} die Definition \#3 für \#2
+% hinzu.
+% \begin{macrocode}
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\defcaptionname}%
+ \else
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+% \end{macrocode}
+% Wenn etwas hinzugefügt wurde, muss außerdem \cs{reserved@b} so umdefiniert
+% werden, dass dies ggf. auch unmittelbar Geltung bekommt.
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@def@activateactivelanguageaftergroup}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Wenn die Sprache in \cs{reserved@a} die aktuelle Sprache \cs{languagename}
+% ist oder die Sprachnummer zur Sprache \cs{reserved@a} die aktuelle
+% Sprachnummer \cs{language} ist, dann wird \cs{reserved@b} so umdefiniert,
+% dass es die aktuelle Gruppe beendet und \#1 als \#2 definiert.
+% \begin{macrocode}
+\newcommand*{\scr@def@activateactivelanguageaftergroup}[2]{%
+ \@onelevel@sanitize\languagename
+ \@tempswafalse
+%<trace> \typeout{compare `\languagename' and `\scr@reserved@a'}%
+ \ifx\languagename\scr@reserved@a
+ \@tempswatrue
+ \else
+% \end{macrocode}
+% \changes{v3.20}{2016/01/05}{Sonderbehandlung für \textsf{polyglossia}}^^A
+% Bei Verwendung von \textsf{polyglossia} gibt es die Besonderheit, dass alle
+% Deutschen Sprachen als \texttt{german} definiert sind. Die Unterscheidung
+% zwischen Deutsch, Österreichisch und Schweizerisch geschieht über zwei
+% boolsche Schalter. Für die Unterscheidung alte oder neue Rechtschreibung
+% existiert ein weiterer Schalter. Mit ein paar trickreichen Vergleichen kann
+% man das zusätzlich behandeln. Natürlich muss es so gemacht werden, dass es
+% mit babel trotzdem noch funktioniert.
+% \begin{macrocode}
+ \edef\scr@reserved@b{\detokenize{german}}%
+ \ifx\languagename\scr@reserved@b
+ \edef\scr@reserved@b{%
+ \expandafter\ifx\csname if@german@oldspelling\expandafter\endcsname
+ \csname iffalse\endcsname n\fi
+ \expandafter\ifx\csname if@austrian@locale\expandafter\endcsname
+ \csname iftrue\endcsname austrian\else
+ \expandafter\ifx\csname if@swiss@locale\expandafter\endcsname
+ \csname iftrue\endcsname swiss\else german\fi\fi
+ }%
+%<trace> \typeout{compare also `\scr@reserved@a' and `\scr@reserved@b'}%
+ \@onelevel@sanitize\scr@reserved@b
+ \ifx\scr@reserved@a\scr@reserved@b \@tempswatrue\fi
+ \fi
+ \if@tempswa\else
+ \ifcsname l@\scr@reserved@a\endcsname
+ \expandafter\ifnum\csname l@\scr@reserved@a\endcsname=\language
+ \@tempswatrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@tempswa
+ \def\reserved@b{\endgroup
+ \PackageInfo{scrbase}{activating \languagename\space \string#1}%
+ \def#1{#2}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@def@activateactivelanguageaftergroup
+% \end{macro}^^A \scr@def@scaptionname
+% \begin{macro}{\scr@def@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% Die Normalvariante von \cs{defcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@def@captionname}[3]{%
+% \end{macrocode}
+% Als erstes findet die Verzögerung bis \cs{begin{document}} statt.
+% \begin{macrocode}
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+% \end{macrocode}
+% Dann arbeiten wir in einer lokalen Schleife alle Sprachen aus Argument \#1
+% ab und \dots
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\defcaptionname}%
+ \else
+% \end{macrocode}
+% \dots\ testen dabei, ob \#2 bereits in \cs{extras\meta{Sprache}} definiert
+% ist.
+% \begin{macrocode}
+ \@tempswafalse
+ \begingroup
+ \@tempswafalse
+ \ifcsname extras\scr@reserved@a\endcsname
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax \else \aftergroup\@tempswatrue \fi
+ \fi
+ \endgroup
+% \end{macrocode}
+% Wenn \#2 bereits in \cs{extras\meta{Sprache}} definiert ist, \dots
+% \begin{macrocode}
+ \if@tempswa
+% \end{macrocode}
+% \dots\ dann definieren wir es genau hier neu,
+% \begin{macrocode}
+ \expandafter\g@addto@macro\csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \else
+% \end{macrocode}
+% \dots\ anderenfalls definieren wir es in \cs{captions\meta{Sprache}} neu.
+% \begin{macrocode}
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \fi
+% \end{macrocode}
+% Wenn etwas hinzugefügt wurde, muss außerdem \cs{reserved@b} so umdefiniert
+% werden, dass dies ggf. auch unmittelbar Geltung bekommt.
+% \begin{macrocode}
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@def@captionname
+% \end{macro}^^A \defcaptionname
+%
+% \changes{v3.20}{2016/01/05}{Neue Sonderbehandlung für
+% \texttt{polyglossia}}^^A
+% Bei Verwendung von \textsf{polyglossia} haben wir nun bei den Sprachen
+% \texttt{austrian}, \texttt{swiss}, \texttt{ngerman}, \texttt{naustrian} und
+% \texttt{nswiss} das Problem, dass diese dort alle in \cs{captionsgerman}
+% vermischt sind. Es werden also also beim Umschalten eventuell gar nicht die
+% richtigen Befehle ausgeführt. Das lässt sich beispielsweise beheben, indem
+% in \cs{init@extra@german} dafür gesorgt wid, dass eben diese doch noch
+% ausgeführt werden:
+% \begin{macrocode}
+\AfterPackage*{polyglossia}{%
+ \scr@ifundefinedorrelax{init@extras@german}{%
+ \AfterFile{gloss-german.ldf}%
+ }{%
+ \@firstofone
+ }%
+ {%
+ \providecommand*\captionsngerman{}%
+ \providecommand*\captionsaustrian{}%
+ \providecommand*\captionsnaustrian{}%
+ \providecommand*\captionsswiss{}%
+ \providecommand*\captionsnswiss{}%
+ \csgappto{init@extras@german}{%
+ \if@austrian@locale
+ \csuse{captions\if@german@oldspelling\else n\fi austrian}%
+ \else
+ \if@swiss@locale
+ \csuse{captions\if@german@oldspelling\else n\fi swiss}%
+ \else
+ \if@german@oldspelling\else \csuse{captionsngerman}\fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+% Ich bin mir natürlich bewusst, dass dieser Code auch nur wieder ein Hack
+% ist. Ideal ist das so nicht. Aber sehr viel sauberer geht es mit
+% \textsf{polyglossia} unter Beibehaltung der Kompatibilität auch nicht mehr.
+%
+% \begin{macro}{\providecaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname}, allerdings wird nur definiert, wenn die Sprache \#1
+% bereits existiert, aber der Begriff \#2 nicht existiert. Unter dieser
+% Einschränkung verwendet die Sternvariante \cs{extras\meta{Sprache}}, während
+% die Normalvariante \cs{captions\meta{Sprache}} verwendet.
+% \begin{macrocode}
+\newcommand*{\providecaptionname}{%
+ \kernel@ifstar\scr@provide@scaptionname\scr@provide@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@provide@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% \begin{macrocode}
+\newcommand*{\scr@provide@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at
+ \string\providecaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} wird hier nur etwas zu
+% \cs{extras\meta{Sprache}} hinzugefügt, wenn das bereits definiert ist,
+% aber \#2 selbst noch nicht definiert ist.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \csname captions\scr@reserved@a\endcsname
+ \ifx #2\relax \aftergroup\@firstofone
+ \else
+%<*trace>
+ \PackageInfo{scrbase}{letting \scr@reserved@a\space
+ \expandafter\string#2\MessageBreak
+ unchanged}%
+%</trace>
+ \aftergroup\@gobble
+ \fi
+ \endgroup
+ {%
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+%<*trace>
+ \PackageInfo{scrbase}{letting
+ \expandafter\string\csname extras\scr@reserved@a\endcsname\space
+ unused}%
+%</trace>
+ \expandafter\expandafter\expandafter\@gobbletwo
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ }%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@provide@scaptionname
+% \begin{macro}{\scr@provide@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{providecaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@provide@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at
+ \string\providecaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} wird hier nur etwas zu
+% \cs{captions\meta{Sprache}} hinzugefügt, wenn das bereits definiert ist,
+% aber \#2 selbst weder in \cs{extras\meta{Sprache}} noch in
+% \cs{captions\meta{Sprache}} definiert ist.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax \aftergroup\@firstofone
+ \else
+%<*trace>
+ \PackageInfo{scrbase}{letting \scr@reserved@a
+ \expandafter\string#2\MessageBreak
+ unchanged}%
+%</trace>
+ \aftergroup\@gobble
+ \fi
+ \endgroup
+ {%
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+%<*trace>
+ \PackageInfo{scrbase}{letting
+ \expandafter\string\csname extras\scr@reserved@a\endcsname\space
+ unused}%
+%</trace>
+ \expandafter\expandafter\expandafter\@gobbletwo
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ }%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@provide@captionname
+% \end{macro}^^A \providecaptionname
+%
+% \begin{macro}{\newcaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname} mit folgender Änderung: Existiert die
+% Sprache und der Begriff, so wird ein Fehler ausgegeben. Existiert die
+% Sprache aber nicht der Begriff, so wird er definiert. Existiert die Sprache
+% nicht, so wird sie definiert. Unter dieser Prämisse verwendet die
+% Sternversion \cs{extras\meta{Sprache}}, während die Normalversion
+% \cs{captions\meta{Sprache}} verwendet.
+% \begin{macrocode}
+\newcommand*{\newcaptionname}{%
+ \kernel@ifstar\scr@new@scaptionname\scr@new@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@new@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Sternvariante von \cs{newcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@new@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\newcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} darf der Begriff noch nicht definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \else
+ \PackageError{scrbase}{%
+ `\string#2' already defined\MessageBreak
+ for language `\scr@reserved@a'%
+ }{%
+ You've told me to define `\string#2' for language
+ `\scr@reserved@a',\MessageBreak
+ but is has already been defined.\MessageBreak
+ Nevertheless, if you'll continue it will be redefined.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@new@scaptionname
+% \begin{macro}{\scr@new@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{newcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@new@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\newcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} darf der Begriff noch nicht definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \else
+ \PackageError{scrbase}{%
+ `\string#2' already defined\MessageBreak
+ for language `\scr@reserved@a'%
+ }{%
+ You've told me to define `\string#2' for language
+ `\scr@reserved@a',\MessageBreak
+ but is has already been defined.\MessageBreak
+ Nevertheless, if you'll continue it will be redefined.%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@new@captionname
+% \end{macro}^^A \newcaptionname
+%
+% \begin{macro}{\renewcaptionname}
+% \changes{v2.8q}{2001/11/08}{neu}^^A
+% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die geänderte
+% ist, wird die Anderung sofort aktiviert.}^^A
+% \changes{v2.95}{2006/03/10}{Ermittlung der aktuellen Sprache funktioniert
+% auch, wenn \cs{languagename} mit seltsamen catcodes erstellt wurde.}^^A
+% \changes{v3.00}{2008/05/02}{nach \textsf{scrbase} verschoben}^^A
+% \changes{v3.01b}{2008/12/07}{missing make undefined}^^A
+% \changes{v3.02c}{2009/02/17}{undefined test improved}^^A
+% \changes{v3.12}{2013/07/30}{Neuimplementierung nach dem Muster von
+% \cs{defcaptionname}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Wie \cs{defcaptionname} mit folgender Änderung: Existiert die
+% Sprache nicht, so ist dies ein Fehler. Existiert die Sprache nicht aber der
+% Begriff, so ist dies ebenfalls ein Fehler. Existieren Sprache und Begriff,
+% so wird dieser umdefiniert. Unter dieser Voraussetzung ändert die
+% Sternvariante immer \cs{extras\meta{Sprache}}, während die Normalvariante
+% \cs{captions\meta{Sprache}} ändert, falls der Begriff nicht i
+% \cs{extras\meta{Sprache}} definiert war, und sonst \cs{extras\meta{Sprache}}.
+% \begin{macrocode}
+\newcommand*{\renewcaptionname}{%
+ \kernel@ifstar\scr@renew@scaptionname\scr@renew@captionname
+}
+% \end{macrocode}
+% \begin{macro}{\scr@renew@scaptionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Sternvariante von \cs{renewcaptionname}. Die Argumente sind dieselben.
+% \begin{macrocode}
+\newcommand*{\scr@renew@scaptionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\renewcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} muss der Begriff bereits definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \PackageError{scrbase}{%
+ `\string#2' not defined at language `\scr@reserved@a'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `\scr@reserved@a',\MessageBreak
+ but is hasn't been defined before.\MessageBreak
+ Nevertheless, if you'll continue I'll define it at
+ `\expandafter\string\csname extras\scr@reserved@a\endcsname'%
+ }%
+ \fi
+ \endgroup
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{%
+ \def#2{#3}%
+ }%
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@renew@scaptionname
+% \begin{macro}{\scr@renew@captionname}
+% \changes{v3.12}{2013/07/30}{neu (intern)}^^A
+% \changes{v3.26}{2018/08/29}{diverse \cs{expandafter} eingespart}^^A
+% Die Normalvariante von \cs{renewcaptionname}, mit denselben Argumenten.
+% \begin{macrocode}
+\newcommand*{\scr@renew@captionname}[3]{%
+ \if@atdocument \expandafter\@firstofone
+ \else \expandafter\AtBeginDocument
+ \fi
+ {%
+ \begingroup
+ \let\reserved@b\endgroup
+ \edef\scr@reserved@a{#1}%
+ \@onelevel@sanitize\scr@reserved@a
+ \@for\scr@reserved@a:=\scr@reserved@a\do{%
+ \scr@trim@spaces\scr@reserved@a
+ \ifx\scr@reserved@a\@empty
+ \PackageWarning{scrbase}{empty language at \string\renewcaptionname}%
+ \else
+% \end{macrocode}
+% Im Unterschied zu \cs{defcaptionname} muss der Begriff bereits definiert
+% sein.
+% \begin{macrocode}
+ \begingroup
+ \let#2\relax
+ \csname extras\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \csname captions\scr@reserved@a\endcsname
+ \ifx #2\relax
+ \PackageError{scrbase}{%
+ `\string#2' not defined at language `\scr@reserved@a'%
+ }{%
+ You've told me to redefine `\string#2' at language
+ `\scr@reserved@a',\MessageBreak
+ but it hasn't been defined before.\MessageBreak
+ Nevertheless, if you'll continue I'll define it at
+ `\expandafter\string
+ \csname captions\scr@reserved@a\endcsname'%
+ }%
+ \fi
+ \expandafter\ifx\csname captions\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname captions\scr@reserved@a\endcsname{\def#2{#3}}%
+ \else
+ \expandafter\ifx\csname extras\scr@reserved@a\endcsname\relax
+ \expandafter\expandafter\expandafter\gdef
+ \else
+ \expandafter\expandafter\expandafter\g@addto@macro
+ \fi
+ \csname extras\scr@reserved@a\endcsname{\def#2{#3}}%
+ \fi
+ \endgroup
+ \scr@def@activateactivelanguageaftergroup{#2}{#3}%
+ \fi
+ }%
+ \reserved@b
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@renew@captionname
+% \end{macro}^^A \renewcaptionname
+%
+% \iffalse
+%</package&base>
+% \fi
+%
+%
+% \subsection{Definitionen für ein nummerisches Datum}
+% Bei Briefen kann ein nummerisches oder ein symbolisches Datum verwendet
+% werden.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{macro}{\g@addnumerical@date}
+% Dazu ist es notwendig, ggf. das bereits definierte symbolische Datum durch
+% ein nummerisches zu ergänzen.
+% \begin{macrocode}
+\newcommand*{\g@addnumerical@date}[2]{%
+ \@ifundefined{date#1}{%
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ no date found for language `#1'\MessageBreak
+ --> skipped%
+ }%
+ }{%
+ \expandafter\g@addto@macro\csname date#1\endcsname{%
+ \let\sym@date=\today%
+ \def\num@date{#2}%
+ \def\today{\if@orgdate\sym@date\else\num@date\fi}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \subsection{Festlegungen für einzelne Sprachen}
+%
+% Es folgen nun für einzelne Sprachen konkrete Festlegungen, die für Briefe
+% benötigt werden.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \begin{macro}{\captionsenglish}
+% \changes{v3.13}{2014/01/07}{diverse neue Dialekte}^^A
+% \begin{macro}{\dateenglish}
+% \begin{macro}{\captionsUSenglish}
+% \begin{macro}{\dateUSenglish}
+% \begin{macro}{\captionsamerican}
+% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert}
+% \begin{macro}{\dateamerican}
+% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish definiert}
+% \begin{macro}{\captionsbritish}
+% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert}
+% \begin{macro}{\datebritish}
+% \changes{v2.4c}{1997/11/25}{british identisch mit english definiert}
+% \begin{macro}{\captionsUKenglish}
+% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert}
+% \begin{macro}{\dateUKenglish}
+% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english definiert}
+% \begin{macro}{\captionsukenglish}
+% \changes{v3.24}{2017/05/29}{ukenglish identisch mit UKenglish definiert}
+% \begin{macro}{\dateukenglish}
+% \changes{v3.24}{2017/05/29}{ukenglish identisch mit UKenglish definiert}
+% \begin{macro}{\captionsusenglish}
+% \changes{v3.24}{2017/05/29}{usenglish identisch mit USenglish definiert}
+% \begin{macro}{\dateusenglish}
+% \changes{v3.24}{2017/05/29}{usenglish identisch mit USenglish definiert}
+% \begin{macro}{\captionsgerman}
+% \changes{v3.13}{2014/01/07}{neue Dialekte}^^A
+% \begin{macro}{\dategerman}
+% \begin{macro}{\captionsngerman}
+% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german}^^A
+% \changes{v3.12a}{2014/03/08}{außer \texttt{german} verwenden alle
+% deutschen Sprachen »Telefon«}^^A
+% \begin{macro}{\datengerman}
+% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german}^^A
+% \begin{macro}{\captionsaustrian}
+% \begin{macro}{\dateaustrian}
+% \begin{macro}{\captionsnaustrian}
+% \changes{v3.09}{2011/03/10}{naustrian neu und identisch mit austrian}^^A
+% \begin{macro}{\datenaustrian}
+% \changes{v3.09}{2011/03/10}{naustrian neu und identisch mit austrian}^^A
+% \begin{macro}{\captionsfrench}
+% \changes{v3.13}{2014/01/07}{diverse neue Dialekte}^^A
+% \begin{macro}{\datefrench}
+% \begin{macro}{\captionsitalian}
+% \begin{macro}{\dateitalian}
+% \changes{v2.3e}{1996/05/31}{Ich hoffe, dass das stimmt}^^A
+% \begin{macro}{\captionsspanish}
+% \begin{macro}{\datespanish}
+% \changes{v2.4c}{1997/11/25}{Ich hoffe, dass das stimmt}^^A
+% \changes{v2.4c}{1997/11/25}{Datumsumschaltung nicht mehr zwingend}
+% \begin{macro}{\captionscroation}
+% \changes{v2.8q}{2001/05/10}{Neu}^^A
+% \begin{macro}{\datecroatian}
+% \changes{v2.8q}{2001/05/10}{Neu}^^A
+% \begin{macro}{\captionsdutch}
+% \changes{v2.8q}{2002/02/01}{Neu}^^A
+% \begin{macro}{\datedutch}
+% \changes{v2.8q}{2002/02/01}{Neu}^^A
+% \begin{macro}{\captionsfinnish}
+% \changes{v2.9u}{2005/02/07}{Unterstützung für Finnisch (Dank Hannu
+% Väisänen)}^^A
+% \changes{v2.9u}{2005/02/07}{Neu}^^A
+% \begin{macro}{\datefinnish}
+% \changes{v2.9u}{2005/02/07}{Neu}^^A
+% \changes{v3.01c}{2008/12/29}{Aktivierung korrigiert}^^A
+% \begin{macro}{\captionsnorsk}
+% \changes{v3.02}{2009/01/01}{Neu}^^A
+% \begin{macro}{\datenorsk}
+% \changes{v3.02}{2009/01/01}{Neu}^^A
+% \begin{macro}{\captionsnorsk}
+% \changes{v3.08}{2011/01/20}{Neu (Dank Benjamin Hell)}^^A
+% \begin{macro}{\datenorsk}
+% \changes{v3.08}{2011/01/20}{Neu (Dank Benjamin Hell)}^^A
+% \begin{macro}{\captionspolish}
+% \changes{v3.13}{2014/02/01}{Neu (Dank Blandyna Bogdol)}^^A
+% \begin{macro}{\datepolish}
+% \changes{v3.13}{2014/02/01}{Neu (Dank Blandyna Bogdol)}^^A
+% \begin{macro}{\captionsczech}
+% \changes{v3.13}{2014/02/10}{Neu (Dank Elke Schubert)}^^A
+% \begin{macro}{\dateczech}
+% \changes{v3.13}{2014/02/10}{Neu (Dank Elke Schubert)}^^A
+% \begin{macro}{\dateslovak}
+% \changes{v3.13}{2014/02/28}{Neu (Dank Elke Schubert)}^^A
+% Weil es in früheren Versionen zu Problemen damit gekommen ist,
+% werden diese jedoch erst bei |\begin{document}| definiert. Dabei
+% wird |\providecaptionname| verwendet, so dass sie auch schon vor
+% |\begin{document}| mit |\newcaptionname| anderslautend definiert
+% werden können.
+% \begin{table}
+% \centering
+% \begin{tabular}{ll}
+% Sprache & Spender \\\hline\\[-1.6ex]
+% Deutsch & Frank Neukam, Markus Kohm \\
+% English & Frank Neukam, Michael Dewey, Markus Kohm \\
+% Finnisch & Hannu Väisänen \\
+% Französisch & Frank Neukam, Henk Jongbloets \\
+% Holländisch & Henk Jongbloets \\
+% Italienisch & Simone Naldi \\
+% Kroatisch & Branka Lon\v{c}arevi\'{c} \\
+% Norwegisch & Sveinung Heggen \\
+% Polnish & Blandyna Bogdol \\
+% Schwedisch & Benjamin Hell\\
+% Spanisch & Ralph J.\ Hangleiter, Alejandro L\'opez-Valencia\\
+% Tschechisch & Elke Schubert\\
+% Slovakisch & Elke Schubert\\
+% \end{tabular}
+% \caption{Liste der unterstützten Sprachen und der
+% \emph{Sprachspender}}
+% \end{table}
+% Eine Besonderheit stellt die englische Sprache dar. Es wird
+% versucht, diese als Notersatz immer zu definieren.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
+ \@ifundefined{dateenglish}{\def\dateenglish{%
+% \end{macrocode}
+% \iffalse
+%</letter>
+%<*letter|class>
+% \fi
+% \begin{macrocode}
+ \def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}%
+% \end{macrocode}
+% \iffalse
+%</letter|class>
+%<*letter>
+% \fi
+% \begin{macrocode}
+ }%
+ }{}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\yourrefname{Your ref.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\yourmailname{Your letter of}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\myrefname{Our ref.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\customername{Customer no.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\invoicename{Invoice no.}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\subjectname{Subject}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\ccname{cc}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\enclname{encl}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\headtoname{To}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\headfromname{From}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\datename{Date}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\pagename{Page}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\phonename{Phone}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\mobilephonename{Mobile phone}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\faxname{Fax}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\emailname{Email}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\wwwname{Url}%
+ \providecaptionname{american,australian,british,canadian,%
+ english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\bankname{Bank account}%
+ \g@addnumerical@date{american}{\number\month/\number\day/\number\year}%
+ \g@addnumerical@date{australien}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{british}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{canadian}{\number\year/\number\month/\number\day}%
+ \g@addnumerical@date{english}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{newzealand}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{UKenglish}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{ukenglish}{\number\day/\number\month/\number\year}%
+ \g@addnumerical@date{USenglish}{\number\month/\number\day/\number\year}%
+ \g@addnumerical@date{usenglish}{\number\month/\number\day/\number\year}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\yourrefname{Ihr Zeichen}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\yourmailname{Ihr Schreiben vom}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\myrefname{Unser Zeichen}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\customername{Kundennummer}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\invoicename{Rechnungsnummer}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\subjectname{Betrifft}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\ccname{Kopien an}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\enclname{Anlage}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\headtoname{An}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\headfromname{Von}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\datename{Datum}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\pagename{Seite}%
+ \providecaptionname{german}\phonename{Telephon}%
+ \providecaptionname{ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\phonename{Telefon}%
+ \providecaptionname{german}\mobilephonename{Mobiltelephon}%
+ \providecaptionname{ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\faxname{Fax}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\emailname{E-Mail}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\wwwname{URL}%
+ \providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}\bankname{Bankverbindung}%
+ \g@addnumerical@date{german}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{ngerman}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{austrian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{naustrian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{swissgerman}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{nswissgerman}{%
+ \number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\yourrefname{Vos r\'ef\'erences}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\yourmailname{Votre lettre du}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\myrefname{Nos r\'ef\'erences}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\customername{Num\'ero de client}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\invoicename{Num\'ero de facture}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\subjectname{Concernant}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\ccname{Copie \`a}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\enclname{Annexes}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\headtoname{A}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\headfromname{De}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\datename{Date}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\pagename{Page}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\phonename{T\'el\'ephone}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\mobilephonename{Portable}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\faxname{T\'el\'efax}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\emailname{E-mail}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\wwwname{URL}%
+ \providecaptionname{%
+ acadian,canadien,francais,french}\bankname{Compte en banque}%
+ \g@addnumerical@date{acadian}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{canadien}{\number\year/\number\month/\number\day}%
+ \g@addnumerical@date{francais}{\number\day.\,\number\month.\,\number\year}%
+ \g@addnumerical@date{french}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{italian}\yourrefname{Vs./Rif.}% or Vostro Riferimento
+ \providecaptionname{italian}\yourmailname{Vs.~lettera del}% or Vostra
+ % lettera del
+ \providecaptionname{italian}\myrefname{Ns./Rif.}% or Nostro Riferimento
+ \providecaptionname{italian}\customername{Nr.~cliente}% or Cliente num.
+ \providecaptionname{italian}\invoicename{Nr.~fattura}% or Fattura num.
+ \providecaptionname{italian}\subjectname{Oggetto}%
+ \providecaptionname{italian}\ccname{Per conoscenza}% or Copia a
+ \providecaptionname{italian}\enclname{Allegato}% or (plural) Allegati
+ \providecaptionname{italian}\headtoname{A}%
+ \providecaptionname{italian}\headfromname{Da}%
+ \providecaptionname{italian}\datename{Data}%
+ \providecaptionname{italian}\pagename{Pagina}%
+ \providecaptionname{italian}\phonename{Telefono}%
+ \providecaptionname{italian}\mobilephonename{Telefonino}%
+ \providecaptionname{italian}\faxname{Fax}%
+ \providecaptionname{italian}\emailname{Email}%
+ \providecaptionname{italian}\wwwname{Sito Web}%
+ \providecaptionname{italian}\bankname{Conto bancario}%
+ \g@addnumerical@date{italian}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{spanish}\yourrefname{Su ref.}%
+ \providecaptionname{spanish}\yourmailname{Su carta de}%
+ \providecaptionname{spanish}\myrefname{Nuestra ref.}%
+ \providecaptionname{spanish}\customername{No. de cliente}%
+ \providecaptionname{spanish}\invoicename{No. de factura}%
+ \providecaptionname{spanish}\subjectname{Asunto}%
+ \providecaptionname{spanish}\ccname{Copias}%
+ \providecaptionname{spanish}\enclname{Adjunto}%
+ \providecaptionname{spanish}\headtoname{A}%
+ \providecaptionname{spanish}\headfromname{De}%
+ \providecaptionname{spanish}\datename{Fecha}%
+ \providecaptionname{spanish}\pagename{P\'agina}%
+ \providecaptionname{spanish}\phonename{Tel\'efono}%
+ \providecaptionname{spanish}\mobilephonename{M\'ovil}%
+ \providecaptionname{spanish}\faxname{Fax}%
+ \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico
+ \providecaptionname{spanish}\wwwname{URL}% or P\`agina web
+ \providecaptionname{spanish}\bankname{Cuenta bancaria}%
+ \g@addnumerical@date{spanish}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{croatian}\yourrefname{Va\v{s} znak}%
+ \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}%
+ \providecaptionname{croatian}\myrefname{Na\v{s} znak}%
+ \providecaptionname{croatian}\customername{Broj kupca}%
+ \providecaptionname{croatian}\invoicename{Broj fakture}%
+ \providecaptionname{croatian}\subjectname{Predmet}%
+ \providecaptionname{croatian}\ccname{Kopija}%
+ \providecaptionname{croatian}\enclname{Privitak}%
+ \providecaptionname{croatian}\headtoname{Prima}%
+ \providecaptionname{croatian}\headfromname{\v{S}alje}%
+ \providecaptionname{croatian}\datename{Nadnevak}%
+ \providecaptionname{croatian}\pagename{Stranica}%
+ \providecaptionname{croatian}\phonename{Telefon}%
+ \providecaptionname{croatian}\mobilphonename{Mobitel}%
+ \providecaptionname{croatian}\faxname{Fax}%
+ \providecaptionname{croatian}\emailname{E-Mail}%
+ \providecaptionname{croatian}\wwwname{URL}%
+ \providecaptionname{croatian}\bankname{Bankovna veza}%
+ \g@addnumerical@date{croatian}{\number\day.\,\number\month.\,\number\year.}%
+ \providecaptionname{dutch}\yourrefname{Uw kenmerk}%
+ \providecaptionname{dutch}\yourmailname{Uw brief van}%
+ \providecaptionname{dutch}\myrefname{Ons kenmerk}%
+ \providecaptionname{dutch}\customername{Klant No.}%
+ \providecaptionname{dutch}\invoicename{Rekening No.}%
+ \providecaptionname{dutch}\subjectname{Onderwerp}%
+ \providecaptionname{dutch}\ccname{Kopie aan}%
+ \providecaptionname{dutch}\enclname{Bijlage(n)}%
+ \providecaptionname{dutch}\headtoname{Aan}%
+ \providecaptionname{dutch}\headfromname{Van}%
+ \providecaptionname{dutch}\datename{Datum}%
+ \providecaptionname{dutch}\pagename{Pagina}%
+ \providecaptionname{dutch}\phonename{Telefoon}%
+ \providecaptionname{dutch}\mobilephonename{Mobieltje}%
+ \providecaptionname{dutch}\faxname{Fax}%
+ \providecaptionname{dutch}\emailname{E--mail}%
+ \providecaptionname{dutch}\wwwname{URL}%
+ \providecaptionname{dutch}\bankname{Bankrekening}%
+ \g@addnumerical@date{dutch}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{finnish}\yourrefname{Viitteenne}%
+ \providecaptionname{finnish}\yourmailname{Kirjeenne}%
+ \providecaptionname{finnish}\myrefname{Viitteemme}%
+ \providecaptionname{finnish}\customername{Asiakasnumero}%
+ \providecaptionname{finnish}\invoicename{Laskun numero}%
+ \providecaptionname{finnish}\subjectname{Asia}%
+ \providecaptionname{finnish}\ccname{Jakelu}%
+ \providecaptionname{finnish}\enclname{Liitteet}%
+ \providecaptionname{finnish}\headtoname{Vastaanottaja}%
+ \providecaptionname{finnish}\headfromname{L\"ahett\"aj\"a}%
+ \providecaptionname{finnish}\datename{P\"aiv\"a}%
+ \providecaptionname{finnish}\pagename{Sivu}%
+ \providecaptionname{finnish}\phonename{Puhelin}%
+ \providecaptionname{finnish}\mobilephonename{Matkapuhelin}%
+ \providecaptionname{finnish}\faxname{Faksi}%
+ \providecaptionname{finnish}\emailname{S\"ahk\"oposti}%
+ \providecaptionname{finnish}\wwwname{URL}%
+ \providecaptionname{finnish}\bankname{Pankkitilin numero}%
+ \g@addnumerical@date{finnish}{\number\day.\number\month.\number\year}%
+ \providecaptionname{norsk}\yourrefname{Deres ref.}%
+ \providecaptionname{norsk}\yourmailname{Deres brev av:}%
+ \providecaptionname{norsk}\myrefname{V\aa{}r ref:}%
+ \providecaptionname{norsk}\customername{Kundenummer}%
+ \providecaptionname{norsk}\invoicename{Fakturanummer}%
+ \providecaptionname{norsk}\subjectname{Emne}%
+ \providecaptionname{norsk}\ccname{Kopi til}%
+ \providecaptionname{norsk}\enclname{Vedlegg}%
+ \providecaptionname{norsk}\headtoname{Til}%
+ \providecaptionname{norsk}\headfromname{Fra}%
+ \providecaptionname{norsk}\datename{Dato}%
+ \providecaptionname{norsk}\pagename{Side}%
+ \providecaptionname{norsk}\phonename{Telefon}%
+ \providecaptionname{norsk}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{norsk}\faxname{Telefaks}%
+ \providecaptionname{norsk}\emailname{E-post}%
+ \providecaptionname{norsk}\wwwname{Url}%
+ \providecaptionname{norsk}\bankname{Bankkontonummer}%
+ \g@addnumerical@date{norsk}{\number\day.\number\month.\number\year}%
+ \providecaptionname{swedish}\yourrefname{Er ref}%
+ \providecaptionname{swedish}\yourmailname{Ert brev av}%
+ \providecaptionname{swedish}\myrefname{V\aa{}r ref}%
+ \providecaptionname{swedish}\customername{Kundnummer}%
+ \providecaptionname{swedish}\invoicename{Fakturanummer}%
+ \providecaptionname{swedish}\subjectname{\"Amne}%
+% \end{macrocode}
+% "`Kopia"' oder "`Kopia till"' geht beides -- da im Deutschen die
+% lange Form verwendet wird nehmen wir die auch hier:
+% \begin{macrocode}
+ \providecaptionname{swedish}\ccname{Kopia till}%
+% \end{macrocode}
+% "`Bilaga"' ist Singular. Bei mehreren Anlagen schreibt man
+% "`Bilagor"'. Da wir nicht wissen, ob es eine oder mehrere Anlagen sind,
+% haben wir ein kleines Problem und gehen mal von mehreren aus:
+% \begin{macrocode}
+ \providecaptionname{swedish}\enclname{Bilagor}% Singular: Bilaga
+ \providecaptionname{swedish}\headtoname{Till}%
+ \providecaptionname{swedish}\headfromname{Fr\aa{}n}%
+ \providecaptionname{swedish}\datename{Datum}%
+ \providecaptionname{swedish}\pagename{Sida}%
+ \providecaptionname{swedish}\phonename{Telefon}%
+ \providecaptionname{swedish}\mobilephonename{Mobiltelefon}%
+ \providecaptionname{swedish}\faxname{Telefax}%
+ \providecaptionname{swedish}\emailname{E-post}%
+ \providecaptionname{swedish}\wwwname{Hemsida}%
+% \end{macrocode}
+% Für \cs{bankname} gibt es zwei verschiedene Ausdrücke, je nachdem um
+% welche Kontoform es sich handelt: "`Bankgiro"' und "`PlusGiro"'. Beide
+% sind etwa gleich verbreitet, evtl. mit einem leichten Vorteil für
+% Bankgiro.
+% \begin{macrocode}
+ \providecaptionname{swedish}\bankname{Bankgiro}% PlusGiro
+% \end{macrocode}
+% Statt der ISO-Variante wird hier die traditionelle Variante,
+% "`18/1 2011"', verwendet.
+% \begin{macrocode}
+ \g@addnumerical@date{swedish}{\number\day/\number\month~\number\year}%
+ \providecaptionname{polish}\yourrefname{Wasz znak}%
+ \providecaptionname{polish}\yourmailname{Wasze pismo z dnia}%
+ \providecaptionname{polish}\myrefname{Nasz znak}%
+ \providecaptionname{polish}\customername{Numer klienta}%
+ \providecaptionname{polish}\invoicename{Numer rachunku}%
+ \providecaptionname{polish}\subjectname{Dotyczy}%
+ \providecaptionname{polish}\ccname{Rozdzielnik}%
+ \providecaptionname{polish}\enclname{Za\l\aob{}czniki}%
+ \providecaptionname{polish}\headtoname{Do}%
+ \providecaptionname{polish}\headfromname{Od}%
+ \providecaptionname{polish}\datename{Data}%
+ \providecaptionname{polish}\pagename{Strona}%
+ \providecaptionname{polish}\phonename{Telefon}%
+ \providecaptionname{polish}\mobilephonename{Numer mobilny}%
+ \providecaptionname{polish}\faxname{Fax}%
+ \providecaptionname{polish}\emailname{E-mail}%
+ \providecaptionname{polish}\wwwname{URL}%
+ \providecaptionname{polish}\bankname{Konto}%
+ \g@addnumerical@date{polish}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{czech}\yourrefname{Va\v{s}e zna\v{c}ka}%
+ \providecaptionname{czech}\yourmailname{V\'{a}\v{s} dopis ze dne}%
+ \providecaptionname{czech}\myrefname{Na\v{s}e zna\v{c}ka}%
+ \providecaptionname{czech}\customername{Z\'akaznick\'e \v{c}\'{\i}slo}%
+ \providecaptionname{czech}\invoicename{Fakura\v{c}n\'{\i} \v{c}\'{\i}slo}%
+ \providecaptionname{czech}\subjectname{Pr\v{e}dm\v{e}t}%
+ \providecaptionname{czech}\ccname{Kopie}%
+ \providecaptionname{czech}\enclname{P\v{r}\'{\i}loha}%
+ \providecaptionname{czech}\headtoname{Komu}%
+ \providecaptionname{czech}\headfromname{Od}%
+ \providecaptionname{czech}\datename{Datum}%
+ \providecaptionname{czech}\pagename{Strana}%
+ \providecaptionname{czech}\phonename{Telefon}%
+ \providecaptionname{czech}\mobilephonename{Mobil}%
+ \providecaptionname{czech}\faxname{Fax}%
+ \providecaptionname{czech}\emailname{E-Mail}%
+ \providecaptionname{czech}\wwwname{URL}%
+ \providecaptionname{czech}\bankname{Bankovn\'{\i} spojen\'{\i}}%
+ \g@addnumerical@date{czech}{\number\day.\,\number\month.\,\number\year}%
+ \providecaptionname{slovak}\yourrefname{Va\v{s}a zna\v{c}ka}%
+ \providecaptionname{slovak}\yourmailname{V\'{a}\v{s} list zo d\v{n}a}%
+ \providecaptionname{slovak}\myrefname{Na\v{s}a zna\v{c}ka}%
+ \providecaptionname{slovak}\customername{Z\'akazn\'{\i}cke \v{c}\'{\i}slo}%
+ \providecaptionname{slovak}\invoicename{\'{C}\'{\i}slo fakt\'ury}%
+ \providecaptionname{slovak}\subjectname{Predmet}%
+ \providecaptionname{slovak}\ccname{K\'{o}pia pre koho}%
+ \providecaptionname{slovak}\enclname{Pr\'{\i}loha}%
+ \providecaptionname{slovak}\headtoname{Komu}%
+ \providecaptionname{slovak}\headfromname{Od}%
+ \providecaptionname{slovak}\datename{D\'{a}tum}%
+ \providecaptionname{slovak}\pagename{Strana}%
+ \providecaptionname{slovak}\phonename{Telef\'{o}n}%
+ \providecaptionname{slovak}\mobilephonename{Mobil}%
+ \providecaptionname{slovak}\faxname{Fax}%
+ \providecaptionname{slovak}\emailname{E-Mail}%
+ \providecaptionname{slovak}\wwwname{URL}%
+ \providecaptionname{slovak}\bankname{Bankov\'{e} spojenie}%
+ \g@addnumerical@date{slovak}{\number\day.\,\number\month.\,\number\year}%
+% \end{macrocode}
+% Zum Schluss findet noch die eigentliche Auswahl statt. Diese orientiert
+% sich nun an der Auswahl nach german.sty~2.5b und verwendet keine festen
+% Sprachzuordnungen mehr. Dafür sind nun keine Erweiterungen für andere
+% Sprachen mehr möglich.
+% \changes{v2.2c}{1995/03/20}{Im Sprachenvergleich fehlten die "`="'
+% hinter \cs{language}}
+% \changes{v2.4c}{1997/11/25}{Sprachauswahl um american, british,
+% UKenglish und spanish erweitert}^^A
+% \changes{v2.5}{1999/09/08}{Sprachauswahl um ngermen erweitert}^^A
+% \changes{v2.5b}{2000/01/20}{Reaktivierung der Sprache geschieht
+% nun via \cs{languagename}, soweit dies möglich ist}
+% \changes{v2.5e}{2000/07/14}{Workaround für Sprache nohyphenation
+% durch Format mit Babel-Erweiterung aber kein Babel package
+% geladen}^^A
+% \begin{macrocode}
+ \captionsenglish
+ \dateenglish
+% \end{macrocode}
+% \changes{v2.9i}{2002/09/04}{Workaround für den
+% \texttt{hyphen.cfg}-Bug von Babel}
+% \changes{v2.97c}{2007/08/10}{Text einer Warnung geändert}^^A
+% \changes{v3.18a}{2015/07/03}{\cs{extras\dots} werden auch ausgeführt}^^A
+% \changes{v3.18a}{2015/07/03}{sprachabhhängige Befehle mit \cs{@nameuse}}^^A
+% Wird die \texttt{hyphen.cfg} von Babel verwendet, wird aber das
+% \textsl{babel}-Paket nicht geladen, so ist \cs{languagename} häufig
+% nicht korrekt, so dass dann \cs{selectlanguage} mit
+% \cs{languagename} als Argument schief geht. Daher hier ein
+% Workaround für das Problem.
+% \begin{macrocode}
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{%
+ \string\language\space is \the\language, \string\languagename\space is
+ `\languagename'\MessageBreak
+ but \expandafter\string\csname
+ date\languagename\endcsname\space not defined!\MessageBreak
+ This seems to be a bug at you're `hyphen.cfg'.\MessageBreak
+ Undefining macro \string\languagename\space to avoid errors%
+ }%
+ \let\languagename=\undefined
+ \fi
+ \ifx\languagename\undefined
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{\string\languagename\space not
+ defined, using \string\language.\MessageBreak
+ This may result in use of wrong language!\MessageBreak
+ You should use a compatible language
+ package\MessageBreak
+ (e.g. `Babel', `german', `ngerman', ...)}%
+ \ifx\l@american\undefined\else\ifnum\language=\l@american
+ \@nameuse{captionsamerican}%
+ \@nameuse{extrasamerican}%
+ \@nameuse{dateamerican}%
+ \fi\fi
+ \ifx\l@australian\undefined\else\ifnum\language=\l@australian
+ \@nameuse{captionsaustralian}%
+ \@nameuse{extrasaustralian}%
+ \@nameuse{dateaustralian}%
+ \fi\fi
+ \ifx\l@british\undefined\else\ifnum\language=\l@british
+ \@nameuse{captionsbritish}%
+ \@nameuse{extrasbritish}%
+ \@nameuse{datebritish}%
+ \fi\fi
+ \ifx\l@canadian\undefined\else\ifnum\language=\l@canadian
+ \@nameuse{captionscanadian}%
+ \@nameuse{extrascanadian}%
+ \@nameuse{datecanadian}%
+ \fi\fi
+ \ifx\l@newzealand\undefined\else\ifnum\language=\l@newzealand
+ \@nameuse{captionsnewzealand}%
+ \@nameuse{extrasnewzealand}%
+ \@nameuse{datenewzealand}%
+ \fi\fi
+ \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish
+ \@nameuse{captionsUKenglish}%
+ \@nameuse{extrasUKenglish}%
+ \@nameuse{dateUKenglish}%
+ \fi\fi
+ \ifx\l@ukenglish\undefined\else\ifnum\language=\l@ukenglish
+ \@nameuse{captionsukenglish}%
+ \@nameuse{extrasukenglish}%
+ \@nameuse{dateukenglish}%
+ \fi\fi
+ \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish
+ \@nameuse{captionsUSenglish}%
+ \@nameuse{extrasUSenglish}%
+ \@nameuse{dateUSenglish}%
+ \fi\fi
+ \ifx\l@usenglish\undefined\else\ifnum\language=\l@usenglish
+ \@nameuse{captionsusenglish}%
+ \@nameuse{extrasusenglish}%
+ \@nameuse{dateusenglish}%
+ \fi\fi
+ \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian
+ \@nameuse{captionsaustrian}%
+ \@nameuse{extrasaustrian}%
+ \@nameuse{dateaustrian}%
+ \fi\fi
+ \ifx\l@naustrian\undefined\else\ifnum\language=\l@naustrian
+ \@nameuse{captionsnaustrian}%
+ \@nameuse{extrasnaustrian}%
+ \@nameuse{datenaustrian}%
+ \fi\fi
+ \ifx\l@german\undefined\else\ifnum\language=\l@german
+ \@nameuse{captionsgerman}%
+ \@nameuse{extrasgerman}%
+ \@nameuse{dategerman}%
+ \fi\fi
+ \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman
+ \@nameuse{captionsngerman}%
+ \@nameuse{extrasngerman}%
+ \@nameuse{datengerman}%
+ \fi\fi
+ \ifx\l@swissgerman\undefined\else\ifnum\language=\l@swissgerman
+ \@nameuse{captionsswissgerman}%
+ \@nameuse{extrasswissgerman}%
+ \@nameuse{dateswissgerman}%
+ \fi\fi
+ \ifx\l@nswissgerman\undefined\else\ifnum\language=\l@nswissgerman
+ \@nameuse{captionsnswissgerman}%
+ \@nameuse{extrasnswissgerman}%
+ \@nameuse{datenswissgerman}%
+ \fi\fi
+ \ifx\l@acadian\undefined\else\ifnum\language=\l@acadian
+ \@nameuse{captionsacadian}%
+ \@nameuse{extrasacadian}%
+ \@nameuse{dateacadian}%
+ \fi\fi
+ \ifx\l@canadien\undefined\else\ifnum\language=\l@canadien
+ \@nameuse{captionscanadien}%
+ \@nameuse{extrascanadien}%
+ \@nameuse{datecanadien}%
+ \fi\fi
+ \ifx\l@francais\undefined\else\ifnum\language=\l@francais
+ \@nameuse{captionsfrancais}%
+ \@nameuse{extrasfrancais}%
+ \@nameuse{datefrancais}%
+ \fi\fi
+ \ifx\l@french\undefined\else\ifnum\language=\l@french
+ \@nameuse{captionsfrench}%
+ \@nameuse{extrasfrench}%
+ \@nameuse{datefrench}%
+ \fi\fi
+ \ifx\l@italian\undefined\else\ifnum\language=\l@italian
+ \@nameuse{captionsitalian}%
+ \@nameuse{extrasitalian}%
+ \@nameuse{dateitalian}%
+ \fi\fi
+ \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish
+ \@nameuse{captionsspanish}%
+ \@nameuse{extrasspanish}%
+ \@nameuse{datespanish}%
+ \fi\fi
+ \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian
+ \@nameuse{captionscroatian}%
+ \@nameuse{extrascroatian}%
+ \@nameuse{datecroatian}%
+ \fi\fi
+ \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch
+ \@nameuse{captionsdutch}%
+ \@nameuse{extrasdutch}%
+ \@nameuse{datedutch}%
+ \fi\fi
+ \ifx\l@finnish\undefined\else\ifnum\language=\l@finnish
+ \@nameuse{captionsfinnish}%
+ \@nameuse{extrasfinnish}%
+ \@nameuse{datefinnish}%
+ \fi\fi
+ \ifx\l@norsk\undefined\else\ifnum\language=\l@norsk
+ \@nameuse{captionsnorsk}%
+ \@nameuse{extrasnorsk}%
+ \@nameuse{datenorsk}%
+ \fi\fi
+ \ifx\l@swedish\undefined\else\ifnum\language=\l@swedish
+ \@nameuse{captionsswedish}%
+ \@nameuse{extrasswedish}%
+ \@nameuse{dateswedish}%
+ \fi\fi
+ \ifx\l@polish\undefined\else\ifnum\language=\l@polish
+ \@nameuse{captionspolish}%
+ \@nameuse{extraspolish}%
+ \@nameuse{datepolish}%
+ \fi\fi
+ \ifx\l@czech\undefined\else\ifnum\language=\l@czech
+ \@nameuse{captionsczech}%
+ \@nameuse{extrasczech}%
+ \@nameuse{dateczech}%
+ \fi\fi
+ \ifx\l@slovak\undefined\else\ifnum\language=\l@slovak
+ \@nameuse{captionsslovak}%
+ \@nameuse{extrasslovak}%
+ \@nameuse{dateslovak}%
+ \fi\fi
+ \else
+ \edef\@tempa{nohyphenation}%
+ \ifx\languagename\@tempa
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{%
+ You've selected language `\languagename'.\MessageBreak
+ Maybe your LaTeX format contains Babel extension\MessageBreak
+ but you have not selected a language using\MessageBreak
+ Babel package.\MessageBreak
+ Please select another language!\MessageBreak
+ Only as a workaround english captions and date\MessageBreak
+ will be used%
+ }%
+ \else
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ trying to activate captions and date\MessageBreak
+ of language `\languagename'%
+ }%
+% \end{macrocode}
+% \changes{v3.12}{2012/12/28}{Workaround für babels geänderte hyphen.cfg}^^A
+% Irgendwann wurde in babel die hyphen.cfg geändert, so dass das früher sehr
+% gut funktionierende |\expandafter\selectlanguage\expandafter{\languagename}|
+% damit leider nicht mehr funktioniert, wenn babel nicht mehr geladen
+% ist. Deshalb wird nun etwas direkter vorgegangen. Das kann mit einzelnen
+% Sprachpaketen eventuell Nachteile bringen, funktioniert aber aktuell ohne
+% Sprachpaket, mit babel und mit polyglossia.
+% \begin{macrocode}
+ \csname date\languagename\endcsname
+ \csname captions\languagename\endcsname
+%<class> \ClassInfo{scrlttr2%
+%<package> \PackageInfo{scrletter%
+ }{%
+ used language is `\languagename'.\MessageBreak
+ Supported languages are: `english', `UKenglish',\MessageBreak
+ `ukenglish', `british', `american', `USenglish',\MessageBreak
+ `usenglish', `australian`,`canadian', `newzealand',\MessageBreak
+ `german', `ngerman', `austrian', `naustrian',\MessageBreak
+ `swissgerman', `nswissgermsn',\MessageBreak
+ `acadian', `canadien', `francais', `french', \MessageBreak
+ `dutch', `italian', `spanish', `polish',\MessageBreak
+ `croatian', `finnish', `norsk', `swedish',\MessageBreak
+ `czech', `slovak'%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-language.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-letterclassoptions.dtx b/macros/latex/contrib/koma-script/source/scrkernel-letterclassoptions.dtx
new file mode 100644
index 0000000000..7f0881cef0
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-letterclassoptions.dtx
@@ -0,0 +1,1725 @@
+% \CheckSum{1748}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-letterclassoptions.dtx
+% Copyright (c) Markus Kohm, 2006-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-letterclassoptions.dtx
+% Copyright (c) Markus Kohm, 2006-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-letterclassoptions.dtx 3011 2018-08-29 07:35:17Z kohm $
+%<option>%%% (run: option)
+%<head>%%% (run: head)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3011 $
+\endgroup
+\ProvidesFile{scrkernel-letterclassoptions.dtx}
+ [\filedate\space \filerevision\space
+ KOMA-Script source (letter class options)]
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-letterclassoptions.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/22}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{Optionendateien für Briefe}
+%
+% Bei der Briefklasse tritt eine Besonderheit ein. Hier ist es
+% möglich, spezielle \texttt{lco}-Dateien zu definieren, die über
+% Optionen geladen werden können. Die unterschiedlichen Brieftypen
+% sind ein Fall für solche \emph{\textbf{l}etter \textbf{c}lass
+% \textbf{o}ption} Dateien.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Optionen für Letter-Class-Options}
+%
+% \begin{macro}{\lco@test}
+% \changes{v2.95}{2006/03/22}{Neu}^^A
+% \changes{v2.97c}{2007/09/12}{an neue Optionenabarbeitung angepasst}^^A
+% Letter-Class-Optionen können auch für jede per |\documentclass| angegebene
+% keyval-Option oder sonstige scan-Option (das sind Optionen, die nicht per
+% |\DeclareOption| definiert wurden) geladen werden. Dabei wird die
+% Abarbeitung der Option nicht unterbrochen. Dazu wird dieses Makro in den
+% scan-Vorgang eingebaut
+% \begin{macrocode}
+\newcommand*{\lco@test}{%
+ \IfFileExists{\CurrentOption.lco}{%
+ \expandafter
+%<class> \AtEndOfClass
+%<package> \AtEndOfPackage
+ \expandafter{%
+ \expandafter\LoadLetterOption\expandafter{\CurrentOption}%
+ }%
+ \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{%
+ \expandafter\def\expandafter\scr@pti@nerr@r\expandafter{%
+ \scr@pti@nerr@r
+ }%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Als Voreinstellung wird am Ende schon einmal die Datei \texttt{DIN.lco}
+% geladen.
+% \begin{macrocode}
+%<class>\AtEndOfClass
+%<package>\AtEndOfPackage
+ {\LoadLetterOption{DIN}}
+% \end{macrocode}
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Makros für Letter-Class-Options}
+%
+% \begin{macro}{\LoadLetterOption}
+% \changes{v2.8q}{2001/10/08}{Neu}^^A
+% \changes{v3.14}{2014/10/04}{Leerzeichen werden ignoriert}^^A
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@sp@def} statt
+% \cs{KV@@sp@def}}^^A
+% Bei der neuen Briefklasse existiert eine Anweisung, mit der eine
+% \emph{\textbf{l}etter-\texttt{c}lass-\texttt{o}ption}-Datei geladen
+% werden kann. Das Laden wird mit entsprechender Information in der
+% \texttt{log}-Datei vermerkt. Damit in der Datei interne Makros
+% verwendet werden können, muss der catcode von "`@"' entsprechend
+% gesetzt sein. Damit der Befehl sowohl in der Präambel als auch in
+% weiteren Optionen-Dateien oder in der Klasse selbst verwendet werden
+% kann, muss der catcode am Ende wieder restauriert werden. Dabei muss
+% etwas trickreich gearbeitet werden, damit tatsächlich eine
+% Schachtelung möglich ist. So erfolgt die Umschaltung des catcodes
+% immer nur beim ersten Aufruf innerhalb einer Schachtel.
+% \begin{macrocode}
+\newcommand*{\LoadLetterOption}[1]{%
+ \@ifundefined{@restore@catcode@level}%
+ {\let\@restore@catcode@level=\z@}{}%
+ \ifnum\@restore@catcode@level =\z@
+ \ifnum\catcode`\@=11
+ \let\@restore@catcode\relax
+ \else
+ \@tempcnta=\catcode`\@
+ \edef\@restore@catcode{%
+ \noexpand\catcode`\noexpand\@=\the\@tempcnta}%
+ \makeatletter
+ \fi
+ \fi
+ \@tempcnta=\@restore@catcode@level\relax
+ \advance\@tempcnta by \@ne\relax
+ \edef\@restore@catcode@level{\the\@tempcnta}%
+ \scr@sp@def\reserved@a{#1}%
+ \edef\reserved@a{%
+ \noexpand\edef\noexpand\scr@currentlco{\reserved@a}%
+ \noexpand\InputIfFileExists{\reserved@a.lco}{%
+%<class> \noexpand\ClassInfo{scrlttr2%
+%<package> \noexpand\PackageInfo{scrletter%
+ }{Letter-Class-Option `#1' loaded}%
+ }{%
+%<class> \noexpand\ClassError{scrlttr2%
+%<package> \noexpand\PackageError{scrletter%
+ }{%
+ Letter-Class-Option file `#1.lco' not found%
+ }{%
+ You've told me to load the Letter-Class-Option `#1'. So I have
+ to load\noexpand\MessageBreak
+ the file `#1.lco'. But the file isn't available.}%
+ }%
+ \scr@ifundefinedorrelax{scr@currentlco}{%
+ \unexpanded{\let\scr@currentlco\relax}%
+ }{%
+ \noexpand\def\noexpand\scr@currentlco{\scr@currentlco}%
+ }%
+ }%
+% \end{macrocode}
+% \changes{v3.18}{2015/06/03}{manage \cs{RequirePackage} and \cs{usepackage}
+% inside \texttt{lco}-files after \cs{begin\{document\}}}^^A
+% \begin{macrocode}
+ \if@atdocument
+ \edef\reserved@a{%
+ \unexpanded\expandafter{\reserved@a}%
+ \ifx\RequirePackage\@notprerr
+ \unexpanded{\let\RequirePackage\@notprerr}%
+ \else
+ \noexpand\def\noexpand\RequirePackage{%
+ \unexpanded\expandafter{\RequirePackage}%
+ }%
+ \fi
+ \ifx\usepackage\@notprerr
+ \unexpanded{\let\usepackage\@notprerr}%
+ \else
+ \noexpand\def\noexpand\Rusepackage{%
+ \unexpanded\expandafter{\usepackage}%
+ }%
+ \fi
+ }%
+ \let\RequirePackage\lco@RequirePackage
+ \let\usepackage\lco@RequirePackage
+ \expandafter\reserved@a
+ \else \expandafter\reserved@a
+ \fi
+ \@tempcnta=\@restore@catcode@level\relax
+ \advance\@tempcnta by \m@ne\relax
+ \edef\@restore@catcode@level{\the\@tempcnta}%
+ \ifnum\@tempcnta =\z@
+ \@restore@catcode
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\lco@RequirePackage}
+% \changes{v3.18}{2015/06/03}{neue Anweisung (intern)}^^A
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@trim@spaces} statt
+% \cs{KV@@sp@def}}^^A
+% Da \texttt{lco}-Dateien auch noch nach \cs{begin\{document\}} geladen werden
+% können, wird hier sinnvoll auf die Anforderung von Paketen in diesem Fall
+% reagiert. In der ersten Ausbaustufe wird eine sinnvolle Fehlermeldung
+% ausgegeben. Irgend wann einmal später könnte man sich eventuell noch etwas
+% besseres einfallen lassen.
+% Das erste, optionale Argument sind ggf. Optionen. Diese werden jedoch an
+% dieser Stelle einfach ignoriert. Das zweitem, obligatorische Argument ist
+% eine Liste von Paketen. Das dritte, optionale Argument ist die Version der
+% Pakete, die an dieser Stelle ebenfalls ignoriert wird.
+% \begin{macrocode}
+\newcommand*{\lco@RequirePackage}[2][]{%
+ \begingroup
+ \@for\reserved@a:=#2\do{%
+ \scr@trim@spaces\reserved@a
+ \scr@ifundefinedorrelax{ver@\reserved@a.\scr@pkgextension}{%
+%<class> \ClassError{\KOMAClassName}{%
+%<package> \PackageError{scrletter}{%
+ lco-file `\scr@currentlco' can be used only in preamble%
+ }{%
+ The lco-file `\scr@currentlco' uses \string\RequirePackage\space or
+ \string\usepackage\space to load\MessageBreak
+ package `\reserved@a'. This means you have to either load
+ `\reserved@a'\MessageBreak
+ or lco-file `\scr@currentlco' in the document preamble.
+ }%
+ }{}%
+ }%
+ \endgroup
+ \scr@gobbleopt
+}
+% \end{macrocode}
+% \end{macro}^^A \lco@RequirePackage
+% \end{macro}^^A \LoadLetterOption
+% \begin{macro}{\LoadLetterOptions}
+% \changes{v3.14}{2014/10/04}{Neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt und damit
+% Leerzeichen zwischen den Einträgen erlaubt}^^A
+% \changes{v3.26}{2018/08/29}{Behandlung für (nicht mehr mögliche)
+% Leerzeicheneinträge entfernt}^^A
+% Funktioniert prinzipiell wie \cs{LoadLetterOption}, aber es werden mehrere,
+% durch Komma getrennte Optionen unterstützt.
+% \begin{macrocode}
+\newcommand*{\LoadLetterOptions}[1]{%
+ \begingroup
+ \def\reserved@a{\endgroup}%
+ \@for\reserved@b:=#1\do{%
+ \scr@trim@spaces\reserved@b
+ \ifx\reserved@b\@empty\else
+ \edef\reserved@a{\expandafter\unexpanded\expandafter{\reserved@a
+ \LoadLetterOption}{\reserved@b}\relax}%
+ \fi
+ }%
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}^^A \LoadLetterOptions
+%
+% \begin{macro}{\LetterOptionNeedsPapersize}
+% \changes{v2.8q}{2001/10/17}{Neu}^^A
+% Es besteht die Möglichkeit, in \texttt{lco}-Dateien eine bestimmte
+% Papiergröße zu fordern. Dazu wird der Name der \texttt{lco}-Datei
+% und die geforderte Papiergröse als Parameter übergeben. Stimmt die
+% Papiergröße nicht überein, so wird bei \cs{opening} eine Warnung
+% ausgegeben.
+% \begin{macro}{\@PapersizeWarning}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}^^A
+% \changes{v3.12}{2013/11/05}{Abweichung von 1\,mm nach unten und oben
+% erlaubt}^^A
+% \changes{v3.23}{2017/02/22}{Verwendung des neuen \cs{PaperNameToSize}}^^A
+% \begin{macro}{\@@PapersizeWarning}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}^^A
+% \begin{macro}{\LOPNP@size}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}^^A
+% \begin{macro}{\LOPNP@option}
+% \changes{v2.8q}{2002/03/25}{Neu (intern)}^^A
+% Zur einfacheren Realisierung wird mit vier internen Hilfsmakros
+% gearbeitet.
+% \begin{macrocode}
+\newcommand*{\LOPNP@option}{}
+\newcommand*{\LOPNP@size}{}
+\newcommand*{\@PapersizeWarning}{%
+ \begingroup%
+ \edef\@tempc{\noexpand\@tempswafalse
+ \noexpand\ifdim\paperwidth<\the\dimexpr\paperwidth-.1mm\relax
+ \relax
+ \noexpand\else
+ \noexpand\ifdim\paperwidth>\the\dimexpr\paperwidth+.1mm\relax
+ \relax
+ \noexpand\else
+ \noexpand\ifdim\paperheight<\the\dimexpr\paperheight-.1mm\relax
+ \relax
+ \noexpand\else
+ \noexpand\ifdim\paperheight>\the\dimexpr\paperheight+.1mm\relax
+ \relax
+ \noexpand\else
+ \noexpand\@tempswatrue
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@PapersizeWarning
+ }%
+ \def\@tempb{letter}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{legal}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}%
+ \else\def\@tempb{executive}\ifx\LOPNP@size\@tempb%
+ \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}%
+ \else%
+ \PaperNameToSize[letter]{\LOPNP@size}%
+ \fi
+ \fi
+ \fi
+ \@tempc
+ \endgroup%
+}
+%<class>\AfterPackage*{typearea}{%
+\ProvideUnknownPaperSizeError{letter}{%
+%<class> \ClassError{scrlttr2}{%
+%<package> \PackageError{scrletter}{%
+ papersize `\LOPNP@size' undefined}{%
+ You've told me to check for paper size
+ `\LOPNP@size'\MessageBreak
+ at letter option file `\LOPNP@option.lco',\MessageBreak
+ but this paper size is not supported.\MessageBreak
+ See the KOMA-Script manual for informations about known
+ paper sizes.}%
+}
+%<class>}
+\newcommand*{\@@PapersizeWarning}{%
+ \if@tempswa\else%
+%<class> \ClassWarningNoLine{scrlttr2%
+%<package> \PackageWarningNoLine{scrletter%
+ }{%
+ Letter option file `\LOPNP@option.lco'\MessageBreak
+ needs paper size `\LOPNP@size'.\MessageBreak
+ Current paper size is not `\LOPNP@size'!\MessageBreak
+ \scr@ifundefinedorrelax{KOMAClassName}{%
+ You should load package `typearea' either\MessageBreak
+ with option `paper=\LOPNP@size,paper=portrait' or
+ additionally\MessageBreak
+ }{%
+ You should add `paper=\LOPNP@size,paper=portrait' at the\MessageBreak
+ option list of `\string\documentclass' or\MessageBreak
+ }%
+ add `\string\KOMAoptions{paper=\LOPNP@size,paper=portrait}'\MessageBreak
+ before starting this letter!\MessageBreak
+ Maybe you know what you are doing,\MessageBreak
+ so I do not change this myself}%
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\LetterOptionNeedsPapersize}[2]{%
+ \edef\LOPNP@size{#2}\edef\LOPNP@option{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</body>
+%</letter>
+% \fi
+%
+% \subsection{Die Letter-Class-Optionen}
+%
+% Die Letter-Class-Optionen selbst werden wie bereits erwähnt über Dateien
+% realisiert. In den vorgefertigen Dateien für unterschiedliche Arten von
+% Briefen werden in erster Linie Pseudo-Längen passend gesetzt. In einigen
+% Fällen werden aber auch zusätzlich Befehle umdefiniert.
+%
+% \iffalse
+%<*lco>
+% \fi
+%
+% \subsubsection{Der Datei Kopf}
+%
+% \iffalse
+%<*head>
+% \fi
+%
+% Im Kopf ist natürlich die Datei zu deklarieren:
+% \changes{v3.04}{2009/04/21}{neue LCO \texttt{NF} von Jean-Marie Pacquet
+% übernommen und ergänzt}^^A
+% \changes{v3.04}{2009/06/26}{neue LCO \texttt{USletter2w} in Zusammenarbeit
+% mit Engelbert Buxbaum und Richard Ar\`es geschaffen}^^A
+% \changes{v3.04}{2009/06/29}{neue LCO \texttt{UScommercial9DW} für Papier im
+% Format letter oder legal in Umschlägen im Format commercial No.\,9 mit
+% zwei Fenstern}^^A
+% \changes{v3.04}{2009/06/30}{neue LCO \texttt{UScommercial9} für Papier im
+% Format letter oder legal in Umschlägen im Format commercial No.\,9 mit
+% einem Fenster auf Basis von
+% \texttt{http://www.envelopesuperstore.com/}}^^A
+% \changes{v3.04}{2009/06/26}{seit langem existierende LCO \texttt{visualize}^^A
+% zur Visualisierung einiger Pseudolängen aufgenommen}^^A
+% \changes{v3.17}{2015/02/17}{neue LCOs \texttt{DIN5008A} und
+% \texttt{DIN5008B}}^^A
+% \begin{macrocode}
+\ProvidesFile{%
+%<visualize> visualize%
+%<DIN> DIN%
+%<5008> 5008%
+%<A> A%
+%<B> B%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w
+%<UScommercial9> UScommercial9
+%<UScommercial9DW> UScommercial9DW
+ .lco}[\KOMAScriptVersion\space letter-class-option]
+% \end{macrocode}
+%
+% Manche \texttt{LCO}-Dateien bauen auf anderen auf:
+% \begin{macrocode}
+%<*5008>
+\LoadLetterOption{%
+%<A> DINmtext%
+%<B> DIN%
+}
+%</5008>
+% \end{macrocode}
+%
+% \begin{macro}{\LCOWarningNoLine}
+% \changes{v2.95}{2006/03/24}{Neu}^^A
+% \begin{macro}{\LCOWarning}
+% \changes{v2.95}{2006/03/24}{Neu}^^A
+% Außerdem wird ein Makro benötigt, das analog zu |\ClassWarningNoLine| oder
+% |\PackageWarningNoLine| funktioniert.
+%<*!5008>
+\providecommand*\LCOWarningNoLine[2]{%
+ \LCOWarning{#1}{#2\@gobble}%
+}
+\providecommand*\LCOWarning[2]{%
+ \GenericWarning{%
+ (#1)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces
+ }{%
+ Letter class option #1 Warning: #2%
+ }%
+}
+%</!5008>
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</head>
+%<*body>
+%<*!visualize>
+% \fi
+%
+% \subsubsection{Der Hauptteil}
+%
+% Die Maße für einige Optionen wurden nicht von mir selbst recherchiert:
+% \begin{center}
+% \begin{tabular}{ll}
+% \texttt{lco}-Datei & Recherchiert von \\\hline\\[-1.6ex]
+% DIN & mir \\
+% DINmtext & mir \\
+% DIN5008A & mir \\
+% DIN5008B & mir \\
+% KOMAold & mir \\
+% SNleft & Roger Luethi \\
+% SN & Roger Luethi \\
+% NF & Jean-Marie Pacquet \\
+% USletter2w & Engelbert Buxbaum \\
+% UScommercial9 & mir \\
+% UScommercial9DW & mir \\
+% \end{tabular}{ll}
+% \end{center}
+%
+% Zunächst wird geprüft, ob überhaupt die richtige Klasse geladen ist.
+% \begin{macrocode}
+%<*!5008>
+\@ifundefined{scr@fromname@var}{%
+ \LCOWarningNoLine{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w%
+%<UScommercial9> UScommercial9%
+%<UScommercial9DW> UScommercial9DW%
+ }{%
+ This letter class option file was made only\MessageBreak
+ to be used with KOMA-Script letter class\MessageBreak
+ `scrlttr2' or letter package `scrletter'.\MessageBreak
+ Use with other classes and without that package\MessageBreak
+ can result in a lot of errors%
+ }%
+}{}
+% \end{macrocode}
+%
+% Dann wird geprüft, ob das richtige Papierformat vorhanden ist.
+% \begin{macrocode}
+\LetterOptionNeedsPapersize{%
+%<DIN> DIN%
+%<DINmoretext> DINmtext%
+%<SN> SN%
+%<SNold> SNold%
+%<SwissLeft> SNleft%
+%<KOMAold> KOMAold%
+%<NF> NF%
+%<USletter2w> USletter2w%
+%<UScommercial9> UScommercial9%
+%<UScommercial9DW> UScommercial9DW%
+%<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF>
+}{a4}
+%</DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold|NF>
+%<*USletter2w|UScommercial9|UScommercial9DW>
+}{letter}
+%</USletter2w|UScommercial9|UScommercial9DW>
+% \end{macrocode}
+%
+% Dann werden die Werte gesetzt.
+% \begin{description}
+% \item[ZIP-Code]
+% \changes{v3.03}{2009/03/04}{Bezeichner der Variablen \texttt{fromzipcode}^^A
+% wird gesetzt}
+% \begin{macrocode}
+%<!KOMAold>\setkomavar*{fromzipcode}{%
+%<DIN|DINmoretext> D}
+%<SwissLeft|SN> CH}
+%<NF> F}
+%<USletter2w|UScommercial9|UScommercial9DW> US}
+% \end{macrocode}
+% \item[Faltmarken]
+% \changes{v2.97e}{2007/11/20}{Die neuen Faltmarken werden berücksichtigt.}^^A
+% \begin{macrocode}
+\@setplength{foldmarkhpos}{3.5mm}
+\@setplength{tfoldmarkvpos}{%
+%<DIN|SwissLeft|SN> 105mm}
+%<DINmoretext> 87mm}
+%<KOMAold> 103.5mm}
+%<NF> 99mm}
+%<USletter2w|UScommercial9|UScommercial9DW> 3.75in}
+\@setplength{mfoldmarkvpos}{\z@}
+\@setplength{bfoldmarkvpos}{%
+%<DIN|SwissLeft|SN> 210mm}
+%<DINmoretext> 192mm}
+%<KOMAold> 202.5mm}
+%<NF> 198mm}
+%<USletter2w> 7.4in}
+%<UScommercial9|UScommercial9DW> 7.375in}
+\@setplength{lfoldmarkhpos}{\z@}
+% \end{macrocode}
+% \item[Anschrift]
+% \begin{macrocode}
+\@setplength{toaddrvpos}{%
+%<DIN|SN> 45mm}
+%<DINmoretext> 27mm}
+%<SwissLeft> 35.5mm}
+%<KOMAold> 49mm}
+%<NF> 35mm}
+%<USletter2w> 1.8in}
+%<UScommercial9|UScommercial9DW> 2.1875in}
+\@setplength{toaddrhpos}{%
+%<DIN|DINmoretext|SwissLeft> 20mm}
+%<SN> -8mm}
+%<KOMAold> 1in}
+%<KOMAold>\@addtoplength{toaddrhpos}{\oddsidemargin}
+%<NF> -10mm}
+%<USletter2w> .73in}
+%<UScommercial9> 0.6875in}
+%<UScommercial9DW> .5625in}
+\@setplength{toaddrwidth}{%
+%<DIN|DINmoretext> 85mm}
+%<SN> 90mm}
+%<SwissLeft|NF> 100mm}
+%<KOMAold> 70mm}
+%<USletter2w> 3.11in}
+%<UScommercial9> 4.5in}
+%<UScommercial9DW> 3.625in}
+% \end{macrocode}
+% \changes{v3.03}{2009/06/25}{Anschriftfeld enthält laut Doku die
+% Rücksendeadresse, also machen wir das jetzt auch so}^^A
+% \begin{macrocode}
+\@setplength{toaddrheight}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF> 45mm}
+%<USletter2w> 1.17in}
+%<UScommercial9|UScommercial9DW> 1.125in}
+%</!5008>
+\@setplength{toaddrindent}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|USletter2w|UScommercial9|UScommercial9DW> \z@}
+%<*5008>
+ 5mm}
+\@setplength{locvpos}{%
+ \dimexpr\useplength{toaddrvpos}+\useplength{backaddrheight}}
+%</5008>
+%<*!5008>
+%<NF> 10mm}
+\@setplength{backaddrheight}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF> 5mm}
+%<USletter2w|UScommercial9|UScommercial9DW> \z@}
+%<USletter2w|UScommercial9|UScommercial9DW>\KOMAoptions{backaddress=false}
+\@setplength{specialmailindent}{\fill}
+\@setplength{specialmailrightindent}{1em}
+%</!5008>
+%<*5008>
+\@setplength{specialmailindent}{\useplength{toaddrindent}}
+\@setplength{specialmailrightindent}{\z@}
+%</5008>
+% \end{macrocode}
+% \item[Absenderergänzung]
+% \begin{macrocode}
+\@setplength{locwidth}{%
+%<DIN|DINmoretext|SN|SwissLeft|KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW> \z@}
+%<5008> 75mm}
+%<5008>\@setplength{lochpos}{10mm}
+%<*!5008>
+% \end{macrocode}
+% \item[Kopf]
+% \begin{macrocode}
+\@setplength{firstheadvpos}{%
+%<DIN|DINmoretext|SN|SwissLeft> 8mm}
+%<KOMAold> 6mm}
+%<NF> 15mm}
+%<USletter2w> .36in}
+%<UScommercial9|UScommercial9DW> .4375in}
+%</!5008>
+%<*5008>
+\@setplength{firstheadhpos}{%
+ \dimexpr \useplength{toaddrhpos}+\useplength{toaddrindent}}
+%</5008>
+\@setplength{firstheadwidth}{%
+%<KOMAold> \textwidth}
+%<NF> 170mm}
+%<*DIN|DINmoretext|SN|SwissLeft|UScommercial9>
+ \paperwidth}
+\ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}}
+\else
+ \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}}
+\fi
+%</DIN|DINmoretext|SN|SwissLeft|UScommercial9>
+%<5008> \dimexpr 125mm-\useplength{firstheadhpos}}
+%<*USletter2w>
+ \paperwidth}
+\@addtoplength[-]{firstheadwidth}{.68in}
+%</USletter2w>
+%<*UScommercial9DW>
+ \paperwidth}
+\@addtoplength[-]{firstheadwidth}{.25in}
+%</UScommercial9DW>
+% \end{macrocode}
+% \item[Fuß]
+% \changes{v2.9u}{2005/03/05}{Der Fuß hat optional eine feste Position 16\,mm
+% über der unteren Papierkante.}^^A
+% \begin{macrocode}
+%<!5008>\@setplength{firstfootwidth}{\useplength{firstheadwidth}}
+%<*5008>
+\@setplength{firstfoothpos}{%
+ \dimexpr\useplength{toaddrhpos}+\useplength{toaddrindent}}%
+\@setplength{firstfootwidth}{%
+ \dimexpr \paperwidth-\useplength{toaddrhpos}-\useplength{firstfoothpos}}%
+%</5008>
+%<KOMAold>\@setplength{firstfootvpos}{\paperheight}
+%<KOMAold>\@addtoplength{firstfootvpos}{-2cm}
+%<!KOMAold&!NF>\ifnum \scr@compatibility >\@nameuse{scr@v@2.9t}\relax
+%<!KOMAold&!NF> \@setplength{firstfootvpos}{\paperheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{-16mm}
+%<!KOMAold&!NF>\else
+%<!KOMAold&!NF> \@setplength{firstfootvpos}{1in}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\topmargin}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\headheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\headsep}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\textheight}
+%<!KOMAold&!NF> \@addtoplength{firstfootvpos}{\footskip}
+%<!KOMAold&!NF>\fi
+%<NF>\@setplength{firstfootvpos}{266.679mm}
+% \end{macrocode}
+% \item[Geschäftszeile]
+% \begin{macrocode}
+%<!(5008&B)>\@setplength{refvpos}{%
+%<DIN|SN> 98.5mm}
+%<DINmoretext> 80.5mm}
+%<5008&A> 79.4mm}
+%<SwissLeft> 89mm}
+%<KOMAold> 89.5mm}
+%<NF> \useplength{tfoldmarkvpos}}
+%<USletter2w> 3.1in}
+%<UScommercial9|UScommercial9DW> 3.4375in}
+\@setplength{refaftervskip}{%
+%<!KOMAold&!5008> \baselineskip}
+%<KOMAold> 2\baselineskip}
+%<5008> 8.46mm}
+%<*!5008>
+% \end{macrocode}
+% Bei der Breite der Geschäftszeile brauchen wir wieder eine Sonderlösung,
+% damit die Option "`wide"' auch später noch gesetzt werden kann. Also
+% verwenden wir hier den Wert 0 als mit der Bedeutung "`ist bei \cs{opening}
+% zu berechnen.
+% \begin{macrocode}
+\@setplength{refwidth}{0pt}
+% \end{macrocode}
+% \item[Signature]
+% \begin{macrocode}
+\@setplength{sigindent}{0mm}
+\@setplength{sigbeforevskip}{2\baselineskip}
+%<DIN|DINmoretext|SN|SwissLeft>\let\raggedsignature=\centering
+%<KOMAold|NF|USletter2w|UScommercial9|UScommercial9DW>\let\raggedsignature=\raggedright
+% \end{macrocode}
+% \end{description}
+% Es folgen ggf. noch zusätzliche Änderungen.
+% \changes{v3.13b}{2014/10/04}{\cs{@firsthead} existiert nicht mehr, daher nun
+% mit einem neu geschaffenen \emph{hook}}^^A
+% \begin{macrocode}
+%<*DINmoretext>
+\def\scr@default@firsthead@fromaddress@hook{\def\\{,\ \@gobble}}
+%</DINmoretext>
+% \end{macrocode}
+%
+% Außerdem gibt es noch die Kompatibilitätseinstellungen, die ebenfalls von
+% \texttt{KOMAold} aktiviert werden.
+% \begin{macrocode}
+%<*KOMAold>
+\def\yourref{\setkomavar{yourref}}
+\def\yourmail{\setkomavar{yourmail}}
+\def\myref{\setkomavar{myref}}
+\def\customer{\setkomavar{customer}}
+\def\invoice{\setkomavar{invoice}}
+\@ifundefined{scr@refitemi@var}{\newkomavar{refitemi}}{}
+\def\refitemi{\setkomavar{refitemi}}
+\def\refitemnamei{\setkomavar*{refitemi}}
+\@ifundefined{scr@refitemii@var}{\newkomavar{refitemii}}{}
+\def\refitemii{\setkomavar{refitemii}}
+\def\refitemnameii{\setkomavar*{refitemii}}
+\@ifundefined{scr@refitemiii@var}{\newkomavar{refitemiii}}{}
+\def\refitemiii{\setkomavar{refitemiii}}
+\def\refitemnameiii{\setkomavar*{refitemiii}}
+\l@addto@macro{\defaultreffields}{%
+ \addtoreffields{refitemi}%
+ \addtoreffields{refitemii}%
+ \addtoreffields{refitemiii}%
+ }
+\addtoreffields{refitemi}%
+\addtoreffields{refitemii}%
+\addtoreffields{refitemiii}%
+\def\toname{\usekomavar{toname}}
+\def\toaddress{\usekomavar{toaddress}}
+\@ifundefined{scr@branch@var}{\newkomavar{branch}}{}
+\def\branch{\setkomavar{branch}}
+\def\frombranch{\usekomavar{branch}}
+\def\signature{\setkomavar{signature}}
+\def\fromsig{\usekomavar{signature}}
+\def\name{\setkomavar{fromname}}
+\def\fromname{\usekomavar{fromname}}
+\def\address{\setkomavar{fromaddress}}
+\def\fromaddress{\usekomavar{fromaddress}}
+\def\location{\setkomavar{location}}
+\def\fromlocation{\usekomavar{location}}
+\def\backaddress{\setkomavar{backaddress}}
+\def\@tempa{%
+ \ifkomavarempty{fromname}{}{%
+ \strut\ignorespaces\usekomavar{fromname}%
+ \ifkomavarempty{fromaddress}{}{\\}}%
+ \ifkomavarempty{fromaddress}{}{%
+ \strut\ignorespaces\usekomavar{fromaddress}}%
+ }
+\ifx\@tempa\scr@backaddress@var%
+ \setkomavar{backaddress}{}
+\fi
+\def\frombackaddress{\usekomavar{backaddress}}
+\def\telephone{\setkomavar{fromphone}}
+\def\telephonenum{\usekomavar{fromphone}}
+\def\specialmail{\setkomavar{specialmail}}
+\def\@specialmail{\usekomavar{specialmail}}
+\def\title{\setkomavar{title}}
+\def\@title{\usekomavar{title}}
+\def\subject{\setkomavar{subject}}
+\def\@subject{\usekomavar{subject}}
+\def\place{\setkomavar{place}}
+\def\fromplace{\usekomavar{place}}
+\let\ccnameseparator=\scr@ccseparator@var
+\setkomavar{ccseparator}{\ccnameseparator}
+\let\enclnameseparator=\scr@enclseparator@var
+\setkomavar{enclseparator}{\enclnameseparator}
+\setkomafont{fromname}{\scshape}
+\def\foldmarkson{\@ObsoleteCommand{\foldmarkson}{foldmarks=on}}
+\def\foldmarksoff{\@ObsoleteCommand{\foldmarksoff}{foldmarks=off}}
+\def\addrfieldon{\@ObsoleteCommand{\addrfieldon}{addrfield=on}}
+\def\addrfieldoff{\@ObsoleteCommand{\addrfieldoff}{addrfield=off}}
+\def\subjecton{\@ObsoleteCommand{\subjecton}{subject=titled}}
+\def\subjectoff{\@ObsoleteCommand{\subjectoff}{subject=untitled}}
+\def\subjectafteron{%
+ \@ObsoleteCommand{\subjectafteron}{subject=afteropening}}
+\def\subjectafteroff{%
+ \@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}}
+%</KOMAold>
+% \end{macrocode}
+%
+% Und für \texttt{DIN5008} braucht es dann noch einige zusätzliche
+% Einstellungen:
+% \begin{macrocode}
+%</!5008>
+%<*5008>
+\@newplength{specialmailheight}
+\@setplength{specialmailheight}{12.7mm}
+\areaset[5mm]{165mm}{233mm}
+\KOMAoptions{%
+ fromalign=locationleft,
+ addrfield=topaligned,
+ refline=narrow,
+ parskip=full
+}
+\l@addto@macro\@PapersizeWarning{%
+ \begingroup
+ \@tempswafalse
+ \ifdim\oddsidemargin<\dimexpr 25mm-1in-1pt\relax\@tempswatrue\else
+ \ifdim\oddsidemargin>\dimexpr 25mm-1in+1pt\relax\@tempswatrue\fi\fi
+ \ifdim\textwidth<\dimexpr \paperwidth-45mm-1pt\relax\@tempswatrue\else
+ \ifdim\textwidth>\dimexpr \paperwidth-45mm+1pt\relax\@tempswatrue\fi\fi
+ \if@tempswa
+ \LCOWarning{DIN5008%
+%<A> A%
+%<B> B%
+ }{%
+ DIN5008 orders exact margins and text\MessageBreak
+ width. Without following these values,\MessageBreak
+ your document does not conform DIN5008.\MessageBreak
+ You should use, e.g.,\MessageBreak
+ \space\string\areaset[5mm]{%
+ \the\dimexpr \paperwidth-45mm\relax}{%
+ \the\dimexpr 1.414\dimexpr \paperwidth-45mm\relax\relax}\MessageBreak
+ to follow the norm
+ }%
+ \fi
+ \ifdim \dimexpr\parskip\relax=\dimexpr\baselineskip\relax\else
+ \LCOWarning{DIN5008%
+%<A> A%
+%<B> B%
+ }{%
+ DIN5008 orders paragraph separation by\MessageBreak
+ exactly one line. Without this, your\MessageBreak
+ document does not conform DIN5008.\MessageBreak
+ You shoud use, e.g.,\MessageBreak
+ \space\string\KOMAoption{parskip}{full}\MessageBreak
+ to follow the norm
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\backaddr@format}
+% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
+% \cs{unskip}\cs{strut}}^^A
+% Nicht unterstrichene, mehrzeilig oben ausgerichtete Rücksendeadresse.
+% \begin{macrocode}
+\renewcommand{\backaddr@format}[1]{\hspace*{\useplength{toaddrindent}}%
+ \parbox[t][\useplength{backaddrheight}][t]%
+ {\dimexpr\useplength{toaddrwidth}-\useplength{toaddrindent}}%
+ {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\specialmail@format}
+% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
+% \cs{unskip}\cs{strut}}^^A
+% Mehrzeilig oben ausgerichtete Versandart.
+% \begin{macrocode}
+\renewcommand{\specialmail@format}[1]{%
+ \parbox[t][\useplength{specialmailheight}][t]%
+ {\dimexpr\useplength{toaddrwidth}
+ -\useplength{specialmailindent}
+ -\useplength{specialmailrightindent}}%
+ {\strut\ignorespaces #1\ifhmode\scr@endstrut\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+% Und Schrifteinstellungen:
+% \begin{macrocode}
+\setkomafont{specialmail}{\sffamily\fontsize{10pt}{12pt}\selectfont}
+\setkomafont{backaddress}{\sffamily\fontsize{8pt}{10pt}\selectfont}
+\setkomafont{addressee}{\sffamily\fontsize{10pt}{12pt}\selectfont}
+\setkomafont{fromname}{\sffamily\fontsize{10pt}{12pt}\selectfont}
+\setkomafont{fromaddress}{\sffamily\fontsize{10pt}{12pt}\selectfont}
+\setkomafont{refvalue}{\sffamily\fontsize{10pt}{12pt}\selectfont}
+\let\raggedsignature\raggedright
+%</5008>
+% \end{macrocode}
+%
+% \iffalse
+%</!visualize>
+%<*visualize>
+% \fi
+%
+% \subsection{Makros zur Visualisierung diverser Felder in einem Brief}
+%
+% Diese Makros werden nur von \texttt{visualize.lco} verwendet und stellen den
+% Hauptteil dieser LCO dar.
+%
+% Das Paket benötigt \textsf{eso-pic}.
+% \changes{v3.18}{2015/06/03}{lade \textsf{eso-pic} unbedingt}^^A
+% \begin{macrocode}
+\RequirePackage{eso-pic}
+% \end{macrocode}
+%
+% \begin{macro}{\showfields}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
+% Diese Anweisung erlaubt es, eine Reihe von Felder zu visualisieren. Dazu
+% gibt man die gewünschten Felder als Komma separierte Liste im ersten und
+% einzigen Argument der Anweisung an. Gibt man ein unbekanntes Feld an, so
+% wird nicht etwa ein Fehler, sondern nur eine Warnung ausgegeben. Die
+% Visualisierung erfolgt im Hintergrund. Dies wird mit Hilfe des Pakets
+% \textsf{eso-pic} erreicht. Wichtig ist noch, dass die Anweisung nicht
+% zurückgenommen werden kann.
+% \begin{macrocode}
+\newcommand*{\showfields}[1]{%
+ \AtBeginLetter{%
+ \begingroup
+ \@for \@tempa:=#1\do{%
+ \scr@trim@spaces\@tempa
+ \ifx\@tempa\@empty\else
+ \@ifundefined{showfield@\@tempa}{%
+ \LCOWarning{visualize}{Unknown field `\@tempa' ignored}%
+ }{%
+ \edef\@tempa{%
+ \noexpand\AddToShipoutPicture*{%
+ \noexpand\AtPageUpperLeft{%
+ \noexpand\usekomafont{field}%
+ \noexpand\@nameuse{showfield@\@tempa}%
+ }%
+ }%
+ }\@tempa
+ }%
+ \fi
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \begin{KOMAfont}{field}
+% Die Visualisierung erfolgt dabei in einer wählbaren Farbe, die über das
+% Element \cs{field} definiert ist. Voreingestellt ist dabei
+% \cs{normalcolor}.
+% \begin{macrocode}
+\newkomafont{field}{\normalcolor}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{macro}
+%
+% \begin{macro}{\showfield}
+% Die Visualisierung der einzelnen Felder erfolgt über eigene Anweisungen des
+% Aufbaus \cs{showfield@\emph{Feldname}}. In der Regel sind die Felder
+% rechteckig. Zur Visualisierung solcher Felder können daher einheitliche
+% Anweisungen verwendet werden. Diese besitzen vier Argumente:
+% \begin{enumerate}
+% \item Abstand vom linken Rand (x-Koordinate des Rahmens)
+% \item Abstand vom oberen Rand (y-Koordinate des Rahmens)
+% \item Breite des Feldes
+% \item Höhe des Feldes; ist dieser Wert negativ gibt es keine feste Höhe,
+% sondern nur eine Art unbestimmte Ausdehnung mit einer Mindesthöhe
+% \end{enumerate}
+%
+% \begin{macro}{\showfield@by@frame}
+% Diese Anweisung visualisiert ein rechteckiges Feld durch Rahmen. Bei einer
+% negativen Höhe wird ein unten offener Rahmen gezeichnet, bei dem die
+% vertikalen Linien als Pfeile nach unten ausgeführt werden.
+% \begin{macrocode}
+\newcommand*{\showfield@by@frame}[4]{%
+ \thinlines
+ \ifdim #4<\z@
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}%
+ \setlength{\@tempdima}{\dimexpr #1+#3\relax}%
+ \setlength{\@tempdimb}{#4}
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){%
+ \vector(0,-1){\LenToUnit{-\@tempdimb}}}%
+ \put(\LenToUnit\@tempdima,-\LenToUnit{#2}){%
+ \vector(0,-1){\LenToUnit{-\@tempdimb}}}%
+ \else
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{#3}}}%
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{#4}}}%
+ \setlength{\@tempdima}{\dimexpr #1+#3\relax}%
+ \setlength{\@tempdimb}{\dimexpr #2+#4\relax}%
+ \put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){%
+ \line(-1,0){\LenToUnit{#3}}}%
+ \put(\LenToUnit\@tempdima,\LenToUnit{-\@tempdimb}){%
+ \line(0,1){\LenToUnit{#4}}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showfield@by@edges}
+% Diese Anweisung visualisert ein rechteckiges Feld, indem es die Ecken des
+% Feldes durch kleine Striche markiert. Bei negativer Höhe entfallen die
+% unteren Eckmarkierungen.
+% \begin{macrocode}
+\newcommand*{\showfield@by@edges}[4]{%
+ \thinlines
+ \setlength{\@tempdima}{\dimexpr #1+#3\relax}%
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(1,0){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(-1,0){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{\@tempdima},-\LenToUnit{#2}){\line(0,-1){\LenToUnit{\edgesize}}}%
+ \ifdim #4<\z@\else
+ \setlength{\@tempdimb}{\dimexpr #2+#4\relax}%
+ \put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(1,0){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{#1},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(-1,0){\LenToUnit{\edgesize}}}%
+ \put(\LenToUnit{\@tempdima},-\LenToUnit{\@tempdimb}){\line(0,1){\LenToUnit{\edgesize}}}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\edgesize}
+% Die Länge der Ecklinien wird über dieses Makro bestimmt. Voreingestellt ist
+% 1\,ex.
+% \begin{macrocode}
+\newcommand*{\edgesize}{1ex}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\showfield@by@rule}
+% Diese Anweisung visualisiert ein rechteckiges Feld, indem es das komplette
+% Feld einfärbt. Es wird hier nicht zwischen unten offenen und geschlossenen
+% Feldern unterschieden.
+% \begin{macrocode}
+\newcommand*{\showfield@by@rule}[4]{%
+ \ifdim #4<\z@
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[#4]{#3}{-#4}}%
+ \else
+ \put(\LenToUnit{#1},-\LenToUnit{#2}){\rule[-#4]{#3}{#4}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Die Voreinstellung für die Visualsierung ist mit Rahmen:
+% \begin{macrocode}
+\newcommand*{\showfield}{}
+\let\showfield\showfield@by@frame
+% \end{macrocode}
+%
+% \begin{macro}{\setshowstyle}
+% Dieser Stil der Visualisierung kann per Anweisung umgeschaltet
+% werden. Existiert ein Stil nicht, so wird kein Fehler gemldet, sondern
+% lediglich eine Warnung und der Standardstil verwendet:
+% \begin{macrocode}
+\newcommand*{\setshowstyle}[1]{%
+ \@ifundefined{showfield@by@#1}{%
+ \LCOWarning{visualize}{Unknown show type `#1'.\MessageBreak
+ You should simply set one of the supported\MessageBreak
+ show types `frame', `edges', `rule'.\MessageBreak
+ Style `frame' will be used instead}%
+ \let\showfield\showfield@by@frame
+ }{%
+ \expandafter\let\expandafter\showfield\csname showfield@by@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Die folgenden Felder werden derzeit unterstützt:
+% \begin{macro}{\showfield@test}
+% ein Testfeld \texttt{test} mit den Koordinaten:
+% $(1\,\mathrm{cm},1\,\mathrm{cm})\times(10\,\mathrm{cm},15\,\mathrm{cm})$
+% \begin{macrocode}
+\newcommand*{\showfield@test}{%
+ \showfield{1cm}{1cm}{10cm}{15cm}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\showfield@head}
+% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstheadhpos}^^A
+% beachtet}
+% das Feld \texttt{head} für den Kopfbereich des Briefbogens:
+% \begin{macrocode}
+\newcommand*{\showfield@head}{%
+ \ifdim\useplength{firstheadhpos}<\paperwidth
+ \ifdim \useplength{firstheadhpos}>-\paperwidth
+ \ifdim \useplength{firstheadhpos}<\z@
+ \setlength\@tempskipa{\paperwidth}%
+ \addtolengthplength{\@tempskipa}{firstheadhpos}%
+ \addtolengthplength[-]{\@tempskipa}{firstheadwidth}%
+ \else
+ \setlength{\@tempskipa}{\useplength{firstheadhpos}}%
+ \fi
+ \else
+ \setlength\@tempskipa{\oddsidemargin}%
+ \addtolength\@tempskipa{1in}%
+ \fi
+ \else
+ \setlength\@tempskipa{.5\paperwidth}%
+ \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}%
+ \fi
+ \showfield{\@tempskipa}%
+ {\useplength{firstheadvpos}}%
+ {\useplength{firstheadwidth}}%
+ {-\headheight}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\showfield@foot}
+% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstfoothpos}^^A
+% beachtet}
+% das Feld \texttt{foot} für den Fußbereich des Briefbogens:
+% \begin{macrocode}
+\newcommand*{\showfield@foot}{%
+ \ifdim\useplength{firstfoothpos}<\paperwidth
+ \ifdim \useplength{firstfoothpos}>-\paperwidth
+ \ifdim \useplength{firstfoothpos}<\z@
+ \setlength\@tempskipa{\paperwidth}%
+ \addtolengthplength{\@tempskipa}{firstfoothpos}%
+ \addtolengthplength[-]{\@tempskipa}{firstfootwidth}%
+ \else
+ \setlength{\@tempskipa}{\useplength{firstfoothpos}}%
+ \fi
+ \else
+ \setlength\@tempskipa{\oddsidemargin}%
+ \addtolength\@tempskipa{1in}%
+ \fi
+ \else
+ \setlength\@tempskipa{.5\paperwidth}%
+ \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}%
+ \fi
+ \showfield{\@tempskipa}%
+ {\useplength{firstfootvpos}}%
+ {\useplength{firstfootwidth}}%
+ {-\baselineskip}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\showfield@address}
+% \changes{v3.07a}{2011/01/10}{Implementierung der Höhe an die Änderung in
+% \textsf{scrlttr}~3.03b angepasst.}
+% das Feld \texttt{address} für das Feld mit der Anschrift:
+% \begin{macrocode}
+\newcommand*{\showfield@address}{%
+ \setlengthtoplength{\@tempskipa}{toaddrhpos}%
+ \ifdim \@tempskipa<\z@
+ \addtolength{\@tempskipa}{\paperwidth}%
+ \addtolengthplength[-]{\@tempskipa}{toaddrwidth}%
+ \fi
+ \showfield{\@tempskipa}{\useplength{toaddrvpos}}%
+ {\useplength{toaddrwidth}}%
+ {\dimexpr\useplength{toaddrheight}\relax}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\showfield@location}
+% \changes{v3.07a}{2011/01/10}{Implementierung der Höhe an die Änderung in
+% \textsf{scrlttr}~3.03b angepasst.}
+% das Feld \texttt{location} mit der Absenderergänzung:
+% \begin{macrocode}
+\newcommand*{\showfield@location}{%
+ \begingroup
+ \ifdim \useplength{locwidth}=\z@%
+ \@setplength{locwidth}{\paperwidth}%
+ \ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}%
+ \else
+ \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}%
+ \fi
+ \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}%
+ \if@bigloc%
+ \@setplength[.66667]{locwidth}{\useplength{locwidth}}%
+ \else%
+ \@setplength[.5]{locwidth}{\useplength{locwidth}}%
+ \fi%
+ \fi%
+ \ifdim \useplength{lochpos}=\z@%
+ \@setplength{lochpos}{\useplength{toaddrhpos}}%
+ \fi
+ \ifdim \useplength{locvpos}=\z@%
+ \@setplength{locvpos}{\useplength{toaddrvpos}}%
+ \fi
+ \ifdim \useplength{locheight}=\z@%
+ \@setplength{locheight}{\useplength{toaddrheight}}%
+ \fi
+ \setlengthtoplength[-]{\@tempskipa}{lochpos}%
+ \ifdim \@tempskipa<\z@
+ \addtolength{\@tempskipa}{\paperwidth}%
+ \else
+ \addtolengthplength{\@tempskipa}{locwidth}%
+ \fi
+ \addtolengthplength[-]{\@tempskipa}{locwidth}%
+ \showfield{\@tempskipa}{\useplength{locvpos}}%
+ {\useplength{locwidth}}{\useplength{locheight}}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\showfield@refline}
+% das Feld mit der Geschäftszeile:
+% \begin{macrocode}
+\newcommand*{\showfield@refline}{%
+ \begingroup
+ \ifdim\useplength{refwidth}=\z@
+ \if@refwide
+ \@setplength{refwidth}{\paperwidth}%
+ \ifdim \useplength{toaddrhpos}>\z@
+ \@setplength{refhpos}{\useplength{toaddrhpos}}%
+ \else
+ \@setplength[-]{refhpos}{\useplength{toaddrhpos}}%
+ \fi
+ \@addtoplength[-2]{refwidth}{\useplength{refhpos}}%
+ \else
+ \@setplength{refwidth}{\textwidth}%
+ \@setplength{refhpos}{\oddsidemargin}%
+ \@addtoplength{refhpos}{1in}%
+ \fi
+ \else\ifdim\useplength{refhpos}=\z@
+ \begingroup
+ \setlength\@tempdima{\textwidth}%
+ \addtolengthplength[-]{\@tempdima}{refwidth}%
+ \setlength\@tempdimb{\oddsidemargin}%
+ \addtolength\@tempdimb{1in}%
+ \setlength{\@tempdimc}{\paperwidth}%
+ \addtolength{\@tempdimc}{-\textwidth}%
+ \divide\@tempdimb by 32768\relax
+ \divide\@tempdimc by 32768\relax
+ \ifdim\@tempdimc=\z@\else
+ \multiply\@tempdima by\@tempdimb
+ \divide\@tempdima by\@tempdimc
+ \fi
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\@setplength{refhpos}{\the\@tempdima}}%
+ \@tempa
+ \fi\fi
+ \showfield{\useplength{refhpos}}{\useplength{refvpos}}%
+ {\useplength{refwidth}}{-1.5\baselineskip}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showenvelope}
+% \begin{macro}{\@showenvelope}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@showenvelope}
+% \begin{macro}{\@@@showenvelope}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Es kann auch ein Briefumschlag angezeigt werden. Dazu müssen verschiedene
+% Parameter des Umschlags bekannt sein. Der Umschlag wird immer hochkant auf
+% der aktuellen Seite angezeigt. Hierfür wird das Paket \textsf{graphicx}
+% benötigt.
+% \changes{v3.18}{2015/06/03}{lade \textsf{graphicx} unbedingt}^^A
+% \begin{macrocode}
+\RequirePackage{graphicx}
+\newcommand*{\showenvelope}{}
+\newcommand*{\@@showenvelope}{}
+\newcommand*{\@@@showenvelope}{}
+\def\showenvelope(#1,#2){%
+ \kernel@ifnextchar (%)
+ {\@showenvelope({#1},{#2})}%
+ {\@@@showenvelope({#1},{#2})}%
+}
+\def\@@@showenvelope(#1,#2){%
+ \begingroup
+ \def\@tempa{\endgroup}%
+ \ifdim \paperwidth>#1\relax
+ \LCOWarning{visualize}{%
+ \string\paperwidth\space > envelope width not supported}%
+ \else
+ \ifdim \paperheight>#2\relax
+ \ifdim .5\paperheight>#2\relax
+ \expandafter\ifdim \useplength{tfoldmarkvpos}>#2\relax
+ \LCOWarning{visualize}{%
+ tfoldmarkvpos > envelope height not supported}%
+ \else
+ \def\@tempa{\endgroup
+ \@showenvelope({#1},{#2})%
+ ({\dimexpr (#1-\paperwidth)/2\relax},%
+ {\dimexpr (#2-\expandafter\dimexpr
+ \useplength{tfoldmarkvpos}\relax)%
+ /2\relax})%
+ }%
+ \fi
+ \else
+ \def\@tempa{\endgroup
+ \@showenvelope({#1},{#2})%
+ ({\dimexpr (#1-\paperwidth)/2\relax},%
+ {\dimexpr (#2-.5\paperheight)/2\relax})%
+ }%
+ \fi
+ \else
+ \def\@tempa{\endgroup
+ \@showenvelope({#1},{#2})%
+ ({\dimexpr (#1-\paperwidth)/2\relax},%
+ {\dimexpr (#2-\paperheight)/2\relax})%
+ }%
+ \fi
+ \fi
+ \@tempa
+}
+\def\@showenvelope(#1,#2)(#3,#4){%
+ \kernel@ifnextchar [%]
+ {\@@showenvelope({#1},{#2})({#3},{#4})}%
+ {\@@showenvelope({#1},{#2})({#3},{#4})[]}%
+}
+\def\@@showenvelope(#1,#2)(#3,#4)[#5]{%
+% \end{macrocode}
+% Die Argumente sind:
+% \begin{enumerate}
+% \item Breite des Umschlags,
+% \item Höhe des Umschlags,
+% \item Abstand des Briefbogens vom linken und rechten Rand des Umschlags,
+% \item Abstand des Briefbogens vom oberen und unteren Rand des Umschlags,
+% \item optionale weitere Anweisungen, zum Setzen von Elementen.
+% \end{enumerate}
+% \begin{macrocode}
+ \newpage
+ \vspace*{\fill}
+ \rotatebox{90}{%
+ \begin{picture}(0,0)
+ \begin{picture}(\LenToUnit{#1},\LenToUnit{#2})(0,\LenToUnit{#2})
+ \newcommand*{\PlusHOffset}[1]{%
+ \dimexpr \expandafter\dimexpr ##1\relax + #3\relax
+ }%
+ \newcommand*{\MinusHOffset}[1]{%
+ \dimexpr \expandafter\dimexpr ##1\relax - #3\relax
+ }%
+ \newcommand*{\PlusVOffset}[1]{%
+ \dimexpr \expandafter\dimexpr ##1\relax + #4\relax
+ }%
+ \newcommand*{\MinusVOffset}[1]{%
+ \dimexpr \expandafter\dimexpr ##1\relax - #4\relax
+ }%
+ \newcommand{\AtEnvelopeUpperLeft}[1]{%
+ \put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\MinusVOffset{#2}}){##1}%
+ }%
+ \newcommand{\AtEnvelopeLowerLeft}[1]{%
+ \put(\LenToUnit{\PlusHOffset\z@},\LenToUnit{\PlusVOffset\z@}){##1}%
+ }%
+ \newcommand{\AtEnvelopeUpperRight}[1]{%
+ \put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\MinusVOffset{#2}}){##1}%
+ }%
+ \newcommand{\AtEnvelopeLowerRight}[1]{%
+ \put(\LenToUnit{\MinusHOffset{#1}},\LenToUnit{\PlusVOffset\z@}){##1}%
+ }%
+ \newcommand*{\measuredIFrame}{}%
+ \def\measuredIFrame(##1,##2)(##3,##4){%
+ \put(\LenToUnit{##1},\LenToUnit{##2}){%
+ \measuredFrameLB({##3},{##4})%
+ }%
+ \put(\LenToUnit{\MinusHOffset\z@},%
+ \LenToUnit{\dimexpr ##2-.5mm\relax}){%
+ \measureLineHB{\PlusHOffset{##1}}%
+ }%
+ \put(\LenToUnit{\dimexpr ##1+##3\relax},%
+ \LenToUnit{\dimexpr ##2-.5mm\relax}){%
+ \measureLineHB{\dimexpr #1-%
+ \PlusHOffset{\dimexpr ##1+##3\relax}\relax}%
+ }%
+ \put(\LenToUnit{\dimexpr ##1-.5mm\relax},%
+ \LenToUnit{\dimexpr ##2+##4\relax}){%
+ \measureLineVL{\PlusVOffset{\dimexpr -##2-##4\relax}}%
+ }%
+ \put(\LenToUnit{\dimexpr ##1-.5mm\relax},%
+ \LenToUnit{\PlusVOffset{-#2}}){%
+ \measureLineVL{\dimexpr #2-%
+ \PlusVOffset{\dimexpr -##2\relax}\relax}%
+ }%
+ }%
+ \put(0,0){%
+ \thicklines
+ \usekomafont{envelope}%
+ \measuredFrameLB({#1},{#2})%
+ }%
+ \AtEnvelopeLowerLeft{%
+ \usekomafont{letter}%
+ \dashbox{\LenToUnit{1mm}}%
+ (\LenToUnit{\MinusHOffset{\MinusHOffset{#1}}},%
+ \LenToUnit{\MinusVOffset{\MinusVOffset{#2}}}){}%
+ }%
+ \expandafter\ifdim \useplength{toaddrhpos}<\z@
+ \AtEnvelopeUpperLeft{%
+ \thicklines
+ \usekomafont{envelope}%
+ \measuredIFrame(\expandafter\dimexpr \useplength{toaddrhpos}+
+ \MinusHOffset{\MinusHOffset{#1}}\relax,%
+ -\dimexpr %
+ \expandafter\dimexpr\useplength{toaddrvpos}\relax
+ +
+ \expandafter
+ \dimexpr\useplength{toaddrheight}\relax
+ \relax)%
+ (\useplength{toaddrwidth},\useplength{toaddrheight})%
+ }%
+ \else
+ \AtEnvelopeUpperLeft{%
+ \thicklines
+ \usekomafont{envelope}%
+ \measuredIFrame(\useplength{toaddrhpos},%
+ -\dimexpr %
+ \expandafter\dimexpr\useplength{toaddrvpos}\relax
+ +
+ \expandafter
+ \dimexpr\useplength{toaddrheight}\relax
+ \relax)%
+ (\useplength{toaddrwidth},\useplength{toaddrheight})%
+ }%
+ \fi
+ \AtEnvelopeUpperLeft{#5}%
+ \end{picture}
+ \end{picture}
+ }%
+ \newpage
+}
+% \end{macrocode}
+% \begin{KOMAfont}{envelope}
+% Farbe des Umschlagrahmens.
+% \begin{macrocode}
+\newkomafont{envelope}{\normalcolor}
+% \end{macrocode}
+% \end{KOMAfont}
+% \begin{KOMAfont}{letter}
+% Farbe des getrichelten Briefbogens im Umschlag
+% \begin{macrocode}
+\newkomafont{letter}{\normalcolor}
+% \end{macrocode}
+% \end{KOMAfont}
+% \begin{macro}{\unmeasuredFrame}
+% Ein Rahmen ohne Maßlinien.
+% \begin{macrocode}
+\newcommand*{\unmeasuredFrame}{}
+\def\unmeasuredFrame(#1,#2){%
+ \put(0,0){\line(1,0){\LenToUnit{#1}}}%
+ \put(\LenToUnit{#1},0){\line(0,1){\LenToUnit{#2}}}%
+ \put(\LenToUnit{#1},\LenToUnit{#2}){\line(-1,0){\LenToUnit{#1}}}%
+ \put(0,\LenToUnit{#2}){\line(0,-1){\LenToUnit{#2}}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\measuredFrameLB}
+% \begin{macro}{\measuredFrameLT}
+% \begin{macro}{\measuredFrameRB}
+% \begin{macro}{\measuredFrameRT}
+% Die Maßlinien für ein Rechteck.
+% \begin{macrocode}
+\newcommand*{\measuredFrameLB}{}
+\def\measuredFrameLB(#1,#2){%
+ \unmeasuredFrame({#1},{#2})%
+ \put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}%
+ \put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}%
+}
+\newcommand*{\measuredFrameLT}{}
+\def\measuredFrameLT(#1,#2){%
+ \unmeasuredFrame({#1},{#2})%
+ \put(\LenToUnit{-.5mm},0){\measureLineVL{#2}}%
+ \put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}%
+}
+\newcommand*{\measuredFrameRB}{}
+\def\measuredFrameRB(#1,#2){%
+ \unmeasuredFrame({#1},{#2})%
+ \put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}%
+ \put(0,\LenToUnit{-.5mm}){\measureLineHB{#1}}%
+}
+\newcommand*{\measuredFrameRT}{}
+\def\measuredFrameRT(#1,#2){%
+ \unmeasuredFrame({#1},{#2})%
+ \put(\LenToUnit{\expandafter\dimexpr #1+.5mm\relax},0){\measureLineVR{#2}}%
+ \put(0,\LenToUnit{\expandafter\dimexpr #2+.5mm\relax}){\measureLineHT{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\measureLineV}
+% Vertikale Maßlinie ohne Beschriftung:
+% \begin{macrocode}
+\newcommand*{\measureLineV}[1]{%
+ \begin{picture}(0,0)
+ \thinlines
+ \usekomafont{measure}%
+ \put(0,0){\vector(0,1){\LenToUnit{#1}}}%
+ \put(0,\LenToUnit{#1}){\vector(0,-1){\LenToUnit{#1}}}%
+ \end{picture}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\measureLineVL}
+% \begin{macro}{\measureLineVR}
+% Vertikale Maßlinie mit Beschriftung links bzw. rechts.
+% \begin{macrocode}
+\newcommand*{\measureLineVL}[1]{%
+ \begin{picture}(0,0)
+ \usekomafont{measure}%
+ \put(0,0){\measureLineV{#1}}%
+ \put(0,0){\makebox(0,\LenToUnit{#1})[r]{\ValPerUnit{#1}}}%
+ \end{picture}
+}
+\newcommand*{\measureLineVR}[1]{%
+ \begin{picture}(0,0)
+ \usekomafont{measure}%
+ \put(0,0){\measureLineV{#1}}%
+ \put(0,0){\makebox(0,\LenToUnit{#1})[l]{\ValPerUnit{#1}}}%
+ \end{picture}
+}
+% \end{macrocode}
+% \begin{macro}{\ValPerUnit}
+% \begin{macro}{\unitfactor}
+% Zeige die Längen in \cs{unitlength} mit einer Genauigkeit von
+% 1/\cs{unitfactor} an.
+% \begin{macrocode}
+\newcommand*{\ValPerUnit}[1]{%
+ \begingroup
+ \setlength{\@tempdima}{%
+ \dimexpr #1/(\unitlength/\unitfactor)*\p@/\unitfactor\relax
+ }%
+ \strip@pt\@tempdima
+ \endgroup
+}
+\newcommand*{\unitfactor}{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\measureLineH}
+% Horizontale Maßlinie ohne Beschriftung:
+% \begin{macrocode}
+\newcommand*{\measureLineH}[1]{%
+ \begin{picture}(0,0)
+ \usekomafont{measure}%
+ \put(0,0){\vector(1,0){\LenToUnit{#1}}}%
+ \put(\LenToUnit{#1},0){\vector(-1,0){\LenToUnit{#1}}}%
+ \end{picture}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\measureLineHB}
+% \begin{macro}{\measureLineHT}
+% Horizontale Maßlinie mit Beschriftung darunter bzw. oben.
+% \begin{macrocode}
+\newcommand*{\measureLineHB}[1]{%
+ \begin{picture}(0,0)
+ \usekomafont{measure}%
+ \put(0,0){\measureLineH{#1}}%
+ \put(0,\LenToUnit{\dimexpr -\ht\strutbox-.5mm\relax}){%
+ \makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}%
+ \end{picture}
+}
+\newcommand*{\measureLineHT}[1]{%
+ \begin{picture}(0,0)
+ \usekomafont{measure}%
+ \put(0,0){\measureLineH{#1}}%
+ \put(0,0){%
+ \makebox(\LenToUnit{#1},\LenToUnit{\baselineskip})[c]{\ValPerUnit{#1}}}%
+ \end{picture}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{KOMAfont}{measure}
+% Farbe der Maßlinien.
+% \begin{macrocode}
+\newkomafont{measure}{\normalcolor}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{macro}
+%
+% \begin{macro}{\showISOenvelope}
+% Zeigt einen DIN/ISO C4, C5, DL=C5/6, C6/5 Umschlag.
+% \begin{macrocode}
+\newcommand*{\showISOenvelope}[1]{%
+ \ifstr{#1}{C4}{%
+ \showenvelope(324mm,229mm)%
+ }{%
+ \ifstr{#1}{C5}{%
+ \showenvelope(229mm,162mm)%
+ }{%
+ \ifstr{#1}{C5/6}{%
+ \showenvelope(220mm,110mm)%
+ }{%
+ \ifstr{#1}{DL}{%
+ \showenvelope(220mm,110mm)%
+ }{%
+ \ifstr{#1}{C6/5}{%
+ \showenvelope(229mm,114mm)%
+ }{%
+ \ifstr{#1}{C6}{%
+ \showenvelope(162mm,114mm)%
+ }{%
+ \LCOWarning{visualize}{envelope size `ISO #1' unsupported}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showUScommercial}
+% Zeige ein US commercial Umschlag der Nummer 9 und 10
+% \begin{macrocode}
+\newcommand*{\showUScommercial}[1]{%
+ \ifstr{#1}{9}{%
+ \showenvelope(8.875in,3.875in)%
+ }{%
+ \ifstr{#1}{10}{%
+ \showenvelope(9.5in,4.125in)%
+ }{%
+ \LCOWarning{visualize}{envelope size `US commercial #1' unsupported}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\showUScheck}
+% Zeige einen US check Umschag.
+% \begin{macrocode}
+\newcommand*{\showUScheck}{%
+ \showenvelope(8.625in,3.625in)%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</visualize>
+%<*!visualize>
+% \fi
+%
+% \begin{macro}{\showUSletterCixDW}
+% Ein Umschlag im Format commercial No. 9 mit 2 Fenstern,
+% Absenderfenster $3\frac{1}{2}\,\mathrm{in}\times\frac{7}{8}\,\mathrm{in}$,
+% $\frac{5}{16}\,\mathrm{in}$ von links und $2\frac{1}{2}\,\mathrm{in}$ von
+% unten.
+% \begin{macrocode}
+%<*UScommercial9DW>
+\newcommand*{\showUSletterCixDW}{%
+ \showUScommercial9[{%
+ \thicklines
+ \usekomafont{envelope}%
+ \measuredIFrame({\dimexpr (\paperwidth-
+ \expandafter\dimexpr \useplength{firstheadwidth}\relax%
+ )/2\relax},%
+ -\expandafter\dimexpr\useplength{firstheadvpos}\relax)%
+ (3.5in,.875in)%
+ }]%
+}
+%</UScommercial9DW>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</!visualize>
+%</body>
+%</lco>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-letterclassoptions.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-listsandtabulars.dtx b/macros/latex/contrib/koma-script/source/scrkernel-listsandtabulars.dtx
new file mode 100644
index 0000000000..92f1399a45
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-listsandtabulars.dtx
@@ -0,0 +1,542 @@
+% \CheckSum{316}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-listsandtabulars.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrkernel-listsandtabulars.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-listsandtabulars.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-listsandtabulars.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (lists and tabulars)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-listsandtabulars.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Listen und Tabellen}
+%
+% \KOMAScript{} verfügt über einige zusätzliche Listenumgebungen. Ein
+% Teil dieser Listenumgebungen ist nicht sofort auf den ersten Blick
+% als solche zu erkennen, so wie dies schon bei den Standardklassen
+% beispielsweise mit \texttt{quote} und \texttt{quotation} der Fall
+% ist.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Optionen}
+% Diese Umgebungen werden nicht durch Optionen beeinflusst.
+%
+%
+% \iffalse
+%</option>
+%<*body>
+%<*class>
+% \fi
+%
+%
+% \subsection{Ränder in Listen}
+%
+% \begin{Length}{leftmargini}
+% \begin{Length}{leftmarginii}
+% \begin{Length}{leftmarginiii}
+% \begin{Length}{leftmarginiv}
+% \begin{Length}{leftmarginv}
+% \begin{Length}{leftmarginvi}
+% \begin{Length}{leftmargin}
+% \begin{Length}{labelsep}
+% \begin{Length}{labelwidth}
+% Für die Listenumgebungen in verschiedenen Stufen müssen Ränder
+% definiert werden. Hinzu kommen noch die Breite eines Labels und der
+% Abstand nach einem Label.
+% \begin{macrocode}
+%<*!letter>
+\if@twocolumn
+ \setlength{\leftmargini}{2em}
+\else
+%</!letter>
+ \setlength{\leftmargini}{2.5em}
+%<!letter>\fi
+\setlength{\leftmarginii}{2.2em}
+\setlength{\leftmarginiii}{1.87em}
+\setlength{\leftmarginiv}{1.7em}
+%<*!letter>
+\if@twocolumn
+ \setlength{\leftmarginv}{.5em}
+ \setlength{\leftmarginvi}{.5em}
+\else
+%</!letter>
+ \setlength{\leftmarginv}{1em}
+ \setlength{\leftmarginvi}{1em}
+%<!letter>\fi
+\setlength{\leftmargin}{\leftmargini}
+\setlength{\labelsep}{.5em}
+\setlength{\labelwidth}{\leftmargini}
+\addtolength{\labelwidth}{-\labelsep}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+% Weil die Gelegenheit so günstig ist, setzen wir hier auch gleich
+% noch ein paar \emph{penalties} (Erlaubsnispunkte).
+% \begin{macrocode}
+\@beginparpenalty=-\@lowpenalty
+\@endparpenalty =-\@lowpenalty
+\@itempenalty =-\@lowpenalty
+% \end{macrocode}
+%
+%
+% \subsection{Verschiedene Längen für Tabellen, Arrays und Tabulatoren}
+%
+% Vorbemerkung: Arrays sind im Prinzip Tabellen zur Verwendung im
+% mathemathischen Modus.
+%
+% \begin{Length}{arraycolsep}
+% \begin{Length}{tabcolsep}
+% \begin{Length}{arrayrulewidth}
+% \begin{Length}{doublerulewidth}
+% \begin{Length}{tabbingsep}
+% Bei diesen Längen handelt es sich um die Abstände der Spalten in
+% \texttt{array}- und \texttt{tabular}-Umgebungen, sowie um die Breite
+% und den Abstand der Trennlinien. Hinzu kommt noch der \cs{'} Abstand
+% in \texttt{tabbing}-Umgebungen.
+% \begin{macrocode}
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+%
+% \subsection{Marken in Listen}
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \changes{v2.4m}{1997/02/28}{öffnende Klammer entsprechend Doku
+% entfernt}^^A
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+% \begin{macro}{\labelitemi}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}^^A
+% \begin{macro}{\labelitemii}
+% \changes{v2.5g}{1999/10/09}{\cs{textendash} verwendet}
+% \begin{macro}{\labelitemiii}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}^^A
+% \begin{macro}{\labelitemiv}
+% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert}^^A
+% Für die numerierten Listenumgebungen müssen Marken bzw. Numerierungen
+% festgelegt werden. Dazu wird eine Darstellung der Zähler, ihr Prefix
+% und ihre Labeldarstellung neu definiert.
+% \begin{macrocode}
+\renewcommand*\theenumi{\@arabic\c@enumi}
+\renewcommand*\theenumii{\@alph\c@enumii}
+\renewcommand*\theenumiii{\@roman\c@enumiii}
+\renewcommand*\theenumiv{\@Alph\c@enumiv}
+\newcommand*\labelenumi{\theenumi.}
+\newcommand*\labelenumii{\theenumii)}
+\newcommand*\labelenumiii{\theenumiii.}
+\newcommand*\labelenumiv{\theenumiv.}
+\renewcommand*\p@enumii{\theenumi}
+\renewcommand*\p@enumiii{\p@enumii(\theenumii)}
+\renewcommand*\p@enumiv{\p@enumiii\theenumiii}
+\newcommand*\labelitemi{\textbullet}
+\newcommand*\labelitemii{\normalfont\bfseries\textendash}
+\newcommand*\labelitemiii{\textasteriskcentered}
+\newcommand*\labelitemiv{\textperiodcentered}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Definition der Umgebungen}
+%
+% \begin{environment}{description}
+% Die \texttt{description}-Umgebung dient der Beschreibung von
+% einzelnen Begriffen. Der Begriff aus dem optionalen Argument des
+% \cs{item}-Befehls wird in einem speziellen Font, dem \cs{descfont},
+% gesetzte.
+% \begin{macrocode}
+\newenvironment{description}{%
+ \list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}%
+}{%
+ \endlist
+}
+\newcommand*{\descriptionlabel}[1]{%
+ \hspace{\labelsep}\descfont #1%
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{labeling}
+% \begin{macro}{\labelinglabel}
+% \changes{v3.02}{2009/01/01}{Neue Elemente \texttt{labelinglabel} und
+% \texttt{labelingseparator} werden verwendet}
+% \changes{v3.02c}{2009/01/28}{\texttt{labelinglabel} und
+% \texttt{labelingseparator} werden nun auch zur Berechnung der Breite
+% verwendet}
+% \changes{v3.03a}{2009/04/02}{Argumente in der Berechnung der Label-Breite
+% korrigiert}^^A
+% Die \cs{labeling}-Umgebung ist eine Erweiterung des \textsf{Script}
+% Pakets. Sie erwartet ein optionales und ein normales Argument. Das
+% optionale Argument beschreibt einen speziellen Trenntext zwischen
+% \cs{item}-Marke und \cs{item}-Beschreibung. Das eigentliche Argument
+% wird für die Ermittlung der Einrückung des Beschreibungstextes
+% bzw. des Trenntextes benötigt.
+% \begin{macrocode}
+%</class>
+\newenvironment{labeling}[2][]{%
+ \def\sc@septext{#1}%
+ \list{}{\settowidth{\labelwidth}{{%
+ \usekomafont{labelinglabel}{#2%
+ \usekomafont{labelingseparator}{\sc@septext}}%
+ }}%
+ \leftmargin\labelwidth \advance\leftmargin by \labelsep
+ \let\makelabel\labelinglabel
+ }%
+}{%
+ \endlist
+}
+\newcommand\labelinglabel[1]{%
+ \usekomafont{labelinglabel}{#1\hfil
+ \usekomafont{labelingseparator}{\sc@septext}}%
+}
+%<*class>
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+%
+% \begin{environment}{verse}
+% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
+% mehr verarbeiten}
+% Die Verse-Umgebung ist für Zitate in Gedichtform und ähnliches
+% gedacht.
+% \begin{macrocode}
+\newenvironment{verse}{%
+ \let\\=\@centercr
+ \list{}{\itemsep=\z@
+ \itemindent=-1.5em
+ \listparindent=\itemindent
+ \rightmargin=\leftmargin
+ \advance\leftmargin by1.5em
+ }%
+ \item\relax
+}{%
+ \endlist
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{quotation}
+% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
+% mehr verarbeiten}
+% \begin{environment}{quote}
+% \changes{v2.3g}{1996/01/14}{\cs{item} muss keine "`[]"'-Klammern
+% mehr verarbeiten}
+% Die \texttt{quotation}- und die \texttt{quote}-Umgebung erlauben
+% rechts und links eingerückte Passagen. Absätze werden entweder in
+% der ersten Zeile zusätzlich eingerückt oder durch vertikalen Abstand
+% markiert.
+% \begin{macrocode}
+\newenvironment{quotation}{%
+ \list{}{\listparindent 1em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@
+ }%
+ \item\relax
+}{%
+ \endlist
+}
+\newenvironment{quote}{%
+ \list{}{\rightmargin\leftmargin}%
+ \item\relax
+}{%
+ \endlist
+}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \begin{environment}{addmargin}
+% \changes{v2.8q}{2001/11/29}{neue Umgebung}^^A
+% \changes{v2.95a}{2006-07-20}{\cs{@listdepth} korrigiert}^^A
+% \begin{environment}{addmargin*}
+% \changes{v2.8q}{2001/11/29}{neue Umgebung}^^A
+% \changes{v2.95a}{2006-07-20}{\cs{@listdepth} korrigiert}^^A
+% \changes{v3.17}{2015/03/23}{robuster gegen Umbrüche am Anfang}^^A
+% \changes{v3.22}{2016/08/02}{Umbruchtest nur für doppelseitige
+% Dokumente}^^A
+% Diese beiden Umgebungen ähneln \texttt{quote} und
+% \texttt{quotation}. Dabei werden Absatzeinzug und Absatzabstand
+% nicht verändert. Die einzige Veränderung besteht in den Rändern. Wie
+% stark die Ränder verändert werden, hängt dabei von den Parametern
+% ab. Ist nur der obligatorische Parameter angegeben, werden die
+% Ränder auf beiden Seiten um diesen Wert vergrößert. Ist ein
+% optionaler Parameter angegeben, so ist dies bei \texttt{addmargin}
+% der linke und bei \texttt{addmargin*} der innere Rand. Der
+% obligatorische Parameter ist dann der andere Rand. Diese
+% Entscheidung ist das einzige, was die Umgebungen selbst erledigen
+% müssen.
+% \begin{macro}{\@addmargin}
+% \changes{v2.8q}{2001/11/29}{neu (intern)}^^A
+% \changes{v2.95}{2002/07/01}{\cs{item} muss keine "`[]"'-Klammern
+% mehr verarbeiten}^^A
+% \changes{v2.9q}{2003/03/24}{\cs{labelsep} bleibt unverändert}^^A
+% \changes{v2.95a}{2006/07/20}{\cs{@tmpcnta} bleibt unverändert}^^A
+% \changes{v3.05b}{2010/04/29}{\cs{partopsep} muss auf 0 statt \cs{parskip}
+% gesetzt werden, weil es zu \cs{topsep} addiert wird}^^A
+% \changes{v3.17}{2015/03/23}{robuster gegen Umbrüche am Anfang}^^A
+% Der Rest wird von diesem Makro erledigt.
+% \begin{macro}{\scr@addmargin@startpage}
+% \changes{v3.12}{2013/10/26}{neu (intern, lokal)}^^A
+% \changes{v3.12}{2013/10/26}{Test auf Seitenumbruch in
+% \texttt{addmargin*}}^^A
+% \changes{v3.22}{2016/10/21}{\cs{topsep} und \cs{partopsep} werden
+% erhalten}^^A
+% \begin{macrocode}
+%</class>
+\newenvironment{addmargin}{%
+ \@tempswafalse\@addmargin
+}{%
+ \advance\@listdepth\@ne
+ \endlist
+}
+\newenvironment{addmargin*}{%
+ \@tempswafalse
+ \if@twoside\is@thispageodd[]\ifthispagewasodd\else\@tempswatrue\fi
+ \edef\scr@addmargin@startpage{\csname tpo@\scr@tpo\endcsname}\fi
+ \@addmargin
+}{%
+ \if@twoside
+ \unskip\nobreak\ifthispageodd{}{}%
+ \expandafter\ifx\csname tpo@\scr@tpo\endcsname\scr@addmargin@startpage\else
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package> \PackageWarning{scrextend}{%
+ page break inside `addmargin*' environment.\MessageBreak
+ A `addmargin*' environment starting on page
+ \scr@addmargin@startpage\MessageBreak
+ ends on page \csname tpo@\scr@tpo\endcsname.\MessageBreak
+ This will result in potential wrong margins on\MessageBreak
+ every other page.\MessageBreak
+ So maybe you should change the `addmargin*'\MessageBreak
+ environment, that ends%
+ }%
+ \fi
+ \fi
+ \advance\@listdepth\@ne
+ \endlist
+}
+\newcommand*{\@addmargin}[2][\@tempa]{%
+ \list{}{%
+ \if@tempswa
+ \def\@tempa{\leftmargin}%
+ \setlength{\leftmargin}{#2}%
+ \setlength{\rightmargin}{#1}%
+ \else
+ \def\@tempa{\rightmargin}%
+ \setlength{\rightmargin}{#2}%
+ \setlength{\leftmargin}{#1}%
+ \fi
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\itemsep}{\parskip}%
+ \setlength{\itemindent}{\z@}%
+ \setlength{\@tempskipa}{\topsep}%
+ \setlength{\topsep}{\z@}%
+ \setlength{\parsep}{\parskip}%
+ \setlength{\@tempskipb}{\partopsep}%
+ \setlength{\partopsep}{\z@}%
+ \let\makelabel\@gobble
+ \setlength{\labelwidth}{\z@}%
+ \advance\@listdepth\m@ne
+ }%
+ \expandafter\ifnum\scr@v@is@ge{3.22}%
+ \setlength{\topsep}{\@tempskipa}%
+ \setlength{\partopsep}{\@tempskipb}%
+ \fi
+ \item\is@thispageodd@setlabel\nobreak\ignorespaces
+}
+%<*class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+% \end{environment}
+%
+%
+% \subsection{Schriftarten für Listen}
+%
+% \begin{macro}{\descfont}
+% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
+% ersetzt}^^A
+% Dies ist die Schriftart, in der das Label der Einträge in eine
+% \texttt{description}-Umgebung gesetzt wird. Das Makro ist als intern
+% zu betrachten. Anwender habe stattdessen das entsprechende Element
+% zu verwenden.
+% \begin{macrocode}
+\newcommand*\descfont{\@gr@gsffamily\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@fnt@descriptionlabel}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{descriptionlabel}}
+% Das Element auf das \cs{descfont} angewandt wird:
+% \begin{macrocode}
+\newcommand*{\scr@fnt@descriptionlabel}{\descfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{KOMAfont}{labelinglabel}
+% \changes{v3.02}{2009/01/01}{neues Element}^^A
+% \begin{KOMAfont}{labelingseparator}
+% \changes{v3.02}{2009/01/01}{neues Element}^^A
+% Das Label einer \texttt{labeling}-Umgebung wird in eigener Schrift
+% gesetzt. Innerhalb des Labels wird dann das Trennzeichen ebenfalls mit
+% eigener Schrift gesetzt. Voreingestellt ist in beiden Fällen keine Änderung.
+% \begin{macrocode}
+%</class>
+\newkomafont{labelinglabel}{}
+\newkomafont{labelingseparator}{}
+%<*class>
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{KOMAfont}
+%
+%
+% \iffalse
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-listsandtabulars.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-listsof.dtx b/macros/latex/contrib/koma-script/source/scrkernel-listsof.dtx
new file mode 100644
index 0000000000..40c492a99e
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-listsof.dtx
@@ -0,0 +1,1101 @@
+% \CheckSum{649}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-listsof.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-listsof.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-listsof.dtx 2864 2018-01-16 07:55:20Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-01-16 08:55:20 +0100 (Tue, 16 Jan 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2864 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-listsof.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (lists of)]%
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-listsof.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/28}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Verzeichnisse}
+%
+% \LaTeX{} Klassen bieten eine ganze Reihe von Verzeichnissen. Thema
+% dieses Abschnitts sind die Verzeichnisse der
+% Gleitumgebungen und das Inhaltsverzeichnis. \KOMAScript{} bietet
+% selbst das Verzeichnis der Gleittabellen und der Abbildungen. Es
+% unterstützt außerdem die Verzeichnisse der mit dem \textsf{float}
+% Paket angelegten Gleitumgebungen.
+%
+% Briefe verfügen über keine Verzeichnisse.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+%
+% \subsection{Optionen für das Inhaltsverzeichnis}
+%
+% Einige Anweisungen und Einstellungen werden bereits für die Optionen
+% benötigt und deshalb vorab definiert.
+%
+% \begin{macro}{\if@tocleft}
+% \changes{v2.8q}{2001/11/14}{neuer Schalter}^^A
+% \changes{v2.98c}{2008/03/05}{wird früher definiert}^^A
+% \begin{macro}{\@toclefttrue}
+% \begin{macro}{\@tocleftfalse}
+% Die Wahl der Darstellungsart für das Inhaltsverzeichnis wird in einem
+% Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@tocleft
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{toc}
+% \changes{v2.98c}{2008/03/04}{Neue Option}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.12}{2013/08/26}{\cs{KOMA@options} durch
+% \cs{KOMAExecuteOptions} ersetzt}^^A
+% \changes{v3.12a}{2014/01/17}{\cs{KOMAExecuteOptions} durch
+% \cs{KOMAoptions} ersetzt}^^A
+% \changes{v3.18}{2015/06/15}{neuer Wert \texttt{indexnumbered}}^^A
+% Dies ist die zentrale Option für Einstellungen des Inhaltsverzeichnisses.
+% \begin{macrocode}
+\KOMA@key{toc}{%
+ \KOMA@set@ncmdkey{toc}{@tempa}{%
+% \end{macrocode}
+% Es gibt Werte, um zu bestimmen, welche Verzeichnisse ins Inhaltsverzeichis
+% aufgenommen werden. Eigentlich sind das Optionen der jeweiligen
+% Verzeichnisses, aber das muss sich der Anwender ja nicht unbedingt merken.
+% \begin{macrocode}
+ {noindex}{0},{noidx}{0},%
+ {index}{1},{idx}{1},%
+ {indexnumbered}{2},%
+ {nolistof}{3},%
+ {listof}{4},%
+ {listofnumbered}{5},{numberedlistof}{5},%
+ {nobibliography}{6},{nobib}{6},%
+ {bibliography}{7},{bib}{7},%
+ {bibliographynumbered}{8},{bibnumbered}{8},{numberedbibliography}{8},%
+ {numberedbib}{8},%
+% \end{macrocode}
+% Dann gibt es Optionen für die Darstellungsarten des
+% Inhaltsverzeichnisses. Die Variante \texttt{graduated} ist die altbekannte
+% Variante. Bei \texttt{flat} hingegen wird eine tabellenartige Form
+% verwendet, bei der die Nummern, Texte und Seitenzahlen jeweils untereinander
+% stehen. Der für die Nummern benötigte Platz wird dabei automatisch
+% ermittelt.
+% \begin{macrocode}
+ {flat}{9},{left}{9},%
+ {graduated}{10},{indent}{10},{indented}{10},%
+% \end{macrocode}
+% \changes{v3.12}{2014/09/24}{neue Werte \texttt{numberline} und
+% \texttt{nonumberline}}^^A
+% Außerdem können die nicht nummerierten Einträge ggf. ebenfalls mit
+% \cs{numberline} eingerückt werden. Das geht über ein Feature von
+% \textsf{tocbasic}.
+% \begin{macrocode}
+ {indenttextentries}{11},{indentunnumbered}{11},{numberline}{11},%
+ {leftaligntextentries}{12},{leftalignunnumbered}{12},{nonumberline}{12},%
+% \end{macrocode}
+% Mit Version~3.15 kommt neu die Möglichkeit hinzu, Kapiteleinträge mit
+% Pünktchen zu versehen.
+% \begin{macrocode}
+%<book|report> {chapterentrywithdots}{13},{chapterentrydotfill}{13},
+%<book|report> {chapterentrywithoutdots}{14},{chapterentryfill}{14}%
+%<article> {sectionentrywithdots}{13},{sectionentrydotfill}{13},
+%<article> {sectionentrywithoutdots}{14},{sectionentryfill}{14}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax % noindex
+ \KOMAoptions{index=notoc}%
+ \or % index
+ \KOMAoptions{index=totoc}%
+ \or % indexnumbered
+ \KOMAoptions{index=numbered}%
+ \or % listof
+ \KOMAoptions{listof=notoc}%
+ \or % nolistof
+ \KOMAoptions{listof=totoc}%
+ \or % listofnumbered
+ \KOMAoptions{listof=numbered}%
+ \or % nobibliography
+ \KOMAoptions{bibliography=nottotoc}%
+ \or % bibliography
+ \KOMAoptions{bibliography=totoc}%
+ \or % bibliographynumbered
+ \KOMAoptions{bibliography=totocnumbered}%
+ \or % flat
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{flat}%
+ \@toclefttrue
+ \or % graduated
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{graduated}%
+ \@tocleftfalse
+ \or % indenttextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \expandafter\setuptoc\expandafter{\ext@toc}{numberline}%
+ \or % leftaligntextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \expandafter\unsettoc\expandafter{\ext@toc}{numberline}%
+ \or % chapterentrywithdots/sectionentrywithdots
+%<book|report> \KOMAoptions{chapterentrydots=true}%
+%<article> \KOMAoptions{sectionentrydots=true}%
+ \or % chapterentrywithoutdots/sectionentrywithoutdots
+%<book|report> \KOMAoptions{chapterentrydots=false}%
+%<article> \KOMAoptions{sectionentrydots=false}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{tocleft}
+% \changes{v2.8q}{2001/11/14}{neue Option}^^A
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{tocindent}
+% \changes{v2.8q}{2001/11/14}{neue Option}^^A
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{tocleft}{toc=flat}
+\KOMA@DeclareDeprecatedOption{tocindent}{toc=graduated}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsection{Optionen für die Gleitumgebungen}
+%
+% Einige Anweisungen und Einstellungen werden bereits für die Optionen
+% benötigt und deshalb vorab definiert.
+%
+% \begin{macro}{\float@@listhead}
+% \changes{v2.98c}{2008/03/05}{neu (intern)}^^A
+% Setzt nur die Überschrift und sonst nichts. Dabei wird die Überschrift als
+% einziges Argument übergeben.
+% \begin{macrocode}
+\newcommand*{\float@@listhead}{%
+%<article> \section*
+%<report|book> \chapter*
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@dynlist}
+% \changes{v2.8q}{2001/11/14}{neuer Schalter}^^A
+% \begin{macro}{\@dynlisttrue}
+% \begin{macro}{\@dynlistfalse}
+% Die Wahl der Darstellungsart wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@dynlist
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{listof}
+% \changes{v2.98c}{2008/03/05}{Neue Option}^^A
+% \changes{v3.06}{2010/06/02}{Alle über \textsf{tocbasic} realisierten
+% Einstellungen wirken sich auch auf Verzeichnisse des Besitzers
+% \texttt{float} aus, die erst später unter Kontrolle von
+% \textsf{tocbasic} gestellt werden.}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.12}{2013/06/26}{\cs{KOMA@options} durch
+% \cs{KOMAExecuteOptions} ersetzt}^^A
+% \changes{v3.12a}{2014/01/17}{\cs{KOMAExecuteOptions} durch
+% \cs{KOMAoptions} ersetzt}^^A
+% Dies ist die zentrale Option für die Gleitumgebungsverzeichnisse.
+% \begin{macrocode}
+\KOMA@key{listof}{%
+ \KOMA@set@ncmdkey{listof}{@tempa}{%
+% \end{macrocode}
+% Es gibt Werte, die dafür sorgen, dass die Verzeichnisse der Gleitumgebungen
+% im Inhalsverzeichnis aufgeführt werden. Dazu muss nur \cs{float@@listhead}
+% umdefiniert werden.
+% \begin{macrocode}
+ {notoc}{0},{nottotoc}{0},{plainheading}{0},%
+ {totoc}{1},{toc}{1},{notnumbered}{1},%
+ {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},%
+ {numberedtoc}{2},%
+% \end{macrocode}
+% Dann gibt es Optionen für die Darstellungsarten des
+% Inhaltsverzeichnisses. Die Variante \texttt{graduated} ist die altbekannte
+% Variante. Bei \texttt{flat} hingegen wird eine tabellenartige Form
+% verwendet, bei der die Nummern, Texte und Seitenzahlen jeweils untereinander
+% stehen. Der für die Nummern benötigte Platz wird dabei automatisch
+% ermittelt.
+% \begin{macrocode}
+ {flat}{3},{left}{3},%
+ {graduated}{4},{indent}{4},{indented}{4},%
+% \end{macrocode}
+% Dann gibt es eine Option, mit der die Gliederungsebene der Verzeichnisse
+% verändert werden kann.
+% \changes{v3.25}{2017/12/04}{neuer Wert \texttt{standardlevel}}^^A
+% \begin{macrocode}
+ {leveldown}{5},
+ {standardlevel}{6},
+% \end{macrocode}
+% \changes{v3.06}{2010/05/18}{neuer Wert \texttt{entryprefix}}
+% Dann gibt es eine Option, mit der die Einträge in die Verzeichnisse mit
+% einem Prefix versehen werden können, soweit ein solcher Prefix
+% existiert. Dieser Wert beinhaltet gleichzeitig auch den Wert \texttt{flat}.
+% \begin{macrocode}
+ {entryprefix}{7},
+% \end{macrocode}
+% \changes{v3.12}{2014/09/24}{neue Werte \texttt{numberline} und
+% \texttt{nonumberline}}^^A
+% Außerdem können die nicht nummerierten Einträge ggf. ebenfalls mit
+% \cs{numberline} eingerückt werden. Das geht über ein Feature von
+% \textsf{tocbasic}.
+% \begin{macrocode}
+ {indenttextentries}{8},{indentunnumbered}{8},{numberline}{8},%
+ {leftaligntextentries}{9},{leftalignunnumbered}{9},{nonumberline}{9}%
+% \end{macrocode}
+% Dann gibt es Optionen, für die Unterteilung auf Kapitelebene. Allerdings nur
+% für \textsf{scrbook} und \textsf{scrreprt}.
+% \begin{macrocode}
+%<*book|report>
+ ,{chapterentry}{10},{withchapterentry}{10},%
+ {nochaptergap}{11},{ignorechapter}{11},%
+ {chaptergapsmall}{12},{smallchaptergap}{12},%
+ {chaptergapline}{13},{onelinechaptergap}{13}%
+%</book|report>
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax % notoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \section*
+%<report|book> \chapter*
+ }%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \unsettoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \unsettoc{\@currext}{totoc}%
+ }%
+ \or% totoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{totoc}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \addsec
+%<report|book> \addchap
+ }%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \or% numbered
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{numbered}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \section
+%<report|book> \chapter
+ }%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \or% flat
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{flat}%
+ \@dynlisttrue
+ \or% graduated
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}%
+ \@dynlistfalse
+ \or% leveldown
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{leveldown}%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{leveldown}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{leveldown}%
+ }%
+ \or% standardlevel
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leveldown}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{standardlevel}%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{leveldown}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{leveldown}%
+ }%
+ \or% entryprefix
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{entryprefix}%
+ \@dynlisttrue
+ \doforeachtocfile[float]{%
+ \BeforeStartingTOC[\@currext]{%
+ \scr@ifundefinedorrelax{listof\@currext entryname}{}{%
+ \expandafter\def\expandafter\numberline@prefix
+ \expandafter{\csname listof\@currext entryname\endcsname
+ \nobreakspace}%
+ }%
+ }%
+ }%
+ \AtAddToTocList[float]{%
+ \BeforeStartingTOC[\@currext]{%
+ \scr@ifundefinedorrelax{listof\@currext entryname}{}{%
+ \expandafter\def\expandafter\numberline@prefix
+ \expandafter{\csname listof\@currext entryname\endcsname
+ \nobreakspace}%
+ }%
+ }%
+ }%
+ \or% indenttextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{numberline}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{numberline}%
+ }
+ \or% leftaligntextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numberline}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numberline}%
+ }
+%<*book|report>
+ \or% chapterentry
+ \KOMAoptions{chapteratlists=entry}%
+ \or% chaptergap
+ \KOMAoptions{chapteratlists=\z@}%
+ \or% chaptergapsmall
+ \KOMAoptions{chapteratlists=10\p@}%
+ \or% chaptergapline
+ \KOMAoptions{chapteratlists=\baselineskip}%
+%</book|report>
+ \fi
+ \fi
+}
+\KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{liststotoc}
+% \changes{v2.3h}{1995/01/21}{neue Option}^^A
+% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}}
+% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch
+% \cs{listtablename} ersetzt}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{liststotoc}{listof=totoc}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{liststotocnumbered}
+% \changes{v2.8q}{2002/04/08}{dem langjährigen Druck nachgegeben}^^A
+% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel}^^A
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{liststotocnumbered}{listof=numbered}
+% \end{macrocode}
+% \end{option}
+%
+%
+% \begin{option}{listsleft}
+% \changes{v2.8q}{2001/11/14}{neue Option}^^A
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{listsindent}
+% \changes{v2.8q}{2001/11/14}{neue Option}^^A
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{listsleft}{listof=flat}
+\KOMA@DeclareDeprecatedOption{listsindent}{listof=graduated}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{chapteratlists}
+% \changes{v2.96a}{2006/12/03}{neue Option}^^A
+% \changes{v2.98c}{2008/03/05}{nicht mehr bei \textsf{scrartcl}}^^A
+% \changes{v3.12a}{2014/01/17}{fehlendes \cs{FamilyKeyStateProcessed}^^A
+% ergänzt}^^A
+% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}^^A
+% \begin{macro}{\if@chaptertolists}
+% \changes{v2.96a}{2006/12/03}{neuer Schalter}^^A
+% \changes{v3.12}{2013/09/24}{Verzeichnisse werden nicht in Verzeichnisse
+% eingetragen}^^A
+% \begin{macro}{\@chapterlistsgap}
+% \changes{v2.96a}{2006/12/03}{neues Macro (intern)}^^A
+% Option, um einzugstellen, ob Kapitel in den Verzeichnissen der
+% Gleitumgebungen Spuren hinterlassen. Man kann wahlweise Lücken einstellen
+% (Voreinstellung mit 10\,pt) oder die Kapitelüberschrift eintragen lassen.
+% Der Schalter gibt dabei an, ob die Kapitelüberschrift eingetragen werden
+% soll. Das interne Hilfsmakro \cs{@chapterlistsgap} enthält den gewünschten
+% Abstand.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*{\@chapterlistsgap}{10\p@}
+\newif\if@chaptertolists\@chaptertolistsfalse
+\KOMA@key{chapteratlists}[entry]{%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chapterentry}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergap}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapline}%
+ \ifstr{#1}{entry}{%
+ \@chaptertoliststrue\renewcommand*{\@chapterlistsgap}{\z@}%
+ \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}{entry}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chapterentry}%
+ }{%
+ \@chaptertolistsfalse\renewcommand*{\@chapterlistsgap}{#1}%
+ \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}%
+ {\@chapterlistsgap}%
+ \def\reserved@a{\z@}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergap}%
+ \else
+ \def\reserved@a{10\p@}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+ \else
+ \def\reserved@a{\baselineskip}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapline}%
+ \fi
+ \fi
+ \fi
+ }%
+}
+\BeforeTOCHead{\@chaptertolistsfalse}
+\KOMA@kav@add{.\KOMAClassFileName}{chapteratlists}{10\p@}%
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+%</book|report>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Definitionen für alle Verzeichnisse}
+%
+% Einige Definitionen werden von unterschiedlichen Verzeichnissen
+% verwendet. Diese sind hier zu finden.
+%
+% \begin{macro}{\numberline@numberpostfix}
+% \changes{v3.20}{2016/03/15}{\cs{autodot} wird darüber eingefügt}
+% Auch in den Verzeichnissen soll ggf. \cs{autodot} quasi als Bestandteil der
+% Nummer ausgegeben werden.
+% \begin{macrocode}
+\g@addto@macro{\numberline@numberpostfix}{\autodot}
+% \end{macrocode}
+% \end{macro}^^A \numberline@numberpostfix
+%
+% \begin{macro}{\numberline}
+% \changes{v3.20}{2016/03/15}{Definition von \textsf{tocbasic} verwenden}
+% Unabhängig vom Stil soll immer die Definition von \textsf{tocbasic}
+% verwendet werden.
+% \begin{macrocode}
+\usetocbasicnumberline[%
+ \ClassInfo{\KOMAClassName}{Redefining `\string\numberline'}%
+]
+% \end{macrocode}
+% \end{macro}^^A \numberline
+%
+% \changes{v3.06}{2010/06/02}{einschalten des \texttt{tocbasic}-Features
+% \texttt{chapteratlist} in die Datei \texttt{scrkernel-listsof.dtx} verschoben}
+% Bei Büchern wird für jedes Verzeichnis des Besitzers \texttt{float} das
+% Feature \texttt{chapteratlist} gesetzt. Das gilt auch für solche
+% Verzeichnisse, die noch gar nicht definiert sind.
+% \begin{macrocode}
+%<*book|report>
+\doforeachtocfile[float]{%
+ \setuptoc{\@currext}{chapteratlist}%
+}
+\AtAddToTocList[float]{%
+ \setuptoc{\@currext}{chapteratlist}%
+}
+%</book|report>
+% \end{macrocode}
+%
+% \begin{macro}{\@pnumwidth}
+% \begin{macro}{\@tocrmarg}
+% \begin{macro}{\@dotsep}
+% Einige Makros für die Formatierung der Verzeichniseinträge:
+% \begin{description}
+% \item[\cs{@pnumwidth}] ist der Platz für die Seitenzahl.
+% \item[\cs{@tocrmarg}] ist der rechte Rand bei mehrzeiligen
+% Verzeichniseinträgen. Dieser wird hier größer als \cs{@pnumwidth}
+% gewählt.
+% \item[\cs{\@dotsep}] ist der Abstand zwischen den einzelnen
+% Punkten.
+% \end{description}
+% \begin{macrocode}
+\newcommand*\@pnumwidth{1.55em}
+\newcommand*\@tocrmarg {2.55em}
+\newcommand*\@dotsep{4.5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\before@starttoc}
+% \changes{v2.8q}{2001/11/14}{neu (intern)}^^A
+% Dieses Makro führt im Falle von \texttt{tocleft} oder
+% \texttt{listsleft} am Anfang eines Verzeichnisses alle notwendigen
+% Änderungen durch, um das Verzeichnis entsprechend zu handhaben.
+% \begin{macro}{\scr@dottedtocline}
+% \changes{v2.9k}{2003/01/03}{auch das dritte Argument wird ge"andert}^^A
+% \begin{macro}{\scr@numberline}
+% \changes{v3.06}{2010/05/18}{nicht länger benötigt}^^A
+% \begin{macro}{\last@l@number}
+% Dafür werden ein paar Hilfsmakros benötigt, die vorsichtshalber
+% global vordefiniert werden.
+% \begin{macrocode}
+\newcommand*{\scr@dottedtocline}{}
+\newcommand*{\last@l@number}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@l@number}
+% \changes{v2.8q}{2001/11/14}{neu (intern)}^^A
+% In diesem Makro wird während der Erstellung eines Verzeichnisses
+% Inhaltsverzeichnisses die aktuelle Breite der Nummer gespeichert.
+% \begin{macro}{\set@l@number}
+% \changes{v2.8q}{2001/11/14}{neu (intern)}^^A
+% Dieses Makro ist dafür verantwortlich, dass zum einen \cs{@tempdima}
+% für den Aufruf von \cs{numberline@box} auf den richtigen Wert gesetzt
+% wird, zum anderen wird die aktuelle größte Breite der Nummer hier
+% angepasst.
+% \begin{macrocode}
+\newcommand*{\@l@number}{}
+\newcommand*{\set@l@number}[1]{%
+ \settowidth{\@tempdima}{#1\enskip}%
+ \ifdim\@tempdima >\@l@number
+ \xdef\@l@number{\the\@tempdima}%
+ \fi%
+ \ifdim\@tempdima >\last@l@number \else
+ \setlength{\@tempdima}{\last@l@number}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Kommen wir endlich zu \cs{before@starttoc}:
+% \changes{v2.95a}{2006/07/12}{Initialisierung im \cs{@empty}-Fall}
+% \changes{v3.06}{2010/05/18}{statt \cs{numberline} wird \cs{numberline@box}
+% umdefiniert}
+% \begin{macrocode}
+\newcommand*{\before@starttoc}[1]{%
+ \let\scr@dottedtocline=\@dottedtocline
+ \renewcommand*{\@dottedtocline}[3]{%
+ \scr@dottedtocline{##1}{\z@}{\last@l@number}}%
+ \renewcommand*{\numberline@box}[1]{%
+ \set@l@number{##1}\hb@xt@\@tempdima{##1}}%
+ \gdef\@l@number{\z@}%
+ \@ifundefined{#1@l@number}{%
+ \def\last@l@number{2em}%
+ }{%
+ \expandafter\ifx\csname #1@l@number\endcsname\@empty
+ \let\last@l@number\z@
+ \else
+ \expandafter\let\expandafter\last@l@number
+ \expandafter=\csname#1@l@number\endcsname
+ \fi
+ }%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/26}{Vorbereitungen für Verzeichniseintragsstile
+% via \texttt{scrkernel-tocstyle}}^^A
+% \begin{macrocode}
+ \begingroup
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \scr@ifundefinedorrelax{scr@tso@##1@numwidth}{}{%
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ Setting numwidth of `##1' to \last@l@number}%
+%</trace>
+ \l@addto@macro\do@endgroup{%
+ \@namedef{scr@tso@##1@numwidth}{\last@l@number}%
+ }%
+ }%
+ \scr@ifundefinedorrelax{scr@tso@##1@indent}{}{%
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ Setting indent of `##1' to \string\z@}%
+%</trace>
+ \l@addto@macro\do@endgroup{%
+ \@namedef{scr@tso@##1@indent}{\z@}%
+ }%
+ }%
+ }%
+ \@nameuse{scr@dte@donumwidth}%
+ \do@endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\after@starttoc}
+% \changes{v2.8q}{2001/11/14}{neu (intern)}^^A
+% Dieses Makro schreibt am Ende den entsprechenden Eintrag in die
+% \texttt{aux}-Datei.
+% \begin{macrocode}
+\newcommand*{\after@starttoc}[1]{%
+ \protected@write\@auxout{}{%
+ \string\gdef\expandafter\string\csname#1@l@number\endcsname{%
+ \@l@number}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Dafür sorgen, dass die Verzeichnisse von \textsf{tocbasic} so gesetzt
+% werden, wie wir das gerne hätten (wird über einen Trick auch für das
+% Inhaltsverzeichnis verwendet):
+% \begin{macrocode}
+\g@addto@macro\tocbasic@@before@hook{%
+ \if@dynlist\expandafter\before@starttoc\expandafter{\@currext}\fi
+}
+\g@addto@macro\tocbasic@@after@hook{%
+ \if@dynlist\expandafter\after@starttoc\expandafter{\@currext}\fi
+}
+% \end{macrocode}
+%
+%
+% \subsection{Definitionen für das Inhaltsverzeichnis}
+%
+% \begin{macro}{\contentsname}
+% \begin{macro}{\listoftocname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \textsf{tocbasic}}
+% Der Name des Verzeichnisses.
+% \begin{macrocode}
+\newcommand*\contentsname{Contents}
+\newcommand*\listoftocname{\contentsname}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{Counter}{tocdepth}
+% Der Zähler gibt an, bis zu welcher Gliederungebene Einträge in das
+% Inhaltsverzeichnis aufgenommen werden. Da \textsf{scrartcl} eine
+% Ebene tiefer beginnt, wird auch eine Ebene tiefer eingetragen. Damit
+% finden sich -- abgesehen von \cs{part} -- immer drei Ebenen im
+% Inhaltsverzeichnis.
+% \begin{macrocode}
+%<book|report>\setcounter{tocdepth}{2}
+%<article>\setcounter{tocdepth}{3}
+% \end{macrocode}
+% \end{Counter}
+%
+% \begin{macro}{\toc@heading}
+% \changes{v2.3h}{1995/01/21}{neu (intern)}^^A
+% \changes{v2.95}{2002/06/28}{auch für \textsf{scrreprt} und
+% \textsf{scrbook}}
+% \changes{v3.00}{2008/07/04}{Verwendung von \cs{toc@heading} ist nicht
+% länger empfohlen}
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%
+% Befehl, zum Setzen der Überschrift des Inhaltsverzeichnisses. Eigentlich
+% ist das überflüssig, weil es nur einmal verwendet wird. Aus Gründen der
+% Konsistenz mit den anderen Verzeichnissen machen wir das hier aber
+% genauso.
+% \begin{macrocode}
+\newcommand*\toc@heading{%
+ \ClassWarning{\KOMAClassName}{%
+ usage of deprecated \string\toc@heading!\MessageBreak
+ You should use the features of package `tocbasic'\MessageBreak
+ instead of \string\toc@heading.\MessageBreak
+ Definition of \string\toc@heading\space may be removed from\MessageBreak
+ KOMA-Script soon, so it should not be used
+ }%
+%<article> \section*{\contentsname}%
+%<book|report> \chapter*{\contentsname}%
+ \@mkboth{\MakeMarkcase{\contentsname}}{\MakeMarkcase{\contentsname}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\toc@l@number}
+% \changes{v2.8q}{2001/11/14}{neu}^^A
+% Dieses Makro wird innerhalb von \cs{tableofcontents} über
+% \cs{before@starttoc} und \cs{after@starttoc} in der
+% \texttt{aux}-Datei global definiert. Aus Sicherheitsgründen wird es
+% hier global vordefiniert.
+% \begin{macrocode}
+\newcommand*{\toc@l@number}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tableofcontents}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{toc@heading}}
+% \changes{v2.8l}{2001/08/16}{Gruppe eingefügt und \cs{parskip} auf
+% 0 gesetzt}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}%
+% \cs{@parskip@indent}}
+% \changes{v2.8q}{2001/11/14}{\cs{if@tocleft} bearbeiten}
+% \changes{v2.95}{2002/06/28}{\textsf{article} beachtet ebenfalls
+% \texttt{tocleft}}
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}
+% \changes{v3.00}{2008/07/04}{auf \textsf{tocbasic} umgestellt}
+% Die Ausgabe des Inhaltsverzeichnisses.
+% \begin{macrocode}
+\newcommand*{\tableofcontents}{%
+ \begingroup
+ \let\if@dynlist\if@tocleft
+ \expandafter\listoftoc\expandafter{\ext@toc}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtocentrydefault}
+% \changes{v3.08}{2010/11/01}{Neu}^^A
+% \changes{v3.12}{2013/09/24}{Verwendung der neuen
+% \texttt{tocbasic}-Anweisung \cs{tocbasic@addxcontentsline}}
+% Seit Version~3.08 werden Einträge ins Inhaltsverzeichnis in der
+% Voreinstellung über diese Anweisung vorgenommen. Das erste Argument ist
+% dabei die Gliederungsebene. Das zweite Argument ist die (formatierte)
+% Gliederungsnummer oder leer, falls die Überschrift nicht nummeriert
+% wird. Das dritte Argument ist der Überschriftentext, der in das
+% Inhaltsverzeichnis soll.
+% \begin{macrocode}
+\newcommand{\addtocentrydefault}[3]{%
+ \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Definitionen für die Verzeichnisse der
+% Gleitumgebungen}
+%
+% \begin{macro}{\float@listhead}
+% \changes{v2.8b}{2001/06/26}{neu (für alle Paketautoren)}%
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in
+% \cs{float@listhead}}%
+% \changes{v2.98c}{2008/03/05}{\cs{float@@listhead} wird verwendet}%
+% \changes{v3.00}{2008/07/04}{Verwendung von \cs{float@listhead} ist nicht
+% länger empfohlen}%
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%
+% In Absprache mit Anselm Lingnau, dem Autor des Pakets \textsf{float}, wird
+% ab Version 2.8b \cs{float@headings} zum Setzen des Kolumnentitels bei den
+% Verzeichnissen verwendet, die \textsf{float} für neu definierte floats zur
+% Verfügung stellt. Dabei definiert \textsf{float} die Anweisung nur, wenn
+% sie nicht bereits existiert. Die Zusammenarbeit wird dadurch
+% verbessert. Da Anselm sich in letzter Minute entschlossen hat, das Makro
+% \cs{float@listhead} zu nennen, wurde dies in Version 2.8g angepasst.
+% \begin{macrocode}
+\newcommand*{\float@listhead}[1]{%
+ \scr@float@listhead@warning
+ \float@@listhead{#1}%
+ \@mkboth{\MakeMarkcase{#1}}{\MakeMarkcase{#1}}%
+% \end{macrocode}
+% \changes{v2.8q}{2001/11/14}{dynamische Anpassung an die Nummer}^^A
+% Dies ist der passende Ort, um die Breite, die für die Nummer des
+% Gleitobjekts benötigt wird zu ermitteln und anzupassen, falls dies
+% geünscht wird. Dazu findet eine lokale Umdefinierung von
+% \cs{@starttoc} statt. Die Umdefinierung ist deshalb lokal, weil alle
+% mir bekannten Verzeichnisse von Gleitobjekten innerhalb einer Gruppe
+% ausgegeben werden.
+% \begin{macrocode}
+ \if@dynlist%
+ \newcommand*{\scr@starttoc}{}%
+ \let\scr@starttoc=\@starttoc
+ \renewcommand*{\@starttoc}[1]{%
+ \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@float@listhead@warning}
+% \changes{v3.01}{2008/11/13}{Neu (intern)}^^A
+% \changes{v3.12}{2013/09/25}{Text geändert}^^A
+% \changes{v3.12a}{2014/03/05}{Text korrigiert}^^A
+% Die Warnung für die Verwendung von \cs{float@listhead}, dessen Definition
+% irgendwann aus den Klassen verschwinden wird.
+% \begin{macrocode}
+\newcommand*{\scr@float@listhead@warning}{%
+ \ClassWarning{\KOMAClassName}{%
+ \string\float@listhead\space detected!\MessageBreak
+ Implementation of \string\float@listhead\space became\MessageBreak
+ deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
+ has been replaced by several more flexible\MessageBreak
+ features of package `tocbasic`.\MessageBreak
+ Maybe implementation of \string\float@listhead\space will\MessageBreak
+ be removed from KOMA-Script soon.\MessageBreak
+ Loading of package `scrhack' may help to\MessageBreak
+ avoid this warning, if you are using a\MessageBreak
+ a package that still implements the\MessageBreak
+ deprecated \string\float@listhead\space interface
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@float@addtolists@warning}
+% \changes{v3.01}{2008/11/13}{Neu (intern)}^^A
+% \changes{v3.12}{2013/09/25}{Text geändert}^^A
+% \changes{v3.12a}{2014/03/05}{Text korrigiert}^^A
+% Die Warnung für die Verwendung von \cs{float@addtolists}, dessen
+% Unterstützung irgendwann aus den Klassen verschwinden wird.
+% \begin{macrocode}
+\newcommand*{\scr@float@addtolists@warning}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ \string\float@addtolists\space detected!\MessageBreak
+ Implementation of \string\float@addtolist\space became\MessageBreak
+ deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
+ has been replaced by several more flexible\MessageBreak
+ features of package `tocbasic`.\MessageBreak
+ Since Version 3.12 support for deprecated\MessageBreak
+ \string\float@addtolist\space interface has been\MessageBreak
+ restricted to only some of the KOMA-Script\MessageBreak
+ features and been removed from others.\MessageBreak
+ Loading of package `scrhack' may help to\MessageBreak
+ avoid this warning, if you are using a\MessageBreak
+ a package that still implements the\MessageBreak
+ deprecated \string\float@addtolist\space interface
+ }%
+ \global\let\scr@float@addtolists@warning\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\listfigurename}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% \begin{macro}{\listtablename}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% \begin{macro}{\listoflofname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \textsf{tocbasic}}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% \begin{macro}{\listoflotname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \textsf{tocbasic}}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% \begin{macro}{\listoflofentryname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \textsf{tocbasic}}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% \begin{macro}{\listoflotentryname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \textsf{tocbasic}}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}^^A
+% Die Namen der Verzeichnisse auch für das Paket \textsf{tocbasic}.
+% \begin{macrocode}
+\renewcommand*\listfigurename{List of Figures}
+\renewcommand*\listoflofname{\listfigurename}
+\renewcommand*\listoflofentryname{\figurename}
+\renewcommand*\listtablename{List of Tables}
+\renewcommand*\listoflotname{\listtablename}
+\renewcommand*\listoflotentryname{\tablename}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\listoffigures}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lof@heading}}^^A
+% \changes{v2.4k}{1996/12/13}{\cs{lof@heading} nicht nur bei
+% \textsf{scrartcl}}^^A
+% \changes{v2.8l}{2001/08/16}{Gruppe eingefügt und \cs{parskip} auf
+% 0 gesetzt}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% \changes{v3.00}{2008/07/04}{Verwendung von \textsf{tocbasic}}^^A
+% \changes{v3.23}{2017/03/24}{Verwendung von \cs{ext@figure} statt
+% \texttt{lof}}^^A
+% \changes{v3.25}{2017/10/10}{Wird bereits implizit von \cs{DeclareNewTOC}
+% definiert}^^A
+% Die Ausgabe des Abbildungsverzeichnisses.
+% \end{macro}
+%
+% \begin{macro}{\l@figure}
+% \changes{v3.25}{2017/10/10}{Wird bereits implizit von \cs{DeclareNewTOC}
+% im \texttt{default}-Stil definiert}^^A
+% Befehl zur Formatierung eines Verzeichniseintrags.
+% \end{macro}
+%
+% \begin{macro}{\listoftables}
+% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lot@heading}}^^A
+% \changes{v2.4k}{1996/12/13}{\cs{lot@heading} nicht nur bei
+% \textsf{scrartcl}}^^A
+% \changes{v2.8l}{2001/08/16}{Gruppe eingefügt und \cs{parskip} auf
+% 0 gesetzt}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}%
+% \cs{@parskip@indent}}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% \changes{v3.00}{2008/07/04}{Verwendung von \textsf{tocbasic}}^^A
+% \changes{v3.23}{2017/03/24}{Verwendung von \cs{ext@table} statt
+% \texttt{lot}}^^A
+% \changes{v3.25}{2017/10/10}{Wird bereits implizit von \cs{DeclareNewTOC}
+% definiert}^^A
+% Die Ausgabe des Tabellenverzeichnisses.
+% \end{macro}
+%
+% \begin{macro}{\l@table}
+% \changes{v3.25}{2017/10/10}{Wird bereits implizit von \cs{DeclareNewTOC}
+% im \texttt{default}-Stil definiert}^^A
+% \end{macro}
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-listsof.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
new file mode 100644
index 0000000000..32004b4d36
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-miscellaneous.dtx
@@ -0,0 +1,1223 @@
+% \CheckSum{722}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-miscellaneous.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-miscellaneous.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-miscellaneous.dtx 2995 2018-07-18 06:46:34Z kohm $
+%<init>%%% (run: init)
+%<option>%%% (run: option)
+%<execoption>%%% (run: execoption)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-07-18 08:46:34 +0200 (Wed, 18 Jul 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2995 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-miscellaneous.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (miscellaneous, maybe everything or nothing)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-miscellaneous.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/07/01}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Verschiedenes}
+%
+% Es gibt eine ganze Menge für das sich einzeln keine eigene Datei
+% lohnt oder eine Einordnunge schwierig ist. All das nennen wird
+% "`Verschiedenes"'.
+%
+% \subsection{Erweiterung der Internationalisierung}
+%
+% \changes{v2.2c}{1995/05/25}{Anpassung an CJK von Werner Lemberg.}^^A
+%
+% Die Standardnamen wie \cs{figurename} etc. sind nicht immer
+% ausreichend, da manche Sprachen Zählwörter vor oder nach dem
+% jeweiligen Zähler einfügen müssen (man denke da sogar im
+% Deutschen an "`Abbildung~1"' und "`Erste Abbildung"'). Desweiteren
+% werden bei manchen Sprachen die Zwischenräume anders gesetzt
+% bzw. sogar ganz unterdrückt.
+%
+% Es gibt drei Ebenen, die man modifizieren kann, um verschiedenste
+% Sprachen zu implementieren: Ebene~1 besteht aus den hinl"anglich
+% bekannten Makros wie \cs{figurename} und alle weiteren Makros, die
+% z.\,B. \textsf{german} modifiziert. Desweiteren können die Makros
+% \cs{sectfont} etc. etwaige zusätzliche Fonts aktivieren. Ebene~2 ist
+% die zusätzliche Adaptierung von den Zählern selbst (\cs{thesection}
+% könnte z.\,B. chinesische Schriftzeichen ansprechen anstelle von
+% arabischen Ziffern). Die allgemeinste Form der dritten Ebene
+% besteht aus den Makros \cs{chaptermarkformat},
+% \cs{sectionmarkformat} etc. welche die Änderung der Reihenfolge von
+% Zähler und Titel sowie die genaue Kontrolle der Zwischenräume
+% etc. ermöglichen.
+%
+% Für die gängigen Sprachen können alle Makros für die dritte
+% Ebene identisch definiert werden. Bei Verwendung von "`exotischen"'
+% Sprachen, aber auch speziellen Darstellungen in den gängigen
+% Sprachen können diese Makros umdefiniert werden.
+%
+% Das Konzept für der Internationalisierung mit der dritten Ebene
+% wurde ursprünglich von Werner Lemberg\footnote{Werner Lemberg ist im
+% InterNet unter \texttt{a7621gac@awiuni11.bitnet} zu erreichen.}
+% entwickelt. Die "`caption files"' seines CJK-Pakets
+% (\textbf{C}hinesisch, \textbf{J}apanisch, \textbf{K}oreanisch) bauen
+% auf diesem Konzept auf. Damit ist \KOMAScript{} für alle möglichen
+% Sprachanpassungen bestens gerüstet. In der dritten Ebene wird
+% übrigens auch die Einhaltung der DUDEN-Regeln für die
+% Gliederungsnummern realisiert.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*init>
+% \fi
+% \subsection{Test auf die eine \KOMAScript-Klasse}
+%
+% Hier haben wir zunächst ein paar Definitionen speziell für das Paket
+% \textsf{scrletter}, die genau dann benötigt werden, wenn das Paket nicht mit
+% einer \KOMAScript-Klasse verwendet wird.
+%
+% \begin{macrocode}
+%<*package&letter>
+\scr@ifundefinedorrelax{KOMAClassName}{%
+ \PackageWarningNoLine{scrletter}{%
+ Cannot detect any KOMA-Script class.\MessageBreak
+ Package `scrletter' is an extension to\MessageBreak
+ KOMA-Script classes.\MessageBreak
+ Usage with another class is not recommended%
+ \@ifclassloaded{article}{}{%
+ \@ifclassloaded{report}{}{%
+ \@ifclassloaded{book}{}{%
+ \MessageBreak and can result in several errors%
+ }%
+ }%
+ }%
+ }%
+ \RequirePackage{scrextend}%
+% \end{macrocode}
+%
+% \begin{macro}{\setparsizes}
+% \changes{v3.23}{2017/02/22}{wird notfalls vereinfacht definiert}^^A
+% \begin{macro}{\par@updaterelative}
+% \changes{v3.23}{2017/02/22}{wird notfalls vereinfacht definiert}^^A
+% Diese beiden Befehle werden normalerweise von den \KOMAScript-Klassen
+% definiert. Wird das Paket mit einer anderen Klasse verwendet, existieren
+% sie nicht. Es wird dann eine vereinfachte Definition verwendet.
+% \begin{macrocode}
+ \providecommand*{\setparsizes}[3]{%
+ \setlength{\parindent}{#1}%
+ \setlength{\parskip}{#2}%
+ \setlength{\parfillskip}{#3}%
+ }
+ \providecommand*{\par@updaterelative}{}
+% \end{macrocode}
+% \end{macro}^^A \par@updaterelative
+% \end{macro}^^A \setparsizes
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% \begin{macro}{\scr@renewforletter}
+% \changes{v3.20}{2014/04/10}{neu Anweisung}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% Wird wie \cs{renewcommand} verwendet, verzögert die Umdefinierung aber bis
+% zu einem optionalen Zeitpunkt. Dazu wird intern
+% \cs{scrletter@extra@\meta{macro}} definiert.
+% \begin{macro}{\@renewforletter}
+% \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% \begin{macro}{\do@renewforletter@list}
+% \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% Die do-Liste der später umzudefinierenden Anweisungen.
+% \begin{macro}{\do@renewforletter}
+% \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A
+% \changes{v3.25}{2017/11/15}{als unbenutzt entfernt}^^A
+% Definiert die in der do-Liste gespeicherten Anweisungen um.
+% \begin{macrocode}
+%</package&letter>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</init>
+%<*option>
+% \fi
+%
+% \subsection{Optionen für Entwürfe}
+%
+% \begin{option}{draft}
+% \changes{v2.95}{2002/12/05}{mit \textsl{keyval} reimplementiert}^^A
+% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}^^A
+% \changes{v3.25}{2017/11/21}{Beachtung von Option \texttt{overfullrule}}^^A
+% \begin{option}{final}
+% \changes{v2.95}{2002/12/05}{obsolete Option}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% \changes{v3.02c}{2008/02/17}{optionales Argument im Fall von
+% \textsf{scrextend} gesetzt}
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}%
+% Der einzige Unterschied zwischen Entwürfen und Endversionen ist aus
+% Sicht der Klassen, ob Zeilenüberhänge mit einem schwarzen Balken
+% angezeigt werden sollen oder nicht.
+% \begin{macrocode}
+%<*class|extend>
+\KOMA@key{draft}[true]{%
+ \KOMA@set@ifkey{draft}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{5pt}%
+ \else
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{\z@}%
+ \fi
+ \fi
+}
+%<class>\KOMA@kav@add{.\KOMAClassFileName}{draft}{false}
+%<*package&extend>
+\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{draft}{%
+ \ifdim\overfullrule>\z@ true\else false\fi
+}
+%</package&extend>
+\KOMA@DeclareStandardOption
+%<package&extend>[scrextend]
+{final}{draft=false}
+%</class|extend>
+% \end{macrocode}
+% \begin{option}{overfullrule}
+% \changes{v3.25}{2017/11/21}{new option}^^A
+% \selectlanguage{english}^^A
+% Because option \texttt{draft} can result in unwanted effects I've added a
+% new option to explicite only change the overfull rule setting. However for
+% \textsf{scrextend} and the \KOMAScript{} classes the result is the same.
+% \begin{macrocode}
+%<*class|extend>
+\KOMA@key{overfullrule}[true]{%
+ \KOMA@set@ifkey{overfullrule}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{5pt}%
+ \else
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{draft}{@tempswa}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{overfullrule}{@tempswa}%
+ \setlength{\overfullrule}{\z@}%
+ \fi
+ \fi
+}
+%<class>\KOMA@kav@add{.\KOMAClassFileName}{overfullrule}{false}
+%<*package&extend>
+\KOMA@kav@xadd{.scrextend.\scr@pkgextension}{overfullrule}{%
+ \ifdim\overfullrule>\z@ true\else false\fi
+}
+%</package&extend>
+%</class|extend>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{option}^^A overfullrule
+% \end{option}^^A final
+% \end{option}^^A draft
+%
+%
+% \subsection{Optionen für Gleichungen}
+%
+% Briefe haben derzeit keine Gleichungen.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \begin{option}{leqno}
+% \begin{option}{fleqno}
+% Es können Gleichungsnummern links oder linksbündige Gleichungen
+% eingestellt werden.
+% \begin{macrocode}
+%<*!extend>
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+%</!extend>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \subsection{Optionen für \texttt{egreg}}
+%
+% \texttt{egreg} hat in einem Kommentar zu
+% \url{https://tex.stackexchange.com/questions/289853} verlauten lassen, dass
+% er \KOMAScript{} u.\,a. deshalb nicht verwendet, weil \KOMAScript{}
+% serifenlose Fonts für Überschriften voreingestellt hat. Er hätte lieber die
+% hässlichen, fetten Antiqua-Fonts. Außerdem reicht es ihm nicht, dass man das
+% einfach per \cs{setkomafont} ändern kann. Er will eine Option dafür. Nun,
+% die soll er haben:
+%
+% \begin{option}{egegdoesnotlikesansseriftitles}
+% \changes{v3.20}{2016/01/29}{neu (speziell)}
+% \changes{v3.20a}{2016/05/19}{auch in der Briefklasse}
+% \begin{macro}{\@gr@gsffamily}
+% \changes{v3.20}{2016/01/29}{neu (intern)}
+% \changes{v3.20a}{2016/05/19}{auch in der Briefklasse}
+% Schaltet je nach Einstellung von Option
+% \texttt{egegdoesnotlikesansseriftitles} entweder auf \cs{sffamily} um oder
+% eben nicht.
+% \begin{macrocode}
+%<*!(package&letter)>
+\KOMA@ifkey{egregdoesnotlikesansseriftitles}{@egregdoesnotlikesansseriftitles}
+\newcommand*{\@gr@gsffamily}{%
+ \if@egregdoesnotlikesansseriftitles\else\sffamily\fi
+}
+%</!(package&letter)>
+% \end{macrocode}
+% \end{macro}^^A \@gr@gsffamily
+% \end{option}^^A egregdoesnotlikesansseriftitles
+%
+% \iffalse
+%</option>
+%<*execoption>
+% \fi
+%
+%
+% \subsection{Standardeinstellungen für die Optionen}
+%
+% Am Ende aller Optionen wird zunächst die Standardeinstellungen der
+% Optionen vorgenommen und dann alle Optionen ausgeführt. Dies
+% geschieht zwischen den Optionen und dem Körper dieser Datei.
+%
+% Es müssen die Standardoptionen festgelegt und alle Optionen
+% ausgewählt werden.
+% \changes{v2.97c}{2007/04/19}{Verwendung von \cs{KOMAExecuteOptions} an
+% Stelle von \cs{KOMAoptions} und \cs{KOMAProcessOptions} an Stelle von
+% \cs{ProcessOptions}}
+% \changes{v2.97c}{2007/04/19}{Optionen, die der Voreinstellung ohnehin
+% entsprechen, werden nicht explizit gesetzt}^^A
+% \changes{v2.97c}{2007/07/18}{Option \texttt{twoside} bei den
+% Voreinstellungen rausgenommen}
+% \changes{v2.98c}{2008/03/10}{Option \texttt{headings!=big} zu den
+% Voreinstellungen hinzugefügt}
+% \changes{v3.11c}{2013/03/04}{Option \texttt{headings!=big} nicht für die
+% Briefklasse}
+% \begin{macrocode}
+%<*class>
+\KOMAExecuteOptions{%
+ parskip=false,%
+%<!letter> headings=big%
+}
+%</class>
+\KOMAProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \iffalse
+%</execoption>
+%<*body>
+% \fi
+%
+%
+% \subsection{Temporäre Umschaltung zwischen ein- und zweispaltigem
+% Satz}
+%
+% Briefe sind immer einspaltig, benötigen also den Schalter nicht.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \begin{macro}{\if@restonecol}
+% \begin{macro}{\@restonecoltrue}
+% \begin{macro}{\@restonecolfalse}
+% Damit innerhalb einer Umgebung lokal auf ein- oder zweispaltigen
+% Satz umgeschaltet werden kann, wird ein Schalter benötigt. Dieser
+% wird dann dafür verwendet, sich zu merken, dass eine Umschaltung
+% stattgefunden hat und am Ende der Umgebung wieder aufzuheben
+% ist. Der Schalter wird nicht in Umgebungen verwendet, die
+% geschachtelt werden. Verwendung findet er beispielsweise für
+% Titelseiten und das Inhaltsverzeichnis.
+% \begin{macrocode}
+%<*!extend>
+\newif\if@restonecol
+%</!extend>
+%<*extend>
+\scr@ifundefinedorrelax{if@restonecol}{%
+ \expandafter\newif\csname if@restonecol\endcsname
+ \@restonecolfalse
+}{}
+%</extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \subsection{Definitionen für den schlauen Spruch}
+%
+% Den schlauen Spruch gibt es nicht bei Briefen.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \begin{macro}{\dictum}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \changes{v2.9l}{2003/01/28}{\cs{edef} durch \cs{def} ersetzt}
+% \changes{v2.9q}{2004/04/19}{zur Vermeidung von Problemen durch
+% \cs{raggeddictum} Gruppe eingef"ugt}
+% \begin{macro}{\dictumwidth}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \begin{macro}{\raggeddictum}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \begin{macro}{\raggeddictumtext}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \begin{macro}{\raggeddictumauthor}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \begin{KOMAfont}{dictum}
+% \changes{v2.8q}{2001/20/04}{neues Element}^^A
+% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
+% ersetzt}^^A
+% \begin{KOMAfont}{dictumtext}
+% \changes{v2.8q}{2001/20/04}{neues Element}^^A
+% \begin{KOMAfont}{dictumauthor}
+% \changes{v2.8q}{2001/20/04}{neues Element}^^A
+% \begin{macro}{\dictumauthorformat}
+% \changes{v2.8q}{2001/20/04}{neu}^^A
+% \begin{macro}{\dictumrule}
+% \changes{v3.10}{2011/09/02}{neu}^^A
+% Ein \emph{dictum} ist ein Spruch. Er besteht aus dem Spruch selbst
+% und verfügt optional über einen Autor, der dann mit einer Linie
+% abgetrennt wird. Gibt es keinen Autor, gibt es auch keine Linie. Die
+% Schriften für Autor und Spruch können getrennt voneinander
+% eingestellt werden. Die Anordnung des Spruchs wird durch
+% \cs{raggeddictumtext} gesetzt. Die des Autors durch
+% \cs{raggeddictumauthor}. Die Formatierung selbst geschieht mit dem
+% Makro \cs{dictumauthorformat}. Vordefiniert ist, den Namen des
+% Autors in runde Klammern zu setzen. Die gesamte Geschichte von Text
+% und Autor wird in eine Box der Breite \cs{dictumwidth}
+% gepackt. Diese wird mit \cs{raggeddictum} angeordnet.
+% \begin{macrocode}
+\newcommand{\dictum}[2][]{\par%
+ \begingroup
+ \raggeddictum\parbox{\dictumwidth}{%
+ {\@dictumfont{\raggeddictumtext #2\strut\par}%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else%
+ {\raggeddictumtext\dictumrule}%
+ \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}%
+ \strut\par%
+ \fi%
+ }%
+ }\par%
+ \endgroup
+}
+\newcommand*{\dictumrule}{\vskip-1ex\hrulefill\par}%
+\newcommand*{\dictumwidth}{.3333\textwidth}
+\newcommand*{\raggeddictum}{\raggedleft}
+\newcommand*{\dictumauthorformat}[1]{(#1)}
+\newcommand*{\raggeddictumtext}{\raggedright}
+\newcommand*{\raggeddictumauthor}{\raggedleft}
+\newkomafont{dictum}{\normalfont\normalcolor\@gr@gsffamily\small}
+\newkomafont{dictumauthor}{\itshape}
+\aliaskomafont{dictumtext}{dictum}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{KOMAfont}
+% \end{KOMAfont}
+% \end{KOMAfont}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \subsection{Längen für Minipages und Rahmen}
+%
+% \begin{Length}{@mpfootins}
+% \begin{Length}{fboxsep}
+% \begin{Length}{fboxrule}
+% \cs{@mpfootins} entspricht \cs{footins} in Minipages. \cs{fboxsep}
+% ist der Abstand zwischen dem Rahmen einer \cs{fbox} oder
+% \cs{framebox} und dem Inhalt, \cs{fboxrule} ist die Dicke des
+% Rahmens.
+% \begin{macrocode}
+%<*class>
+\setlength{\skip\@mpfootins}{\skip\footins}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+%</class>
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \end{Length}
+%
+%
+% \subsection{Gleichungen}
+%
+% Gleichungen gibt es bei Briefen nicht.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \begin{macro}{\theequation}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A
+% Darstellung der Gleichungsnummer:
+% \begin{macrocode}
+%<*!extend>
+%<book|report>\@addtoreset{equation}{chapter}
+\renewcommand*\theequation{%
+%<*book>
+ \expandafter\ifnum\scr@v@is@gt{2.97d}\relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+%<book|report> \thechapter.%
+%<book> \fi
+ \@arabic\c@equation
+}
+%</!extend>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \subsection{Definitionen zur Feststellung von linken und rechten
+% Seiten}
+%
+% \begin{macro}{\ifthispageodd}
+% \changes{v2.8q}{2001/11/22}{neu}^^A
+% Häufig wird mit \cs{ifodd}\cs{value\{page\}} getestet, ob man sich
+% gerade auf einer rechten oder einer linken Seite
+% befindet. Dummerweise funktioniert das aber genaugenommen nur
+% zufällig manchmal. Ob man sich auf einer linken oder einer rechten
+% Seite befindet, ergibt sich nämlich erst bei der Ausgabe. Deshalb
+% wird hier ein Makro definiert, das über eine Art Label-Mechanismus
+% arbeitet. Es werden bewusst keine echten \cs{label} und \cs{pageref}
+% verwendet, weil diese Befehle von verschiedenen Paketen manipuliert
+% werden.
+%
+% \begin{macro}{\new@tpo@label}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v2.95b}{2006/07/28}{verwendet jetzt \cs{@newl@bel}}^^A
+% \changes{v3.20}{2016/03/25}{use after definition in \texttt{aux}-file}^^A
+% Definition eines neuen \emph{true}-\emph{page}-\emph{odd} Labels.
+% Wird in der \texttt{aux}-Datei verwendet.
+% \begin{macrocode}
+%<*class|extend>
+\newcommand*{\new@tpo@label}{\@newl@bel{tpo}}
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand*\string\new@tpo@label[2]{}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@tpo}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% Es wird ein Zähler benötigt, der die aktuelle Nummer der Anfrage
+% beinhaltet.
+% \begin{macrocode}
+\newcommand*{\scr@tpo}{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\is@thispageodd}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}^^A
+% \changes{v2.9l}{2003/01/28}{renamed \cs{if@thispageodd}}^^A
+% \changes{v2.95b}{2006/07/28}{basiert nun auf \cs{@newl@bel}}^^A
+% \changes{v3.17}{2015/03/23}{in zwei Anweisungen ausgeteilt}^^A
+% \begin{macro}{\is@thispageodd@setlabel}
+% \changes{v3.17}{2015/03/23}{neu (intern)}^^A
+% \changes{v3.20}{2016/03/25}{schreibe in die \texttt{aux}-Datei nur
+% \cs{if@filesw}}^^A
+% \changes{v3.23}{2017/02/23}{Macro leert sich nach Benutzung selbst}^^A
+% Diese Makros machen die eigentliche Arbeit. Sie funktionieren nicht wie
+% ein normales \cs{iffalse} oder \cs{iftrue}, denn es kann nicht
+% geschachtelt innerhalb anderer \cs{if\dots} \dots \cs{fi}
+% Klammerungen verwendet werden. Es sollte daher niemals außerhalb von
+% \cs{ifthispageodd} verwendet werden. Da über die \texttt{aux}-Datei
+% gearbeitet wird, funktioniert das Ganze nur, wenn die Datei auch
+% geschrieben wird und min. zwei \LaTeX-Läufe erfolgen.
+% \begin{macrocode}
+\newcommand*{\is@thispageodd}[1][\is@thispageodd@setlabel]{%
+ \@bsphack
+ \begingroup
+ \@tempcnta=\scr@tpo
+ \advance\@tempcnta by\@ne
+ \xdef\scr@tpo{\the\@tempcnta}%
+ \expandafter\ifx\csname tpo@\scr@tpo\endcsname\relax
+ \protect\G@refundefinedtrue
+%<!extend> \ClassWarning{\KOMAClassName}{%
+%<extend> \PackageWarning{scrextend}{%
+ odd/even page label number \scr@tpo\space undefined}%
+ \edef\@tempa{\the\value{page}}%
+ \else
+ \edef\@tempa{\csname tpo@\scr@tpo\endcsname}%
+ \fi
+ \ifodd\number\@tempa
+ \aftergroup\thispagewasoddtrue
+ \else
+ \aftergroup\thispagewasoddfalse
+ \fi
+ \endgroup
+ \edef\is@thispageodd@setlabel{%
+ \if@filesw
+ \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \noexpand\string
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \fi
+ \noexpand\def\noexpand\is@thispageodd@setlabel
+ {\unexpanded\expandafter{\is@thispageodd@setlabel}}%
+ }%
+ #1%
+ \@esphack
+}
+\newcommand*{\is@thispageodd@setlabel}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifthispagewasodd}
+% \changes{v2.9l}{2003/01/20}{neuer Schalter}^^A
+% \begin{macro}{\thispagewasoddtrue}
+% \begin{macro}{\thispagewasoddfalse}
+% Dieser Schalter speichert auf Rolf Niepraschks speziellen Wunsch die
+% letzte Entscheidung von \cs{ifthispageodd}. Vor dem ersten
+% \cs{ifthispageodd} ist der Zustand undefiniert. Es ist auch nicht
+% garantiert, dass die Entscheidung noch zutreffend ist.
+% \begin{macrocode}
+\newif\ifthispagewasodd
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Nun fehlt nur noch das eigentliche oben versprochene
+% Anwendermacro. Das ist nun aber auch kein Problem mehr:
+% \begin{macrocode}
+\newcommand{\ifthispageodd}{%
+ \is@thispageodd
+ \ifthispagewasodd
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+%</class|extend>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Definitionen für tiefer gestellten Text}
+%
+% \begin{macro}{\textsubscript}
+% \changes{v2.8h}{2001/07/19}{neu}^^A
+% \begin{macro}{\@textsubscript}
+% \changes{v2.8h}{2001/07/19}{neu (intern)}^^A
+% \changes{v3.10}{2011/09/05}{\cs{providecommand} statt \cs{newcommand},
+% damit das auch noch funktioniert, wenn \textsf{scrextend} nach
+% \textsf{fixltx2e} geladen wird}^^A
+% \changes{v3.25}{2017/11/15}{wird nur noch definiert, wenn nicht vorhanden}^^A
+% Im \LaTeX-Kern wird zwar ein Makro \cs{textsuperscript} definiert,
+% um Texte hochstellen zu können, die entsprechende Anweisung zum
+% Tiefstellen fehlt jedoch. Das wird hier nachgeholt, wobei nahezu
+% unverändert auf die Definition aus dem \LaTeX-Kern zurückgegriffen
+% wird.
+% \begin{macrocode}
+%<*class|extend>
+\scr@ifundefinedorrelax{textsubscript}{%
+ \DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}%
+ }%
+}{%
+ \scr@ifundefinedorrelax{textsubscript }{%
+ \DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}%
+ }%
+ }{}%
+}
+\providecommand*{\@textsubscript}[1]{%
+ {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}%
+}
+%</class|extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Unsichtbare Stütze}
+% \label{sec:strut}
+%
+% \begin{macro}{\scr@endstrut}
+% \changes{v3.25}{2017/11/15}{neu (intern)}^^A
+% Wird am Ende eines vermutlich horizontalen Materials eine unsichtbare Stütze
+% der Art \cs{strut} eingebaut, werden Leerzeichen, die davor stehen plötzlich
+% zu Leerzeichen in der Ausgabe, auch wenn das gar nicht erwünscht wird. Das
+% kann man verhindern, indem man \cs{unskip} davor setzt. Dummer Weise hat
+% eine solche Stütze dann aber das Problem, dass das letzte Wort davor nicht
+% mehr getrennt wird. Verrückter Weise kann man das wiederum mit \cs{nobreak}
+% lösen. Das sollte dann auch nur im horizontalen Modus gemacht werden.
+% \begin{macrocode}
+%<*class|letter|extend>
+\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi}
+%</class|letter|extend>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Warnung vor Paketen}
+% \label{sec:packagewarning}
+%
+% \changes{v3.12}{2013/07/08}{neue Warnungen vor bestimmten Paketen}^^A
+% \begin{macro}{\scr@package@not@recommended}
+% \changes{v3.12}{2013/07/08}{neu (intern)}^^A
+% Beim Laden verschiedener Pakete wird nun eine Warnung ausgegeben. In der
+% Regel mit einer Alternativempfehlung.
+% \begin{macro}{\class@shoulddisablepackagewarning@list}
+% \changes{v3.24}{2017/06/25}{neu (nur für Klassenautoren)}^^A
+% Ab \KOMAScript~3.24 ist für Klassenautoren und nur für diese dokumentiert,
+% dass bei Vorhandensein des Makros
+% \cs{class@shoulddisablepackagewarning@list} während dem Laden der
+% \KOMAScript-Klasse für nicht empfohlene Pakete ein
+% \cs{in@}-Vergleich gegen genau den Inhalt dieses Makros stattfindet. Wird
+% der Paketname dabei gefunden, so unterbleibt das Absetzen der Warnung. Zur
+% korrekten Syntax des zweiten Arguments von \cs{in@} sei ausdrücklich auf den
+% Kernel hingewiesen. Ebenso sind Klassenautoren verantwortlich, eine bereits
+% vorhandene Liste nicht einfach zu überschreiben, sondern korrekt zu
+% ergänzen! Eine Definition von \cs{class@shoulddisablepackagewarning@list}
+% nach dem Laden der \KOMAScript-Klasse ist wirkungslos. Da diese
+% Schnittstelle Klassenautoren vorbehalten bleiben soll, die wissen, was sie
+% tun, gibt es keine weitergehende Dokumentation dazu und natürlich auch kein
+% Beispiel.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\scr@package@not@recommended}[2]{%
+ \scr@ifundefinedorrelax{class@shoulddisablepackagewarning@list}{%
+ \@firstofone
+ }{%
+ \edef\reserved@a{%
+ \noexpand\in@{#1}{\class@shoulddisablepackagewarning@list}}%
+ \reserved@a
+ \ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
+ }{%
+ \BeforePackage{#1}{%
+ \ClassWarning{\KOMAClassName}{%
+ Usage of package `#1' together\MessageBreak
+ with a KOMA-Script class is not recommended.\MessageBreak
+ \if\relax\detokenize{#2}\relax\else
+ I'd suggest to use #2.\MessageBreak
+ \fi
+ Nevertheless, using requested\MessageBreak
+ package `#1'%
+ }%
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}^^A \class@shoulddisablepackagewarning@list
+%
+% \textsf{emptypage} wird nicht benötigt, weil es bereits entsprechende
+% Einstellungen in \KOMAScript{} gibt. Darüber hinaus verwendet es
+% \cs{thispagestyle} an Stelle von \cs{pagestyle} in einer Gruppe, was
+% dazu führen kann, dass nach einem \cs{cleardoublepage}, das keine leere
+% Seite erzeugt, die nächste Seite den entsprechenden Seitenstil bekommt.
+% \begin{macrocode}
+\scr@package@not@recommended{emptypage}{%
+ option\MessageBreak
+ `cleardoublepage' with one of it's\MessageBreak
+ several values}
+% \end{macrocode}
+%
+% \textsf{fancyhdr} verwendet veraltete Font-Befehle und beachtet die
+% Font-Einstellungen und diverse andere Befehle und Optionen von \KOMAScript{}
+% nicht.
+% \changes{v3.24}{2017/06/25}{improved \textsf{fancyhdr} warning}^^A
+% \begin{macrocode}
+\scr@package@not@recommended{fancyhdr}{%
+ \MessageBreak
+ package `scrlayer' or `scrlayer-scrpage', because\MessageBreak
+ they support KOMA-Script classes.\MessageBreak
+ With `fancyhdr' several features of class `\KOMAClassName'\MessageBreak
+ like options `headsepline', `footsepline' or command\MessageBreak
+ `\string\MakeMarkcase' and the commands `\string\setkomafont' and\MessageBreak
+ `\string\addtokomafont' for the page style elements need\MessageBreak
+ explicite user intervention to work}
+% \end{macrocode}
+% \changes{v3.23}{2017/02/04}{Verwendung von \textsf{minitoc} kann nicht
+% empfohlen werden}^^A
+% \textsf{minitoc} definiert u.\,a. \cs{@sect} hart um und zerstört so diverse
+% Erweiterungen von \KOMAScript. Es ist nicht abschließend untersucht, was das
+% Paket noch alles zerstört. Derzeit gibt es nur einen Workaround für das
+% genannte Problem mit \cs{@sect} (siehe:
+% Abschnitt~\ref{sec:packageworkarounds}).
+% \begin{macrocode}
+\scr@package@not@recommended{minitoc}{}
+% \end{macrocode}
+%
+% \selectlanguage{english}^^A
+% \changes{v3.26}{2018/07/18}{\textsf{multitoc} not recommended}^^A
+% \textsf{multitoc} not recommended, because up to version 2.01 it breaks all
+% additional list-ofs and even table of contents, list of figures and list of
+% tables, if option \texttt{toc}, \texttt{lof} or \texttt{lot} has not been
+% set. And it is not needed, because you can use \cs{BeforeStartingTOC} and
+% \cs{AfterStartingTOC} to make two-column list-ofs.
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{multitoc}{%
+ package `multicol' and, e.g.:\MessageBreak
+ \space\space
+ \string\BeforeStartingTOC{\string\begin{multicols}{2}}\MessageBreak
+ \space\space
+ \string\AfterStartingTOC{\string\end{multicols}}\MessageBreak
+ to make all ToCs two-columned.\MessageBreak
+ \@ifpackagelater{2018/07/18}{}{%
+ Note, package `multitoc' breaks additional\MessageBreak
+ ToCs generated by `\string\DeclareNewTOC' or\MessageBreak
+ packages like `listings' or `newcaption' and\MessageBreak
+ even the standard table of contents,\MessageBreak
+ list of figures or list of tables,\MessageBreak
+ if you omit the corresponding options `toc',\MessageBreak
+ `lof' or `lot'.%
+ }%
+}
+%</!letter>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+%
+% \textsf{parskip} ist nur ein Notfallpaket für Klassen, die selbst keinen
+% Absatzabstand unterstützen.
+% \begin{macrocode}
+\scr@package@not@recommended{parskip}{%
+ option\MessageBreak
+ `parskip' with one of it's several values}
+% \end{macrocode}
+%
+% \changes{v3.16}{2015/01/21}{Verwendung von \textsf{titleps} kann nicht
+% empfohlen werden}^^A
+% \textsf{titleps} beachtet die Font-Einstellungen und diverse andere Befehle
+% und Optionen von \KOMAScript{} nicht.
+% \begin{macrocode}
+\scr@package@not@recommended{titleps}{%
+ package `scrlayer-scrpage'}
+% \end{macrocode}
+%
+% \textsf{titlesec} beschädigt diverse \KOMAScript{} Erweiterungen und
+% benötigt eigene Workarounds (siehe Abschnitt~\ref{sec:packageworkarounds}),
+% so dass es einfach nicht gut mit \KOMAScript{} harmoniert.
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{titlesec}{%
+ the package only\MessageBreak
+ if you really need it, because it breaks several\MessageBreak
+ KOMA-Script features, i.e., option `headings' and\MessageBreak
+ the extended optional argument of the section\MessageBreak
+ commands}
+%</!letter>
+% \end{macrocode}
+%
+% \selectlanguage{english}^^A
+% \changes{v3.25}{2017/11/21}{Usage of \textsf{tocbibind} not recommended}^^A
+% \textsf{tocbibind} does several things, that break \KOMAScript, i.e.:
+% \begin{itemize}
+% \item usage of \cs{MakeUppercase} within running heads,
+% \item usage of hard codes \texttt{toc} for the ToC entries,
+% \item hard redefinition of \texttt{thebibliography},
+% \item hard redefinition of \texttt{theindex},
+% \item hard redefinition of \cs{tableofcontents},
+% \item hard redefinition of \cs{listoftables},
+% \item hard redefinition of \cs{listoffigures},
+% \item hard redefinition of \cs{@makechapterhead}
+% \end{itemize}
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{tocbibind}{%
+ options like `listof=totoc'\MessageBreak
+ or `bibliography=totoc', or commands like\MessageBreak
+ `\string\setuptoc{toc}{totoc}' instead of this package,\MessageBreak
+ because it breaks several KOMA-Script features of\MessageBreak
+ the list of figures, list of tables, bibliography,\MessageBreak
+ index and the running head%
+}
+%</!letter>
+% \end{macrocode}
+%
+% \changes{v3.26}{2018/07/18}{Usage of \textsf{tocloft} not recommended}^^A
+% \textsf{tocloft} does redefine \cs{tableofcontents}, \cs{listoffigures},
+% \cs{listoftables}, \cs{l@part} \dots{} \cs{l@subparagraph} and breaks
+% \KOMAScript, i.e.:
+% \begin{itemize}
+% \item commands \cs{BeforeTOCHead}, \cs{AfterTOCHead},
+% \cs{BeforeStartingTOC}, \cs{AfterStartingTOC},
+% \item almost all TOC features,
+% \item options \texttt{listof=totoc}, \texttt{listof=numbered},
+% \item option \texttt{listof=flat},
+% \item option \texttt{listof=entryprefix},
+% \item all options of \cs{DeclareTOCEntryStyle},
+% \end{itemize}
+% \begin{macrocode}
+%<*!letter>
+\scr@package@not@recommended{tocloft}{%
+ options like `listof=entryprefix',\MessageBreak
+ commands like `\string\listoflofentryname' or\MessageBreak
+ `\string\listoflotentryname',
+ and `\string\DeclareTOCStyleEntry' or\MessageBreak
+ `\string\RedeclareSectionCommand'
+ instead of this package,\MessageBreak
+ because it breaks several KOMA-Script features of\MessageBreak
+ the list of figures, list of tables and table of\MessageBreak
+ contents, i.e., options like `listof=numbered',\MessageBreak
+ `listof=flat or `toc=flat', commands like\MessageBreak
+ `\string\BeforeTOCHead{...}' and
+ `\string\AfterTOCHead{...}',\MessageBreak
+ `\string\BeforeStartingTOC{...}' and
+ \string\AfterStartingTOC{...}',\MessageBreak
+ all features of `\string\DeclareTOCStyleEntry',\MessageBreak
+ and the ToC entry features of `\string\DeclareSecionCommand'\MessageBreak
+ and `\string\RedeclareSectionCommand' of levels\MessageBreak
+ `part',
+%<article> `chapter',
+ `section', `subsection',\MessageBreak
+ `subsubsection', `paragraph' and `subparagraph'%
+}
+%</!letter>
+%</class>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{macro}^^A \scr@package@not@recommended
+%
+% \subsection{Workarounds für fremde Pakete}
+% \label{sec:packageworkarounds}
+%
+% \changes{v3.23}{2017/02/04}{\textsf{minitoc} verursacht ein schwerwiegendes
+% Problem}^^A
+% Das Paket \textsf{minitoc} verursacht ein schwerwiegendes Problem indem es
+% \cs{@sect} hart umdefiniert, ohne zuvor zu testen, ob die Definition den
+% Erwartungen entspricht. Ich werde hier einmal versuchen, mich darum herum zu
+% lavieren. Eine wirklich gute Lösung ist das sicher nicht. Man sollte das
+% Paket schlicht besser nicht mit \KOMAScript{} zusammen verwenden.
+% \begin{macrocode}
+%<*class>
+%<*!letter>
+\BeforePackage{minitoc}{%
+ \let\scr@mt@saved@sect\@sect
+}
+\AfterPackage{minitoc}{%
+ \def\@tempa#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2<1 \relax
+ \addtocontents{toc}{\protect\sectbegin}
+ \fi
+ \stc@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
+ }%
+ \ifx\@sect\@tempa
+% \end{macrocode}
+% Note: There are several bugs in this definition (e.g. missing
+% \cs{expandafter} and orphan spaced). Nevertheless its the original one from
+% \textsf{minitoc} 61 and so I have to use it.
+% \begin{macrocode}
+ \def\@tempa#1#2#3#4#5#6[#7]#8{
+ \expandafter
+ \ifx\csname #1\endcsname\section\relax
+ \addcontentsline{lof}{xsect}{#7}%
+ \addcontentsline{lot}{xsect}{#7}%
+ \fi
+ \ifx\csname #1\endcsname\starsection\relax
+ \addcontentsline{lof}{xsect}{#7}%
+ \addcontentsline{lot}{xsect}{#7}%
+ \fi
+ \ifnum #2>\c@secnumdepth\relax
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@svsec{\csname the#1\endcsname\hskip 1em}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ {\interlinepenalty \@M #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth\relax
+ \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7%
+ }%
+ \else
+ \def\@svsechd{#6\hskip #3\relax
+ \@svsec #8\csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth\relax
+ \else
+ \protect\numberline{\csname the#1\endcsname}
+ \fi
+ #7}%
+ }%
+ \fi
+ \@xsect{#5}%
+ }%
+ \ifx\stc@sect\@tempa
+ \ClassWarning{\KOMAClassName}{%
+ Redefining minitoc's internal command
+ `\string\stc@sect'\MessageBreak
+ to prevent minitoc to destroy several features\MessageBreak
+ of KOMA-Script%
+ }%
+ \let\stc@sect\scr@mt@saved@sect
+ \else
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround,\MessageBreak
+ because of unexpected definition of\MessageBreak
+ `\string\stc@sect'%
+ }%
+ \let\scr@mt@saved@sect\relax
+ \fi
+ \else
+ \ifx\@sect\scr@mt@saved@sect
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround for
+ `\string\@sect',\MessageBreak
+ because it is not needed%
+ }%
+ \else
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `minitoc' workaround,\MessageBreak
+ because of unexpected definition of\MessageBreak
+ `\string\@sect'%
+ }%
+ \fi
+ \let\scr@mt@saved@sect\relax
+ \fi
+}
+%</!letter>
+%</class>
+% \end{macrocode}
+%
+% \changes{v3.13a}{2014/10/09}{\textsf{titlesec} hat ein schwerwiegendes
+% Problem}^^A
+% Das Paket \textsf{titlesec} hat ein schwerwiegendes Problem, wenn
+% Überschriften nicht per \cs{@startsection} definiert sind. Ich werde hier
+% einmal versuchen, mich darum herum zu lavieren. Eine wirklich gute Lösung
+% ist das sicher nicht. Man sollte das Paket schlicht besser nicht mit
+% \KOMAScript{} zusammen verwenden.
+% \begin{macrocode}
+%<*class>
+%<*!letter>
+\BeforePackage{titlesec}{%
+ \let\scr@ttl@saved@section\section
+ \let\scr@ttl@saved@subsection\subsection
+ \let\scr@ttl@saved@subsubsection\subsubsection
+ \let\scr@ttl@saved@paragraph\paragraph
+ \let\scr@ttl@saved@subparagraph\subparagraph
+}
+\AfterPackage{titlesec}{%
+% \end{macrocode}
+% Hack getestet mit \textsf{titlesec} 2011/12/15 v2.10.0 bis 2016/03/21
+% v2.10.2. Daher bis zu diesem Datum freigeschaltet.
+% \changes{v3.20}{2016/03/22}{\textsf{titlesec}-Hack auch für Version
+% 2016/03/15}^^A
+% \changes{v3.20}{2016/03/24}{\textsf{titlesec}-Hack auch für Version
+% 2016/03/21}^^A
+% \begin{macrocode}
+ \@ifpackagelater{titlesec}{2016/03/22}{%
+ \ClassInfo{\KOMAClassName}{%
+ Deactivating the `titlesec' workaround,\MessageBreak
+ because package is newer than expected%
+ }%
+ }{%
+ \ClassWarning{\KOMAClassName}{%
+ Activating an ugly workaround for a missing\MessageBreak
+ feature of package `titlesec`%
+ }%
+ \def\scr@ttl@@extract#1\scr@startsection#2#3#4#5#6#7#8{%
+ \@tempskipa=#5
+ \@tempskipb=#6
+ \ifdim\@tempskipa<\z@
+ \toks@{\titlespacing*#8{#4}}%
+ \@tempskipa-\@tempskipa
+ \else
+ \toks@{\titlespacing#8{#4}}%
+ \fi
+ \@ifundefined{ttl@space}{}{%
+ \ttl@assign\@tempskipa*\ttl@space\relax\beforetitleunit}%
+ \ifdim\@tempskipb<\z@
+ \if@tempswa
+ \titleformat#8[runin]%
+ {\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}%
+ {\z@}\ttl@passexplicit
+ \else
+ \titleformat#8[runin]%
+ {#7}{\@seccntformat{#2}}%
+ {\z@}\ttl@passexplicit
+ \fi
+ \@tempskipb-\@tempskipb
+ \else
+ \if@tempswa
+ \titleformat#8%
+ {\ttl@fil\ttl@fonts\ttl@sizes{#3}}{\@seccntformat{#2}}%
+ {\z@}\ttl@passexplicit
+ \else
+ \titleformat#8%
+ {#7}{\@seccntformat{#2}}%
+ {\z@}\ttl@passexplicit
+ \fi
+ \@ifundefined{ttl@space}{}{%
+ \ttl@assign\@tempskipb*\ttl@space\relax\aftertitleunit}%
+ \fi
+ \edef\ttl@a{\the\toks@{\the\@tempskipa}{\the\@tempskipb}}
+ \ttl@a}%
+ \expandafter\scr@ttl@@extract\scr@ttl@saved@section\section
+ \expandafter\scr@ttl@@extract\scr@ttl@saved@subsection\subsection
+ \expandafter\scr@ttl@@extract\scr@ttl@saved@subsubsection\subsubsection
+ \expandafter\scr@ttl@@extract\scr@ttl@saved@paragraph\paragraph
+ \expandafter\scr@ttl@@extract\scr@ttl@saved@subparagraph\subparagraph
+ \let\scr@ttl@saved@section\relax
+ \let\scr@ttl@saved@subsection\relax
+ \let\scr@ttl@saved@subsubsection\relax
+ \let\scr@ttl@saved@paragraph\relax
+ \let\scr@ttl@saved@subparagraph\relax
+ \let\scr@ttl@@extract\relax
+ }%
+}
+%</!letter>
+%</class>
+% \end{macrocode}
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-miscellaneous.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-notepaper.dtx b/macros/latex/contrib/koma-script/source/scrkernel-notepaper.dtx
new file mode 100644
index 0000000000..208e4563a8
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-notepaper.dtx
@@ -0,0 +1,4091 @@
+% \CheckSum{3388}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-notepaper.dtx
+% Copyright (c) Markus Kohm, 2006-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-notepaper.dtx
+% Copyright (c) Markus Kohm, 2006-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-notepaper.dtx 3044 2018-11-16 19:00:32Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-11-16 20:00:32 +0100 (Fri, 16 Nov 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1767 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-notepaper.dtx}
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (note-paper)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-notepaper.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/16}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{Briefbogen und Briefpapier}
+%
+% Bei Briefen kommt dem Briefbogen, also dem ersten Blatt des Briefes eine
+% besondere Bedeutung zu. Dieser ist bei \texttt{scrlttr2} durch diverse
+% Optionen, Variablen, Pseudo-Längen und Anweisungen bestimmt. Die weiteren
+% Briefseiten werden hier verinfacht als das Briefpapier bezeichnet. Natürlich
+% ist genau genommen auch der Briefbogen Briefpapier, aber eben ein besonderes.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \subsection{Option für den Briefbogen}
+%
+% Gerade der Briefbogen ist durch eine ganze Anzahl von Optionen
+% konfigurierbar. Daher wird hier weiter thematisch untergliedert.
+%
+%
+% \subsubsection{Optionen für den Briefkopf}
+%
+% Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr}
+% Klasse eng begrenzt. Deshalb hatte ich für mich selbst das
+% \texttt{briefkopf} Paket geschrieben und ohne Support
+% veröffentlicht. Die Funktionalität ist nun direkt verfügbar. Dazu
+% werden verschiedene Optionen benötigt.
+%
+% \begin{option}{firsthead}
+% \changes{v2.97e}{2007/11/22}{Neu}^^A
+% Der Briefkopf kann auch einfach abgeschaltet werden.
+% \begin{macro}{\if@firsthead}
+% \changes{v2.8q}{2002/01/25}{Neuer Schalter (intern)}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist die Verwendung des Briefkopfes.
+% \begin{macrocode}
+\KOMA@ifkey{firsthead}{@firsthead}
+\KOMAExecuteOptions{firsthead=true}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromalign}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Diese Option legt fest, ob der Absender linksbündig, mittig oder
+% rechtsbündig gesetzt werden soll.
+% \begin{macro}{\@alignfrom}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \changes{v2.97e}{2007/11/13}{neue Werte für Verwendung der
+% Absenderergänzung}^^A
+% Die Einstellung wird in einem nummerisch auszuwertenden Makro
+% gespeichert. Dabei gelten folgende Werte:
+% \begin{center}
+% \begin{tabular}{rl}
+% Wert & Ausrichtung \\\hline
+% 0 & linksbündig \\
+% 1 & zentriert \\
+% 2 & rechtsbündig \\
+% 3 & linksbündig in der Absenderergänzung ohne Kopf \\
+% 4 & rechtbündig in der Absenderergänzung ohne Kopf \\
+% 10000 & nicht antasten \\
+% \end{tabular}
+% \end{center}
+% Voreingestellt ist "`nicht antasten"'.
+% \begin{macrocode}
+\newcommand*{\@alignfrom}{0}
+\KOMA@key{fromalign}{%
+ \KOMA@set@ncmdkey{fromalign}{@alignfrom}{%
+ {left}{0},%
+ {center}{1},{centered}{1},{middle}{1},%
+ {right}{2},%
+ {locationleft}{3},{leftlocation}{3},%
+ {locationright}{4},{rightlocation}{4},{location}{4},%
+ {no}{10000},{false}{10000},{off}{10000}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{fromalign}{#1}%
+ \ifcase\@alignfrom\or\or\or\@firstheadfalse\or\@firstheadfalse\fi
+ \fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{fromalign}{left}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromrule}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Es kann gewählt werden, ob im Absender nach dem Namen oder nach dem
+% gesamten Absender eine Linie gesetzt werden soll.
+% \begin{macro}{\@rulefrom}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Die Einstellung wird in einem nummerisch auszuwertenden Makro
+% gespeichert. Dabei gelten folgende Werte:
+% \begin{center}
+% \begin{tabular}{rl}
+% Wert & Absenderlinie \\\hline
+% 0 & keine \\
+% 1 & unter dem Name \\
+% 2 & unter der Adresse \\
+% \end{tabular}
+% \end{center}
+% Voreingestellt ist keine Linie.
+% \begin{macrocode}
+\KOMA@ncmdkey{fromrule}[below]{@rulefrom}{%
+ {false}{0},{no}{0},{off}{0},{aftername}{1},%
+ {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}%
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{fromrule}{false}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromphone}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Ob die Telefonnummer im Absender gesetzt werden soll oder nicht,
+% kann hier angegeben werden.
+% \begin{macro}{\if@phone}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@phonetrue}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@phonefalse}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist keine Telefonnummer im Absender.
+% \begin{macrocode}
+\KOMA@ifkey{fromphone}{@phone}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{frommobilephone}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% Ob die Handynummer im Absender gesetzt werden soll oder nicht,
+% kann hier angegeben werden.
+% \begin{macro}{\if@mobilephone}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% \begin{macro}{\@mobilephonetrue}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% \begin{macro}{\@mobilephonefalse}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist keine Handynummer im Absender.
+% \begin{macrocode}
+\KOMA@ifkey{frommobilephone}{@mobilephone}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromfax}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Ob die Faxnummer im Absender gesetzt werden soll oder nicht,
+% kann hier angegeben werden.
+% \begin{macro}{\if@fax}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@faxtrue}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@faxfalse}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist keine Faxnummer im Absender.
+% \begin{macrocode}
+\KOMA@ifkey{fromfax}{@fax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromemail}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Ob die E-Mail-Adresse im Absender gesetzt werden soll oder nicht,
+% kann hier angegeben werden.
+% \begin{macro}{\if@email}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@emailtrue}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@emailfalse}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist keine E-Mail-Adresse im Absender.
+% \begin{macrocode}
+\KOMA@ifkey{fromemail}{@email}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromurl}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Ob die URL auf eine Homepage im Absender gesetzt werden soll oder
+% nicht, kann hier angegeben werden.
+% \begin{macro}{\if@www}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@wwwtrue}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@wwwfalse}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist keine URL im Absender.
+% \begin{macrocode}
+\KOMA@ifkey{fromurl}{@www}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{fromlogo}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Ob ein Logo in den Briefkopf gesetzt werden soll oder
+% nicht, kann hier angegeben werden.
+% \begin{macro}{\if@logo}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@logotrue}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% \begin{macro}{\@logofalse}
+% \changes{v2.8q}{2002/01/25}{Neu}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist kein Logo im Briefkopf.
+% \begin{macrocode}
+\KOMA@ifkey{fromlogo}{@logo}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für Anschrift und Absenderergänzung}
+%
+% \begin{option}{addrfield}
+% \changes{v2.8q}{2001/10/09}{Neu}^^A
+% \changes{v3.03}{2009/03/04}{neue Werte}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Das Adressfeld für Fensterumschläge kann mit \texttt{addrfield} ein- und
+% ausgeschaltet werden. Darüber hinaus kann die Art des Adressfeldes gewählt
+% werden.
+% \begin{macro}{\if@afield}
+% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
+% \begin{macro}{\@afieldtrue}
+% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
+% \begin{macro}{\@afieldfalse}
+% \changes{v3.03}{2009/03/04}{ersetzt durch \cs{@afieldmode}}
+% \begin{macro}{\@afieldmode}
+% \changes{v3.03}{2009/03/04}{neu (intern)}^^A
+% Die Speicherung erfolgt wiederum in einem Makro.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\if@afield}{%
+ \ClassWarning{\KOMAClassName}{%
+ Usage of \string\if@afield\space deprecated.\MessageBreak
+ Internal macro \string\if@afield\space was removed at\MessageBreak
+ KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
+ \string\if@afield\space by \string\ifnum
+ \string\@afieldmode=\string\@ne.\MessageBreak
+ This may result in errors. A better solution would be\MessageBreak
+ to change the code}%
+ \ifnum \@afieldmode=\@ne}
+\newcommand*{\@afieldtrue}{%
+ \ClassWarning{\KOMAClassName}{%
+ Usage of \string\if@afield\space deprecated.\MessageBreak
+ Internal macro \string\if@afield\space was removed at\MessageBreak
+ KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
+ \string\@afieldtrue\space by
+ \string\KOMAoptions{addrfield=true}.\MessageBreak
+ This may result in errors. A better solution would be\MessageBreak
+ to change the code}%
+ \KOMAoptions{addrfield=true}}
+\newcommand*{\@afieldfalse}{%
+ \ClassWarning{\KOMAClassName}{%
+ Usage of \string\if@afield\space deprecated.\MessageBreak
+ Internal macro \string\if@afield\space was removed at\MessageBreak
+ KOMA-Script version 3.03. I'll replace the usage of\MessageBreak
+ \string\@afieldfalse\space by
+ \string\KOMAoptions{addrfield=false}.\MessageBreak
+ This may result in errors. A better solution would be\MessageBreak
+ to change the code}%
+ \KOMAoptions{addrfield=false}}
+%</class>
+\newcommand*{\@afieldmode}{\@ne}
+\KOMA@ncmdkey{addrfield}[true]{@afieldmode}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},%
+ {PP}{2},{pp}{2},%
+ {PPexplicite}{2},{PPExplicite}{2},%
+ {ppexplicite}{2},{ppExplicite}{2},%
+ {backgroundimage}{3},%
+ {PPbackgroundimage}{3},{PPBackgroundImage}{3},{PPBackGroundImage}{3},%
+ {ppbackgroundimage}{3},{ppBackgroundImage}{3},{ppBackGroundImage}{3},%
+ {image}{4},{Image}{4},%
+ {PPimage}{4},{PPImage}{4},%
+ {ppimage}{4},{ppImage}{4},%
+ {topaligned}{5},{alignedtop}{5}%
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{addrfield}{true}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{priority}
+% \changes{v3.03}{2009/03/04}{neu}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Im internationalen Briefverkehr sind zwei Prioritätseinstellungen
+% bekannt. Dafür gibt es dann so etwas wie eine Versandart nicht mehr.
+% \begin{macro}{\ltr@priority}
+% \changes{v3.03}{2009/03/04}{neu (intern)}^^A
+% Abgelegt wird die Art der Priorität in einem Macro.
+% \begin{macrocode}
+\KOMA@ncmdkey{priority}[A]{ltr@priority}{%
+ {no}{0},{off}{0},{false}{0},{manual}{1},%
+ {B}{1},{b}{1},%
+ {economy}{1},{Economy}{1},{ECONOMY}{1},%
+ {B-ECONOMY}{1},{B-Economy}{1},{b-economy}{1},%
+ {A}{2},{a}{2},%
+ {priority}{2},{Priority}{2},{PRIORITY}{2},%
+ {A-PRIORITY}{2},{A-Priority}{2},{a-priority}{2}%
+}%
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{priority}{false}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{backaddress}
+% \changes{v2.8q}{2002/01/22}{Neu}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{3015/03/16}{interne Speicherung der Werte}^^A
+% Im Adressfeld kann die Rücksendeadresse gesetzt werden. Dies geschieht nun
+% nicht mehr allein durch Definition einer Rücksendeadresse, sondern auch
+% durch eine Option.
+% \begin{macro}{\if@baddr}
+% \begin{macro}{\@baddrtrue}
+% \begin{macro}{\@baddrfalse}
+% \begin{macro}{\backaddr@format}
+% \changes{v2.96}{2006/07/31}{neu (intern)}^^A
+% Dieses Makro hat genau ein Argument und bestimmt die Form der
+% Rücksendeadresse. Voreingestellt ist Unterstreichung. Dies entspricht der
+% vor Version~2.96 festen Voreinstellung.
+% \begin{macrocode}
+\newcommand{\backaddr@format}[1]{}
+\let\backaddr@format\underline
+% \end{macrocode}
+% \end{macro}
+% Die Einstellung true/false der Option wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@baddr\@baddrtrue
+\KOMA@key{backaddress}[true]{%
+ \begingroup
+ \KOMA@set@ncmdkey{backaddress}{@tempa}{%
+ {false}{0},{off}{0},{no}{0},%
+ {true}{1},{on}{1},{yes}{1},%
+ {underlined}{2},%
+ {plain}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifcase\@tempa
+ \endgroup
+ \@baddrfalse
+ \or
+ \endgroup
+ \@baddrtrue
+ \or
+ \endgroup
+ \@baddrtrue
+ \let\backaddr@format\underline
+ \or
+ \endgroup
+ \@baddrtrue
+ \let\backaddr@format\@firstofone
+ \else
+ \endgroup
+ \fi
+ \if@baddr
+ \ifx\backaddr@format\underline
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{backaddress}{underlined}%
+ \else
+ \ifx\backaddr@format\@firstofone
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{backaddress}{plain}%
+ \else
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{backaddress}{true}%
+ \fi
+ \fi
+ \else
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{backaddress}{false}%
+ \fi
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{locfield}
+% \changes{v2.8q}{2001/10/09}{Neu}^^A
+% \changes{v2.97c}{2007/03/30}{vertauschte Bedeutung korrigiert}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Mit Hilfe der Optione \texttt{locfield} kann der Platz neben dem Adressfeld
+% groß oder klein gewählt werden.
+% \begin{macro}{\if@bigloc}
+% \begin{macro}{\@bigloctrue}
+% \begin{macro}{\@biglocfalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@bigloc
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\KOMA@key{locfield}[wide]{%
+ \begingroup
+ \KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase\@tempa
+ \endgroup
+ \@bigloctrue
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{locfield}{wide}%
+ \else
+ \endgroup
+ \@biglocfalse
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{locfield}{narrow}%
+ \fi
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{locfield}{narrow}
+% \end{macrocode}
+% \begin{option}{wlocfield}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{slocfield}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{wlocfield}{locfield=wide}
+\KOMA@DeclareDeprecatedOption{slocfield}{locfield=narrow}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für Faltmarken}
+%
+% \begin{option}{foldmarks}
+% \changes{v2.8q}{2001/09/10}{Neu}^^A
+% \changes{v3.00}{2008/06/06}{es muss \cs{FamilyUnkownKeyVal} statt
+% \cs{KOMA@unkown@keyval} lokal umdefiniert werden}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Die Faltmarken können mit \texttt{foldmarks} aktiviert und deaktiviert
+% werden.
+% \begin{macro}{\if@fold}
+% \begin{macro}{\@foldtrue}
+% \begin{macro}{\@foldfalse}
+% Ob Faltmarken gesetzt werden sollen oder nicht, wird in einem
+% Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@fold\@foldtrue
+% \end{macrocode}
+% \begin{macro}{\@usefolds}
+% Welche Faltmarken gesetzt werden sollen, wird in einem Makro gespeichert.
+% \changes{v2.97e}{2007/11/08}{Neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\@usefolds}{TMBPL}
+\KOMA@key{foldmarks}[true]{%
+ \begingroup
+ \KOMA@set@ifkey\@empty{@fold}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@fold\aftergroup\@foldtrue\else\aftergroup\@foldfalse\fi
+ \aftergroup\FamilyKeyStateProcessed
+ \else
+ \aftergroup\FamilyKeyStateProcessed
+ \def\sc@nf@ldch@rs##1{%
+ \ifx ##1\@nil\else
+ \if ##1T\g@addto@macro\@usefolds{##1}\else
+ \if ##1M\g@addto@macro\@usefolds{##1}\else
+ \if ##1B\g@addto@macro\@usefolds{##1}\else
+ \if ##1P\g@addto@macro\@usefolds{##1}\else
+ \if ##1L\g@addto@macro\@usefolds{##1}\else
+ \if ##1V\g@addto@macro\@usefolds{L}\else
+ \if ##1H\g@addto@macro\@usefolds{TMBP}\else
+ \if ##1t\scr@removechar\@usefolds{T}\else
+ \if ##1m\scr@removechar\@usefolds{M}\else
+ \if ##1b\scr@removechar\@usefolds{B}\else
+ \if ##1p\scr@removechar\@usefolds{P}\else
+ \if ##1l\scr@removechar\@usefolds{L}\else
+ \if ##1v%
+ \scr@removechar\@usefolds{L}%
+ \else
+ \if ##1h%
+ \scr@removechar\@usefolds{T}%
+ \scr@removechar\@usefolds{M}%
+ \scr@removechar\@usefolds{B}%
+ \else
+ \aftergroup\FamilyKeyStateUnknownValue
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \expandafter\sc@nf@ldch@rs
+ \fi
+ }%
+ \expandafter\sc@nf@ldch@rs#1\@nil
+ \fi
+ \endgroup
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{foldmarks}{\@usefolds}%
+ \KOMA@kav@xadd{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{foldmarks}{\if@fold true\else false\fi}%
+ \fi
+}
+\KOMA@kav@xadd{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{foldmarks}{\@usefolds}%
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{foldmarks}{true}%
+% \end{macrocode}
+% \begin{macro}{\scr@removechar}
+% \changes{v2.97e}{2007/11/08}{Neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\scr@removechar}[2]{%
+ \def\in@@##1#2##2##3\in@@{%
+ \ifx\in@##2\else
+ \def\in@@####1#2\in@{\gdef#1{##1####1}}%
+ \in@@##2##3%
+ \fi}%
+ \expandafter\in@@#1#2\in@\in@@
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für die Geschäftszeile}
+%
+% \begin{option}{refline}
+% \changes{v2.8n}{2001/09/08}{Neue Option}^^A
+% \changes{v2.96a}{2006/12/07}{vertauschte Bedeutung korrigiert}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Kopf und Fuß der ersten Seite sind normalweise so breit, dass sie
+% zur Adresse des Empfängers passen. Für die Geschäftszeile gibt es
+% zwei Alternativen, eine breite und eine, deren Breite der Textbreite
+% entspricht. Voreingestellt ist die Textbreite.
+% \begin{macro}{\if@refwide}
+% \changes{v2.8n}{2001/09/08}{Neuer Schalter}^^A
+% \changes{v3.09}{2011/03/07}{Neue Werte: \texttt{dateleft},
+% \texttt{dateright}, \texttt{nodate}}
+% \begin{macro}{\@refwidetrue}
+% \begin{macro}{\@refwidefalse}
+% Gespeichert wird die Information in einem Schalter.
+% \begin{macro}{\@datepos}
+% \changes{v3.09}{2011/03/07}{Neu (intern)}^^A
+% Das Datum kann links oder rechts oder gar nicht gesetzt werden.
+% Wo die Speicherung erfolgt wird in einem nummerischen Makro
+% abglegt. Voreingestellt ist rechts.
+% \begin{macrocode}
+\newif\if@refwide
+\newcommand*{\@datepos}{1}
+\KOMA@key{refline}[wide]{%
+ \begingroup
+ \KOMA@set@ncmdkey{refline}{@tempa}{{wide}{0},{narrow}{1},%
+ {dateleft}{2},{leftdate}{2},%
+ {dateright}{3},{rightdate}{3},%
+ {nodate}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifcase\@tempa
+ \endgroup
+ \@refwidetrue
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{wide}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{narrow}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{wide}%
+ \or
+ \endgroup
+ \@refwidefalse
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{wide}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{narrow}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{narrow}%
+ \or
+ \endgroup
+ \def\@datepos{2}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateleft}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateright}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{nodate}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateleft}%
+ \or
+ \endgroup
+ \def\@datepos{1}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateleft}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateright}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{nodate}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateright}%
+ \or
+ \endgroup
+ \def\@datepos{0}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateleft}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{dateright}%
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{nodate}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{refline}{nodate}%
+ \fi
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{refline}{dateright}%
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{refline}{narrow}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für den Betreff}
+%
+% \begin{option}{subject}
+% \changes{v2.8q}{2001/10/09}{Neu}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% Ein Betreff-Titel kann mit \texttt{subject} ein- und abgeschaltet
+% werden. In England und Frankreich scheint es teilweise üblich zu
+% sein, den Betreff erst nach der Anrede und dafür zentriert zu
+% setzen\footnote{Ich kann mir nur mühsahm eine Bemerkung dazu
+% verkneifen.}.
+% Deshalb kann alternativ zum Einschalten des Betreff-Titels hier auch
+% dies aktiviert werden.
+% \begin{macro}{\subject@format}
+% \changes{v2.97c}{2007/07/06}{neu (intern)}^^A
+% Das Format des Betreffs kann geändert werden.
+% \begin{macrocode}
+\newcommand{\subject@format}[1]{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\raggedsubject}
+% \changes{v2.97c}{2007/07/06}{neu (intern)}^^A
+% \begin{macrocode}
+\newcommand*{\raggedsubject}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\if@subj}
+% \begin{macro}{\@subjtrue}
+% \begin{macro}{\@subjfalse}
+% \begin{macro}{\if@subjafter}
+% \begin{macro}{\@subjaftertrue}
+% \begin{macro}{\@subjafterfalse}
+% Die Speicherung erfolgt in zwei Schaltern.
+% \begin{macrocode}
+\newif\if@subj
+\newif\if@subjafter
+\KOMA@key{subject}{%
+ \begingroup
+ \KOMA@set@ncmdkey{subject}{@tempa}{%
+ {titled}{0},%
+ {untitled}{1},%
+ {afteropening}{2},%
+ {beforeopening}{3},%
+ {underlined}{4},%
+ {left}{5},%
+ {right}{6},%
+ {centered}{7}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifcase\@tempa
+ \aftergroup\@subjtrue
+ \or
+ \aftergroup\@subjfalse
+ \or
+ \aftergroup\@subjaftertrue
+ \or
+ \aftergroup\@subjafterfalse
+ \or
+ \aftergroup\let\aftergroup\subject@format\aftergroup\underline
+ \or
+ \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedright
+ \or
+ \aftergroup\let\aftergroup\raggedsubject\aftergroup\raggedleft
+ \or
+ \aftergroup\let\aftergroup\raggedsubject\aftergroup\centering
+ \fi
+ \else
+ \aftergroup\FamilyKeyStateUnknownValue
+ \fi
+ \endgroup
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{\if@subj titled\else untitled\fi}%
+ \KOMA@kav@xadd{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{\if@subjafter after\else before\fi opening}%
+ \ifx\subject@format\underline
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{underlined}%
+ \fi
+ \ifx\raggedsubject\raggedright
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{left}%
+ \else
+ \ifx\raggedsubject\raggedleft
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{right}%
+ \else
+ \ifx\raggedsubject\centering
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{subject}{centered}%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{subject}{untitled}%
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{subject}{beforeopening}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für den Satzspiegel}
+%
+% \begin{option}{enlargefirstpage}
+% \changes{v2.8o}{2001/09/18}{Neue Option}^^A
+% Normalerweise wird der Text des Briefboges entsprechend dem
+% normalen Satzspiegel gesetzt. Ist allerdings der Fuß der ersten
+% Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend
+% verkürzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen
+% werden, dass im umgekehrten Fall, der Satzspiegel vertikal
+% verlängert wird.
+% \begin{macro}{\if@enlargefp}
+% \begin{macro}{\@enlargefptrue}
+% \begin{macro}{\@enlargefpfalse}
+% Gespeichert wird die Information über die Optionen in einem
+% Schalter.
+% \begin{macrocode}
+\KOMA@ifkey{enlargefirstpage}{@enlargefp}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsubsection{Optionen für den Briefbogenfuß}
+%
+% \begin{option}{firstfoot}
+% \changes{v2.97e}{2007/11/22}{Neu}^^A
+% Der Fuß des Briefbogens kann auch einfach abgeschaltet werden.
+% \begin{macro}{\if@firstfoot}
+% \changes{v2.8q}{2002/01/25}{Neuer Schalter (intern)}^^A
+% Gespeichert wird die Information in einem einfachen Schalter.
+% Voreingestellt ist die Verwendung des Fußes.
+% \begin{macrocode}
+\KOMA@ifkey{firstfoot}{@firstfoot}\@firstfoottrue
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+%
+% \subsection{Optionen für den Kopf des weiteren Briefpapiers}
+%
+% Diese Optionen haben zwar nichts mit dem eigentlichen Briefbogen zu tun. Das
+% Briefpapier schließt sich aber an, weshalb die Optionen hier zu finden sind.
+%
+% \begin{option}{pagenumber}
+% \changes{v2.8q}{2002/01/31}{Neu}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}
+% Bei Briefen kann gewählt werden, ob auf Folgeseiten die Seitenzahl
+% im Kopf oder im Fuß stehen soll. Dabei kann zwischen Seitenzahl
+% rechts, links oder zentriert gewählt werden. Voreingestellt ist der
+% Fuß und mittig.
+% \begin{macro}{\@pageat}
+% \changes{v2.8q}{2002/01/31}{Neu}^^A
+% In dieser nummerisch auswertbaren Variablen wird gespeichert, wo die
+% Seitenzahl stehen soll. Dabei gilt:
+% \begin{center}\begin{tabular}{rl}
+% Wert & Bedeutung für die Seitenzahl\\\hline
+% -1 & keine \\
+% 0 & im Kopf links \\
+% 1 & im Kopf mittig \\
+% 2 & im Kopf rechts \\
+% 3 & im Fuß links \\
+% 4 & im Fuß mittig \\
+% 5 & im Fuß rechts \\
+% \end{tabular}\end{center}
+% \begin{macrocode}
+\newcommand*{\@pageat}{4}
+\KOMA@key{pagenumber}{%
+ \begingroup
+ \KOMA@set@ncmdkey{pagenumber}{@tempa}{%
+ {no}{-1},{off}{-1},{false}{-1},%
+ {topleft}{0},{headleft}{0},%
+ {topmiddle}{1},{topcenter}{1},{topcentered}{1},%
+ {headmiddle}{1},{headcenter}{1},{headcentered}{1},%
+ {topright}{2},{headright}{2},%
+ {botleft}{3},{footleft}{3},%
+ {botmiddle}{4},{botcenter}{4},{botcentered}{4},%
+ {footmiddle}{4},{footcenter}{4},{footcentered}{4},%
+ {botright}{5},{footright}{5},%
+ {top}{10},{head}{10},{bot}{11},{foot}{11},%
+ {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifnum\@tempa<10
+ \edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}%
+ \else
+ \ifnum\@tempa<20
+ \@tempcnta\@pageat\relax
+ \ifnum\@tempcnta>2
+ \advance\@tempcnta by -3
+ \fi
+ \ifnum\@tempa=11
+ \advance\@tempcnta by 3
+ \fi
+ \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
+ \else
+ \ifnum\@pageat>2
+ \edef\@pageat{3}%
+ \else
+ \edef\@pageat{0}%
+ \fi
+ \@tempcnta\@tempa
+ \advance\@tempcnta by -20
+ \advance\@tempcnta by\@pageat
+ \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}%
+ \fi
+ \fi
+ \else
+ \def\@tempa{\endgroup\FamilyKeyStateUnknownValue}%
+ \fi
+ \@tempa
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{pagenumber}{%
+ \ifcase \@pageat
+ topleft%
+ \or
+ topmiddle%
+ \or
+ topright%
+ \or
+ botleft%
+ \or
+ botmiddle%
+ \or
+ botright%
+ \else
+ false%
+ \fi
+ }%
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{pagenumber}{botmiddle}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+%
+% \iffalse
+%</letter>
+%</option>
+%<*body>
+%<*letter>
+% \fi
+%
+% \subsection{Anweisungen für den Briefbogen}
+%
+% Auch bei den Anweisungen zunächst alles, was mit dem Briefbogen zu tun hat.
+%
+% \subsubsection{Der Kopf des Briefbogens}
+%
+% \begin{macro}{\firsthead}
+% \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt}
+% \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine
+% Variable realisiert}^^A
+% \begin{macro}{\@firsthead}
+% \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine
+% Variable realisiert}^^A
+% \begin{macro}{\@gen@firsthead}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \changes{v2.97c}{2007/05/08}{Dicke der Linie konfigurierbar}^^A
+% \changes{v2.97c}{2007/05/08}{Schrift (Farbe) der Linie konfigurierbar}^^A
+% \changes{v3.06a}{2010/07/29}{Verwendung des Font-Elements
+% \texttt{fromrule} eingefügt}
+% \changes{v3.08}{2010/10/28}{der Kopf des Briefbogens wird über eine
+% Variable realisiert}^^A
+% \begin{KOMAvar}{firsthead}
+% \changes{v3.08}{2010/10/28}{Neu}^^A
+% \changes{v3.13b}{2014/10/04}{neuer \emph{hook} nur für
+% \texttt{DINmtext.lco}}^^A
+% Bei \texttt{scrlttr2} gibt es die üblichen Seitenstile, allerdings
+% ist deren Verhalten etwas anders als gewohnt. Dies ist in den
+% Besonderheiten für Briefen begründet. Zunächst die Voreinstellung für
+% Briefbögen.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\@firsthead}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\@firsthead.\MessageBreak
+ \string\usekomavar{firsthead} should be used\MessageBreak
+ instead of \string\@firsthead
+ }%
+ \usekomavar{firsthead}%
+}
+%</class>
+\newkomavar{firsthead}
+\setkomavar{firsthead}{%
+ \parbox[b]{\useplength{firstheadwidth}}%
+ {\centering\usekomafont{fromaddress}{%
+ \ifkomavarempty{fromname}{}{%
+ {\usekomafont{fromname}%
+ {\ignorespaces\usekomavar{fromname}}\\[-8pt]}
+ {\usekomafont{fromrule}{\rule{\useplength{firstheadwidth}}{.4pt}}}\\
+ }%
+ \ifkomavarempty{fromaddress}{}{%
+ \csname scr@default@firsthead@fromaddress@hook\endcsname
+ \ignorespaces\usekomavar{fromaddress}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{KOMAvar}
+% \begin{macro}{\scr@firsthead@postsetvar}
+% \changes{v3.08}{2010/10/28}{Neu (intern)}^^A
+% \changes{v3.17}{2015/03/16}{internes Setzen von Option
+% \texttt{fromalign!=no}}^^A
+% Über dieses Makro wird jeweils nach dem Setzen der Variable die Ausrichtung
+% auf manuell umgeschaltet. Das darf deshalb auch erst nach dem erstmaligen
+% Setzen definiert werden!
+% \begin{macrocode}
+\newcommand*{\scr@firsthead@postsetvar}{%
+ \KOMAExecuteOptions[.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ ]{fromalign=no}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*{\@gen@firsthead}{%
+% \end{macrocode}
+% Damit wird ggf. die Kopfzeile der ersten Seite umdefiniert, nämlich dann,
+% wenn dies per Option aktiviert wurde.
+% \begin{macrocode}
+ \ifcase\@alignfrom
+% \end{macrocode}
+% Wir befinden uns nun in dem Bereich für \verb|\@alignfrom|=0.
+% Entsprechend unserer Festlegung wird daher als Erstes der
+% linksbündige Absender definiert. Wir verwenden dafür eine
+% \emph{parbox}, in der der Text linksbündig angeordnet wird. Diese
+% Box soll über die gesamte Breite gehen dürfen:
+% \begin{macrocode}
+ \setkomavar{firsthead}{%
+ \parbox[b]{\textwidth}{\raggedright
+% \end{macrocode}
+% Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für
+% den Namen verwendet werden.
+% \begin{macrocode}
+ {\usekomafont{fromname}\strut\ignorespaces
+ \usekomavar{fromname}%
+% \end{macrocode}
+% Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den
+% Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender
+% bestimmt oder automatisch gewählt werden. Es werden dabei die
+% Pseudo-Längen \texttt{fromrulewidth} und \texttt{fromrulethickness}
+% verwendet. Ist \texttt{fromrulewidth} negativ, so wird sie automatisch
+% bestimmt. Bei der automatischen Längenbestimmung wird dafür gesorgt, dass
+% die Linie nicht bis in das Logo ragt, das eventuell rechtsbündig neben dem
+% Absender steht:
+% \begin{macrocode}
+ {%
+ \ifnum\@rulefrom=1\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \if@logo
+ \settowidth{\@tempdimb}{\usekomavar{fromlogo}}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \fi
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ }%
+ \\
+ }%
+% \end{macrocode}
+% Als Nächstes wird die Absenderadresse einschließlich aller
+% optionalen Felder gesetzt. Dabei werden optionale Felder nur
+% gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die
+% Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen
+% Schriftart gesetzt.%
+% \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird
+% berücksichtigt}%
+% \begin{macrocode}
+ {\usekomafont{fromaddress}\strut\ignorespaces
+ \usekomavar{fromaddress}%
+ \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
+ \if@mobilephone
+ \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}%
+ \fi%
+ \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
+ \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
+ \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
+% \end{macrocode}
+% Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie
+% gesetzt werden. Wir gehen davon aus, dass die Linie automatisch
+% nicht in das Logo ragt, da es in diesem Fall über der Linie zu
+% stehen hat. Die entsprechende Berechnung kann also entfallen.
+% \begin{macrocode}
+ \ifnum\@rulefrom=2\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ \\
+ }%
+ }%
+% \end{macrocode}
+% Die parbox ist damit ebenfalls beendet. Es muss nun ggf. noch das
+% Logo gesetz werden. Es wird in diesem Fall von der aktuellen
+% Position am rechten Rand nach links ausgegeben.
+% \begin{macrocode}
+ \if@logo
+ \llap{\usekomavar{fromlogo}}%
+ \fi
+ }%
+ \renewcommand*{\@alignfrom}{0}%
+% \end{macrocode}
+% Damit ist die Definition des linksbündigen Absenders abgeschlossen.
+% Es geht weiter mit dem zentrierten Absender. Dieser hat als
+% Besonderheit, dass das Logo nicht in den Briefkopf, sondern in den
+% Bereich rechts neben dem Empfänger gesetzt wird. Dort ist bereits
+% das location-Feld, daher wird dieser Fall auch dort behandelt.%
+% \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird
+% berücksichtigt}%
+% \begin{macrocode}
+ \or
+ \setkomavar{firsthead}{%
+ \parbox[b]{\textwidth}{\centering
+ {\usekomafont{fromname}\strut\ignorespaces
+ \usekomavar{fromname}%
+ {%
+ \ifnum\@rulefrom=1\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ }%
+ \\
+ }%
+ {\usekomafont{fromaddress}\strut\ignorespaces
+ \usekomavar{fromaddress}%
+ \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
+ \if@mobilephone
+ \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}%
+ \fi%
+ \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
+ \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
+ \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
+ \ifnum\@rulefrom=2\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ \\
+ }%
+ }%
+ }%
+ \renewcommand*{\@alignfrom}{1}%
+% \end{macrocode}
+% Damit ist die Definition des zentrierten Absenders abgeschlossen. Es
+% geht weiter mit dem rechtsbündigen Absender. Das ganze wird einfach
+% beim linksbündigen Absender abgeschaut.%
+% \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird
+% berücksichtigt}%
+% \begin{macrocode}
+ \or
+ \setkomavar{firsthead}{%
+ \if@logo
+ \rlap{\usekomavar{fromlogo}}%
+ \fi
+ \parbox[b]{\textwidth}{\raggedleft
+ {\usekomafont{fromname}\strut\ignorespaces
+ \usekomavar{fromname}%
+ {%
+ \ifnum\@rulefrom=1\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \if@logo
+ \settowidth{\@tempdimb}{\usekomavar{fromlogo}}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \fi
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ }%
+ \\
+ }%
+ {\usekomafont{fromaddress}\strut\ignorespaces
+ \usekomavar{fromaddress}%
+ \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
+ \if@mobilephone
+ \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}%
+ \fi%
+ \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
+ \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
+ \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
+ \ifnum\@rulefrom=2\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\textwidth}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ \\
+ }%
+ }%
+ }%
+ \renewcommand*{\@alignfrom}{2}%
+% \end{macrocode}
+% Damit ist die Umdefinierung beendet. In allen anderen Fällen wird
+% der Kopf nicht verändert.
+% \begin{macrocode}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Der Benutzer kann die Voreinstellung mit einer einfachen Anweisung ändern:
+% \begin{macrocode}
+%<*class>
+\newcommand{\firsthead}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\firsthead.\MessageBreak
+ You should use \string\setkomavar{firsthead}\MessageBreak
+ instead of \string\firsthead
+ }
+ \setkomavar{firsthead}%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Schrifteinstellungen für den Briefbogen}
+%
+% \begin{KOMAfont}{foldmark}
+% \changes{v2.97c}{2007/05/08}{Neu}^^A
+% Die Schrift (hier ist die Farbe der entscheidende Faktor) der Faltmarken.
+% \begin{macrocode}
+\newkomafont{foldmark}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{fromname}
+% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
+% Der Absendername im Briefkopf.
+% \begin{macrocode}
+\newkomafont{fromname}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{fromaddress}
+% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}
+% Die Absenderadresse im Briefkopf.
+% \begin{macrocode}
+\newkomafont{fromaddress}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{fromrule}
+% \changes{v2.97c}{2007/05/08}{Neu}^^A
+% Die Schrift (hier ist die Farbe der entscheidende Faktor) der Linie im
+% Absender.
+% \begin{macrocode}
+\newkomafont{fromrule}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{backaddress}
+% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}^^A
+% \changes{v3.21}{2016/05/19}{beachtet Option
+% \texttt{egregdoesnotlikesansseriftitles}}^^A
+% Die Rücksendeadresse.
+% \begin{macrocode}
+\newkomafont{backaddress}{\@gr@gsffamily}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{specialmail}
+% \changes{v2.97c}{2007/07/06}{Neues Font-Element}^^A
+% Die Versandart.
+% \begin{macrocode}
+\newkomafont{specialmail}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{priority}
+% \changes{v3.03}{2009/03/04}{Neues Font-Element}^^A
+% Grundschrift für die Priorität des Briefs, falls diese A oder B ist. Es wird
+% ohne Durchschuss gearbeitet. An dieser Stelle ist Serifenlos quasi
+% vorgeschrieben, so dass wir hier Option
+% \texttt{egregdoesnotlikesansseriftitles} ignorieren.
+% \begin{macrocode}
+\newkomafont{priority}{\fontsize{10pt}{10pt}\sffamily\bfseries}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{prioritykey}
+% \changes{v3.03}{2009/03/04}{Neues Font-Element}^^A
+% Schrift für den Buchstaben der Priorität des Briefs, falls diese A oder B
+% ist. Wird nach \texttt{priority} angewandt. Eigentlich sollten hier 9\,mm
+% verwendet werden. Dafür wird aber eine frei skalierbare Schrift benötig. Mit
+% 24,88\,pt sind wir nur 0,25\,mm kleiner. Das sollte kein Problem
+% darstellen. Es wird auch hier ohne Durchschuss gearbeitet.
+% \begin{macrocode}
+\newkomafont{prioritykey}{\fontsize{24.88pt}{24.88pt}\selectfont}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{PPlogo}
+% \changes{v3.03}{2009/03/04}{Neues Font-Element}^^A
+% Schrift für das Logo \texttt{P.P.}, das im Anschriftmodus \texttt{PP}
+% gesetzt wird. An dieser Stelle ist serifenlos quasi vorgeschrieben, so dass
+% wir hier Option \texttt{egregdoesnotlikesansseriftitles} ignorieren.
+% \begin{macrocode}
+\newkomafont{PPlogo}{\sffamily\bfseries}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{PPdata}
+% \changes{v3.03}{2009/03/04}{Neues Font-Element}^^A
+% Schrift, die innerhalb des PP-Kopfes für die Daten verwendet wird.
+% gesetzt wird. And dieser Stelle ist serifenlos quasi vorgeschrieben, so dass
+% wir hier Option \texttt{egregdoesnotlikesansseriftitles} ignorieren.
+% \begin{macrocode}
+\newkomafont{PPdata}{\sffamily}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{addressee}
+% \changes{v2.97c}{2007/07/06}{Neues Font-Element}^^A
+% Die komplette Anschrift.
+% \begin{macrocode}
+\newkomafont{addressee}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{toname}
+% \changes{v2.97c}{2007/07/06}{Neues Font-Element}^^A
+% Der Name des Empfängers in der Anschrift.
+% \begin{macrocode}
+\newkomafont{toname}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{toaddress}
+% \changes{v2.97c}{2007/07/06}{Neues Font-Element}^^A
+% Die Adresse des Empfängers in der Anschrift.
+% \begin{macrocode}
+\newkomafont{toaddress}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{refname}
+% \changes{v2.97c}{2007/05/14}{Neues Font-Element}^^A
+% \changes{v3.21}{2016/05/19}{beachtet Option
+% \texttt{egregdoesnotlikesansseriftitles}}^^A
+% Die Feldnamen in der Geschäftszeile.
+% \begin{macrocode}
+\newkomafont{refname}{\@gr@gsffamily\scriptsize}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{refvalue}
+% \changes{v2.97c}{2007/05/14}{Neues Font-Element}^^A
+% \changes{v2.97d}{2007/10/09}{Voreinstellung korrigiert}^^A
+% Die Feldwerte in der Geschäftszeile. Hier gibt es keinen Bedarf, Option
+% \texttt{egregdoesnotlikesansseriftitles} zu beachten, da diese in
+% Version~2.97 noch nicht existierte.
+% \begin{macrocode}
+%<*class>
+\ifnum\scr@compatibility=\@nameuse{scr@v@2.97}\relax
+ \newkomafont{refvalue}{\sffamily\scriptsize}
+\else
+%</class>
+ \newkomafont{refvalue}{}
+%<class>\fi
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{placeanddate}
+% \changes{v3.12}{2013/07/31}{Neues Font-Element}^^A
+% Wird an Stelle einer Geschäftszeile nur Ort und Datum gesetzt, so findet
+% dieses Element Anwendung.
+% \begin{macrocode}
+\newkomafont{placeanddate}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{lettertitle}
+% \changes{v3.17}{2015/02/21}{neu als Ersatz für \texttt{letter}}
+% \changes{v3.21}{2016/05/19}{beachtet Option
+% \texttt{egregdoesnotlikesansseriftitles}}^^A
+% Der Brieftitel.
+% \begin{macrocode}
+\newkomafont{lettertitle}{\normalcolor\@gr@gsffamily\bfseries}
+% \end{macrocode}
+% \begin{KOMAfont}{title}
+% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}^^A
+% \changes{v3.17}{2015/02/21}{nur noch ein Alias}^^A
+% \changes{v3.17a}{2015/04/26}{Alias korrigiert}^^A
+% \begin{macrocode}
+%<package>\scr@ifundefinedorrelax{scr@fnt@title}{%
+ \aliaskomafont{title}{lettertitle}%
+%<package>}{}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{lettersubject}
+% \changes{v3.17}{2015/02/21}{neu als Ersatz für \texttt{subject}}
+% \changes{v3.17a}{2015/04/26}{Alias korrigiert}^^A
+% Der Betreff im Brief.
+% \begin{macrocode}
+\newkomafont{lettersubject}{\normalfont\bfseries}
+% \end{macrocode}
+% \begin{KOMAfont}{subject}
+% \changes{v2.95}{2006/03/23}{jetzt mit \cs{newkomafont}}^^A
+% \changes{v3.17}{2015/02/21}{nur noch ein Alias}^^A
+% \begin{macrocode}
+%<package>\scr@ifundefinedorrelax{scr@fnt@subject}{%
+ \aliaskomafont{subject}{lettersubject}%
+%<package>}{}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{KOMAfont}
+%
+% \subsubsection{Längen für den Briefbogen}
+%
+% \begin{macro}{\ltr@len@foldmarkhpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand der horizontalen Faltmarken von der linken Papierkante.
+% \begin{macrocode}
+\@newplength{foldmarkhpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@foldmarkvpos}
+% \changes{v2.97e}{2007/11/10}{Neu}^^A
+% Abstand der vertikalen Faltmarken von der oberen Papierkante.
+% \begin{macrocode}
+\@newplength{foldmarkvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@tfoldmarkvpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \begin{macro}{\ltr@len@mfoldmarkvpos}
+% \changes{v2.97e}{2007/11/08}{Neu}^^A
+% \begin{macro}{\ltr@len@bfoldmarkvpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand der oberen, mittleren und unteren Faltmarken von der oberen
+% Papierkante.
+% \begin{macrocode}
+\@newplength{tfoldmarkvpos}
+\@newplength{mfoldmarkvpos}
+\@newplength{bfoldmarkvpos}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ltr@len@lfoldmarkhpos}
+% \changes{v2.97e}{2007/11/10}{Neu}^^A
+% Abstand linken Faltmarken von der linken Papierkante.
+% \begin{macrocode}
+\@newplength{lfoldmarkhpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@pfoldmarklength}
+% \changes{v2.97e}{2007/11/19}{Neu}^^A
+% \begin{macro}{\ltr@len@hfoldmarklength}
+% \changes{v2.97e}{2007/11/10}{Neu}^^A
+% \begin{macro}{\ltr@len@mfoldmarklength}
+% \changes{v2.97e}{2007/11/10}{Neu}^^A
+% \begin{macro}{\ltr@len@bfoldmarklength}
+% \changes{v2.97e}{2001/11/10}{Neu}^^A
+% \begin{macro}{\ltr@len@lfoldmarklength}
+% \changes{v2.97e}{2001/11/10}{Neu}^^A
+% Länge der Lochmarke und der oberen, mittleren und unteren horizontalen und
+% der (linken) vertikalen Faltmarke.
+% \begin{macrocode}
+\@newplength{pfoldmarklength}
+\@newplength{tfoldmarklength}
+\@newplength{mfoldmarklength}
+\@newplength{bfoldmarklength}
+\@newplength{lfoldmarklength}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ltr@len@foldmarkthickness}
+% \changes{v2.97c}{2007/05/08}{Neu}^^A
+% Dicke der Faltmarken.
+% \begin{macrocode}
+\@newplength{foldmarkthickness}
+\@setplength{foldmarkthickness}{.2pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@toaddrvpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand des Adressfensters von der oberen Papierkante.
+% \begin{macrocode}
+\@newplength{toaddrvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@backaddrheight}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Höhe der Rücksendeadresse.
+% \begin{macrocode}
+\@newplength{backaddrheight}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@toaddrhpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand des Adressfeldes von der linken Papierkante bzw. wenn negativ von
+% der rechten Papierkante.
+% \begin{macrocode}
+\@newplength{toaddrhpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@specialmailindent}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% Abstand der Versandtart vom linken Rand des Adressfensters.
+% \begin{macrocode}
+\@newplength{specialmailindent}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@specialmailrightindent}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% Abstand der Versandtart vom rechten Rand des Adressfensters.
+% \begin{macrocode}
+\@newplength{specialmailrightindent}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@toaddrindent}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand der Adresse vom linken Rand des Adressfensters. 0 bedeutet im
+% Anschriftmodus \texttt{PP} 8\,mm, ansonsten wirklich 0\,mm. Außerdem wird im
+% Anschriftmodus \texttt{PP} die Pseudolänge auch für den Abstand vom rechten
+% Rand des Adressfensters verwendet.
+% \begin{macrocode}
+\@newplength{toaddrindent}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@PPheadheight}
+% \changes{v3.03}{2009/03/04}{Neu}%
+% Höhe des PP-Kopfes in den Anschriftmodi \texttt{PP},
+% \texttt{backgroundimage} und \texttt{image}. 0 bedeutet hier 20,74\,pt.
+% \begin{macrocode}
+\@newplength{PPheadheight}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@PPheadwidth}
+% \changes{v3.03}{2009/03/04}{Neu}%
+% Breite des PP-Kopfes im Anschriftmodus \texttt{PP}. 0 bedeutet hier 42\,mm.
+% \begin{macrocode}
+\@newplength{PPheadwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@PPdatamatrixvskip}
+% \changes{v3.03}{2009/03/04}{Neu}%
+% Abstand zwischen PP-Kopf und DataMatrix im Anschriftmodus \texttt{PP}. 0
+% bedeutet hier 9\,mm.
+% \begin{macrocode}
+\@newplength{PPdatamatrixvskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@toaddrwidth}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Breite des Adressfensters
+% \begin{macrocode}
+\@newplength{toaddrwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@toaddrheight}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \changes{v3.03b}{2009/06/25}{Implementierung an Doku angepasst}^^A
+% Höhe des Adressfensters mit Rücksendeadresse
+% \begin{macrocode}
+\@newplength{toaddrheight}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@locvpos}
+% \changes{v2.97e}{2007/11/07}{Neu}^^A
+% Abstand der Absenderergänzung von der oberen Papierkante.
+% \begin{macrocode}
+\@newplength{locvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@locwidth}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Breite des Feldes neben dem Adressfenster
+% \begin{macrocode}
+\@newplength{locwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@lochpos}
+% \changes{v2.97e}{2007/11/07}{Neu}^^A
+% Abstand der Absenderergänzung von der linken Papierkante bzw. wenn negativ
+% von der rechten Papierkante.
+% \begin{macrocode}
+\@newplength{lochpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@locheight}
+% \changes{v2.97e}{2007/11/07}{Neu}^^A
+% Höhe der Absenderergänzung.
+% \begin{macrocode}
+\@newplength{locheight}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refvpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand der Geschäftszeile von der Papieroberkante.
+% \begin{macrocode}
+\@newplength{refvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refwidth}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Breite der Geschäftszeile.
+% \begin{macrocode}
+\@newplength{refwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refhpos}
+% \changes{v2.9l}{2003/01/28}{Neu}^^A
+% Horizontale Position der Geschäftszeile.
+% \begin{macrocode}
+\@newplength{refhpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@refaftervskip}
+% \changes{v2.8q}{2001/10/09}{Neu}^^A
+% Abstand nach der Geschäftszeile.
+% \begin{macrocode}
+\@newplength{refaftervskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@sigbeforevskip}
+% \changes{v2.8q}{2001/10/09}{Neu}^^A
+% Raum für die Unterschrift.
+% \begin{macrocode}
+\@newplength{sigbeforevskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@sigindent}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Horizontaler Einzug des Schlussgrußes und der Signatur.
+% \begin{macrocode}
+\@newplength{sigindent}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@@firstfootvpos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand des Fußes der ersten Seite von der Papieroberkante.
+% \begin{macrocode}
+\@newplength{firstfootvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@firstfootwidth}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Breite des Fußes der ersten Seite.
+% \begin{macrocode}
+\@newplength{firstfootwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@firstfoothpos}
+% \changes{v3.05}{2009/11/09}{Neu}^^A
+% Abstand des Kopfes vom linken Rand der Seite.
+% \begin{macrocode}
+\@newplength{firstfoothpos}
+\@setplength{firstfoothpos}{\maxdimen}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@firstheadvspos}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Abstand des Kopfes der ersten Seite von der Papieroberkante.
+% \begin{macrocode}
+\@newplength{firstheadvpos}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@firstheadwidth}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Breite des Kopfes der ersten Seite.
+% \begin{macrocode}
+\@newplength{firstheadwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@firstheadhpos}
+% \changes{v3.05}{2009/11/09}{Neu}^^A
+% Abstand des Kopfes vom linken Rand der Seite.
+% \begin{macrocode}
+\@newplength{firstheadhpos}
+\@setplength{firstheadhpos}{\maxdimen}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@fromrulewidth}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% Die Länge einer eventuell gesetzten Linie im Absender. Negative
+% Werte bedeuten, dass die Länge automtaisch bestimmt wird.
+% \begin{macrocode}
+\@newplength{fromrulewidth}
+\@setplength{fromrulewidth}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@fromrulethickness}
+% \changes{v2.97c}{2007/05/08}{Neue Pseudolänge \texttt{fromrulewidth}}
+% Die Dicke einer eventuell gesetzte Linie im Absender.
+% \begin{macrocode}
+\@newplength{fromrulethickness}
+\@setplength{fromrulethickness}{.4pt}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Fuß des Briefbogens}
+%
+% \begin{macro}{\firstfoot}
+% \changes{v3.08}{2010/10/28}{der Fuß des Briefbogens wird über eine
+% Variable realisiert}^^A
+% \begin{macro}{\@firstfoot}
+% \changes{v3.08}{2010/10/28}{der Fuß des Briefbogens wird über eine
+% Variable realisiert}^^A
+% \begin{KOMAvar}{firstfoot}
+% \changes{v3.08}{2010/10/28}{Neu}^^A
+% \begin{macrocode}
+% Der Fuß des Briefbogens ist in der Voreinstellung leer.
+\newkomavar{firstfoot}
+%<*class>
+\newcommand*{\@firstfoot}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\@firstfoot.\MessageBreak
+ \string\usekomavar{firstfoot} should be used\MessageBreak
+ instead of \string\@firstfoot
+ }%
+ \usekomavar{firstfoot}%
+}
+% \end{macrocode}
+% Dies kann jedoch über eine einfache Benutzeranweisung geändert werden:
+% \begin{macrocode}
+\newcommand{\firstfoot}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\firstfoot.\MessageBreak
+ You should use \string\setkomavar{firstfoot}\MessageBreak
+ instead of \string\firstfoot
+ }
+ \setkomavar{firstfoot}%
+}
+%</class>
+% \end{macrocode}
+% \end{KOMAvar}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Ausgabe des Briefbogens}
+%
+% Die Ausgabe selbst erfolgt derzeit über die |\opening|-Anweisung, die in
+% einem späteren Abschnitt implementiert ist.
+%
+% \begin{macro}{\move@topt}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% Für die folgenden Aktionen wird ein Makro benötigt, mit dem man vertikal von
+% der relativen Seitenposition zur relativen Papierposition gelangen kann.
+% \begin{macrocode}
+\newcommand*{\move@topt}{%
+ \null\vskip -1in\vskip -\topmargin%
+ \vskip -\headheight\vskip -\headsep%
+ \vskip -\topskip%
+ \ignorespaces%
+}
+% \end{macrocode}
+% \begin{macro}{\move@frompt}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% Natürlich wird auch ein Makro benötigt, um vertikal von einer relativen
+% Papierposition wieder auf die relative Seitenposition zurück zu gelangen.
+% \begin{macrocode}
+\newcommand*{\move@frompt}{%
+ \vskip 1in\vskip \topmargin%
+ \vskip \headheight\vskip \headsep%
+ \vskip \topskip%
+ \vskip -\baselineskip%
+ \ignorespaces%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\move@topl}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% Für die folgenden Aktionen wird außerdem ein Makro benötigt, mit dem man
+% horizontal von der relativen Seitenposition zur relativen Papierposition
+% gelangen kann.
+% \begin{macrocode}
+\newcommand*{\move@topl}{%
+ \null\hskip -1in%
+ \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi
+ \ignorespaces%
+}
+% \end{macrocode}
+% \begin{macro}{\move@frompl}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% Natürlich wird auch ein Makro benötigt, um horizontal von einer relativen
+% Papierposition wieder auf die relative Seitenposition zurück zu gelangen.
+% \begin{macrocode}
+\newcommand*{\move@frompl}{%
+ \hskip 1in%
+ \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi%
+ \ignorespaces%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\vb@t@z}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% \changes{v2.95}{2006/03/23}{Absatzformatierung mit \cs{setparsizes}}
+% \changes{v2.97e}{2007/11/20}{\cs{long}}
+% Ausserdem wird ein vertikales Äquivalent zu |\rlap| benötigt.
+% \begin{macrocode}
+\newcommand{\vb@t@z}[1]{{%
+ \setbox\z@\vbox to\z@{#1\vss}%
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \setlength{\baselineskip}{\z@}%
+ \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}%
+ \box\z@\vskip-\@tempdima%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@foldmarks}
+% \changes{v2.97e}{2007/11/08}{\texttt{mfoldmarkvpos} wird verwendet}
+% Für die Faltmarken müssen nicht nur Abstände definiert werden, es wird auch
+% ein Befehl benötigt, um die Faltmarken zu setzen.
+% \begin{macro}{\@hfoldmark}
+% \changes{v2.97e}{2007/11/08}{Neu (intern)}^^A
+% Dabei werden nur die horizontalen Faltmarken gesetzt, die tatsächlich
+% existieren.
+% \begin{macro}{\@foldmark}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% \changes{v2.95}{2006/06/06}{\cs{vskip} in \cs{vb@t@z} verschoben, damit es
+% vom Satzspiegel unabhängig wird}
+% \changes{v2.97c}{2007/05/08}{Dicke konfigurierbar}^^A
+% \changes{v2.97c}{2007/05/08}{Schrift (Farbe) konfigurierbar}^^A
+% Das geht am einfachsten, wenn wir auch einen Befehl haben, mit dem man eine
+% einzelne Faltmarke relativ zur aktuellen Position setzen kann. Dies
+% geschieht mit Hilfe von |\rlap|, damit die horizontale Position unverändert
+% bleibt. Als Parameter werden der vertikale Abstand zur aktuellen Position
+% und die Länder der Marke übergeben.
+% \begin{macrocode}
+\newcommand*{\@foldmark}[2]{%
+ \vb@t@z{\setlength{\@tempdima}{#1}%
+ \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}%
+ \vskip \@tempdima
+ \rlap{\move@topl\hskip\useplength{foldmarkhpos}%
+ \usekomafont{foldmark}{%
+ \rule{#2}{\useplength{foldmarkthickness}}}}}%
+ \ignorespaces
+}
+\newcommand*{\@hfoldmark}[1]{%
+ \begingroup
+ \@expandtwoargs\in@{#1}{\@usefolds}%
+ \ifin@
+ \lowercase{%
+ \edef\@tempa{%
+ \noexpand\ifdim \noexpand\useplength{#1foldmarkvpos}=\noexpand\z@
+ \noexpand\else
+ \noexpand\@foldmark{%
+ \noexpand\useplength{#1foldmarkvpos}%
+ }{%
+ \noexpand\useplength{#1foldmarklength}%
+ }%
+ \noexpand\fi
+ }%
+ }%
+ \@tempa
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\@vfoldmark}
+% \changes{v2.97e}{2007/11/10}{Neu (intern)}^^A
+% Für die vertikale(n) Faltmarke(n) gilt prinzipiell das gleiche. Dabei ist
+% lediglich zu beachten, dass die Linie hier komplett oberhalb der Grundlinie
+% gesetzt wird, also die vertikale Position um die Länge nach unten zu
+% verschieben ist.
+% \begin{macrocode}
+\newcommand*{\@vfoldmark}[1]{%
+ \begingroup
+ \@expandtwoargs\in@{#1}{\@usefolds}%
+ \ifin@
+ \ifdim \useplength{lfoldmarkhpos}=\z@\else
+ \vb@t@z{%
+ \ifdim \useplength{foldmarkvpos}<\z@
+ \nobreak\vskip \paperheight\nobreak
+ \fi
+ \vskip \useplength{foldmarkvpos}%
+ \vskip \useplength{foldmarkthickness}%
+ \rlap{\move@topl
+ \setlength{\@tempdima}{\useplength{lfoldmarkhpos}}%
+ \addtolengthplength[-.5]{\@tempdima}{foldmarkthickness}%
+ \hskip\@tempdima
+ \usekomafont{foldmark}{%
+ \rule{\useplength{foldmarkthickness}}%
+ {\useplength{lfoldmarklength}}%
+ }%
+ }%
+ }%
+ \ignorespaces
+ \fi
+ \fi
+ \endgroup
+}
+\newcommand*{\@foldmarks}{%
+ \if@fold%
+ \typeout{Foldmarks: yes}%
+ \move@topt
+ \ifdim \useplength{pfoldmarklength}=\z@
+ \@setplength{pfoldmarklength}{4mm}%
+ \fi
+ \ifdim \useplength{tfoldmarklength}=\z@
+ \@setplength{tfoldmarklength}{2mm}%
+ \fi
+ \ifdim \useplength{mfoldmarklength}=\z@
+ \@setplength{mfoldmarklength}{2mm}%
+ \fi
+ \ifdim \useplength{bfoldmarklength}=\z@
+ \@setplength{bfoldmarklength}{2mm}%
+ \fi
+ \ifdim \useplength{lfoldmarklength}=\z@
+ \@setplength{lfoldmarklength}{4mm}%
+ \fi
+ \begingroup
+ \@expandtwoargs\in@{P}{\@usefolds}%
+ \ifin@
+ \@foldmark{.5\paperheight}{\useplength{pfoldmarklength}}%
+ \fi
+ \endgroup
+ \@hfoldmark{T}%
+ \@hfoldmark{M}%
+ \@hfoldmark{B}%
+ \@vfoldmark{L}%
+ \move@frompt
+ \else
+ \typeout{Foldmarks: no}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@savevbox}
+% \changes{v2.8n}{2001/09/07}{Neu}^^A
+% \changes{v2.8q}{2001/10/30}{zusätzlich ein optionales Argument}^^A
+% \begin{macro}{\if@savevbox@warning}
+% \begin{macro}{\@savevbox@warningtrue}
+% \begin{macro}{\@savevbox@warningfalse}
+% \changes{v2.8q}{2001/10/30}{Neu}^^A
+% Wenn eine der vertikalen Boxen in \cs{opening} zu einer \texttt{overbox
+% \string\vbox\space} Meldung führt, weiss letztlich niemand, welche Box dafür
+% verantwortlich war. Deshalb definieren wir hier ein Makro, das ggf. eine
+% Meldung ausgibt, die erklärt, welches Element die Ursache war und was man
+% tun kann. Das erste Argument ist dabei die Sollhöhe der Box, das zweite
+% Argument ist der Boxinhalt, das dritte Argument is der Name des Elements,
+% das zu hoch ist, das vierte der Name der Elementhöhe und das fünfte
+% schließlich der Befehl, mit dem das Element vom Anwender definiert werden
+% kann. Das optionale Argument wird nur bei der Ausgabe mit ausgegeben, findet
+% jedoch bei der Berechnung keine Berücksichtigung.
+% \begin{macrocode}
+\newif\if@savevbox@warning\@savevbox@warningtrue
+\newcommand{\@savevbox}[6][]{%
+ \begingroup%
+ \vbox to #2{#1#3}%
+ \if@savevbox@warning\@savevbox@warningfalse%
+ \setbox\z@\vbox{#3}%
+ \setlength{\@tempdima}{#2}%
+ \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}%
+ \ifdim \@tempdimb>\@tempdima%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+%<class> \ClassWarning{scrlttr2}{%
+%<package> \PackageWarning{scrletter}{%
+ #4 is \the\@tempdimb\space too high.\MessageBreak
+ You have to change `\string#5'\MessageBreak
+ or you have to define a smaller\MessageBreak
+ #4 using \string#6.\MessageBreak
+ Because of this too high #4\MessageBreak
+ you've got an overfull \string\vbox\space message%
+ }%
+ \fi%
+ \fi%
+ \endgroup%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@firstheadfootfield}
+% \changes{v2.8n}{2001/09/08}{Neu}^^A
+% \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt}
+% \changes{v2.8q}{2001/10/30}{Fuß explizit in eine Box gesetzt}^^A
+% \changes{v2.9l}{2003/01/23}{Positionierung verbessert}^^A
+% \changes{v2.97e}{2007/11/22}{Optionen \texttt{firsthead} und
+% \texttt{firstfoot} beachten}
+% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstheadhpos}^^A
+% beachtet}
+% \changes{v3.05}{2009/11/09}{neue Pseudo-Länge \texttt{firstfoothpos}^^A
+% beachtet}
+% Ab Version 2.8n werden Kopf und Fuß der ersten Seite nicht mehr per
+% Seitenstil \texttt{firstpage} gesetzt, sondern mit einem speziellen
+% Feld. Dabei wird auch beachtet, dass dieses Feld im Kopf eine bestimmte aber
+% beschränkte Höhe hat. Diese Höhe ist unabhängig von der normalen Kopfhöhe
+% und richtet sich stattdessen nach der Position des Adressfeldes.
+% \begin{macrocode}
+\newcommand*{\@firstheadfootfield}{%
+ \if@firsthead
+ \typeout{Head of first page}%
+ \move@topt\vskip\useplength{firstheadvpos}%
+ \vb@t@z{%
+ \rlap{\move@topl
+% \end{macrocode}
+% Wenn \texttt{firstheadhpos} positiv und kleiner als die Seitenbreite ist,
+% dann ist es der Abstand des Kopfes vom linken Rand.
+% Wenn \texttt{firstheadhpos} negativ und betragsmäßig kleiner als die
+% Seitenbreite ist, dann ist es der Abstand des Kopfes vom rechten Rand.
+% Wenn \texttt{firstheadhpos} größer als die Seitenbreite ist, dann wird der
+% Kopf zentriert.
+% Wenn \texttt{firstheadhpos} kleiner als die negative Seitenbreite ist, dann
+% wird der Kopf am linken Rand des Satzspiegels ausgerichtet.
+% \begin{macrocode}
+ \ifdim\useplength{firstheadhpos}<\paperwidth
+ \ifdim \useplength{firstheadhpos}>-\paperwidth
+ \ifdim \useplength{firstheadhpos}<\z@
+ \setlength\@tempskipa{\paperwidth}%
+ \addtolengthplength{\@tempskipa}{firstheadhpos}%
+ \addtolengthplength[-]{\@tempskipa}{firstheadwidth}%
+ \else
+ \setlength{\@tempskipa}{\useplength{firstheadhpos}}%
+ \fi
+ \else
+ \setlength\@tempskipa{\oddsidemargin}%
+ \addtolength\@tempskipa{1in}%
+ \fi
+ \else
+ \setlength\@tempskipa{.5\paperwidth}%
+ \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}%
+ \fi
+ \hskip\@tempskipa
+ \vbox{\hsize\useplength{firstheadwidth}%
+ \setlength{\@tempskipa}{\useplength{toaddrvpos}}%
+ \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}%
+ \addtolength{\@tempskipa}{-\baselineskip}%
+% \end{macrocode}
+% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass
+% |\textwidth| die Breite des Briefkopfes ist, wird diese Länge lokal
+% entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier
+% nicht berücksichtigt wird.
+% \begin{macrocode}
+ \setlength{\textwidth}{\useplength{firstheadwidth}}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \@savevbox{\@tempskipa}{\noindent\usekomavar{firsthead}%
+ \vskip \z@ \@plus .00001fil}%
+ {head of first page}{firstheadvpos}{\setkomavar}%
+ }%
+ }%
+ }%
+ \vskip-\useplength{firstheadvpos}\move@frompt
+ \else
+ \typeout{No head at first page}%
+ \fi
+ \move@topt
+ \if@firstfoot
+ \typeout{Foot of first page}%
+ \vb@t@z{%
+ \rlap{\move@topl
+% \end{macrocode}
+% Wenn \texttt{firstfoothpos} positiv und kleiner als die Seitenbreite ist,
+% dann ist es der Abstand des Kopfes vom linken Rand.
+% Wenn \texttt{firstfoothpos} negativ und betragsmäßig kleiner als die
+% Seitenbreite ist, dann ist es der Abstand des Kopfes vom rechten Rand.
+% Wenn \texttt{firstfoothpos} größer als die Seitenbreite ist, dann wird der
+% Kopf zentriert.
+% Wenn \texttt{firstfoothpos} kleiner als die negative Seitenbreite ist, dann
+% wird der Kopf am linken Rand des Satzspiegels ausgerichtet.
+% \begin{macrocode}
+ \ifdim\useplength{firstfoothpos}<\paperwidth
+ \ifdim \useplength{firstfoothpos}>-\paperwidth
+ \ifdim \useplength{firstfoothpos}<\z@
+ \setlength\@tempskipa{\paperwidth}%
+ \addtolengthplength{\@tempskipa}{firstfoothpos}%
+ \addtolengthplength[-]{\@tempskipa}{firstfootwidth}%
+ \else
+ \setlength{\@tempskipa}{\useplength{firstfoothpos}}%
+ \fi
+ \else
+ \setlength\@tempskipa{\oddsidemargin}%
+ \addtolength\@tempskipa{1in}%
+ \fi
+ \else
+ \setlength\@tempskipa{.5\paperwidth}%
+ \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}%
+ \fi
+ \hskip\@tempskipa
+ \vbox{\hsize\useplength{firstfootwidth}%
+ \vskip\useplength{firstfootvpos}%
+% \end{macrocode}
+% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf verlassen, dass
+% |\textwidth| die Breite des Brieffußes ist, wird diese Länge lokal
+% entsprechend gesetzt. Außerdem wird dafür gesorgt, dass |\parfillskip| hier
+% nicht berücksichtigt wird.
+% \begin{macrocode}
+ \setlength{\textwidth}{\useplength{firstfootwidth}}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \vbox{\hsize\useplength{firstfootwidth}\noindent
+ \usekomavar{firstfoot}}%
+ }%
+ }%
+ }%
+ \else
+ \typeout{No foot at first page}%
+ \fi
+ \move@frompt%
+ {%
+ \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}%
+ \addtolength{\@tempdima}{\headheight}%
+ \addtolength{\@tempdima}{\headsep}%
+ \addtolength{\@tempdima}{\textheight}%
+ \addtolength{\@tempdima}{\footskip}%
+ \if@firstfoot
+ \addtolengthplength[-1]{\@tempdima}{firstfootvpos}%
+ \else
+ \addtolength{\@tempdima}{-\paperheight}%
+ \fi
+ \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}%
+ \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@addrfield}
+% \changes{v2.8q}{2002/04/01}{\cs{parfillskip} lokal geändert}^^A
+% \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}^^A
+% \changes{v2.9o}{2003/02/20}{\cs{noindent} eingefügt bei
+% \texttt{specialmail}}^^A
+% \changes{v2.96}{2006/07/31}{Benutzung von \cs{backaddr@format}}^^A
+% \changes{v3.03}{2009/03/04}{Priorität kann Versandart ersetzen}^^A
+% \changes{v3.03}{2009/03/04}{Neue Anschriftmodi \texttt{PP},
+% \texttt{backgroundimage}, \texttt{addresseeimage}}^^A
+% \changes{v3.03b}{2009/06/30}{Schreibfehler bei »addressee« korrigiert}^^A
+% \changes{v3.06a}{2010/07/29}{Absatzparameter werden passend
+% eingestellt}^^A
+% \changes{v3.22}{2016/12/21}{zweimal fehlende Klammern bei \texttt{toname}
+% ergänzt}^^A
+% \changes{v3.22}{2016/12/21}{zweimal fehlende Klammern und \cs{endgraf} bei
+% \texttt{toaddress} ergänzt}^^A
+% Dasselbe gilt auch für das Adressfeld für Fensterumschläge. Die
+% Rücksendeadresse und die Briefart werden dabei mit eigenen
+% Formatieranweisungen gesetzt.
+% \begin{macrocode}
+\newcommand*{\@addrfield}{%
+ \ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax
+ \typeout{Address: No}%
+ \or
+ \begingroup%
+ \if@baddr
+ \ifkomavarempty{backaddress}{%
+ \let\@tempa\@empty\let\@tempb\@empty
+ }{%
+ \def\@tempa{backaddress}\def\@tempb{,\space}%
+ }%
+ \else
+ \let\@tempa\@empty\let\@tempb\@empty
+ \fi
+ \ifcase \ltr@priority
+ \ifkomavarempty{specialmail}{}{%
+ \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}%
+ }%
+ \or
+ \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}%
+ \or
+ \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
+ \fi
+ \typeout{Address (\@tempa\@tempb addressee)}%
+ \endgroup%
+ \move@topt\vskip\useplength{toaddrvpos}%
+ \vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \rlap{\move@topl
+ \setlengthtoplength{\@tempskipa}{toaddrhpos}%
+ \ifdim \@tempskipa<\z@
+ \addtolength{\@tempskipa}{\paperwidth}%
+ \addtolengthplength[-]{\@tempskipa}{toaddrwidth}%
+ \fi
+ \hskip\@tempskipa
+ \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}%
+ \@savevbox[\vss]{\useplength{backaddrheight}}{%
+ \hsize\useplength{toaddrwidth}%
+ \if@baddr
+ \ifkomavarempty{backaddress}{}{{%
+ \noindent%
+ \def\\{\usekomavar{backaddressseparator}\@ogobble}%
+ \backaddr@format{\scriptsize\usekomafont{backaddress}%
+ \usekomavar{backaddress}}}}%
+ \fi
+ }{backaddress}{backaddrheight}{\setkomavar}%
+ \ifcase \ltr@priority
+ \or
+ \setkomavar{specialmail}{%
+ {\usekomafont{priority}{%
+ {\usekomafont{prioritykey}{B}}%
+ -ECONOMY}}%
+ }%
+ \or
+ \setkomavar{specialmail}{%
+ {\usekomafont{priority}{%
+ {\usekomafont{prioritykey}{A}}%
+ -PRIORITY}}%
+ }%
+ \fi
+ \ifkomavarempty{specialmail}{}{%
+ \vbox{\hsize\useplength{toaddrwidth}%
+ \noindent\hspace*{\useplength{specialmailindent}}%
+ \specialmail@format{%
+ \usekomafont{specialmail}\usekomavar{specialmail}}%
+ \hspace*{\useplength{specialmailrightindent}}}%
+ }%
+ \ifnum\@afieldmode=\@ne\vfil\fi%
+ \noindent\hskip\useplength{toaddrindent}%
+ \setlength{\@tempdima}{\useplength{toaddrwidth}}%
+ \addtolengthplength[-2]{\@tempdima}{toaddrindent}%
+ \vbox{\hsize\@tempdima\raggedright
+ \usekomafont{addressee}{%
+ {\usekomafont{toname}{\usekomavar{toname}\\}}%
+ {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}%
+ \vfil\null\vskip-\baselineskip}%
+ {address field}{toaddrheight}%
+ {\begin{letter} or you\MessageBreak
+ have to define a smaller special purpose using\MessageBreak
+ \string\specialmail}%
+ }}}%
+ \vskip-\useplength{toaddrvpos}\move@frompt
+ \else
+ \begingroup%
+% \end{macrocode}
+% In den Modi \texttt{PP}, \texttt{backgroundimage} oder \texttt{addresseeimage}
+% gibt es weder Rücksendeadresse noch Versandart aber ebenfalls eine Priorität.
+% \begin{macrocode}
+ \if@baddr
+ \let\@tempa\@empty\let\@tempb\@empty
+ \ifcase \@afieldmode\relax\or\or
+ \def\@tempa{PP-mode}\def\@tempb{,\space}%
+ \or
+ \def\@tempa{backgroundimage-mode}\def\@tempb{,\space}%
+ \or
+ \def\@tempa{image-mode}\def\@tempb{,\space}%
+ \fi
+ \ifkomavarempty{backaddress}{}{%
+ \edef\@tempa{\@tempa\@tempb backaddress ignored}\def\@tempb{,\space}%
+ }%
+ \else
+ \let\@tempa\@empty\let\@tempb\@empty
+ \fi
+ \ifcase \ltr@priority
+ \ifkomavarempty{specialmail}{}{%
+ \edef\@tempa{\@tempa\@tempb specialmail ignored}\def\@tempb{,\space}%
+ }%
+ \or
+ \edef\@tempa{\@tempa\@tempb B-Economy}\def\@tempb{,\space}%
+ \or
+ \edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
+ \fi
+ \typeout{Address (\@tempa\@tempb addressee)}%
+ \endgroup%
+ \move@topt\vskip\useplength{toaddrvpos}%
+ \vb@t@z{{%
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \ifdim \useplength{toaddrindent}=\z@
+ \@setplength{toaddrindent}{8mm}%
+ \fi
+ \ifdim \useplength{PPheadheight}=\z@
+ \@setplength{PPheadheight}{20.74pt}%
+ \fi
+ \ifdim \useplength{PPheadwidth}=\z@
+ \@setplength{PPheadwidth}{42mm}%
+ \fi
+ \ifdim \useplength{PPdatamatrixvskip}=\z@
+ \@setplength{PPdatamatrixvskip}{9mm}%
+ \fi
+ \rlap{\move@topl
+ \setlengthtoplength{\@tempskipa}{toaddrhpos}%
+ \ifdim \@tempskipa<\z@
+ \addtolength{\@tempskipa}{\paperwidth}%
+ \addtolengthplength[-]{\@tempskipa}{toaddrwidth}%
+ \fi
+ \hskip\@tempskipa
+ \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}%
+ \ifnum\@afieldmode=\tw@
+% \end{macrocode}
+% Modus \texttt{PP}.
+% \begin{macrocode}
+ \vskip 2pt\relax
+ \hskip \useplength{toaddrindent}\relax
+ \fbox{%
+ \vbox to \dimexpr \useplength{PPheadheight}-2\fboxsep\relax{%
+ \setlength{\parindent}{0pt}%
+ \hsize \dimexpr \useplength{PPheadwidth}-2\fboxsep\relax
+% \end{macrocode}
+% \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}^^A
+% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
+% \cs{unskip}\cs{strut}}^^A
+% \begin{macrocode}
+ \sbox\@tempboxa{%
+ {\fontsize{20.74pt}{20.74pt}\selectfont
+ \usekomafont{PPlogo}{P.P.}}\hskip 2mm%
+ }%
+ \dp\@tempboxa\z@
+ \setlength{\@tempdima}{\hsize}%
+ \addtolength{\@tempdima}{-\wd\@tempboxa}%
+ \hbox{\box\@tempboxa
+ \vbox to \dimexpr
+ \useplength{PPheadheight}-2\fboxsep\relax{%
+ \vss\hsize\@tempdima
+ \raggedright
+ \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}%
+ \usekomavar*{fromzipcode}\usekomavar{zipcodeseparator}%
+ \usekomavar{fromzipcode}\scr@endstrut\\
+ \usekomavar{place}\scr@endstrut
+ \hfill
+ }%
+ }%
+ \vss
+ }%
+ }%
+ \hskip 1mm
+ \mbox{%
+ \vbox to \useplength{PPheadheight}{%
+ \addtolengthplength[-]{\hsize}{PPheadwidth}%
+ \addtolength{\hsize}{-1mm}%
+ \addtolengthplength[-2]{\hsize}{toaddrindent}%
+ \setlength{\parindent}{0pt}%
+ \fontsize{8pt}{9pt}\selectfont\usekomafont{PPdata}%
+ \hfill\usekomavar{PPcode}
+ \vss
+ \ifcase \ltr@priority
+ \or
+ \usekomafont{priority}{%
+ {\usekomafont{prioritykey}{B}}%
+ -ECONOMY\hss\vskip-\dp\strutbox
+ }%
+ \or
+ \usekomafont{priority}{%
+ {\usekomafont{prioritykey}{A}}%
+ -PRIORITY\hss\vskip-\dp\strutbox
+ }%
+ \fi
+ \vss
+ }%
+ }%
+ \vskip 1mm
+ \vskip-\ht\strutbox
+ \noindent\hskip\useplength{toaddrindent}%
+ \hrulefill%
+ \hskip\useplength{toaddrindent}%
+ \vbox to\z@{\hsize\z@
+ \vskip \useplength{PPdatamatrixvskip}\relax
+ \llap{\usekomavar{PPdatamatrix}\hskip\useplength{toaddrindent}}%
+ \vss
+ }%
+ \else
+% \end{macrocode}
+% Modus \texttt{backgroundimage} oder \texttt{image}.
+% \begin{macrocode}
+ \vskip 1mm
+ \noindent\expandafter\hskip\useplength{toaddrindent}%
+ \vbox to \useplength{PPheadheight}{%
+ \addtolengthplength[-2]{\hsize}{toaddrindent}%
+ \setlength{\parindent}{0pt}%
+ \usekomavar{addresseeimage}%
+ \vss
+ }%
+ \vskip 1mm
+ \vskip\dp\strutbox
+ \fi
+ \ifnum \@afieldmode=4 \else
+ \vfil%
+ \noindent\hskip\useplength{toaddrindent}%
+ \setlength{\@tempdima}{\useplength{toaddrwidth}}%
+ \addtolengthplength[-2]{\@tempdima}{toaddrindent}%
+ \vbox{\hsize\@tempdima
+ \ifkomavarempty{PPdatamatrix}{}{%
+ \addtolength{\hsize}{-2mm}%
+ \settowidth\@tempdima{\usekomavar{PPdatamatrix}}%
+ \addtolength{\hsize}{-\@tempdima}%
+ }%
+ \raggedright
+ \usekomafont{addressee}{%
+ {\usekomafont{toname}{\usekomavar{toname}\\}}%
+ {\usekomafont{toaddress}{\usekomavar{toaddress}\endgraf}}}}%
+ \fi
+ \vss\null}%
+ {address field}{toaddrheight}%
+ {\string\begin{letter}}%
+ }}}%
+ \vskip-\useplength{toaddrvpos}\move@frompt
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\specialmail@format}
+% \changes{v2.97c}{2007/07/06}{neu (intern)}^^A
+% Die Anweisung, die für das Aussehen der Versandart zuständig ist.
+% \begin{macrocode}
+\newcommand*{\specialmail@format}[1]{}
+\let\specialmail@format\underline
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ogobble}
+% \changes{v2.8q}{2002/01/22}{Neu}^^A
+% In obiger Definition wird das Makro \cs{@ogobble} verwendet, um
+% einen optionalen Parameter zu vernichten, falls dieser existiert.
+% \begin{macrocode}
+\newcommand*{\@ogobble}[1][]{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@locfield}
+% \changes{v2.8o}{2001/09/17}{\cs{noindent} eingefügt}
+% \changes{v2.8q}{2002/02/07}{\cs{noindent} nach dem Logo}
+% \changes{v2.8q}{2002/07/23}{Berechnung der Breite hierher verschoben}^^A
+% \changes{v2.8q}{2002/06/03}{Sonderbehandlung für Adressfeld rechts}^^A
+% Das "`locfield"' wird unabhängig von der Adresse gesetzt.
+% \begin{macrocode}
+\newcommand*{\@locfield}{%
+ \ifdim \useplength{locwidth}=\z@%
+ \@setplength{locwidth}{\paperwidth}%
+ \ifdim \useplength{toaddrhpos}>\z@
+ \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}%
+ \else
+ \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}%
+ \fi
+ \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}%
+ \if@bigloc%
+ \@setplength[.66667]{locwidth}{\useplength{locwidth}}%
+ \else%
+ \@setplength[.5]{locwidth}{\useplength{locwidth}}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% \changes{v2.97e}{2007/11/13}{Der Absender kann nun ebenfalls in der
+% Absenderergänzung stehen}^^A
+% \changes{v2.98b}{2008/01/30}{Absenderergänzung immer setzen, wenn
+% verwendet}^^A
+% Je nach Absenderanordnung muss hier nun ebenfalls etwas getan werden.
+% Der Fall 0, also linksbündiger Absender im Kopf spielt hier keine Rolle.
+% \begin{macrocode}
+ \ifcase\@alignfrom
+% \end{macrocode}
+% Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier
+% platziert, also darf die Absenderergänzung nicht leer sein.
+% \begin{macrocode}
+ \or
+ \if@logo
+ \ifkomavarempty{location}{\setkomavar{location}{\null}}{}%
+ \fi
+% \end{macrocode}
+% Im Fall 2, also rechtsbündiger Absender im Kopf, ist auch nichts zu tun.
+% \begin{macrocode}
+ \or
+% \end{macrocode}
+% Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier
+% eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein.
+% \begin{macrocode}
+ \or
+ \ifkomavarempty{location}{\setkomavar{location}{\null}}{}%
+% \end{macrocode}
+% Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier
+% eine Menge ausgegeben, also darf die Absenderergänzung nicht leer sein.
+% \begin{macrocode}
+ \or
+ \ifkomavarempty{location}{\setkomavar{location}{\null}}{}%
+% \end{macrocode}
+% Alle anderen Fälle sind wie hier ebenfalls ohne Bedeutung.
+% \begin{macrocode}
+ \fi
+ \ifkomavarempty{location}{%
+ \typeout{Location field: empty}%
+ }{%
+ \typeout{Location field: yes}%
+ \ifdim \useplength{lochpos}=\z@%
+ \@setplength{lochpos}{\useplength{toaddrhpos}}%
+ \fi
+ \ifdim \useplength{locvpos}=\z@%
+ \@setplength{locvpos}{\useplength{toaddrvpos}}%
+ \fi
+ \ifdim \useplength{locheight}=\z@%
+ \@setplength{locheight}{\useplength{toaddrheight}}%
+ \fi
+ \move@topt\vskip\useplength{locvpos}%
+ \vb@t@z{\noindent\makebox[0pt][l]{%
+ \move@topl
+ \setlengthtoplength[-]{\@tempskipa}{lochpos}%
+ \ifdim \@tempskipa<\z@
+ \addtolength{\@tempskipa}{\paperwidth}%
+ \else
+ \addtolengthplength{\@tempskipa}{locwidth}%
+ \fi
+ \hskip\@tempskipa
+ \makebox[0pt][r]{%
+ \@savevbox{\useplength{locheight}}{%
+ \noindent\hsize\useplength{locwidth}%
+% \end{macrocode}
+% In einigen Fällen der Absenderanordnung muss hier nun eine ganze Menge getan
+% werden. In anderen ist hingegen nur wenig zu tun.
+% Im Fall 0, also linksbündiger Absender im Kopf wird nur die
+% Absenderergänzung ausgegeben (das erfolgt nach der Fallunterscheidung).
+% \begin{macrocode}
+ \ifcase\@alignfrom
+% \end{macrocode}
+% Im Fall 1, also zentrierter Absender im Kopf wird jedoch das Logo hier
+% platziert, die Absenderergänzung wird ggf. danach ausgegeben (das erfolgt
+% nach der Fallunterscheidung).
+% \changes{v2.98a}{2008/01/10}{bei zentriertem Absender wird die
+% Absenderergänzung ggf. unter dem Logo ausgegeben}^^A
+% \begin{macrocode}
+ \or
+ \if@logo
+ \ifkomavarempty{fromlogo}{\null}{%
+ {\raggedleft\noindent\usekomavar{fromlogo}\\
+ \vskip\parskip}\noindent}%
+ \fi
+% \end{macrocode}
+% Im Fall 2, also rechtsbündiger Absender im Kopf, wird auch nur die
+% Absenderergänzung ausgegeben (das erfolgt nach der Fallunterscheidung).
+% \begin{macrocode}
+ \or
+% \end{macrocode}
+% Im Fall 3, also linksbündiger Absender in der Absenderergänzung wird hier
+% sozusagen der linksbündige Kopf nachgebaut. Das Logo steht dabei
+% ggf. rechtsbündig oben.
+% \begin{macrocode}
+ \or
+ \if@logo
+ \ifkomavarempty{fromlogo}{}{%
+ \raggedleft\usekomavar{fromlogo}\par}%
+ \fi
+ \raggedright
+% \end{macrocode}
+% Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart für
+% den Namen verwendet werden.
+% \begin{macrocode}
+ {\usekomafont{fromname}\strut\ignorespaces
+ \usekomavar{fromname}%
+% \end{macrocode}
+% Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den
+% Absender eine Linie folgen. Die Länge dieser Linie kann vom Anwender
+% bestimmt oder automatisch gewählt werden. Es werden dabei die
+% Pseudo-Längen \texttt{fromrulewidth} und \texttt{fromrulethickness}
+% verwendet. Ist \texttt{fromrulewidth} 0, so wird sie automatisch
+% bestimmt. Bei der automatischen Längenbestimmung wird einfach eine Linie
+% über die Gesamtbreite der Absenderergänzung gesetzt.
+% \begin{macrocode}
+ {%
+ \ifnum\@rulefrom=1\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\useplength{locwidth}}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}%
+ }%
+ \fi
+ }%
+ \\
+ }%
+% \end{macrocode}
+% Als Nächstes wird die Absenderadresse einschließlich aller
+% optionalen Felder gesetzt. Dabei werden optionale Felder nur
+% gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die
+% Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen
+% Schriftart gesetzt.%
+% \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird
+% berücksichtigt}%
+% \begin{macrocode}
+ {\usekomafont{fromaddress}\strut\ignorespaces
+ \usekomavar{fromaddress}%
+ \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
+ \if@mobilephone
+ \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}%
+ \fi%
+ \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
+ \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
+ \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
+% \end{macrocode}
+% Wie weiter oben erwähnt, kann auch an dieser Stelle eine Linie
+% gesetzt werden.
+% \begin{macrocode}
+ \ifnum\@rulefrom=2\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\useplength{locwidth}}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ \\
+ }%
+% \end{macrocode}
+% Damit ist die Definition des linksbündigen Absenders in der
+% Absenderergänzung abgeschlossen.
+% Im Fall 4, also rechtsbündiger Absender in der Absenderergänzung wird hier
+% exakt wie für Fall 3 verfahren. Nur ist jetzt alles rechtsbündig.%
+% \changes{v3.12}{2013/05/29}{Variable \texttt{frommobilephone} wird
+% berücksichtigt}%
+% \begin{macrocode}
+ \or
+ \raggedleft
+ \if@logo
+ \ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\par}%
+ \fi
+ {\usekomafont{fromname}\strut\ignorespaces
+ \usekomavar{fromname}%
+ {%
+ \ifnum\@rulefrom=1\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\useplength{locwidth}}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}%
+ }%
+ \fi
+ }%
+ \\
+ }%
+ {\usekomafont{fromaddress}\strut\ignorespaces
+ \usekomavar{fromaddress}%
+ \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi%
+ \if@mobilephone%
+ \\\usekomavar*{frommobilephone}\usekomavar{frommobilephone}%
+ \fi%
+ \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi%
+ \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi%
+ \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi%
+ \ifnum\@rulefrom=2\\[-.5\baselineskip]%
+ \usekomafont{fromrule}{%
+ \setlength{\@tempdima}{\useplength{fromrulewidth}}%
+ \ifdim\@tempdima=\z@
+ \setlength{\@tempdima}{\useplength{locwidth}}%
+ \fi
+ \expandafter\rule\expandafter{\the\@tempdima}{%
+ \useplength{fromrulethickness}}}%
+ \fi
+ \\
+ }%
+% \end{macrocode}
+% In allen anderen Fällen wird ebenfalls die Absenderergänzung gesetzt.
+% \begin{macrocode}
+ \fi
+ \usekomavar{location}%
+% \end{macrocode}
+% Zum Schluss wird noch verhindert, dass wegen nicht vollen vertikalen Boxen
+% gemotzt wird.
+% \begin{macrocode}
+ \vskip \z@ \@plus .00001fil}%
+ {location field}{locheight}{\setkomavar}%
+ }}%
+ }%
+ \vskip-\useplength{locvpos}\move@frompt
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@datefield}
+% \changes{v2.8q}{2002/01/14}{Schalter \cs{if@tempwa} wird bereits hier auf
+% \texttt{true} gesetzt}
+% \changes{v2.97c}{2007/05/14}{Neue Fontelemente}^^A
+% Je nachdem, welche Felder definiert sind, muss eine geschäftsmäßiger
+% Standardbrief oder ein eher persönliches Aussehen gewählt werden.
+% \begin{macro}{\do@set@reffield}
+% \changes{v3.09}{2011/03/06}{Neu (intern)}^^A
+% Das ist ein \cs{do} für die Felder und bekommt innerhalb von
+% \cs{@datefield} unterschiedliche Bedeutungen. An dieser Stelle wird es daher
+% nur reserviert.
+% \begin{macrocode}
+\newcommand*{\do@set@reffield}{}
+% \end{macrocode}
+% \begin{macro}{\@set@reffield}
+% \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}
+% Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als Parameter wird
+% der Name des Feldes übergeben. Es wird dann davon ausgegangen, dass der
+% Name des Feldes in der jeweiligen Sprache im Makro
+% \verb|\|\texttt{\emph{\#1}}\verb|name| und der Wert des Feldes in
+% \verb|\var|\texttt{\emph{\#1}} zu finden ist.
+% \begin{macrocode}
+\newcommand*{\@set@reffield}[1]{%
+ \ifkomavarempty{#1}{}{%
+ \settowidth{\@tempdima}{\strut\usekomafont{refvalue}\usekomavar{#1}}%
+ \sbox\z@{\strut\usekomafont{refname}\usekomavar*{#1}}%
+ \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi
+ \if@tempswa\enskip\hfill\fi
+ \parbox[t]{\@tempdima}{\noindent\raggedright
+ \strut\box\z@\\\usekomafont{refvalue}\strut\usekomavar{#1}}%
+ \@tempswatrue
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@test@reffield}
+% \changes{v3.09}{2011/03/06}{Neu (intern)}^^A
+% Dieses Makro testet, ob ein Feld tatsächlich zu setzen ist und setzt
+% ggf. \cs{@tempswa}.
+% \begin{macrocode}
+\newcommand*{\@test@reffield}[1]{%
+ \ifkomavarempty{#1}{}{%
+%<trace> \if@tempswa\l@addto@macro\@tempa{, }\fi
+%<trace> \l@addto@macro\@tempa{#1}%
+ \@tempswatrue
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@set@reffields}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Dieses Makro enthält alle Aufrufe von \cs{@set@reffield}, die durchzuführen
+% sind. Das Makro kann mit Hilfe von \cs{addtoreffields} erweitert werden.
+% \begin{macrocode}
+\newcommand*{\@set@reffields}{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\addtoreffields}
+% \changes{v3.09}{2011/03/06}{Verwendung von \cs{do@set@reffield} an Stelle
+% von \cs{@set@reffield}}
+% Dieses Makro erwartet als obligatorisches Argument den Namen einer
+% KOMA-Script Variable. Der Befehl arbeitet lokal zur aktuellen Umgebung.
+% \begin{macrocode}
+\newcommand*{\addtoreffields}[1]{%
+ \l@addto@macro{\@set@reffields}{\do@set@reffield{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\removereffields}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Es gibt auch einen Befehl, um alle Felder aus der Geschäftszeile zu
+% entfernen.
+% \begin{macrocode}
+\newcommand*{\removereffields}{%
+ \renewcommand*{\@set@reffields}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\defaultreffields}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Ebenso ein Befehl, um die üblichen Felder zu setzen.
+% \begin{macrocode}
+\newcommand*{\defaultreffields}{%
+ \removereffields
+ \addtoreffields{yourref}%
+ \addtoreffields{yourmail}%
+ \addtoreffields{myref}%
+ \addtoreffields{customer}%
+ \addtoreffields{invoice}%
+}
+% \end{macrocode}
+% Genau diesen Befehl rufen wir auch gleich auf:
+% \begin{macrocode}
+\defaultreffields
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingefügt}^^A
+% \changes{v2.8o}{2001/09/18}{für den Brieftyp \texttt{KOMAold} anschließend
+% einen zusätzlichen vertikalen Abstand eingefügt}
+% \changes{v2.8q}{2001/11/13}{\cs{rlap} eingefügt}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in \cs{@set@reffield}^^A
+% bereits enthalten}
+% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an die
+% Dokumentation angepasst}
+% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} hinzugefügt}
+% \changes{v2.95}{2006/03/23}{Absatzeinzug mit \cs{setparsizes} abschalten}
+% \changes{v2.97c}{2007/05/14}{Neue Font-Elemente}^^A
+% \changes{v3.09}{2011/03/06}{\cs{do@set@reffield} muss initialisiert
+% werden}
+% \begin{macrocode}
+\newcommand*{\@datefield}{{%
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \ifdim\useplength{refwidth}=\z@
+ \if@refwide
+ \@setplength{refwidth}{\paperwidth}%
+ \ifdim \useplength{toaddrhpos}>\z@
+ \@setplength{refhpos}{\useplength{toaddrhpos}}%
+ \else
+ \@setplength[-]{refhpos}{\useplength{toaddrhpos}}%
+ \fi
+ \@addtoplength[-2]{refwidth}{\useplength{refhpos}}%
+ \else
+ \@setplength{refwidth}{\textwidth}%
+ \@setplength{refhpos}{\oddsidemargin}%
+ \@addtoplength{refhpos}{1in}%
+ \fi
+ \else
+ \ifdim\useplength{refhpos}=\z@
+ \begingroup
+% \end{macrocode}
+% Wir bestimmen zunächst, um wieviel die Geschäftszeile schmaler ist als der
+% Textbereich.
+% \begin{macrocode}
+ \setlength\@tempdima{\textwidth}%
+ \addtolengthplength[-]{\@tempdima}{refwidth}%
+% \end{macrocode}
+% Dann wird bestimmt, wie groß der linke Rand tatsächlich ist.
+% \begin{macrocode}
+ \setlength\@tempdimb{\oddsidemargin}%
+ \addtolength\@tempdimb{1in}%
+% \end{macrocode}
+% Ebenso wird bestimmt, wie groß der linke und rechte Rand zusammen sind.
+% \begin{macrocode}
+ \setlength{\@tempdimc}{\paperwidth}%
+ \addtolength{\@tempdimc}{-\textwidth}%
+% \end{macrocode}
+% Jetzt wird aus dem Gesamtrand der Geschäftszeile der linke Rand der
+% Geschäftszeile so bestimmt, dass das Randverhältnis dabei unverändert
+% bleibt. Dabei erlauben wir uns eine gewisse Rechenungenauigkeit beim
+% Verhältnis.
+% \begin{macrocode}
+ \divide\@tempdimb by 32768\relax
+ \divide\@tempdimc by 32768\relax
+ \ifdim\@tempdimc=\z@\else
+ \multiply\@tempdima by\@tempdimb
+ \divide\@tempdima by\@tempdimc
+ \fi
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\@setplength{refhpos}{\the\@tempdima}}%
+ \@tempa
+ \fi\fi
+ \@tempswafalse
+ \move@topt\vskip\useplength{refvpos}%
+% \end{macrocode}
+% Jetzt kontrollieren wir, ob überhaupt etwas auszugeben ist:
+% \begin{macrocode}
+ \@tempswafalse
+ \let\do@set@reffield\@test@reffield
+%<trace> \let\@tempa\@empty
+ \@set@reffields
+ \ifcase \@datepos\else\@test@reffield{date}\fi
+ \if@tempswa
+%<trace> \typeout{Reference line(s) with: \@tempa}%
+ \@tempswafalse
+% \end{macrocode}
+% Jetzt erfolgt noch die Absatzeinzugkorrektur. Danach kommt die eigentliche
+% Arbeit.
+% \begin{macrocode}
+ \rlap{\noindent\move@topl\hskip\useplength{refhpos}%
+ \vbox{\hsize\useplength{refwidth}%
+ \noindent
+ \ifnum \@datepos=2
+ \@set@reffields
+ \if@tempswa
+ \@tempswafalse
+ \@set@reffield{date}%
+ \fi
+ \fi
+ \let\do@set@reffield\@set@reffield
+ \@set@reffields%
+ \if@tempswa
+ \ifnum \@datepos=1 \@set@reffield{date}\fi%
+% \end{macrocode}
+% Seit Version~2.97c wird hier auch noch getestet, ob die Geschäftszeile
+% möglicherweise mit zu großer Schrift gesetzt wird.
+% \changes{v3.17}{2015/04/17}{\cs{setbox} durch \cs{sbox} ersetzt}
+% \begin{macrocode}
+ \sbox\z@{\usekomafont{refname}\strutbox}%
+ \ifdim\ht\z@>\ht\strutbox
+%<class> \ClassWarningNoLine{scrlttr2}{%
+%<package> \PackageWarningNoLine{scrletter}{%
+ Font element `refname' should not be larger than
+ \string\normalsize!}%
+ \fi
+ \sbox\z@{\usekomafont{refvalue}\strutbox}%
+ \ifdim\ht\z@>\ht\strutbox
+%<class> \ClassWarningNoLine{scrlttr2}{%
+%<package> \PackageWarningNoLine{scrletter}{%
+ Font element `refvalue' should not be larger than
+ \string\normalsize!}%
+ \fi
+ \else
+% \end{macrocode}
+% Hier landen wir schließlich, wenn gar keine Felder ausgegeben wurden, also
+% nur Ort und Datum zu setzen sind.
+% \changes{v3.12}{2013/07/31}{neues Element \texttt{placeanddate} wird
+% verwendet}
+% \begin{macrocode}
+ \ifcase \@datepos\else
+ \ifnum \@datepos=1 \enskip\hfill\fi
+ {\usekomafont{placeanddate}{\ifkomavarempty{place}{}{%
+ \usekomavar{place}\usekomavar{placeseparator}}%
+ \usekomavar{date}}}%
+ \fi
+ \fi
+ }%
+ }%
+%<trace> \else\typeout{No reference line.}%
+ \fi
+ \vskip\useplength{refaftervskip}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+% \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} für den
+% \cs{title}}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.9t}{2004/09/16}{\cs{par} in Größe und Schrift des Titels}^^A
+% \changes{v2.95}{2006/03/22}{\cs{usekomafont} and Stelle von
+% \cs{titlefont}}^^A
+% \changes{v3.13}{2014/06/26}{umbenannt in \cs{@makelettertitle}}^^A
+% \end{macro}
+% \begin{macro}{\@makelettertitle}
+% \changes{v3.13}{2014/06/26}{neu (ehemals \cs{@maketitle}}^^A
+% \changes{v3.15}{2015/02/21}{\texttt{title} durch \texttt{lettertitle}
+% ersetzt}^^A
+% \begin{macro}{\@subjfield}
+% \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering}
+% ersetzt}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.8q}{2002/01/31}{wird mit hängendem Einzug gesetzt}^^A
+% \changes{v2.95}{2006/03/23}{Absatzeinzug mit cs{setparsizes}^^A
+% einstellen}^^A
+% \changes{v3.01}{2008/11/03}{Verwendung der neuen Pseudolängen
+% \texttt{subjectbeforevskip} und \texttt{subjectaftervskip}}^^A
+% \changes{v3.15}{2015/02/21}{\texttt{subject} durch \texttt{lettersubject}
+% ersetzt}^^A
+% Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte jedoch
+% ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell geschehen.
+% \begin{macrocode}
+\newcommand*{\@makelettertitle}{%
+ \ifkomavarempty{title}{%
+ \typeout{Title: no}%
+ }{%
+ \typeout{Title: yes}%
+ {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}%
+ \vskip\baselineskip%
+ }%
+}
+\newcommand*{\@subjfield}{{%
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
+ \ifkomavarempty{subject}{%
+ \typeout{Subject: no}%
+ }{%
+ \ifx\raggedsubject\@empty
+ \ifdim\useplength{subjectvpos}=\z@
+ \if@subjafter%
+ \typeout{Subject: after opening}%
+ \let\raggedsubject\centering%
+ \else
+ \typeout{Subject: before opening}%
+ \def\raggedsubject{\noindent\@hangfrom}%
+ \fi
+ \else
+ \typeout{Subject: at absolute vertical position}%
+ \def\raggedsubject{\noindent\@hangfrom}%
+ \fi
+ \fi
+ \ifdim\useplength{subjectvpos}=\z@
+ \vskip\useplength{subjectbeforevskip}%
+ \begingroup
+ \else
+ \move@topt\vskip\useplength{subjectvpos}%
+ \expandafter\vb@t@z\expandafter{%
+ \fi
+ \usekomafont{lettersubject}%
+ \raggedsubject{\if@subj \subject@format{\strut\ignorespaces
+ \usekomavar*{subject}}\fi}%
+ \subject@format{\strut\ignorespaces\usekomavar{subject}}\par
+ \ifdim\useplength{subjectvpos}=\z@
+ \endgroup
+ \vskip\useplength{subjectaftervskip}%
+ \else
+ }%
+ \vskip-\useplength{subjectvpos}\move@frompt
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\ltr@len@subjectvpos}
+% \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectvpos}}
+% Manchmal ist es günstiger, wenn man den Betreff absolut positionieren
+% kann. Das geschieht über diese Pseudolänge, wenn sie \emph{nicht} 0 ist.
+% \begin{macrocode}
+\@newplength{subjectvpos}
+\@setplength{subjectvpos}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@subjectaftervskip}
+% \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectaftervskip}}
+% Abstand nach dem Betreff. Dieser Abstand wird aus Gründen der
+% Kompatibilität zu früheren Versionen mit 2\cs{baselineskip}
+% voreingestellt.
+% \begin{macrocode}
+\@newplength{subjectaftervskip}
+\@setplength{subjectaftervskip}{2\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltr@len@subjectbeforevskip}
+% \changes{v3.01}{2008/11/03}{Neue Pseudolänge \texttt{subjectbeforevskip}}
+% Abstand zusätzlich vor dem Betreff. Dieser Abstand wird aus Gründen der
+% Kompatibilität zu früheren Versionen mit \cs{baselineskip}
+% voreingestellt. Es sei darauf hingewiesen, dass hier bereits ein Abstand
+% beispielsweise vom Titel existieren kann!
+% \begin{macrocode}
+\@newplength{subjectbeforevskip}
+\@setplength{subjectbeforevskip}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Anweisungen für das Briefpapier}
+%
+% Für das Briefpapier gibt es etwas weniger Anweisungen. Teilweise werden hier
+% auch die Anweisungen für den Briefbogen mit verwendet.
+%
+% \subsubsection{Kopf des Briefpapiers}
+%
+% Der Kopf des Briefpapiers wird wieder ganz normal über den Seitenstil
+% festgelegt. Allerdings kann er entsprechende dem Briefbogen manuell
+% definiert werden.
+%
+% \begin{macro}{\nexthead}
+% \changes{v3.08}{2010/10/28}{der Kopf der Folgeseiten wird über eine
+% Variable realisiert}^^A
+% \begin{macro}{\@nexthead}
+% \changes{v3.08}{2010/10/28}{der Kopf der Folgeseiten wird über eine
+% Variable realisiert}^^A
+% \begin{KOMAvar}{nexthead}
+% \changes{v3.08}{2010/10/28}{Neu}^^A
+% Die Voreinstellung ist ebenfalls von Optionen abhängig.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\@nexthead}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\@nexthead.\MessageBreak
+ \string\usekomavar{nexthead} should be used\MessageBreak
+ instead of \string\@nexthead
+ }%
+ \usekomavar{nexthead}%
+}
+%</class>
+\newkomavar{nexthead}
+\setkomavar{nexthead}{%
+ \rlap{\parbox[c]{\textwidth}{\raggedright\strut
+ \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}%
+ \parbox[c]{\textwidth}{%
+ \centering\strut
+ \ifcase\@pageat
+ \rightmark
+ \or
+ \pagemark
+ \or
+ \rightmark
+ \fi\strut}%
+ \llap{\parbox[c]{\textwidth}{\raggedleft\strut
+ \ifcase\@pageat
+ \leftmark
+ \or
+ \rightmark
+ \or
+ \pagemark
+ \else
+ \rightmark
+ \fi\strut}}%
+}%
+% \end{macrocode}
+% \end{KOMAvar}
+% \end{macro}
+% Die Voreinstellung ist wiederum mit einer einfachen Benutzeranweisung
+% änderbar.
+% \begin{macrocode}
+%<*class>
+\newcommand{\nexthead}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\nexthead.\MessageBreak
+ You should use \string\setkomavar{nexthead}\MessageBreak
+ instead of \string\nexthead
+ }
+ \setkomavar{nexthead}%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Fuß des Briefpapiers}
+%
+% \begin{macro}{\nextfoot}
+% \changes{v3.08}{2010/10/28}{der Fuß der Folgeseiten wird über eine
+% Variable realisiert}^^A
+% \begin{macro}{\@nextfoot}
+% \changes{v3.08}{2010/10/28}{der Fuß der Folgeseiten wird über eine
+% Variable realisiert}^^A
+% \begin{KOMAvar}{nextfoot}
+% \changes{v3.08}{2010/10/28}{Neu}^^A
+% Je nach Optioneneinstellung kann sich die Seitenmarke in der Voreinstellung
+% auch im Fuß befinden.
+% \begin{macrocode}
+%<*class>
+\newcommand*{\@nextfoot}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\@nextfoot.\MessageBreak
+ \string\usekomavar{nextfoot} should be used\MessageBreak
+ instead of \string\@nextfoot
+ }%
+ \usekomavar{nextfoot}%
+}
+%</class>
+\newkomavar{nextfoot}
+\setkomavar{nextfoot}{%
+ \ifnum\@pageat>2
+ \parbox[c]{\textwidth}{%
+ \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
+ \strut\pagemark%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{KOMAvar}
+% \end{macro}
+% Auch diese Einstellung ist per Benutzeranweisung leicht zu ändern.
+% \begin{macrocode}
+%<*class>
+\newcommand{\nextfoot}{%
+ \ClassWarning{scrlttr2}{%
+ Deprecated usage of \string\nextfoot.\MessageBreak
+ You should use \string\setkomavar{nextfoot}\MessageBreak
+ instead of \string\nextfoot
+ }
+ \setkomavar{nextfoot}%
+}
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Die Brief-Umgebung}
+%
+% \begin{environment}{letter}
+% \changes{v2.8q}{2002/01/16}{optionales Argument hinzugefügt}^^A
+% \changes{v2.8q}{2002/01/16}{Fußnotenzähler wird zurückgesetzt}^^A
+% \changes{v2.9d}{2002/08/12}{Fußnotenzähler wird korrekt zurückgesetzt}^^A
+% \changes{v3.17}{2015/03/20}{Ersatz von \cs{pagemark}}^^A
+% \changes{v3.19}{2015/07/15}{\cs{letterpagestyle} wird verwendet}^^A
+% \changes{v3.19}{2015/07/15}{Briefe werden referenzierbar nummeriert}^^A
+% Diese Umgebung ist etwas anders definiert, als normalerweise von
+% \LaTeX gewohnt. Mit ihr können innerhalb eines Dokuments beliebig
+% viele Briefe erzeugt werden. Eine der Abweichungen von der
+% Standardklasse besteht darin, dass als optionales Argument Optionen
+% gesetzt werden können.
+% \begin{macrocode}
+\newenvironment{letter}[2][]{%
+% \end{macrocode}
+% Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine neue
+% rechte Seite sein. Dabei wird auch auf den korrekten Seitenstil
+% geachtet. Danach werden alle relevanten Zähler und Strafpunkte
+% zurückgesetzt und der obligatorische Parameter ausgewertet.
+% \changes{v3.19}{2015/07/15}{wegen des Pakets
+% \cs{cleardoubleoddemptypage}}^^A
+% \begin{macrocode}
+ \cleardoubleoddemptypage
+ \scr@ifundefinedorrelax{letterpagestyle}{}{%
+ \ifx\letterpagestyle\@empty\else
+ \pagestyle{\letterpagestyle}%
+ \fi
+ }%
+%<package>\let\pagemark\letterpagemark
+ \refstepcounter{letter}%
+ \let\thisletter\@currentlabel
+ \setcounter{page}{\@ne}%
+ \setcounter{footnote}{0}%
+ \interlinepenalty=200\@processto{#2}%
+% \end{macrocode}
+% Dann werden ggf. die übergebenen Optionen ausgeführt.
+% \begin{macrocode}
+ \KOMAoptions{#1}%
+% \end{macrocode}
+% Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen
+% ausgeführt und noch danach ein Label gesetzt.
+% \changes{v3.19}{2015/07/15}{ein Label wird gesetzt}^^A
+% \begin{macrocode}
+ \@beginletterhook
+}{%
+ \stopletter
+ \let\@currentlabel\thisletter
+ \label{\thisletter.lastpage}%
+ \@@par\pagebreak\@@par%
+}
+% \end{macrocode}
+% \begin{macro}{\thisletter}
+% \changes{v3.19}{2015/07/15}{neue Anweisung}^^A
+% Gibt den Wert des aktuellen Labels wieder. Man benötigt dies beispielsweise,
+% um per |\ref{\thisletter.lastpage}| auf die letzte Seite zugreifen zu
+% können.
+% \begin{macrocode}
+\newcommand*{\thisletter}{outside.letter.undefined}
+% \end{macrocode}
+% \end{macro}^^A \thisletter
+% \begin{macro}{\letterlastpage}
+% \changes{v3.19}{2015/07/15}{neue Anweisung}^^A
+% \begin{macrocode}
+\newcommand*{\letterlastpage}{\pageref{\thisletter.lastpage}}
+% \end{macrocode}^^A \letterlastpage
+% \end{macro}
+% \begin{macro}{\stopletter}
+% Damit man Material am Ende des Briefes einschleusen kann.
+% \begin{macro}{\@processto}
+% \changes{v2.9r}{2004/06/16}{robust gegen leeren Empfänger}^^A
+% \begin{macro}{\@xproc}
+% Die Adresse, die als Argument der Briefumgebung übergeben wird, muss in Name
+% und Adresse zerlegt werden.
+% \begin{macrocode}
+\newcommand*{\stopletter}{}
+\newcommand{\@processto}[1]{%
+ \ifx\relax#1\relax\else
+ \expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{%
+ \expandafter\@xproc#1\@nil}%
+ \fi
+}
+\newcommand*{\@xproc}{}
+\long\def\@xproc#1\\#2\@nil{%
+ \setkomavar{toname}{#1}\setkomavar{toaddress}{#2}}
+% \end{macrocode}
+% \end{macro}^^A \@xproc
+% \end{macro}^^A \@processto
+% \end{macro}^^A \stopletter
+% \begin{macro}{\flushbottom}
+% \changes{v2.97c}{2007/05/17}{neue Erweiterung}^^A
+% Das Verhalten muss auf der letzten Briefseite wieder \cs{raggedbottom}
+% ähneln. Das wird über \cs{stopletter} erreicht.
+% \begin{macrocode}
+\g@addto@macro\flushbottom{%
+ \g@addto@macro\stopletter{\vskip \z@\@plus.0001fil\relax}%
+}
+% \end{macrocode}
+% \end{macro}^^A \flushbottom
+% \begin{Counter}{letter}
+% \changes{v3.19}{2015/07/15}{neuer Zähler}^^A
+% Die Briefe werden durchnummeriert.
+% \begin{macrocode}
+\newcounter{letter}
+% \end{macrocode}
+% \end{Counter}
+% \end{environment}^^A letter
+%
+%
+% \begin{macro}{\letterpagestyle}
+% \changes{v3.19}{2015/07/15}{neue Anweisung}^^A
+% Analog zu \cs{titlepagestyle}, \cs{indexpagestyle} etc. gibt es jetzt auch
+% ein \cs{letterpagestyle}. In der Voreinstellung ist dieser bei der Klasse
+% leer. Dagegen wird beim Paket \texttt{plain.letter} verwendet. Durch den
+% Unterschied wird faktisch die Kompatibilität mit des Pakets mit der Klasse
+% jedoch verbessert!
+% \begin{macrocode}
+\newcommand*{\letterpagestyle}{%
+%<package> plain.letter%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\AtBeginLetter}
+% \changes{v2.8n}{2001/09/08}{Neu}^^A
+% \begin{macro}{\@beginletterhook}
+% \changes{v2.8n}{2001/09/08}{Neu}^^A
+% Wie oben zu sehen, wurde in den Anfang der Briefumgebung ein Haken
+% eingefügt. Dieser wird auch tatsächlich intern genutzt. Er funktioniert
+% prinzipiell wie der |\AtBeginDocument|-Haken. Zunächst macht der Haken rein
+% gar nichts.
+% \begin{macrocode}
+\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook}
+\newcommand{\@beginletterhook}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\AtEndLetter}
+% \changes{v2.95}{2006/03/22}{Neu}^^A
+% Analog zu |\AtBeginLetter| gibt es auch ein |\AtEndLetter|. Als Haken wird
+% hierbei |\stopletter| verwendet.
+% \begin{macrocode}
+\newcommand{\AtEndLetter}{\g@addto@macro\stopletter}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\stopbreaks}
+% \begin{macro}{\startbreaks}
+% \begin{macro}{\@nobreakvspace}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@nobreakvspacex}
+% \begin{macro}{\@nobreakcr}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt.
+% Dadurch soll der Brieftext besser positioniert werden.
+% \begin{macrocode}
+\newcommand*{\stopbreaks}{\interlinepenalty \@M
+ \def\par{\@@par\nobreak}\let\\=\@nobreakcr
+ \let\vspace\@nobreakvspace}
+\newcommand*{\@nobreakvspace}{%
+ \kernel@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
+\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else
+ \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
+\newcommand*{\@nobreakcr}{%
+ \vadjust{\penalty\@M}\kernel@ifstar{\@xnewline}{\@xnewline}}
+\newcommand*{\startbreaks}{\let\\=\@normalcr
+ \interlinepenalty 200\def\par{\@@par\penalty 200}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\opening}
+% \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}}
+% \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}^^A
+% einstellen}
+% Denn beim Eröffnungsgruß mit |\opening| wird neben sämtlichen Feldern auch
+% der Titel und der Betreff gesetzt.
+% \begin{macrocode}
+\newcommand{\opening}[1]{%
+ \@PapersizeWarning
+ \@gen@firsthead
+ \@mkboth{\scr@fromname@var}{\scr@subject@var}%
+ \thispagestyle{empty}\noindent
+ \@foldmarks\@firstheadfootfield\@addrfield\@locfield
+ \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi
+ \@datefield
+ \@makelettertitle
+ \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi
+ {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}%
+ {\setlength{\@tempdima}{\baselineskip}%
+ \addtolength{\@tempdima}{-\parskip}%
+ \ifdim \@tempdima>\z@\vskip\@tempdima\fi}%
+ \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi
+ \@afterindentfalse\@afterheading
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\closing}
+% \changes{v2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf \cs{empty}
+% getestet sondern direkt eingesetzt}
+% \changes{v2.3b}{1996/01/14}{Abstand zwischen Schlussgruß und Signatur
+% erhöht}^^A
+% \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlussgruß und Signatur
+% variabel}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.8q}{2002/02/05}{nicht mehr \cs{long}}
+% \changes{v2.8q}{2002/02/05}{darf \texttt{\cmd{\\}[\dots]} enthalten}
+% \changes{v2.95}{2003/03/23}{Absatzformatierung mit \cs{setparsizes}^^A
+% einstellen}
+% Außer dem Eröffnungsgruß mit |\opening| gibt es natürlich auch einen
+% Schlussgruß mit |\closing|, bei dem außerdem die Unterschrift u.\,ä. gesetzt
+% wird.
+% \begin{macro}{\presig@skip}
+% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
+% Schlussgruß und Signatur beinhaltet}^^A
+% \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-Länge sigbeforevskip}^^A
+% \end{macro}
+% \begin{macro}{\setpresigskip}
+% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen
+% Schlussgruß und Signatur setzt}^^A
+% \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-Längen definiert}^^A
+% Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen Schlussgruß
+% und Signatur. Da der Wert über ein Benutzerinterface per |\setpresigskip|
+% gesetzt wird, muss hier kein kostbares Längenregister (skip oder dim)
+% verschwendet werden, sondern ein Makro reicht aus. In |\setpresigskip| wird
+% allerdings noch sichergestellt, dass die Fehlermeldung bei falschem
+% Parameter möglichst nicht erst bei Verwendung auftritt.
+% \begin{macrocode}
+%</letter>
+%<lco&KOMAold>\def\setpresigskip{\@setplength{sigbeforevskip}}
+%<*letter>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@xtrimtempa}
+% \changes{v2.8q}{2002/02/05}{Neu (intern)}^^A
+% \changes{v3.17}{2014/02/19}{entfernt}^^A
+% \begin{macro}{\@@xtrimtempa}
+% \changes{v2.8q}{2002/02/05}{Neu (intern)}^^A
+% \changes{v3.17}{2014/02/19}{entfernt}^^A
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@tempdimaismaxwidthof}
+% \changes{v2.8q}{2002/02/05}{Neu (intern)}^^A
+% \changes{v3.17}{2014/02/19}{entfernt}^^A
+% \end{macro}
+% Jetzt endlich zum eigentlichen Befehl.
+% \changes{v2.9r}{2004/01/28}{Längenbegrenzung auf \cs{hsize}}^^A
+% \changes{v2.9r}{2004/01/28}{das Argument darf leer sein}^^A
+% \changes{v3.17}{2015/02/19}{aus Rücksicht auf Leute, die ohne Rücksicht
+% auf die Anleitung einfach machen, was ihnen gerade einfällt, neu
+% implementiert}^^A
+% \changes{v3.17}{2015/02/20}{Weil manche Leute es unbedingt auf die Spitze
+% treiben wollen, \cs{}\cs{} durch \cs{tabularnewline} ersetzt.}^^A
+% \changes{v3.17}{2015/02/20}{Weil manche Leute es unbedingt auf die Spitze
+% treiben wollen, mehr \cs{strut} eingefügt.}^^A
+% \changes{v3.20}{2015/10/08}{Umbruch nach dem Gruß nur, wenn wir uns im
+% horizontalen Modus befinden}^^A
+% \changes{v3.25}{2017/11/15}{Verwendung von \cs{scr@endstrut} statt
+% \cs{unskip}\cs{strut}}^^A
+% \begin{macrocode}
+\newcommand*{\closing}[1]{{%
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative\nobreak\par
+ \nobreak\vskip\baselineskip
+ \stopbreaks\noindent
+ \settowidth{\@tempdima}{%
+ \begin{tabular}{@{}l@{}}
+ #1\tabularnewline
+ \usekomavar{signature}\tabularnewline
+ \end{tabular}
+ }%
+ \setlength{\@tempdimb}{\hsize}%
+ \addtolength{\@tempdimb}{-\useplength{sigindent}}%
+ \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi
+ \hspace{\useplength{sigindent}}%
+ \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces
+ #1\ifhmode\scr@endstrut\\[\useplength{sigbeforevskip}]
+ \else\vskip \useplength{sigbeforevskip}\fi
+ \strut\ignorespaces
+ \usekomavar{signature}\ifhmode\scr@endstrut\fi}}\par
+ \nobreak\vskip\baselineskip
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps}
+% \changes{v2.8n}{2001/09/08}{Komplett überarbeitet}^^A
+% Ebenfalls möglich ist ein Postscriptum. Dieser Befehl erwartet das
+% Postscriptum nicht als Argument, sondern schaltet zum Nachtext um.
+% \begin{macrocode}
+\newcommand\ps{\par%
+ \ifdim\parskip=\z@%
+ \vskip\baselineskip%
+ \fi\startbreaks\noindent\ignorespaces%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cc}
+% Darüber hinaus gibt es noch einen Verteiler. Dieser wird sauber formatiert.
+% \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt}
+% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet}^^A
+% \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}^^A
+% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil}
+% geändert}^^A
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus
+% 1fil} geändert}^^A
+% \changes{v3.22}{2016/12/15}{fehlender Stern bei \cs{ifkomavaremptry}
+% ergänzt}^^A
+% \begin{macrocode}
+\newcommand*{\cc}[1]{\par%
+ \ifdim\parskip=\z@%
+ \vskip\baselineskip%
+ \fi\noindent%
+ \begingroup
+ \parbox[t]{\textwidth}{%
+ \ifkomavarempty*{ccseparator}{}{%
+ \@hangfrom{%
+ \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}%
+ }%
+ \ignorespaces #1\strut}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}\par
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\encl}
+% Auch Anlagen werden ordentlich gesetzt.
+% \changes{v2.4a}{1997/06/06}{der Doppelpunkt bei den Anlagen wird nur noch
+% gesetzt, wenn \cs{enclname} nicht leer ist}
+% \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt}
+% \changes{v2.8n}{2001/09/08}{Komplett überarbeiten}^^A
+% \changes{v2.8q}{2002/01/31}{Fehlendes \% ergänzt}^^A
+% \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst}
+% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf \texttt{1em plus 1fil}
+% geändert}
+% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf \texttt{\cs{z@} plus
+% 1fil} geändert}
+% \begin{macrocode}
+\newcommand*{\encl}[1]{\par%
+ \ifdim\parskip=\z@%
+ \vskip\baselineskip%
+ \fi\noindent%
+ \begingroup
+ \parbox[t]{\textwidth}{%
+ \ifkomavarempty*{enclseparator}{}{%
+ \@hangfrom{%
+ \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}%
+ }%
+ \ignorespaces #1\strut}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}\par
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Briefspezifische Feld-Variablen}
+%
+% \begin{KOMAvar}{signature}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{place}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{location}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{backaddress}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{specialmail}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{title}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{fromlogo}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \begin{KOMAvar}{fromzipcode}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% \begin{KOMAvar}{PPcode}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% \begin{KOMAvar}{PPdatamatrix}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% \begin{KOMAvar}{addresseeimage}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% \changes{v3.03b}{2009/06/30}{Schreibfehler korrigiert}^^A
+% Zunächst besitzt die Briefklasse einige Variablen, die von Haus aus nicht
+% über einen Ausgabenamen verfügen, weil sie üblicherweise ohne Ausgabe einer
+% Bezeichung verwendet werden. Diese Variablen haben teilweise auch keinen
+% vordefinierten Inhalt. Der Inhalt muss erst vom Anwender gesetzt
+% werden. Teilweise gibt es aber auch einen vordefinierten Inhalt, der von
+% anderen Variablen abhängt.
+% \begin{macrocode}
+\newkomavar{signature}
+\setkomavar{signature}{\usekomavar{fromname}}
+\newkomavar{place}
+\newkomavar{location}
+\newkomavar{backaddress}
+\setkomavar{backaddress}{%
+ \ifkomavarempty{fromname}{}{%
+ \strut\ignorespaces\usekomavar{fromname}%
+ \ifkomavarempty{fromaddress}{}{\\}}%
+ \ifkomavarempty{fromaddress}{}{%
+ \strut\ignorespaces\usekomavar{fromaddress}}%
+ }
+\newkomavar{specialmail}
+\newkomavar{title}
+\newkomavar{fromlogo}
+\newkomavar{fromzipcode}
+\newkomavar{PPcode}
+\newkomavar{PPdatamatrix}
+\newkomavar{addresseeimage}
+% \end{macrocode}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+%
+% \begin{option}{symbolicnames}
+% \changes{v3.12}{2013/05/13}{neue Option}^^A
+% \changes{v3.17}{2015/03/16}{interne Speicherung der Werte}^^A
+% \begin{macro}{\if@scrsymbols}
+% \changes{v3.12}{2013/05/13}{neu (intern)}^^A
+% \begin{macro}{\@scrsymbolstrue}
+% \changes{v3.12}{2013/05/13}{neu (intern)}^^A
+% \begin{macro}{\@scrsymbolsfalse}
+% \changes{v3.12}{2013/05/13}{neu (intern)}^^A
+% Über diese Option kann eingestellt werden, dass an Stelle von
+% sprachabhängigen Bezeichnern für einige Variablen Symbole verwendet
+% werden. Dazu wird das Paket \textsf{macrosym} benötigt.
+% \begin{macrocode}
+%</letter>
+%</body>
+%<*option&letter>
+\newif\if@scrsymbols
+\KOMA@key{symbolicnames}[true]{%
+ \KOMA@set@ifkey{symbolicnames}{@scrsymbols}{#1}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+ }{symbolicnames}{@scrsymbols}%
+ \if@scrsymbols
+ \if@atdocument
+ \begingroup
+ \@tempswafalse
+ \scr@ifundefinedorrelax{Telefon}{\@tempswatrue}{%
+ \scr@ifundefinedorrelax{FAX}{\@tempswatrue}{%
+ \scr@ifundefinedorrelax{Email}{\@tempswatrue}{%
+ \scr@ifundefinedorrelax{Mobilefone}{\@tempswatrue}{%
+ }%
+ }%
+ }%
+ }%
+ \if@tempswa
+ \aftergroup\@scrsymbolsfalse
+%<class> \ClassWarning{scrlttr2}{%
+%<package> \PackageWarning{scrletter}{%
+ Option `symbolicnames'
+ ignorred.\MessageBreak
+ You've tried to set option `symbolicnames'\MessageBreak
+ after \string\begin{document}, but without\MessageBreak
+ loading package `marvosym' before.\MessageBreak
+ You should either switch on option\MessageBreak
+ `symbolicnames' before \string\begin{document}\MessageBreak
+ or load package `marvosym' in the document\MessageBreak
+ preamble to avoid this warning%
+ }%
+ \fi
+ \endgroup
+ \else
+% \end{macrocode}
+% \changes{v3.20}{2016/04/01}{Name der Klasse oder des Pakets ist für die
+% Ladeverzögerung von \textsf{marvosym} egal}^^A
+% \changes{v3.20}{2016/04/01}{Ladeverzögerung für das Paket
+% \textsf{marvosym} nur, wenn erforderlich und möglich}^^A
+% In der Dokumentpräambel kann das Paket \textsf{marvosym} selbst geladen
+% werden. Allerdings funktioniert das nicht, solange wir im Optionen-Abschnitt
+% sind. Also muss es ggf. verzögert werden. Wie lange es zu verzögern ist,
+% hängt davon ab, ob wir uns in einer Klasse, einem Paket oder sonst einer
+% Datei mit Optionen-Abschnitt befinden.
+% \begin{macrocode}
+ \ifx\@fileswith@pti@ns\@badrequireerror
+ \ifstr{\@currext}{\@clsextension}{%
+ \expandafter\AtEndOfClass
+ }{%
+ \ifstr{\@currext}{\@pksextension}{%
+ \expandafter\AtEndOfPackage
+ }{%
+ \expandafter\AtBeginDocument
+ }%
+ }%
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\RequirePackage{marvosym}}%
+ \fi
+ \fi
+}
+\KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package> scrletter.\scr@pkgextension
+}{symbolicnames}{false}%
+%</option&letter>
+%<*body>
+%<*letter>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{KOMAvar}{placeseparator}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{subjectseparator}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{ccseparator}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{enclseparator}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{backaddressseparator}
+% \changes{v2.8q}{2002/01/22}{Neu}^^A
+% \begin{KOMAvar}{phoneseparator}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}
+% \begin{KOMAvar}{faxseparator}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}
+% \begin{KOMAvar}{emailseparator}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}
+% \begin{KOMAvar}{urlseparator}
+% \changes{v2.8q}{2002/03/25}{Neu}^^A
+% \changes{v3.12}{2013/05/29}{Option \texttt{symbolicnames} wird beachtet}
+% \begin{KOMAvar}{mobilephoneseparator}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% \begin{KOMAvar}{zipcodeseparator}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% Daneben gibt es einige Trennzeichen. Diese haben ggf. als Ausgabenamen das
+% Feld, für das sie als Trennzeichen dienen. Die Trennzeichen sind
+% vordefiniert.
+% \begin{macrocode}
+\newkomavar[\usekomavar{place}]{placeseparator}
+\setkomavar{placeseparator}{,\nobreakspace}
+\newkomavar[\subjectname]{subjectseparator}
+\setkomavar{subjectseparator}{: }
+\newkomavar[\ccname]{ccseparator}
+\setkomavar{ccseparator}{: }
+\newkomavar[\enclname]{enclseparator}
+\setkomavar{enclseparator}{: }
+\newkomavar{backaddressseparator}
+\setkomavar{backaddressseparator}{,\nobreakspace}
+\newkomavar[\if@scrsymbols\Telefon\else\phonename\fi]{phoneseparator}
+\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\newkomavar[%
+ \if@scrsymbols\Mobilefone\else\mobilephonename\fi
+]{mobilephoneseparator}
+\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}}
+\newkomavar[\if@scrsymbols\FAX\else\faxname\fi]{faxseparator}
+\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\newkomavar[\if@scrsymbols\Email\else\emailname\fi]{emailseparator}
+\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\newkomavar[\if@scrsymbols\else\wwwname\fi]{urlseparator}
+\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi}
+\newkomavar{zipcodeseparator}
+\setkomavar{zipcodeseparator}{\,--\,}
+% \end{macrocode}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+%
+% \begin{KOMAvar}{fromname}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{fromaddress}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{fromemail}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \begin{KOMAvar}{fromurl}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \begin{KOMAvar}{frombank}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \begin{KOMAvar}{toname}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{toaddress}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{fromphone}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{frommobilephone}
+% \changes{v3.12}{2013/05/29}{Neu}^^A
+% \begin{KOMAvar}{fromfax}
+% \changes{v2.8q}{2002/01/28}{Neu}^^A
+% \begin{KOMAvar}{yourmail}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{yourref}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{myref}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{customer}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{invoice}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{subject}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{KOMAvar}{date}
+% \changes{v2.8q}{2002/01/16}{Neu}^^A
+% \begin{macro}{\date}
+% \changes{v3.17}{2015/03/05}{das Makro gibt eine Warnung aus}^^A
+% \begin{macro}{\scr@saved@date}
+% \changes{v3.17}{2015/03/05}{Neu (intern)}^^A
+% Desweiteren gibt es einige Variable, die auch einen Ausgabenamen haben, weil
+% dieser üblicherweise vorangestellt wird. Eine Besonderheit stellt dabei
+% \texttt{subject} dar. Der Ausgabename beinhaltet dabei nämlich auch die
+% Trennzeichen, die hinter dem Namen üblicherweise stehen. Diese sind wiederum
+% ein Variable, deren Name der Ausgabename des Feldes ist. Will man also nur
+% den Namen aber nicht die Trennzeichen ändern, so ändert man statt dem Namen
+% von \texttt{subject} den Namen von \texttt{subjectseparator}.
+%
+% Ähnlich ist es mit \texttt{toaddress} und \texttt{fromaddress}. Dort ist der
+% Wert von \texttt{toname} bzw. \texttt{fromname} der Ausgabename. Bei
+% \texttt{toaddress} und \texttt{fromaddress} wird davon jedoch intern kein
+% Gebrauch gemacht. Die Variable \texttt{date} wird bereits so vordefiniert,
+% dass auch weiterhin \cs{date} funktioniert.
+% \begin{macrocode}
+\newkomavar[\headfromname]{fromname}
+\newkomavar[\usekomavar{fromname}]{fromaddress}
+\newkomavar[\headtoname]{toname}
+\newkomavar[\usekomavar{toname}]{toaddress}
+\newkomavar[\usekomavar*{phoneseparator}%
+ \usekomavar{phoneseparator}]{fromphone}
+\newkomavar[\usekomavar*{mobilephoneseparator}%
+ \usekomavar{mobilephoneseparator}]{frommobilephone}
+\newkomavar[\usekomavar*{faxseparator}%
+ \usekomavar{faxseparator}]{fromfax}
+\newkomavar[\usekomavar*{emailseparator}%
+ \usekomavar{emailseparator}]{fromemail}
+\newkomavar[\usekomavar*{urlseparator}%
+ \usekomavar{urlseparator}]{fromurl}
+\newkomavar[\bankname]{frombank}
+\newkomavar[\yourrefname]{yourref}
+\newkomavar[\yourmailname]{yourmail}
+\newkomavar[\myrefname]{myref}
+\newkomavar[\customername]{customer}
+\newkomavar[\invoicename]{invoice}
+\newkomavar[\usekomavar*{subjectseparator}%
+ \usekomavar{subjectseparator}]{subject}
+\newkomavar[\datename]{date}
+\setkomavar{date}{\@date}
+\newcommand*{\scr@saved@date}{}
+\let\scr@saved@date\date
+\renewcommand*{\date}[1]{%
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package> \PackageWarning{scrletter}{%
+ \string\date\space changes the internal \string\LaTeX\space date
+ only.\MessageBreak
+ You should note that this changes the default\MessageBreak
+ value of variable `date' only as long as nobody\MessageBreak
+ uses `\string\setkomavar` to change the content of\MessageBreak
+ variable `date'.\MessageBreak
+ Therefore, usage of `\string\setkomavar' is recommended\MessageBreak
+ to change the letter's date%
+ }%
+ \scr@saved@date{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@saved@date
+% \end{macro}^^A \date
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+% \end{KOMAvar}
+%
+% \iffalse
+%</letter>
+% \fi
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-notepaper.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-pagestyles.dtx b/macros/latex/contrib/koma-script/source/scrkernel-pagestyles.dtx
new file mode 100644
index 0000000000..6d32dd6925
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-pagestyles.dtx
@@ -0,0 +1,903 @@
+% \CheckSum{678}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-pagestyles.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ----------------------------------------------------------------------
+% scrkernel-pagestyles.dtx
+% Copyright (c) Markus Kohm, 2002-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-pagestyles.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2640 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-pagestyles.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (page styles)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-pagestyles.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/25}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Seitenstil}
+%
+% Neben den Definitionen zum Seitenstil in dieser Datei gibt es auch
+% noch das Paket \textsf{scrpage2} (siehe \texttt{scrpage.dtx}).
+% Es\marginline{Geplant!} ist deshalb davon auszugehen, dass zukünftig die
+% Definitionen hier komplett durch \textsf{scrpage2} ersetzt werden und
+% \textsf{scrpage2} von den \KOMAScript-Klassen direkt geladen wird.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \subsection{Optionen für die Trennlinien in Kopf und Fuß}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \iffalse
+%<*class>
+% \fi
+%
+% \begin{option}{headsepline}
+% \changes{v2.95c}{2006/08/11}{BugFix: Argument bei
+% \cs{PassOptionsToPackage} vertauscht}^^A
+% \changes{v2.97c}{2007/04/19}{Option \texttt{headinclude} wird nicht
+% mehr an \textsf{typearea} geschickt}^^A
+% \changes{v2.98c}{2008/03/26}{Option \texttt{headinclude} wird gesetzt,
+% wobei kein Fehler ausgegeben wird, wenn sie nicht existiert.}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.12}{2013/03/05}{wenn \textsf{typearea} noch gar nicht geladen
+% ist, Option an dieses Paket schicken}^^A
+% \changes{v3.17}{2015/03/10}{Wert wird gespeichert}^^A
+% \changes{v3.18a}{2015/07/08}{BugFix: Argument bei
+% \cs{PassOptionsToPackage} erneut vertauscht}^^A
+% \changes{v3.20}{2015/12/12}{Optionenweiterleitung an \textsf{typearea}
+% entfernt}^^A
+% \begin{option}{headnosepline}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Der Kopfteil kann mit einer Linie vom Textbereich getrennt werden.
+% \begin{macro}{\if@hsl}
+% \begin{macro}{\@hsltrue}
+% \begin{macro}{\@hslfalse}
+% Die Entscheidung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\KOMA@ifkey{headsepline}{@hsl}%
+\KOMA@kav@add{.\KOMAClassFileName}{headsepline}{false}
+\KOMA@DeclareDeprecatedOption{headnosepline}{headsepline=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{option}{footsepline}
+% \changes{v2.0e}{1994/08/14}{bei \cs{PassOptionsToPackage} fehlte
+% die Paket-Angabe}^^A
+% \changes{v2.95c}{2006/08/11}{BugFix: Argument bei
+% \cs{PassOptionsToPackage} vertauscht}^^A
+% \changes{v2.97c}{2007/04/19}{Option \texttt{footinclude} wird nicht
+% mehr an \textsf{typearea} geschickt}^^A
+% \changes{v2.98c}{2008/03/26}{Option \texttt{footinclude} wird gesetzt,
+% wobei kein Fehler ausgegeben wird, wenn sie nicht existiert.}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.12}{2013/03/05}{wenn \textsf{typearea} noch gar nicht geladen
+% ist, Option an dieses Paket schicken}^^A
+% \changes{v3.12}{2013/08/26}{\cs{KOMA@options} durch
+% \cs{KOMAoptions} ersetzt}^^A
+% \changes{v3.12}{2013/08/26}{ggf. Satzspiegel neu berechnen}^^A
+% \changes{v3.13}{2014/07/07}{Satzspiegel wird nicht neu berechnet}^^A
+% \changes{v3.13}{2014/07/07}{\texttt{headinclude}-Fehler beseitigt}^^A
+% \changes{v3.17}{2015/03/10}{Wert wird gespeichert}^^A
+% \changes{v3.18a}{2015/07/08}{BugFix: Argument bei
+% \cs{PassOptionsToPackage} erneut vertauscht}^^A
+% \changes{v3.20}{2015/12/12}{Optionenweiterleitung an \textsf{typearea}
+% entfernt}^^A
+% \begin{option}{footnosepline}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Der Fußteil kann mit einer Linie vom Textbereich getrennt werden.
+% \begin{macro}{\if@fsl}
+% \begin{macro}{\@fsltrue}
+% \begin{macro}{\@fslfalse}
+% Die Entscheidung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\KOMA@ifkey{footsepline}{@fsl}%
+\KOMA@kav@add{.\KOMAClassFileName}{footsepline}{false}
+\KOMA@DeclareDeprecatedOption{footnosepline}{footsepline=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% In früheren Versionen wurde noch die Option \texttt{mpinclude} von
+% den Klassen ausgewertet. Dies geschieht jetzt nur noch in
+% \textsf{typearea}. Von den Klassen wird dann ggf. auf den dort
+% definierten Schalter zugegriffen. Dieses Vorgehen ist deshalb
+% sinnvoll, weil die Klassen ausnahmslos das \textsf{typearea}-Paket
+% laden.
+%
+%
+% \subsection{Optionen und Anweisungen für leere Seiten}
+%
+% \iffalse
+%</class>
+%<*class|extend>
+% \fi
+%
+% \begin{option}{cleardoublepage}
+% \changes{v2.95}{2004/08/24}{neuer Schalter}^^A
+% \changes{v2.96a}{2007/01/03}{Wert \texttt{current} sollte nun
+% funktionieren}^^A
+% \changes{v2.98c}{2008/03/06}{verwendet \cs{def} statt \cs{let}, damit die
+% Option \texttt{open} funktioniert}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/10}{Wert wird gespeichert}^^A
+% \begin{option}{cleardoubleempty}
+% \changes{v2.8a}{2001/06/18}{neue Option}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{cleardoubleplain}
+% \changes{v2.8a}{2001/06/18}{neue Option}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{cleardoublestandard}
+% \changes{v2.8a}{2001/06/18}{neue Option}^^A
+% \changes{v2.8q}{2001/11/06}{\cs{cleardoublestandardpage} statt
+% \cs{cleardoublestandard}}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macro}{\cleardoublestandardpage}
+% \changes{v2.8a}{2001/06/18}{neu}^^A
+% \changes{v2.96a}{2007/01/02}{korrekter Ersatzwert gesetzt}^^A
+% \begin{macro}{\cleardoubleusingstyle}
+% \changes{v2.95}{2004/08/24}{neu}^^A
+% \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} durch \cs{pagestyle}
+% ersetzt}
+% \begin{macro}{\cleardoubleemptypage}
+% \changes{v2.8a}{2001/06/18}{neu}^^A
+% \begin{macro}{\cleardoubleplainpage}
+% \changes{v2.8a}{2001/06/18}{neu}^^A
+% \begin{macro}{\cleardoubleoddpage}
+% \changes{v3.00}{2008/09/27}{neu}^^A
+% \begin{macro}{\cleardoubleoddstandardpage}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \begin{macro}{\cleardoubleoddusingstyle}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} durch \cs{pagestyle}
+% ersetzt}
+% \begin{macro}{\cleardoubleoddemptypage}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \begin{macro}{\cleardoubleoddplainpage}
+% \changes{v2.98c}{2001/06/18}{neu}^^A
+% \begin{macro}{\cleardoubleevenpage}
+% \changes{v3.00}{2008/09/27}{neu}^^A
+% \begin{macro}{\cleardoubleevenstandardpage}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \begin{macro}{\cleardoubleevenusingstyle}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \changes{v3.06a}{2010/09/17}{\cs{thispagestyle} durch \cs{pagestyle}
+% ersetzt}
+% \begin{macro}{\cleardoubleevenemptypage}
+% \changes{v2.98c}{2008/03/06}{neu}^^A
+% \begin{macro}{\cleardoubleevenplainpage}
+% \changes{v2.98c}{2001/06/18}{neu}^^A
+% \begin{macro}{\cleardoublepage}
+% \changes{v2.98c}{2001/06/18}{wird immer neu definiert}^^A
+% \changes{v2.98c}{2008/04/11}{neue Voreinstellung für Versionen nach 2.98c}^^A
+% Bei Verwendung von \texttt{twoside} und \texttt{openright} bei den
+% Klassen \textsf{scrbook} und \textsf{scrreprt} wird bei \cs{chapter}
+% implizit \cs{cleardoublepage} ausgeführt. Das führt ggf.
+% normalerweise zu einer linken Seite, auf der noch der Kolumnentitel
+% des vorherigen Kapitels und eine Seitenzahl steht. Häufig wird
+% stattdessen nur eine Seitenzahl oder auch gar nichts gewünscht. Es
+% soll also der Seitenstil \texttt{plain} oder \texttt{empty}
+% verwendet werden. Dies wird mit den Optionen ermöglicht. Dazu
+% werden auch gleich neue Makros definiert:
+% \begin{macrocode}
+\KOMA@key{cleardoublepage}{%
+ \begingroup%
+ \def\@tempc{%
+ \endgroup%
+ \KOMA@unknown@keyval{cleardoublepage}{#1}{%
+ 'current' or any defined pagestyle e.g. 'empty','plain', 'headings'}%
+ }%
+ \ifstr{#1}{current}{%
+ \def\@tempc{\endgroup%
+ \def\cleardoublepage{\cleardoublestandardpage}%
+ \def\cleardoubleoddpage{\cleardoubleoddstandardpage}%
+ \def\cleardoubleevenpage{\cleardoubleevenstandardpage}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+ }{cleardoublepage}{current}%
+ }%
+ }{%
+ \ifnotundefined{ps@#1}{%
+ \def\@tempc{\endgroup%
+ \def\cleardoublepage{\cleardoublepageusingstyle{#1}}%
+ \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}%
+ \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+ }{cleardoublepage}{#1}%
+ }%
+ }{%
+% \end{macrocode}
+% \changes{v3.13}{2014/03/01}{allow page style headings as value for class
+% option}^^A
+% At class loading time page style \texttt{headings} is still undefined, but
+% should be allowed as value for option \texttt{cleardoublepage}.
+% \begin{macrocode}
+%<*class>
+ \ifx\@currname\KOMAClassName
+ \ifx\@currext\@clsextension
+ \ifstr{#1}{headings}{%
+ \def\@tempc{\endgroup%
+ \def\cleardoublepage{\cleardoublepageusingstyle{#1}}%
+ \def\cleardoubleoddpage{\cleardoubleoddpageusingstyle{#1}}%
+ \def\cleardoubleevenpage{\cleardoubleevenpageusingstyle{#1}}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.\KOMAClassFileName}%
+ {cleardoublepage}{#1}%
+ }%
+ }{}%
+ \fi
+ \fi
+%</class>
+ }%
+ }%
+ \@tempc
+}
+\newcommand*{\cleardoubleoddstandardpage}{}
+\let\cleardoubleoddstandardpage=\cleardoublepage
+\newcommand*{\cleardoubleoddpageusingstyle}[1]{\clearpage
+ {\pagestyle{#1}\cleardoubleoddstandardpage}}
+\newcommand*{\cleardoubleoddemptypage}{\cleardoubleoddpageusingstyle{empty}}
+\newcommand*{\cleardoubleoddplainpage}{\cleardoubleoddpageusingstyle{plain}}
+\newcommand*{\cleardoubleevenstandardpage}{%
+ \clearpage
+ \if@twoside\ifodd\c@page
+ \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi
+ \fi\fi
+}
+\newcommand*{\cleardoubleevenpageusingstyle}[1]{\clearpage
+ {\pagestyle{#1}\cleardoubleevenstandardpage}}
+\newcommand*{\cleardoubleevenemptypage}{\cleardoubleevenpageusingstyle{empty}}
+\newcommand*{\cleardoubleevenplainpage}{\cleardoubleevenpageusingstyle{plain}}
+\newcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}
+\renewcommand*{\cleardoublepage}{%
+ \expandafter\ifnum \@nameuse{scr@v@2.98c}<\scr@compatibility\relax
+ \cleardoubleemptypage
+ \else
+ \cleardoublestandardpage
+ \fi
+}
+\KOMA@kav@add{.%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+}{cleardoublepage}{%
+ \expandafter\ifnum \scr@v@is@gt{2.98c}empty\else current\fi
+}
+% \end{macrocode}
+% Es ist zwar nicht unbedingt notwendig aber eventuell schöner, wenn der zuvor
+% hinzugefügte, bedingte Wert am Ende noch expandiert wird. Der Umstand ist
+% notwendig, weil während der Definition der Optionen die Kompatibilität noch
+% nicht bekannt ist. Diese ergibt sich erst während \cs{KOMAProcessOptions}.
+% \begin{macrocode}
+%<package&extend>\AtEndOfPackage{%
+%<class>\AtEndOfClass{%
+ \KOMAoptionOf[\expandafter\edef\expandafter\@tempa\@firstofone]%
+ {%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+ }{cleardoublepage}%
+ \KOMA@kav@removekey{.%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+ }{cleardoublepage}%
+ \KOMA@kav@xadd{.%
+%<package&extend> scrextend.\scr@pkgextension
+%<class> \KOMAClassFileName
+ }{cleardoublepage}{\@tempa}%
+}
+\newcommand*{\cleardoubleoddpage}{\cleardoubleoddemptypage}
+\newcommand*{\cleardoubleevenpage}{\cleardoubleevenemptypage}
+\newcommand*{\cleardoublepageusingstyle}[1]{\clearpage
+ {\pagestyle{#1}\cleardoublestandardpage}}
+\newcommand*{\cleardoubleemptypage}{\cleardoublepageusingstyle{empty}}
+\newcommand*{\cleardoubleplainpage}{\cleardoublepageusingstyle{plain}}
+%<*class>
+\KOMA@DeclareDeprecatedOption{cleardoubleempty}{cleardoublepage=empty}
+\KOMA@DeclareDeprecatedOption{cleardoubleplain}{cleardoublepage=plain}
+\KOMA@DeclareDeprecatedOption{cleardoublestandard}{cleardoublepage=current}
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+%
+% \iffalse
+%</class|extend>
+%</option>
+%<*body>
+%<*class>
+% \fi
+%
+%
+% \subsection{Befehle für den Kompatibilitätsmodus}
+%
+% \begin{macro}{\headincludeon}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\headincludeoff}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\headseplineon}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\headseplineoff}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\footincludeon}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\footincludeoff}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\footseplineon}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% \begin{macro}{\footseplineoff}
+% \changes{v2.95}{2004/07/21}{ersatzlos gestrichen}^^A
+% Da die \KOMAScript-Klassen ohnehin nicht mehr auf Kompatibilität zu
+% \textsf{Script~2.0} überprüft werden, wurde der Kompatibilitätsmodus
+% ersatzlos gestrichen. Dazu gehören nach über zehn Jahren nun auch diese
+% Anweisungen. Ehemals waren sie wie folgt definiert:
+% \begin{verbatim}
+% \if@compatibility
+% \newcommand*\headincludeon{\@hincltrue}
+% \newcommand*\headincludeoff{\@hinclfalse}
+% \newcommand*\headseplineon{\@hsltrue \@hincltrue}
+% \newcommand*\headseplineoff{\@hslfalse \@hinclfalse}
+% \newcommand*\footincludeon{\@fincltrue}
+% \newcommand*\footincludeoff{\@finclfalse}
+% \newcommand*\footseplineon{\@fsltrue \@fincltrue}
+% \newcommand*\footseplineoff{\@fslfalse \@finclfalse}
+% \fi
+% \end{verbatim}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Definition der Standardseitenstile}
+%
+% \changes{v2.0e}{1994/08/10}{bei \textsf{scrbook} gibt es kein
+% einseitiges Layout}
+% \changes{v2.3a}{1995/07/08}{da bei \textsf{book} seit Version 1.2v
+% die Option oneside wieder ein einseitiges Layout erzeugt, dieses
+% wieder eingebaut}
+%
+% \begin{macro}{\ps@plain}
+% \begin{macro}{\ps@myheadings}
+% \begin{macro}{\ps@headings}
+% Es wird das Aussehen der Kopf- und Fußzeilen für die
+% Standardseitenstile \texttt{empty}, \texttt{plain},
+% \texttt{headings} und \texttt{myheadings} festgelegt. Diese sind
+% außerdem abhängig davon, ob es sich um einseitiges oder beidseitiges
+% Layout handelt.
+%
+% Im Gegensatz zu den Seitenstilen der Standardklassen steht die
+% Seitennummer beim \KOMAScript{} Paket immer in der Fußzeile.
+% Außerdem sind Trennlinien zwischen Kopf- und Textbereich sowie
+% zwischen Text- und Fußbereich möglich.
+%
+% Die Kopfzeile wird auch nicht mehr in Großbuchstaben gewandelt.
+%
+% \changes{v2.2a}{1995/02/07}{bei \textsf{scrbook} und
+% \textsf{scrreprt} Punkt hinter der section-Nummer entfernt}
+% \changes{v2.2c}{1995/05/25}{Punkt hinter der Kapitelnummer in der
+% Kopfzeile entfernt}^^A
+% \changes{v2.2c}{1995/05/25}{Nummern in der Kopfzeile auf CJK
+% umgestellt}^^A
+% \changes{v2.4f}{1996/10/08}{\cs{strut} in der Kopfzeile
+% eingefügt}
+% \begin{macro}{\set@tempdima@hw}
+% \changes{v2.8q}{2002/03/28}{neu (intern)}^^A
+% Um nicht ständig das Gleiche schreiben zu müssen wird hier ein
+% internes Makro verwendet.
+% \begin{macrocode}
+\newcommand*{\set@tempdima@hw}{%
+ \setlength{\@tempdima}{\textwidth}%
+ \if@mincl
+ \addtolength{\@tempdima}{\marginparsep}%
+ \addtolength{\@tempdima}{\marginparwidth}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pnumfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% \begin{macro}{\headfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% \begin{macro}{\footfont}
+% \changes{v2.98c}{2008/02/14}{Neu}^^A
+% Kopf- und Fußzeile sowie die Seitennummer werden in einer speziellen
+% Schriftart gesetzt. Die drei Makros hier sind jedoch als interne
+% Makros zu betrachten.
+% \begin{macrocode}
+\newcommand*{\pnumfont}{\normalfont\normalcolor}
+\newcommand*{\headfont}{\normalfont\normalcolor\slshape}
+\newcommand*{\footfont}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{KOMAfont}{pagenumber}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{pagenumber}}
+% \begin{KOMAfont}{pagination}
+% \changes{v2.8o}{2001/09/14}{neues Alias-Element}^^A
+% \begin{KOMAfont}{pageheadfoot}
+% \changes{v2.98c}{2008/02/14}{neues Element}^^A
+% \begin{KOMAfont}{pagehead}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{pagehead}}
+% \changes{v2.98c}{2008/02/14}{neuer Alias}^^A
+% \begin{macro}{\scr@fnt@wrn@pagehead}
+% \changes{v2.8o}{2001/09/14}{neue Warnung für Element \texttt{pagehead}}
+% \changes{v2.97c}{2007/09/25}{Warnung geändert}^^A
+% \changes{v2.98c}{2008/02/14}{Warnung geändert}^^A
+% \begin{KOMAfont}{pagefoot}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{pagefoot}}
+% \changes{v2.98c}{2008/02/14}{nicht länger ein Alias}^^A
+% \begin{macro}{\scr@fnt@wrn@pagefoot}
+% \changes{v2.98c}{2008/02/14}{Neu (intern)}^^A
+% \changes{v3.13}{2014/01/13}{es wird \textsf{scrlayer-scrpage} an Stelle
+% von \textsf{scrpage2} empfohlen}^^A
+% Hier werden die Elemente definiert, deren Schriftart dann geändert
+% werden kann.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@pagenumber}{\pnumfont}
+\aliaskomafont{pagination}{pagenumber}
+\newcommand*{\scr@fnt@pageheadfoot}{\headfont}
+\aliaskomafont{pagehead}{pageheadfoot}
+%<*letter>
+\newcommand*{\scr@fnt@wrn@pagehead}[1]{%
+ `pagehead' is only an alias of `pageheadfoot'.\MessageBreak
+ Font of page foot will also be changed%
+}
+\newcommand*{\scr@fnt@pagefoot}{\footfont}
+%</letter>
+%<*!letter>
+\newcommand*{\scr@fnt@pagefoot}{\footfont}
+\newcommand*{\scr@fnt@wrn@pagefoot}[1]{%
+ This class does not use font element `pagefoot'!\MessageBreak
+ Maybe you should load package `scrlayer-scrpage',\MessageBreak
+ before using this element%
+}
+%</!letter>
+% \end{macrocode}
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+% \end{KOMAfont}
+% \end{KOMAfont}
+% \end{KOMAfont}
+%
+%
+% \begin{macro}{\pagemark}
+% \changes{v2.95}{2006/03/15}{nun für alle Klassen}^^A
+% \changes{v3.05}{2010/02/05}{eine zusätzliche Gruppe eingefügt}^^A
+% Das ist die Seitenmarke, die nun für alle Klassen verwendet wird. Damit
+% wird es leichter, \textsf{fancyhdr} statt \textsf{scrpage2} zu verwenden.
+% \begin{macro}{\letterpagemark}
+% \changes{v3.17}{2015/03/20}{Neu (nur Paket \textsl{scrletter})}^^A
+% Für das Paket wird eine abweichende Definition verwendet, die innerhalb von
+% \cs{begin{letter}} aktiviert wird.
+% \begin{macrocode}
+%</class>
+%<*class|letter>
+\newcommand*{%
+%<class> \pagemark
+%<package> \letterpagemark
+}{%
+ {\usekomafont{pagenumber}{%
+%<letter> \pagename\nobreakspace
+ \thepage}}}
+%</class|letter>
+%<*class>
+% \end{macrocode}
+% \end{macro}^^A \letterpagemark
+% \end{macro}^^A \pagemark
+%
+% Zurück zur Definition der Seitenstile. Hier gibt es erhebliche
+% Unterschiede zwischen der Briefklasse und den anderen Klassen. Das beginnt
+% schon damit, dass es spezielle Stile für doppelseitige Briefe nicht gibt.
+% \changes{v2.1b}{1994/12/31}{im einseitigen Seitenstil \cs{markboth} durch
+% \cs{markright} ersetzt}%
+% \changes{v2.2a}{1995/02/07}{im einseitigen Seitenstil bei
+% \textsf{scrartcl} und \texttt{oneside} \cs{subsectionmark} eingefügt}%
+% \changes{v2.2a}{1995/02/07}{im einseitigen Seitenstil bei
+% \textsf{scrreprt} und \texttt{oneside} \cs{sectionmark} eingefügt}%
+% \changes{v2.0e}{1994/08/17}{im einseitigen Seitenstil \cs{markboth} durch
+% \cs{markright} ersetzt}%
+% \changes{v2.97c}{2007/07/18}{Unterscheidung auf \texttt{twoside} so spät
+% wie möglich}%
+% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%
+% Hinweis: Die \emph{even}-Varianten werden im einseitigen Satz vom
+% \LaTeX-Kern selbst nicht verwendet. Es schadet also nicht, sie trotzdem
+% identisch zum doppelseitigen Satz zu definieren.
+% \begin{macrocode}
+%<*!letter>
+\renewcommand*{\ps@plain}{%
+ \renewcommand*{\@oddhead}{}%
+ \let\@evenhead\@oddhead
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\hfil\pagemark
+ \if@twoside\else\hfil\fi}}}}\hss}%
+}%
+\newcommand*{\ps@headings}{\let\@mkboth\markboth
+ \renewcommand*{\@evenhead}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}}%
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark
+ \if@twoside\else\hfil\fi}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}%
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\hfil\pagemark
+ \if@twoside\else\hfil\fi}}}}\hss}%
+%<*article>
+ \renewcommand*{\sectionmark}[1]{%
+ \if@twoside\expandafter\markboth\else\expandafter\markright\fi
+ {\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat}{}##1}}{}}%
+ \renewcommand*{\subsectionmark}[1]{%
+ \if@twoside
+ \markright{%
+ \MakeMarkcase{\ifnumbered{subsection}{\subsectionmarkformat}{}##1}%
+ }%
+ \fi
+ }%
+%</article>
+%<*report|book>
+ \renewcommand*{\chaptermark}[1]{%
+ \if@twoside\expandafter\markboth\else\expandafter\markright\fi
+ {\MakeMarkcase{\ifnumbered{chapter}{%
+%<book> \if@mainmatter
+ \chaptermarkformat
+%<book> \fi
+ }{}##1}%
+ }{}%
+ }%
+ \renewcommand*{\sectionmark}[1]{%
+ \if@twoside
+ \markright{\MakeMarkcase{\ifnumbered{section}{\sectionmarkformat}{}%
+ ##1}}%
+ \fi
+ }%
+%</report|book>
+}%
+\newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo
+ \renewcommand*{\@evenhead}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}}%
+ \renewcommand*{\@oddhead}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark
+ \if@twoside\else\hfil\fi}}%
+ \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}%
+ \renewcommand*{\@evenfoot}{%
+ \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\pagemark\hfil}}}}}%
+ \renewcommand*{\@oddfoot}{%
+ \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{%
+ \if@fsl \hrule \vskip 3\p@ \fi
+ \hb@xt@ \@tempdima{{\hfil\pagemark
+ \if@twoside\else\hfil\fi}}}}\hss}%
+%<!article> \renewcommand*{\chaptermark}[1]{}%
+%<article> \renewcommand*{\subsectionmark}[1]{}%
+ \renewcommand*{\sectionmark}[1]{}%
+}
+%</!letter>
+% \end{macrocode}
+% \changes{v3.08}{2010/10/28}{\cs{noindent} added before usage of variable
+% \texttt{nexthead} or \texttt{nextfoot}}
+% \begin{macrocode}
+%<*letter>
+\renewcommand*{\ps@plain}{%
+ \renewcommand*{\@oddhead}{%
+ \vbox{\vbox{\hsize=\textwidth\hbox to\textwidth{%
+ \parbox[b]{\textwidth}{\strut
+ \ifnum\@pageat>-1
+ \ifnum\@pageat<3
+ \ifcase\@pageat\raggedright\or\centering\or\raggedleft\fi
+ \pagemark
+ \else
+ \hfill
+ \fi
+ \else
+ \hfill
+ \fi
+ }%
+ }%
+ \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi
+ }%
+ }%
+ }%
+ \let\@evenhead\@oddhead%
+ \renewcommand*{\@oddfoot}{%
+ \parbox[t]{\textwidth}{%
+ \if@fsl
+ {%
+ \raggedright%
+ \vskip-\baselineskip\vskip.4pt
+ \hrulefill\\
+ }%
+ \fi
+ \ifnum\@pageat>2
+ \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
+ \strut\pagemark
+ \else
+ \hfill
+ \fi
+ }%
+ }%
+ \let\@evenfoot\@oddfoot
+}
+\newcommand*{\ps@headings}{\let\@mkboth\markboth
+ \renewcommand*{\@oddhead}{%
+ \vbox{%
+ \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\noindent
+ \usekomavar{nexthead}}}%
+ \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi%
+ }%
+ }%
+ \let\@evenhead\@oddhead
+ \renewcommand*{\@oddfoot}{%
+ \parbox[t]{\textwidth}{%
+ \if@fsl
+ {%
+ \raggedright%
+ \vskip-\baselineskip\vskip.4pt
+ \hrulefill\\
+ }%
+ \fi
+ \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\footfont\noindent
+ \usekomavar{nextfoot}}}%
+ }%
+ }%
+ \let\@evenfoot\@oddfoot
+}
+\newcommand*{\ps@myheadings}{%
+ \ps@headings
+ \let\@mkboth\@gobbletwo
+}
+%</letter>
+%</class>
+% \end{macrocode}
+% Das Briefpaket verwendet \textsf{scrlayer-scrpage} für die Seitenstile:
+% \begin{macrocode}
+%<*package&letter>
+\RequirePackage{scrlayer-scrpage}
+\newpairofpagestyles{letter}{%
+ \clearpairofpagestyles
+ \lehead[\ifnum\@pageat=\z@\pagemark\fi]%
+ {\usekomavar{nexthead}}%
+ \lohead[\ifnum\@pageat=\z@\pagemark\fi]%
+ {\usekomavar{nexthead}}%
+ \chead[\ifnum\@pageat=\@ne\pagemark\fi]%
+ {}%
+ \rehead[\ifnum\@pageat=\tw@\pagemark\fi]%
+ {}%
+ \rohead[\ifnum\@pageat=\tw@\pagemark\fi]%
+ {}%
+ \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]%
+ {\usekomavar{nextfoot}}%
+ \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]%
+ {\usekomavar{nextfoot}}%
+ \cfoot[\ifnum\@pageat=4 \pagemark\fi]%
+ {}%
+ \refoot[\ifnum\@pageat=5 \pagemark\fi]%
+ {}%
+ \rofoot[\ifnum\@pageat=5 \pagemark\fi]%
+ {}%
+}
+%</package&letter>
+%<*class>
+% \end{macrocode}
+% \end{macro}^^A \ps@headings
+% \end{macro}^^A \ps@myheadings
+% \end{macro}^^A \ps@plain
+%
+%
+% \subsection{Festlegung des Seitenstils auf besonderen Seiten}
+%
+% So etwas gibt es derzeit nicht für Briefe.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \begin{macro}{\titlepagestyle}
+% \changes{v2.8d}{2001/07/05}{neu}^^A
+% \begin{macro}{\partpagestyle}
+% \changes{v2.8d}{2001/07/05}{neu}^^A
+% \changes{v3.00}{2008/08/05}{nicht mehr in \textsf{scrartcl} definiert}
+% \changes{v3.18}{2015/06/10}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chapterpagestyle}
+% \changes{v2.8d}{2001/07/05}{neu}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\indexpagestyle}
+% \changes{v2.8d}{2001/07/05}{neu}^^A
+% Auf verschiedenen Seiten wird automatisch mit \cs{thispagestyle} auf
+% einen anderen Seitenstil umgeschaltet. Welcher das ist, ist in
+% diesem Makros abgelegt und kann bei Bedarf geändert werden.
+% Voreingestellt ist der in früheren Versionen fest verdrahtete
+% Seitenstil \texttt{plain}.
+% \begin{macrocode}
+\newcommand*{\titlepagestyle}{plain}
+\newcommand*{\indexpagestyle}{plain}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \subsection{Standardeinstellungen}
+%
+% Der voreingestellte Seitenstil hängt von der verwendeten Klasse ab:
+% \begin{macrocode}
+%<report|article|letter>\pagestyle{plain}
+%<book>\pagestyle{headings}
+% \end{macrocode}
+% Die Nummerierung erfolgt hingegen immer mit arabischen Zahlen:
+% \begin{macrocode}
+\pagenumbering{arabic}
+% \end{macrocode}
+%
+% \iffalse
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-pagestyles.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-paragraphs.dtx b/macros/latex/contrib/koma-script/source/scrkernel-paragraphs.dtx
new file mode 100644
index 0000000000..8263190419
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-paragraphs.dtx
@@ -0,0 +1,771 @@
+% \CheckSum{704}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-paragraphs.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-paragraphs.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-paragraphs.dtx 3064 2019-02-01 07:40:28Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-02-01 08:40:28 +0100 (Fri, 01 Feb 2019) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-paragraphs.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script
+ (paragraphs)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-paragraphs.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/25}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Absatzformatierung und -umbruch}
+%
+% In diesen Bereich gehört alles, was die Absatzformatierung selbst
+% betrifft. Dazu kommen dann noch einige Kleinigkeiten aus dem
+% Seitenumbruch.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+%
+% \iffalse
+%<*class>
+%<*option>
+% \fi
+%
+% \subsection{Optionen für das Absatzlayout}
+%
+% Ab Version 2.8i können wir auch mit Absatzlayouts umgehen, die einen
+% Absatzabstand statt einem Absatzeinzug verlangen. Gesteuert wird
+% dies über Optionen und Schalter.
+%
+% \begin{macro}{\setparsizes}
+% \changes{v2.95}{2004/11/05}{neues Macro}^^A
+% \changes{v3.17}{2015/03/10}{löscht diverse \texttt{parskip}-Einstellungen
+% aus der internen Liste}^^A
+% \changes{v3.19}{2015/07/29}{\cs{par@update} darf erst nach
+% \cs{begin{document}} wieder \cs{default@par@update} werden}^^A
+% Über dieses Makro wird die Änderung der Absatzparameter |\parskip|,
+% |\parindent|, |\parfillskip| gesetzt. Das erste Argument ist der Einzug, das
+% zweite der Abstand und das dritte die Füllung. Aktiviert werden die
+% Änderungen wie bei |\fontsize| über |\selectfont|. Obwohl in der
+% Voreinstellung absolut gearbeitet wird, wird hier intern
+% |\par@updaterelative| verwendet.
+% \begin{macrocode}
+\newcommand*{\setparsizes}[3]{%
+ \edef\f@parindent{\the\parindent}%
+ \edef\f@parskip{\the\parskip}%
+ \edef\f@parfillskip{\the\parfillskip}%
+ \def\scr@parindent{#1}%
+ \def\scr@parskip{#2}%
+ \def\scr@parfillskip{#3}%
+ \def\par@update{%
+ \if@atdocument\let\par@update\default@par@update\fi
+ \par@updaterelative
+ }%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{false}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{never}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full-}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full+}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{full*}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half-}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half+}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{half*}%
+}
+% \end{macrocode}
+% \begin{macro}{\f@parindent}
+% \changes{v2.95}{2004/11/05}{neu (intern)}^^A
+% Eingestellter Absatzeinzug.
+% \begin{macro}{\f@parskip}
+% \changes{v2.8i}{2001/07/22}{neu (intern)}^^A
+% \changes{v2.95}{2004/11/05}{Bedeutung geändert}^^A
+% Eingestellter Absatzabstand.
+% \begin{macro}{\f@parfillskip}
+% \changes{v2.8i}{2001/07/22}{neu (intern)}^^A
+% \changes{v2.95}{2004/11/05}{Bedeutung geändert}^^A
+% Eingestellte Absatzfüllung.
+%
+% Diese drei Werte werden automatisch bei der Font-Initialisierung eingestellt
+% und sind vorher ungültig!
+% \begin{macrocode}
+\newcommand*{\f@parindent}{\the\parindent}
+\newcommand*{\f@parskip}{\the\parskip}
+\newcommand*{\f@parfillskip}{\the\parfillskip}
+\AtEndOfClass{%
+ \edef\f@parindent{\the\parindent}%
+ \edef\f@parskip{\the\parskip}%
+ \edef\f@parfillskip{\the\parfillskip}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\par@update}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \changes{v3.20}{2016/02/22}{wird möglichst früh \cs{AtBeginDocument}
+% ausgeführt}^^A
+% Dieses Makro wird später in |\selectfont| die Änderung vornehmen.
+% \begin{macro}{\default@par@update}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% In der Voreinstellung findet keine Änderung statt. Dies wird jedoch durch
+% die Auswahl einer entsprechenden Option geändert.
+% \begin{macrocode}
+\newcommand*{\par@update}{}
+\let\par@update\relax
+\newcommand*{\default@par@update}{}
+\let\default@par@update\relax
+\AtBeginDocument{\par@update}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{parskip}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{primäre \textsf{keyval}-Option}^^A
+% \changes{v3.08}{2010/12/14}{neuer Wert \texttt{never}}^^A
+% \changes{v3.12}{2013/03/05}{Nutzung der Status-Signalisierung mit
+% \cs{FamilyKeyState}.}^^A
+% \changes{v3.17}{2015/03/10}{Wert wird gespeichert}^^A
+% \changes{v3.26b}{2019/02/01}{\cs{baselineskip} durch 1\cs{baselineskip}
+% ersetzt}^^A
+% \begin{option}{parskip-}
+% \changes{v2.8l}{2001/08/16}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{parskip+}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{parskip*}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{halfparskip}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{halfparskip-}
+% \changes{v2.8l}{2001/08/16}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{halfparskip+}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{halfparskip*}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{parindent}
+% \changes{v2.8i}{2001/07/22}{neue Option}^^A
+% \changes{v2.95}{2006/03/11}{obsolet}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} durch \cs{PackageInfoNoLine}
+% ersetzt}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Diese neun Optionen steuern die Umschaltung zwischen den Modi. Dabei
+% schalten alle \texttt{parskip}-Optionen einen Absatzabstand ein,
+% wohingegen die \texttt{parindent}-Option den Absatzeinzug
+% einschaltet. Die \texttt{+}-Variante sorgt außerdem dafür, dass
+% die letzte Zeile eines Absatzes maximal zu zwei Dritteln gefüllt
+% wird. Entsprechend sorgt die \texttt{*}-Variante für eine maximale
+% Füllung von drei Vierteln. Die normale Variante sorgt lediglich
+% für einen freien Raum von 1\,em. Die \texttt{-}-Variante sorgt für
+% überhaupt nichts.
+% \begin{macro}{\scr@parindent}
+% \changes{v2.95}{2004/11/05}{neu (intern)}^^A
+% Der einzustellende Absatzeinzug.
+% \begin{macro}{\scr@parskip}
+% \changes{v2.8i}{2001/07/22}{neu (intern)}^^A
+% \changes{v2.95}{2004/11/05}{Bedeutung geändert}^^A
+% Der einzustellende Absatzabstand.
+% \begin{macro}{\scr@parfillskip}
+% \changes{v2.8i}{2001/07/22}{neu (intern)}^^A
+% \changes{v2.95}{2004/11/05}{Bedeutung geändert}^^A
+% Die einzustellende Absatzfüllung.
+% \begin{macrocode}
+\newcommand*{\scr@parindent}{1em}
+\newcommand*{\scr@parskip}{\z@}
+\newcommand*{\scr@parfillskip}{\z@ \@plus 1fil}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Neu bei \KOMAScript-3 ist, dass die Optionen wie bei \textsf{scrlttr2} über
+% eine eingzige \textsf{keyval} gesetzt werden können.
+% \changes{v3.25}{2017/09/27}{typo fix in \cs{FamilyKeyStateUnknownValue}}
+% \begin{macrocode}
+\KOMA@key{parskip}[true]{%
+ \begingroup
+ \KOMA@set@ncmdkey{parskip}{@tempa}{%
+ {never}{0},%
+ {false}{1},{off}{1},{no}{1},%
+ {full-}{2},%
+ {half-}{3},%
+ {full}{4},{true}{4},{on}{4},{yes}{4},%
+ {half}{5},%
+ {full+}{6},%
+ {half+}{7},%
+ {full*}{8},%
+ {half*}{9},%
+ {relative}{10},%
+ {absolute}{11}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifcase\number\@tempa% 0
+ \endgroup
+ \setparsizes{1em}{\z@}{\z@ \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{never}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 1
+ \endgroup
+ \setparsizes{1em}{\z@ \@plus \p@}{\z@ \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 2
+ \endgroup
+ \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{%
+ \z@ \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full-}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 3
+ \endgroup
+ \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{%
+ \z@ \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half-}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 4
+ \endgroup
+ \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{%
+ 1em \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 5
+ \endgroup
+ \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{%
+ 1em \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 6
+ \endgroup
+ \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{%
+ .3333\linewidth\@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full+}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 7
+ \endgroup
+ \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{%
+ .3333\linewidth \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half+}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 8
+ \endgroup
+ \setparsizes{\z@}{1\baselineskip \@plus .1\baselineskip}{%
+ .25\linewidth \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{full*}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 9
+ \endgroup
+ \setparsizes{\z@}{.5\baselineskip \@plus .5\baselineskip}{%
+ .25\linewidth \@plus 1fil}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{half*}%
+ \if@atdocument\AfterKOMAoptions{\selectfont}\fi
+ \or% 10
+ \endgroup
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{relative}%
+ \ifx\par@updaterelative\undefined
+ \expandafter\AtEndOfClass
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \ifx\par@update\default@par@update
+ \let\par@update\par@updaterelative
+ \fi
+ \let\default@par@update=\par@updaterelative
+ }%
+ \or%11
+ \endgroup
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{absolute}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{parskip}{relative}%
+ \KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}%
+ \ifx\par@updaterelative\undefined
+ \expandafter\AtEndOfClass
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \ifx\par@update\default@par@update
+ \let\par@update\relax
+ \fi
+ \let\default@par@update=\relax
+ }%
+ \else% should never be
+ \endgroup
+ \fi
+ \else
+ \endgroup
+ \FamilyKeyStateUnknownValue
+ \fi
+}
+\KOMA@DeclareDeprecatedOption{parskip-}{parskip=full-}
+\KOMA@DeclareDeprecatedOption{parskip+}{parskip=full+}
+\KOMA@DeclareDeprecatedOption{parskip*}{parskip=full*}
+\KOMA@DeclareDeprecatedOption{halfparskip}{parskip=half}
+\KOMA@DeclareDeprecatedOption{halfparskip-}{parskip=half-}
+\KOMA@DeclareDeprecatedOption{halfparskip+}{parskip=half+}
+\KOMA@DeclareDeprecatedOption{halfparskip*}{parskip=half*}
+\KOMA@DeclareDeprecatedOption{parindent}{parskip=false}
+\KOMA@kav@add{.\KOMAClassFileName}{parskip}{false}
+\KOMA@kav@add{.\KOMAClassFileName}{parskip}{absolute}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% Hierfür\marginline{Geplant!} sollte eine keyval-Option mit Werten definiert
+% werden. Dazu dann neue Werte für absolutes oder relatives Verhalten.
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+%
+% \subsection{Abatzformatierung}
+%
+% \changes{v2.8i}{2001/07/22}{\cs{baselinestretch} wird nicht
+% umdefiniert}
+% \begin{Length}{lineskip}
+% \begin{Length}{normallineskip}
+% Minimaler Zeilenabstand:
+% \begin{macrocode}
+\setlength{\lineskip}{\p@}
+\setlength{\normallineskip}{\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% \begin{Length}{columnsep}
+% \begin{Length}{columnseprule}
+% Spaltenabstand und Spaltentrennlinie (nicht bei Briefen):
+% \begin{macrocode}
+%<*!letter>
+\setlength{\columnsep}{10\p@}
+\setlength{\columnseprule}{\z@}
+%</!letter>
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% \begin{macro}{\selectfont}
+% \changes{v2.95}{2004/11/05}{neue Änderung}^^A
+% Spätestens ab Version~3.0 soll die Möglichkeit bestehen, |\parskip|,
+% |\parindent| und |\parfillskip| mit der Schriftgröße automatisch
+% anzupassen. Dazu muss |\selectfont| entsprechend erweitert werden.
+% \begin{macro}{\scr@selectfont}
+% \changes{v2.95}{2006/04/14}{neue Erweiterung}^^A
+% \changes{v3.10}{2010/09/28}{\textsf{everysel}-Behandlung korrigiert}
+% \changes{v3.10}{2010/09/28}{\textsf{tracefnt}-Behandlung hinzugefügt}
+% \begin{macro}{\scr@new@selectfont}
+% \changes{v2.95}{2006/04/14}{neue Erweiterung}^^A
+% \changes{v3.10}{2010/09/28}{\textsf{everysel}-Behandlung korrigiert}
+% \changes{v3.10}{2010/09/28}{\textsf{tracefnt}-Behandlung hinzugefügt}
+% \changes{v3.10b}{2011/03/13}{\textsf{everysel} kann jetzt auch während
+% \cs{begin}\marg{document} geladen werden}
+% Damit das auch bei Verwendung des \textsf{everysel}-Pakets funktioniert,
+% wird hier zusätzliche Vorsorge getroffen.
+% \begin{macrocode}
+\newcommand*{\scr@selectfont}{}
+\expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname
+\BeforePackage{everysel}{%
+ \AtBeginDocument{%
+ \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont\else
+ \ClassWarningNoLine{\KOMAClassName}{discard change of \string\selectfont}%
+ \fi
+ \expandafter\let\csname selectfont \endcsname\scr@selectfont
+ }%
+}
+\AfterPackage{everysel}{%
+ \scr@ifundefinedorrelax{@EverySelectfont@Init}{%
+% \end{macrocode}
+% Jetzt gibt es zwei Möglichkeiten: Entweder wurde ein \textsf{everysel}
+% verwendet, bei dem alles anders funktioniert, oder es wurde während
+% \cs{begin}\marg{document} geladen. In beiden Fällen versuchen wir einen
+% direkten Patch:
+% \begin{macrocode}
+ \expandafter\ifx\csname selectfont \endcsname\scr@new@selectfont
+ \ClassWarningNoLine{\KOMAClassName}{%
+ \string\selectfont\space already changed}%
+ \else
+ \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
+ \expandafter\let\expandafter\scr@new@selectfont
+ \csname selectfont \endcsname
+ \fi
+ }{%
+% \end{macrocode}
+% In diesem Fall muss hingegen indirekt gepatcht werden.
+% \begin{macrocode}
+ \g@addto@macro\@EverySelectfont@Init{%
+ \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
+ \expandafter\let\expandafter\scr@new@selectfont
+ \csname selectfont \endcsname
+ }%
+ }%
+}
+\AfterPackage{tracefnt}{%
+ \expandafter\let\expandafter\scr@selectfont\csname selectfont \endcsname
+ \expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}%
+ \expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname
+}
+\expandafter\g@addto@macro\csname selectfont \endcsname{\par@update}
+\newcommand*{\scr@new@selectfont}{}
+\expandafter\let\expandafter\scr@new@selectfont\csname selectfont \endcsname
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\par@updaterelative}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% Die eigentliche Änderung verbirgt sich in |\par@updaterelative|. Ggf. wird
+% |\par@update| zu |\par@updaterelative|.
+% \begin{macrocode}
+\newcommand*{\par@updaterelative}{%
+% \end{macrocode}
+% Die neuen Werte werden nur gesetzt, wenn die bisherigen Werten den
+% erwarteten Werten entsprechen. Sonst lassen wir lieber die Finger davon,
+% weil wir dann davon ausgehen, dass der Anwender die so setzen wollte.
+% \begin{macrocode}
+ \begingroup
+ \edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent
+ \aftergroup\parindent@update
+%<*trace>
+ \else
+ \ClassInfo{\KOMAClassName}{\string\parindent\space not changed}%
+%</trace>
+ \fi
+ \edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip
+ \aftergroup\parskip@update
+%<*trace>
+ \else
+ \ClassInfo{\KOMAClassName}{\string\parskip\space not changed}%
+%</trace>
+ \fi
+ \edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip
+ \aftergroup\parfillskip@update
+%<*trace>
+ \else
+ \ClassInfo{\KOMAClassName}{\string\parfillskip\space not changed}%
+%</trace>
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\parindent@update}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \begin{macro}{\parskip@update}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \begin{macro}{\parfillskip@update}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% Ein paar Hilfsmakros.
+% \begin{macrocode}
+\newcommand*{\parindent@update}{%
+ \scr@defaultunits\parindent\scr@parindent
+ \begingroup
+ \let\@tempb\endgroup
+ \edef\@tempa{\the\parindent}\ifx\@tempa\f@parindent\else
+ \def\@tempb{\endgroup\edef\f@parindent{\the\parindent}}%
+%<trace> \ClassInfo{\KOMAClassName}{\string\parindent=\the\parindent}%
+ \fi
+ \@tempb
+}
+\newcommand*{\parskip@update}{%
+ \scr@defaultunits\parskip\scr@parskip
+ \begingroup
+ \let\@tempb\endgroup
+ \edef\@tempa{\the\parskip}\ifx\@tempa\f@parskip\else
+ \def\@tempb{\endgroup\edef\f@parskip{\the\parskip}}%
+%<trace> \ClassInfo{\KOMAClassName}{\string\parskip=\the\parskip}%
+ \fi
+ \@tempb
+}
+\newcommand*{\parfillskip@update}{%
+ \scr@defaultunits\parfillskip\scr@parfillskip
+ \begingroup
+ \let\@tempb\endgroup
+ \edef\@tempa{\the\parfillskip}\ifx\@tempa\f@parfillskip\else
+ \def\@tempb{\endgroup\edef\f@parfillskip{\the\parfillskip}}%
+%<trace> \ClassInfo{\KOMAClassName}{\string\parfillskip=\the\parfillskip}%
+ \fi
+ \@tempb
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@defaultunits}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \changes{v3.19}{2015/08/22}{\cs{setlength} wegen \textsf{tikz}
+% eliminiert}^^A
+% \begin{macro}{\scr@@defaultunits}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \begin{macro}{\scr@@@defaultunits}
+% \changes{v2.95}{2004/11/05}{neues internes Macro}^^A
+% \changes{v3.19}{2015/08/22}{\cs{setlength} und \cs{addtolength} wegen
+% \textsf{tikz} eliminiert}^^A
+% Damit |\par@updaterelative| überhaupt funktionieren kann, wird
+% |\scr@defaultunits| benötigt. Dieses Makro arbeitet prinzipiell wie
+% |\@defaultunits| bekommt aber Dimension bzw. Skip als erstes und den Wert
+% als zweites Argument. Als Besonderheit dürften im Wert auch andere
+% Dimensions bzw. Skips vor und nach \texttt{plus} und \texttt{minus}
+% verwendet werden. Es sind also auch Angaben der Art "`\texttt{12 plus 1
+% minus 2}"' sowie
+% "`\texttt{\string\baselineskip\string\@plus.1\string\baselineskip}"'
+% gültig.
+% \begin{macrocode}
+\newcommand*{\scr@defaultunits}[2]{%
+ \begingroup
+ \edef\@tempa{#2}%
+ \expandafter\scr@@defaultunits\expandafter#1\@tempa plusplus\@nnil
+ \edef\@tempa{\noexpand\endgroup\noexpand#1\the\glueexpr #1\relax}%
+ \@tempa
+}
+\newcommand*{\scr@@defaultunits}{}
+\def\scr@@defaultunits#1#2plus#3plus#4\@nnil{%
+ \ifx\relax#3\relax
+ \scr@@@defaultunits#1{}#2minusminus\@nnil
+ \else
+ \scr@@@defaultunits#1{#2}#3minusminus\@nnil
+ \fi
+}
+\newcommand*{\scr@@@defaultunits}{}
+\def\scr@@@defaultunits#1#2#3minus#4minus#5\@nnil{%
+ \ifx\relax#2\relax
+ \@defaultunits\@tempskipa#3pt\relax\@nnil
+ #1\@tempskipa
+ \else
+ \@defaultunits\@tempskipa\z@\@plus#3pt\relax\@nnil
+ #1\@tempskipa
+ \@defaultunits\@tempskipa#2pt\relax\@nnil
+ \advance#1\@tempskipa
+ \fi
+ \ifx\relax#4\relax\else
+ \@defaultunits\@tempskipa\z@\@minus #4pt\relax\@nnil
+ \advance#1\@tempskipa
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Absatzabstand und Absatzeinzug:
+% \begin{macro}{\@list@extra}
+% \changes{v2.8q}{2001/11/06}{neu (intern)}^^A
+% \changes{v2.95c}{2006/08/03}{\cs{parsep} fixed}
+% \begin{macro}{\add@extra@listi}
+% \changes{v2.9h}{2002/09/03}{neu (intern)}^^A
+% Ab Version 2.8i wird hier optionsabhängig gearbeitet. Dabei müssen
+% auch die Befehle bei der Umschaltung der Schriftgröße für \cs{small}
+% und \cs{footnotesize} geändert werden.
+% \begin{macrocode}
+\newcommand*{\@list@extra}{%
+ \ifdim\parskip>\z@\topsep\z@\parsep\parskip\itemsep\z@\fi
+}
+\newcommand*{\add@extra@listi}[1]{%
+ \expandafter\let\csname #1@listi\endcsname=\@listi
+ \def\@listi{\csname #1@listi\endcsname\@list@extra}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \iffalse
+%</body>
+%</class>
+%<*class|clo>
+%<*body|10pt|11pt|12pt>
+% \fi
+% \changes{v2.98c}{2008/03/26}{Umstellung für die pt-Dateien}^^A
+% \changes{v3.17}{2015/03/25}{Aktualisierung der Absatzeinstellungen}^^A
+% \begin{macro}{\@listi}
+% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
+% ersetzt}
+% \changes{v3.01}{2008/11/13}{\cs{@listi} wird auf jeden Fall ausgeführt}
+% \begin{macro}{\@listI}
+% \begin{macro}{\@listii}
+% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
+% ersetzt}
+% \begin{macro}{\@listiii}
+% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
+% ersetzt}
+% \begin{macro}{\footnotesize}
+% \changes{v2.9h}{2002/09/03}{etwas robuster}^^A
+% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
+% ersetzt}
+% \begin{macro}{\small}
+% \changes{v2.9h}{2002/09/03}{etwas robuster}^^A
+% \changes{v2.98c}{2008/03/27}{\cs{g@addto@macro} durch \cs{l@addto@macro}
+% ersetzt}
+% \begin{macrocode}
+%<10pt|11pt|12pt>\@ifundefined{@list@extra}{}{%
+%<10pt|11pt|12pt> \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi
+ \l@addto@macro{\@listi}{\@list@extra}%
+ \let\@listI=\@listi
+ \l@addto@macro{\@listii}{\@list@extra}%
+ \l@addto@macro{\@listiii}{\@list@extra}%
+ \l@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}}%
+ \l@addto@macro{\small}{\protect\add@extra@listi{sml}}%
+%<10pt|11pt|12pt>}
+%<10pt|11pt|12pt>\@listi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \iffalse
+%</body|10pt|11pt|12pt>
+%</class|clo>
+%<*class>
+%<*body>
+% \fi
+%
+%
+% \subsection{Umbruchsteuerung}
+%
+% Für die Umbruchsteuerung sind einige Penalties zuständig. Diese sind
+% im \LaTeX-Kern definiert. Leider sind \cs{@lowpenalty},
+% \cs{@medpenalty} und \cs{@highpenalty} aber nicht mit
+% Voreinstellungen versehen, besitzen einheitlich die Voreinstellung
+% 0. Hier werden deshalb die Werte aus den Standardklassen übernommen:
+% \begin{macrocode}
+\@lowpenalty = 51
+\@medpenalty =151
+\@highpenalty =301
+% \end{macrocode}
+%
+%
+% \iffalse
+%</body>
+%</class>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-paragraphs.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-pseudolengths.dtx b/macros/latex/contrib/koma-script/source/scrkernel-pseudolengths.dtx
new file mode 100644
index 0000000000..228fa2258a
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-pseudolengths.dtx
@@ -0,0 +1,349 @@
+% \CheckSum{212}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-pseudolengths.dtx
+% Copyright (c) Markus Kohm, 2006-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-pseudolengths.dtx
+% Copyright (c) Markus Kohm, 2006-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-pseudolengths.dtx 2980 2018-04-26 12:06:09Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-04-26 14:06:09 +0200 (Thu, 26 Apr 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1872 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-pseudolengths.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (pseudo length)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-pseudolengths.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/22}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{Pseudo-Längen für Briefe}
+%
+% Pseudo-Längen wurden für \textsf{scrlttr2} eingeführt, um Längenregister zu
+% sparen. Tatsächlich hat das \LaTeX-Team kurz darauf entschieden, dass
+% künftig \eTeX{} die empfohlene Maschine für \LaTeX{} sein soll, wodurch die
+% Einführung von Pseudo-Längen nachträglich überflüssig wurde. Es gibt sie nun
+% aber einmal und aus Gründen der Kompatiblität wird es sie für Briefe auch
+% weiterhin geben.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Option}
+% Das Prinzip der Pseudo-Längen wird nicht durch Optionen beeinflusst.
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Anweisungen für Pseudo-Längen}
+%
+% Zu Berechnung der Feldpositionen werden verschiedene Dimensions-Variablen
+% benötigt. Um jedoch nicht unnötig viele Längenregister zu verbrauchen, wird
+% hier mit einer Pseudo-Längen-Arithmetik gearbeitet.
+%
+% \begin{macro}{\@newplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \changes{v2.8q}{2001/10/06}{Kompatibilität zu \texttt{scrlettr.cls}^^A
+% aufgegeben}
+% Dieses Makro definiert eine neue Pseude-Länge und setzt sie auf den
+% Wert 0. Eine Pseudo-Länge ist ein Makro, das eine Länge enthält.
+% \begin{macrocode}
+\newcommand*{\@newplength}[1]{%
+ \@ifundefined{ltr@len@#1}{%
+ \expandafter\let\csname ltr@len@#1\endcsname=\z@%
+ }{%
+%<class> \ClassError{scrlttr2%
+%<package> \PackageError{scrletter%
+ }{%
+ pseudo-length \expandafter\string\csname ltr@len@#1\endcsname
+ already defined%
+ }{%
+ You tried to define a new pseudo-length using
+ \string\@newplength\MessageBreak
+ which is already defined. Try another name or
+ better\MessageBreak
+ Don't use this KOMA-Script internal macro}%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newplength}
+% \changes{v3.26}{2018/04/26}{Neu}
+% Anweisung auf Anwenderebene verfügbar.
+% \begin{macrocode}
+\newcommand*{\newplength}{\@newplength}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\useplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \changes{v2.97c}{2007/09/17}{\cs{dimexpr} statt \cs{number} verwendet,
+% wenn \eTeX{} verwendet wird}
+% \changes{v3.25}{2017/11/29}{\eTeX{} ist zwingend}
+% \changes{v3.25}{2017/11/29}{\cs{dimexpr} durch \cs{glueexpr} ersetzt}^^A
+% Natürlich muss auf eine solche Pseudo-Länge auch wieder lesend
+% zugeriffen werden können. Wir definieren dies hier so, dass es
+% außerdem möglich ist, ein Vorzeichen oder einen Faktor zu verwenden. Dafür
+% wird allerdings \eTeX{} benötigt.
+% \begin{macrocode}
+\newcommand*{\useplength}[1]{%
+ \glueexpr \csname ltr@len@#1\endcsname\relax}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setlengthtoplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Eine echte Länge soll auf das Vielfache einer Pseudo-Länge gesetzt
+% werden. Dabei wird der Faktor als optionaler Parameter übergeben.
+% Der erste obligatorische Parameter ist die Länge, der zweite
+% obligatorische Parameter ist die Pseudo-Länge.
+% \begin{macrocode}
+\newcommand*{\setlengthtoplength}[3][]{%
+ \setlength{#2}{\useplength{#3}}%
+ \setlength{#2}{#1#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@setplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \changes{v3.25}{2017/11/29}{\cs{glueexpr} eingefügt}^^A
+% Natürlich wird ebenfalls eine Möglichkeit benötigt, einer
+% Pseudo-Länge einen Wert zuzuweisen. Dies geschieht unter lokaler
+% Anwendung einer Länge, damit sichergestellt ist, dass eine
+% Längenangabe übergeben wird. Dabei wird das zuvor definierte Makro
+% \cs{setlengthtoplength} verwendet.
+% \begin{macrocode}
+\newcommand*{\@setplength}[3][]{%
+ \begingroup%
+ \setlength{\@tempskipa}{\glueexpr #3\relax}%
+ \setlength{\@tempskipa}{#1\@tempskipa}%
+ \edef\@tempa{\noexpand\endgroup%
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
+ }%
+ \@tempa
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setplength}
+% \changes{v3.26}{2018/04/26}{Neu}^^A
+% Anweisung auf Anwenderebene verfügbar.
+% \begin{macrocode}
+\newcommand*{\setplength}{\@setplength}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setplengthtowidth}
+% \changes{v3.26}{2018/04/26}{Neu}
+% \begin{macro}{\setplengthtoheight}
+% \changes{v3.26}{2018/04/26}{Neu}
+% \begin{macro}{\setplengthtodepth}
+% \changes{v3.26}{2018/04/26}{Neu}
+% \begin{macro}{\setplengthtototalheight}
+% \changes{v3.26}{2018/04/26}{Neu}
+% Man kann auch die Breite, Höhe, Tiefe oder Höhe + Tiefe eines Inhalts
+% verwenden, um eine Pseudolänge zu definieren.
+% \begin{macrocode}
+\newcommand*{\setplengthtowidth}[3][]{%
+ \begingroup
+ \settowidth{\@tempdima}{#3}%
+ \setlength{\@tempdima}{#1\@tempdima}%
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}%
+ }%
+ \@tempa
+}
+\newcommand*{\setplengthtoheight}[3][]{%
+ \begingroup
+ \settoheight{\@tempdima}{#3}%
+ \setlength{\@tempdima}{#1\@tempdima}%
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}%
+ }%
+ \@tempa
+}
+\newcommand*{\setplengthtodepth}[3][]{%
+ \begingroup
+ \settodepth{\@tempdima}{#3}%
+ \setlength{\@tempdima}{#1\@tempdima}%
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}%
+ }%
+ \@tempa
+}
+\newcommand*{\setplengthtototalheight}[3][]{%
+ \begingroup
+ \settoheight{\@tempdima}{#3}%
+ \settodepth{\@tempdimb}{#3}%
+ \addtolength{\@tempdima}{\@tempdimb}%
+ \setlength{\@tempdima}{#1\@tempdima}%
+ \edef\@tempa{\noexpand\endgroup
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempdima}%
+ }%
+ \@tempa
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addtolengthplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% Wenn wir schon dabei sind, soll statt dem Setzen auch das Addieren
+% funktionieren. Hier ist die Erschwernis, dass der Faktor nur für
+% die Pseudo-Länge und nicht für das Endergebnis gelten soll.
+% \begin{macrocode}
+\newcommand*{\addtolengthplength}[3][]{%
+ \begingroup%
+ \setlengthtoplength[{#1}]{\@tempskipa}{#3}%
+ \edef\@tempa{\endgroup%
+ \noexpand\addtolength{#2}{\the\@tempskipa}}%
+ \@tempa%
+ }
+% \end{macrocode}
+%
+% \begin{macro}{\@addtoplength}
+% \changes{v2.8q}{2001/10/06}{Neu}^^A
+% \changes{v3.25}{2017/11/29}{\cs{glueexpr} eingefügt}^^A
+% Ebenso wird ein Makro benötigt, mit dem zu einer Pseudo-Länge das
+% Vielfache eines Wertes addiert werden kann.
+% \begin{macrocode}
+\newcommand*{\@addtoplength}[3][]{%
+ \begingroup%
+ \setlength{\@tempskipa}{\glueexpr #3\relax}%
+ \setlength{\@tempskipa}{#1\@tempskipa}%
+ \addtolengthplength{\@tempskipa}{#2}%
+ \edef\@tempa{\noexpand\endgroup%
+ \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
+ \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
+ }%
+ \@tempa%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addtoplength}
+% \changes{v3.26}{2018/04/26}{Neu}
+% Anweisung auf Anwenderebene verfügbar.
+% \begin{macrocode}
+\newcommand*{\addtoplength}{\@addtoplength}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-pseudolengths.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx b/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx
new file mode 100644
index 0000000000..ab6314b290
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-sections.dtx
@@ -0,0 +1,6304 @@
+% \CheckSum{4526}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-sections.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-sections.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-sections.dtx 3063 2019-02-01 07:39:11Z kohm $
+% The runs of run-time file generation:
+%<preidentify>%%% (run: preidentify)
+% - everything that is needed before selfidentification of resulting files
+% (unused)
+%<identify>%%% (run: identify)
+% - everything that is needed for selfidentification of resulting files
+% (unused)
+%<prepare>%%% (run: prepare)
+% - everything that is needed to define options
+%<option>%%% (run: option)
+% - definition of options
+%<execoption>%%% (run: execoption)
+% - initial option executions up to \KOMAProcessOptions
+%<body>%%% (run: body)
+% - everything, that should be done after \KOMAProcessOptions
+%<exit>%%% (run: exit)
+% - everything, that should be done immediately before leaving the file
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-02-01 08:39:11 +0100 (Fri, 01 Feb 2019) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3063 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-sections.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source (disposition)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-sections.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.3h}{1996/01/20}{Größenbefehle in den Überschriften
+% variabilisiert}^^A
+% \changes{v2.95}{2002/06/26}{erste Version aus der Aufteilung von
+% \texttt{scrclass.dtx}}^^A
+% \changes{v3.15}{2014/12/09}{Code in Datei \texttt{scrkernel-section} komplett
+% umsortiert}^^A
+%
+% \section{Gliederung}
+%
+% Zur Gliederung gehören neben den üblichen Gliederungsbefehlen
+% \cs{chapter} \dots \cs{subparagraph} auch alle Optionen und Befehle,
+% die diese Gliederung beeinflussen. Eingeschränkt gehören auch die
+% Befehle dazu, die Inhaltsverzeichniseinträge zu den
+% Gliederungsbefehlen erzeugen oder unmittelbar formatieren. Diese
+% Entscheidung wurde getroffen, weil die Zusammengehörigkeit eher hier
+% gesehen wird, als bei den Verzeichnissen selbst.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeasf} entfernt}
+%
+% Die Briefklasse hat keine derartige Gliederung. Beim Briefpaket wird die
+% Gliederung über die verwendete Klasse bestimmt.
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \subsection{Vakatseiten}
+%
+% Bei \textsf{scrbook} und \textsf{scrreprt} gibt es im doppelseitigen Modus
+% ggf. Vakatseiten.
+%
+% \begin{option}{open}
+% \changes{v2.98c}{2008/03/06}{Neue Option}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A
+% Bei \textsf{scrreprt} und \textsf{scrbook} kann per Option eingestellt
+% werden, ob beispielsweise Kapitel nur auf linken oder rechten Seiten
+% beginnen dürfen oder auf jeder Seite.
+% \begin{macro}{\if@openright}
+% \begin{macro}{\@openrighttrue}
+% \begin{macro}{\@openrightfalse}
+% Der Zustand wird dann in einem Schalter und durch umdefinieren von
+% \cs{cleardoublestandardpage} gespeichert. Die Voreinstellungen sind je nach
+% Klasse unterschiedlich.
+% \begin{macrocode}
+%<*class>
+%<*book|report>
+%<*prepare>
+\newif\if@openright
+%<report>\@openrightfalse
+%<book>\@openrighttrue
+%</prepare>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+%<*option>
+\KOMA@key{open}{%
+ \KOMA@set@ncmdkey{open}{@tempa}{%
+ {any}{0},%
+ {right}{1},%
+ {left}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{open}{#1}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openany}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openright}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{openleft}%
+ \ifcase \@tempa\relax
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{openany}%
+ \@openrightfalse
+ \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
+ \or
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{openright}%
+ \@openrighttrue
+ \renewcommand*{\cleardoublestandardpage}{\cleardoubleoddstandardpage}%
+ \or
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{openleft}%
+ \@openrighttrue
+ \renewcommand*{\cleardoublestandardpage}{\cleardoubleevenstandardpage}%
+ \fi
+ \fi
+}
+%</option>
+% \end{macrocode}
+% \changes{v3.18}{2015/05/22}{indirekte Initialisierung}
+% Die Initialisierung erfolgt indirekt über Option \texttt{headings}.
+% \begin{macrocode}
+%<*execoption>
+%<book>\KOMAExecuteOptions{headings=openright}
+%<report>\KOMAExecuteOptions{headings=openany}
+%</execoption>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{openright}
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% \begin{option}{openany}
+% \changes{v2.98c}{2008/03/05}{obsolet}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% Zusätzlich gibt es einige Standardoptionen, die natürlich auch mit
+% \KOMAScript{} funktionieren sollen.
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareStandardOption{openright}{open=right}
+\KOMA@DeclareStandardOption{openany}{open=any}
+%</option>
+%</book|report>
+%</class>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \subsection{Behandlung von Gliederungsnummern}
+%
+% Die Möglichkeit der Nummerierung ist allen Ebenen bis auf \cs{minisec}
+% gemeinsam.
+%
+% \begin{option}{numbers}
+% \changes{v2.98c}{2008/03/07}{Neue Option}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A
+% Dies ist die zentrale Option zur Konfiguration der Nummerierung. Dabei geht
+% es primär um die Gliederungsnummern, es sind jedoch auch davon abgeleitete
+% Nummern betroffen.
+% \begin{macro}{\scr@dotchangeatdocument}
+% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A
+% Da die Umschaltung zwischen automatischem Endpunkt, immer Endpunkt und kein
+% Endpunkt unbedingt \emph{vor} \cs{begin{document}} erfolgen muss, wird eine
+% Fehlermeldung ausgegeben, falls das jemand zu einem späteren Zeitpunkt
+% probiert. Umschaltmöglichkeiten sind auf die Klassen beschränkt.
+% \begin{macrocode}
+%<*class>
+%<*prepare>
+\newcommand*{\scr@dotchangeatdocument}[1]{%
+ \ClassError{\KOMAClassName}{%
+ change of end dot feature after \string\begin{document}%
+ }{%
+ You've tried to set `numbers=#1' after \string\begin{document},\MessageBreak
+ but this option is only allowed at the document preamble.\MessageBreak
+ See KOMA-Script manual for more information about.%
+ }%
+}
+%</prepare>
+% \end{macrocode}
+% \end{macro}
+% Normalerweise wird automatisch entschieden, ob Nummern mit einem
+% Punkt enden müssen oder nicht. Um dies abzuschalten, muss nur der
+% gewünschte Zustand eingeschaltet und die Umschaltmöglichkeit
+% entfernt werden. Die Umschaltung kann jedoch nicht direkt erfolgen, sondern
+% erfolgt zeitverzögert in \cs{begin{document}}. Hier wird nur das Makro
+% umgeschaltet, das dort verwendet wird.
+% \begin{macrocode}
+%<*option>
+\KOMA@key{numbers}{%
+ \KOMA@set@ncmdkey{numbers}{@tempa}{%
+ {autoendperiod}{0},{autoenddot}{0},{auto}{0},%
+ {endperiod}{1},{withendperiod}{1},{periodatend}{1},%
+ {enddot}{1},{withenddot}{1},{dotatend}{1},%
+ {noendperiod}{2},{noperiodatend}{2},%
+ {noenddot}{2},{nodotatend}{2}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{numbers}{#1}%
+ \ifcase \@tempa\relax
+ \if@atdocument\scr@dotchangeatdocument{#1}\else
+ \let\scr@altsecnumhook\@empty
+ \fi
+ \or
+ \if@atdocument\scr@dotchangeatdocument{#1}\else
+ \let\scr@altsecnumhook\scr@altsecnumhooktrue
+ \fi
+ \or
+ \if@atdocument\scr@dotchangeatdocument{#1}\else
+ \let\scr@altsecnumhook\scr@altsecnumhookfalse
+ \fi
+ \fi
+ \fi
+}
+%</option>
+%<execoption>\KOMAExecuteOptions{numbers=autoendperiod}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{pointednumbers}
+% \changes{v2.3h}{1995/01/19}{neue Option}^^A
+% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so,
+% bei \texttt{pointednumber} wird explizit ein Fehler gemeldet}
+% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformatfalse} wird
+% direkt auf \cs{@altsecnumformattrue} gesetzt}
+% \changes{v2.98c}{2008/03/07}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{option}{pointlessnumbers}
+% \changes{v2.3h}{1995/01/19}{neue Option}^^A
+% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so,
+% bei \texttt{pointlessnumber} wird explizit ein Fehler gemeldet}
+% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformattrue} wird direkt
+% auf \cs{@altsecnumformatfalse} gesetzt}
+% \changes{v2.98c}{2008/03/07}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Diese Optionens sind nun wirklich veraltet und sollten nicht mehr verwendet
+% werden!
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareDeprecatedOption{pointednumbers}{numbers=enddot}
+\KOMA@DeclareDeprecatedOption{pointlessnumbers}{numbers=noenddot}
+%</option>
+% \end{macrocode}
+% Übrigens weiß ich, wie blödsinnig die Namen der Optionen sind. Aber
+% das ist nun nicht mehr zu ändern.
+% \end{option}
+% \end{option}
+%
+% \begin{Counter}{secnumdepth}
+% Dieser Zähler gibt an, bis zu welcher Ebene die Gliederungsüberschriften
+% nummeriert werden.
+% \begin{macrocode}
+%<*body>
+%<book|report>\setcounter{secnumdepth}{2}
+%<article>\setcounter{secnumdepth}{3}
+%</body>
+% \end{macrocode}
+% \end{Counter}
+%
+%
+% \begin{macro}{\ifnumbered}
+% \changes{v3.12}{2013/12/16}{new command}^^A
+% \begin{macro}{\ifunnumbered}
+% \changes{v3.12}{2013/12/16}{new command}^^A
+% Test, ob eine Gliederungsebene (\texttt{\#1}) nummeriert wird. Falls das der
+% Fall ist, wird das zweite Argument verwendet, sonst das dritte. Bei
+% \cs{ifunnumbered} ist die Logik genau vertauscht.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\ifnumbered}[1]{%
+ \scr@ifundefinedorrelax{#1numdepth}{%
+ \@secondoftwo
+ }{%
+ \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }%
+}
+\newcommand*{\ifunnumbered}[1]{%
+ \scr@ifundefinedorrelax{#1numdepth}{%
+ \@firstoftwo
+ }{%
+ \expandafter\ifnum \@nameuse{#1numdepth}>\c@secnumdepth
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+}
+%</body>
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{\KOMAScript-eigene Befehle zur Definition von
+% Gliederungsbefehlen}
+%
+% Die Funktionalität des \LaTeX-Kerns genügt \KOMAScript{} bei der Definition
+% von Gliederungsebenen nicht.
+%
+% \begin{macro}{\scr@activate@xsection}
+% \changes{v3.10}{2011/08/30}{neu (intern)}^^A
+% Hiermit wird die Erweiterung für das optionale Argument der
+% Gliederungsbefehle eingeschaltet.
+% \begin{macro}{\scr@osectarg}^^A
+% Für die nicht per \cs{@startsection} implementierten Befehle geht das
+% einfach durch Umschaltung von \cs{scr@osectarg}. Bei 0 ist die Aktivierung
+% nicht aktiv. Bei 1 landet das optionale Argument hingegen im Kopf, bei 2
+% im Inhaltsverzeichnis und bei 3 in beiden. Die Voreinstellung ist deshalb
+% ebenfalls 0.
+%
+% Da Option \texttt{headings} darauf zurückgreift, müssen die beiden Makros
+% bereits vorab definiert werden.
+% \begin{macrocode}
+%<*class>
+%<*prepare>
+\newcommand*{\scr@osectarg}{0}
+\newcommand*{\scr@activate@xsection}[1]{%
+ \renewcommand*{\scr@osectarg}{#1}%
+}
+%</prepare>
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\if@altsecnumformat}
+% \changes{v2.3c}{1995/08/06}{neuer Schalter}^^A
+% \begin{macro}{\@altsecnumformattrue}
+% \begin{macro}{\@altsecnumformatfalse}
+% Dieses Schalter wird für die Umschaltung auf Duden-Regel~6 bei der
+% Numerierung benötigt.
+% \begin{macro}{\if@autodot}
+% \changes{v2.8e}{2001/07/10}{neuer Schalter}^^A
+% \begin{macro}{\@autodottrue}
+% \changes{v3.00}{2008/10/07}{arbeitet nun gobal}^^A
+% \begin{macro}{\@autodotfalse}
+% \changes{v3.00}{2008/10/07}{arbeitet nun gobal}^^A
+% Nach Duden 20.~Auflage, Regel~5 wird in der Gliederung kein Punkt gesetzt,
+% wenn diese rein mit arabischen Zahlen erfolgt. Nach Regel~6 folgt jedoch ein
+% Punkt, wenn die Gliederung auch römische Zahlen oder Großbuchstaben
+% enthält. Aus Konsistenzgründen muss der Punkt in diesem Fall immer gesetzt
+% werden. \KOMAScript{} bietet dafür einen Automatismus.
+%
+% Damit die Umschaltung auch wieder zurück auf Regel~5 automatisch erfolgen
+% kann, wird ein zweiter Schalter benötigt.
+% \begin{macrocode}
+%<*class>
+%<*prepare>
+\newif\if@altsecnumformat\@altsecnumformatfalse
+\newif\if@autodot
+\renewcommand*{\@autodottrue}{\global\let\if@autodot\iftrue}
+\renewcommand*{\@autodotfalse}{\global\let\if@autodot\iffalse}
+\@autodotfalse
+%</prepare>
+% \end{macrocode}
+% Dabei soll die Umstellung des Punktes beim zweiten TeX-Lauf bereits am
+% Anfang aktiv sein. Deshalb wird die Information am Ende in die aux-Datei
+% geschrieben.
+% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben}^^A
+% \changes{v2.95}{2004/01/15}{es wird erst unmittelbar vor dem Schließen
+% der Haupt-aux-Datei in diese geschrieben}^^A
+% \changes{v2.96a}{2006/12/07}{es wird \cs{immediate} geschrieben}^^A
+% \changes{v3.20}{2016/03/25}{es wird \cs{csname}\dots\cs{endcsname}
+% verwendet}^^A
+% \begin{macrocode}
+%<*body>
+\BeforeClosingMainAux{%
+ \if@autodot\if@filesw\immediate\write\@mainaux{%
+ \string\global\string\csname\space @altsecnumformattrue\string\endcsname}%
+ \fi\fi}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@autodotfalse
+% \end{macro}^^A \@autodottrue
+% \end{macro}^^A \if@autodot
+% \end{macro}^^A \@altsecnumformatfalse
+% \end{macro}^^A \@altsecnumformattrue
+% \end{macro}^^A \if@altsecnumformat
+%
+% \begin{macro}{\scr@altsecnumhook}
+% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A
+% \begin{macro}{\scr@altsecnumhooktrue}
+% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A
+% \begin{macro}{\scr@altsecnumhookfalse}
+% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A
+% Es werden drei Hilfsmakros benötigt. Das erste davon wird bei
+% \cs{begin{document}} ausgeführt (nachdem die \texttt{aux}-Datei gelesen
+% wurde!) und schaltet den gewünschten Zustand ein. Dazu wird es per Option
+% ggf. auf die eine oder andere Bedeutung umgeschaltet. Im Auto-Fall ist es
+% übrigens \cs{@empty}.
+% \begin{macrocode}
+%<*prepare>
+\newcommand*{\scr@altsecnumhook}{}
+\AtBeginDocument{\scr@altsecnumhook}
+\newcommand*{\scr@altsecnumhooktrue}{%
+ \@altsecnumformattrue\global\let\@altsecnumformatfalse\@altsecnumformattrue
+}
+\newcommand*{\scr@altsecnumhookfalse}{%
+ \@altsecnumformatfalse\global\let\@altsecnumformattrue\@altsecnumformatfalse
+}
+%</prepare>
+% \end{macrocode}
+% \end{macro}^^A \scr@altsecnumhooktrue
+% \end{macro}^^A \scr@altsecnumhookfalse
+% \end{macro}^^A \scr@altsecnumhook
+%
+% \begin{macro}{\@maybeautodot}
+% \changes{v2.8e}{2001/07/10}{neu (intern)}^^A
+% Ob der automatische Punkt aktiviert werden muss, wird aufgrund der
+% Darstellung eines Zählers entschieden. Diese wird dem Makro als Argument
+% übergeben (\cs{thepart}, \cs{thechapter} etc.). Durch Verwendung einer
+% Gruppe, werden alle Definitionen lokal gehalten.
+% \begin{macrocode}
+%<*body>
+\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup%
+ \expandafter\@@maybeautodot #1\@stop\endgroup\fi
+}
+% \end{macrocode}
+% \begin{macro}{\@@maybeautodot}
+% \changes{v2.8e}{2001/07/10}{neu (intern)}^^A
+% \changes{v3.00}{2008/10/07}{neuerdings überflüssige \cs{aftergroup}^^A
+% entfernt}^^A
+% Die expandierte Darstellung wird dann auf Darstellungsbefehle für
+% Zähler gescannt.
+% \begin{macrocode}
+\newcommand*{\@@maybeautodot}[1]{%
+ \ifx #1\@stop\let\@@maybeautodot\relax
+ \else
+ \ifx #1\Alph \@autodottrue\fi
+ \ifx #1\alph \@autodottrue\fi
+ \ifx #1\Roman \@autodottrue\fi
+ \ifx #1\roman \@autodottrue\fi
+ \ifx #1\@Alph \@autodottrue\fi
+ \ifx #1\@alph \@autodottrue\fi
+ \ifx #1\@Roman \@autodottrue\fi
+ \ifx #1\@roman \@autodottrue\fi
+ \ifx #1\romannumeral \@autodottrue\fi
+ \fi
+ \@@maybeautodot
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@@maybeautodot
+% \end{macro}^^A \@maybeautodot
+%
+% \begin{macro}{\autodot}
+% \changes{v2.7}{2001/01/03}{neu}^^A
+% Dieses Makro setzt dann den Punkt nach Bedarf.
+% \begin{macrocode}
+%<*body>
+\newcommand*\autodot{\if@altsecnumformat.\fi}
+%</body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@startsection}
+% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
+% der Erweiterung für das optionale Argument}^^A
+% \begin{macro}{\scr@startsection}
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \changes{v3.18}{2015/05/22}{verwende \cs{numexpr} für Argument 2}
+% \changes{v3.18}{2015/05/22}{verwende \cs{glueexpr} für Argument 3--5}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \changes{v3.26}{2018/09/18}{\texttt{afterindent}-Einstellung wird
+% beachtet}^^A
+% \begin{macro}{\scr@saved@startsection}
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \changes{v3.20}{2016/04/12}{Tests funktionieren jetzt auch mit
+% \textsf{amsgen}}^^A
+% \KOMAScript{} benötigt ein eigenes \cs{@startsection}, weil die
+% Funktionalität des \cs{@startsection} aus dem \LaTeX-Kern nicht
+% genügt. Bevor allerdings die eigene Definition in Angriff genommen wird,
+% muss kontrolliert werden, ob die aufgefundene Definition noch den
+% Erwartungen entspricht. Alles andere wäre ein deutlicher Hinweis, dass
+% eventuell in \KOMAScript{} ebenfalls eine Anpassung vorzunehmen wäre.
+% Da es offenbar Leute gibt, die bei der Umdefinierung von \cs{section}
+% etc. mit Hilfe von \cs{@startsection} Leerzeichen zwischen die Argumente
+% packen und gleichzeitig \textsf{amsgen} verwenden, sorgen wir hier dafür,
+% dass dann trotzdem noch die Warnungen funktionieren und nebenbei der Code
+% mit etwas Glück sogar ebenfalls. Dazu ist es notwendig, dass die Version von
+% \cs{@startsection} gespeichert wird, die \cs{kernel@ifstar} verwendet.
+% \begin{macro}{\startsection@sectionname}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@secnumdepth}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@indent}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@beforeskip}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@afterskip}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\if@startsection@runin}
+% \changes{v3.26}{2018/05/14}{Neue Anweisung für Paketautoren}^^A
+% \begin{macro}{\startsection@afterindent}
+% \changes{v3.26}{2018/09/18}{Neue Anweisung für Paketautoren}^^A
+% Ab dem Zeitpunkt des Aufrufs des Hooks \cs{scr@startsection@hook} sind die
+% Makros \cs{startsection@sectionname}, \cs{startsection@secnumdepth},
+% \cs{startsection@indent}, \cs{startsection@beforeskip},
+% \cs{if@startsection@indentafter}, \cs{startsection@afterskip},
+% \cs{if@startsection@runin} und \cs{startsection@afterindent} gültig. Die
+% \cs{\dots indent}- und \cs{\dots skip}-Makros sind dabei skips (oder
+% \cs{glueexpr}) und somit wie Längen verwendbar. Bei den beiden \cs{\dots
+% skip}-Makros handelt es sich bereits um effektive Abstände, es wurden also
+% etwaige Fallunterscheidungen bezüglich des Vorzeichens des Arguments für
+% \cs{scr@startsection} bereits aufgelöst. Das \cs{if\dots}-Makro ist entweder
+% \cs{iftrue} oder \cs{iffalse}. Ein \cs{if@startsection@afterindent}
+% existiert nicht, weil \cs{if@afterindent} zu dem Zeitpunkt bereits gültig
+% ist. Außerhalb von \cs{scr@startsection} ist die Verwendung dieser Macros
+% unzulässig, bzw. das Ergebnis unspezifiziert. Ebenso sind diese Macros als
+% \emph{read-only} zu betrachten!
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@saved@startsection}[6]{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \kernel@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+\def\reserved@a#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+\ifcase \ifx\@startsection\scr@saved@startsection 0
+ \else
+ \ifx\@startsection\reserved@a 0
+ \else 1
+ \fi
+ \fi
+ \newcommand*{\scr@startsection}[6]{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa \glueexpr #4\relax
+ \@ifundefined{scr@#1@afterindent}{%
+ \def\startsection@afterindent##1##2##3{##3}%
+ }{%
+ \expandafter\let\expandafter\startsection@afterindent
+ \csname scr@#1@afterindent\endcsname
+ }%
+ \startsection@afterindent{\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ }%
+ \def\startsection@sectionname{#1}%
+ \def\startsection@secnumdepth{\numexpr #2\relax}%
+ \def\startsection@indent{\glueexpr #3\relax}%
+ \let\startsection@beforeskip\@tempskipa
+ \@ifundefined{scr@#1@runin}{%
+ \def\scr@sect@runin##1##2##3{##3}%
+ }{%
+ \expandafter\let\expandafter\scr@sect@runin
+ \csname scr@#1@runin\endcsname
+ }%
+ \scr@sect@runin{%
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iftrue\endcsname
+ }{%
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iffalse\endcsname
+ }{%
+ \ifdim \glueexpr #5\relax <\z@
+ \def\startsection@afterskip{\glueexpr (#3)*\m@ne\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iftrue\endcsname
+ \else
+ \def\startsection@afterskip{\glueexpr #3\relax}%
+ \expandafter\let\csname if@startsection@runin\expandafter\endcsname
+ \csname iffalse\endcsname
+ \fi
+ }%
+ \csname scr@startsection@hook\endcsname
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \kernel@ifstar {%
+ \csname scr@preto@ssect@hook\endcsname
+ \def\scr@s@ct@@nn@m@{#1}%
+ \@ssect{\glueexpr #3\relax}{\glueexpr #4\relax}{\glueexpr #5\relax}{#6}%
+ }{%
+ \csname scr@preto@sect@hook\endcsname
+ \scr@section@dblarg{%
+ \@sect{#1}{\numexpr #2\relax}{\glueexpr #3\relax}{\glueexpr #4\relax}%
+ {\glueexpr #5\relax}{#6}%
+ }%
+ }%
+ }
+\else
+ \ClassWarningNoLine{\KOMAClassName}{`\string\@startsection' has been
+ changed.\MessageBreak
+ \KOMAClassName\space needs it's own Definition of
+ `\string\@startsection'\MessageBreak
+ to provide extended features for the optional argument\MessageBreak
+ of `\string\section` etc.\MessageBreak
+ Generally it defines `\string\@startsection` completely new\MessageBreak
+ to achieve this. Because of the unexpected definition\MessageBreak
+ an alternative approach will be used.\MessageBreak
+ If this fails and if there isn't a new release of\MessageBreak
+ KOMA-Script that fixes the problem, please\MessageBreak
+ send a report to the KOMA-Script author.\MessageBreak
+ Note, that this alternative approach does not\MessageBreak
+ execute `\string\scr@startsection@hook',\MessageBreak
+ `\string\scr@preto@ssect@hook', or
+ `\string\scr@preto@sect@hook'\MessageBreak
+ and does always use `runin=bysign' and\MessageBreak
+ `afterindent=bysign'%
+ }%
+ \let\scr@saved@startsection\@startsection
+ \newcommand*{\scr@startsection}[6]{%
+ \kernel@ifstar {%
+ \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
+ {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}*%
+ }{%
+ \scr@section@dblarg{%
+ \scr@saved@startsection{#1}{\numexpr #2\relax}{\glueexpr #3\relax}%
+ {\glueexpr #4\relax}{\glueexpr #5\relax}{#6}}%
+ }%
+ }
+\fi
+% \end{macrocode}
+% \begin{macro}{\scr@sect@runin}
+% \changes{v3.26}{2018/09/18}{neu (intern)}
+% Diese Hilfsanweisung nimmt die Fallunterscheidung vor, ob eine Spitzmarke
+% oder eine freistehende Überschrift oder abhängig vom Vorzeichen des
+% Abstandes danach eine Spitzmarke oder eine freistehende Überschrift gesetzt
+% werden soll. Die Voreinstellung ist sicherheitshalber letzteres. Diese
+% Voreinstellung wird auch bei jedem Aufruf von \cs{@xsect} erneut
+% erzwungen. Auch in \cs{scr@startsection} wird die Anweisung angepasst.
+% \begin{macrocode}
+\newcommand*{\scr@sect@runin}[3]{#3}
+% \end{macrocode}
+% \end{macro}^^A \scr@sect@runin
+% \begin{macro}{\scr@startsection@ulm@error}
+% \changes{v3.26}{2018/05/14}{Neue interne Anweisung}
+% Ich bin mir bewusst, dass die Fehlerausgabe, die hier definiert wird,
+% vermutlich nie aufgerufen wird, da ein Paketautor hierzu eines der Makros
+% bereits vor dem ersten \cs{scr@startsection}-Befehl verwenden
+% müsste. Trotzdem verwende ich es quasi zwecks Initialisierung.
+% \begin{macrocode}
+\newcommand*{\scr@startsection@ulm@error}[1]{%
+ \ClassError{\KOMAClassName}{%
+ \string#1 undefined outside of \string\scr@startsection
+ }{%
+ A KOMA-Script macro for package authors have been used outside
+ the\MessageBreak
+ specified definition scope.\MessageBreak
+ See `scrkernel-sections.dtx' for more information.%
+ }%
+}
+\newcommand*\startsection@sectionname{%
+ \scr@startsection@ulm@error\startsection@sectionname}
+\newcommand*\startsection@secnumdepth{%
+ \scr@startsection@ulm@error\startsection@secnumdepth}
+\newcommand*\startsection@indent{%
+ \scr@startsection@ulm@error\startsection@indent}
+\newcommand*\startsection@beforeskip{%
+ \scr@startsection@ulm@error\startsection@beforeskip}
+\newcommand*\startsection@afterskip{%
+ \scr@startsection@ulm@error\startsection@afterskip}
+\newcommand*{\if@startsection@runin}{%
+ \scr@startsection@ulm@error\if@startsection@runin}
+\newif\if@startsection@runin
+\newcommand*\startsection@afterindent{%
+ \scr@startsection@ulm@error\startsection@afterindent}
+% \end{macrocode}
+% \end{macro}^^A \scr@startsection@ulm@error
+% \end{macro}^^A \scr@startsection@afterindent
+% \end{macro}^^A \if@startsection@runin
+% \end{macro}^^A \startsection@afterskip
+% \end{macro}^^A \startsection@beforeskip
+% \end{macro}^^A \startsection@indent
+% \end{macro}^^A \startsection@secnumdepth
+% \end{macro}^^A \startsection@sectionname
+% \begin{macro}{\At@startsection}
+% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A
+% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
+% eigenem \cs{scr@startsection} an der Stelle eingefügt werden, an der
+% \cs{if@afterindent} und \cs{@tempskipa} bereits korrekt eingestellt sind,
+% aber noch bevor \emph{pentaly} und Abstand gesetzt wurden bzw. \cs{everypar}
+% gelöscht wurde.
+% \begin{macrocode}
+\newcommand*{\At@startsection}[1]{%
+ \@ifundefined{scr@startsection@hook}{\let\scr@startsection@hook\@empty}{}%
+ \l@addto@macro{\scr@startsection@hook}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \At@startsection
+% \begin{macro}{\Before@ssect}
+% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A
+% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
+% eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@ssect}
+% eingefügt werden.
+% \begin{macrocode}
+\newcommand*{\Before@ssect}[1]{%
+ \@ifundefined{scr@preto@ssect@hook}{\let\scr@preto@ssect@hook\@empty}{}%
+ \l@addto@macro{\scr@preto@ssect@hook}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Before@ssect
+% \begin{macro}{\Before@sect}
+% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren}^^A
+% Mit Hilfe dieser Anweisung kann Code in die Ausführung von \KOMAScript's
+% eigenem \cs{scr@startsection} unmittelbar vor dem Aufruf von \cs{@sect}
+% eingefügt werden.
+% \begin{macrocode}
+\newcommand*{\Before@sect}[1]{%
+ \@ifundefined{scr@preto@sect@hook}{\let\scr@preto@sect@hook\@empty}{}%
+ \l@addto@macro{\scr@preto@sect@hook}{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \Before@sect
+% \begin{macro}{\scr@section@dblarg}
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \begin{macro}{\scr@section@xdblarg}
+% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A
+% \begin{macrocode}
+\newcommand{\scr@section@dblarg}[1]{%
+ \kernel@ifnextchar[%]
+ {#1}%
+ {\scr@section@xdblarg{#1}}%
+}
+\newcommand{\scr@section@xdblarg}[2]{%
+ \begingroup
+ \edef\reserved@a{%
+ \unexpanded{\endgroup\let\scr@osectarg\z@#1[{#2}]{#2}\def\scr@osectarg}%
+ {\scr@osectarg}}%
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}%^^A \scr@section@xdblarg
+% \end{macro}%^^A \scr@section@dblarg
+% \end{macro}%^^A \scr@saved@startsection
+% \end{macro}%^^A \scr@startsection
+% \begin{macrocode}
+\renewcommand*{\@startsection}{%
+ \ifnum \scr@osectarg=\z@
+ \expandafter\scr@saved@startsection
+ \else
+ \expandafter\scr@startsection
+ \fi
+}
+%</body>
+% \end{macrocode}
+% \end{macro}%^^A \@startsection
+%
+%
+% \begin{macro}{\SecDef}
+% \changes{v3.13a}{2014/09/11}{neue Anweisung}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\secdef}
+% \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung
+% der Erweiterung für das optionale Argument}^^A
+% \begin{macrocode}
+%<*body>
+\newcommand*{\SecDef}[2]{\kernel@ifstar{#2}{\scr@section@dblarg{#1}}}
+\CheckCommand*{\secdef}[2]{\@ifstar{#2}{\@dblarg{#1}}}
+\let\secdef\SecDef
+%</body>
+% \end{macrocode}
+% \end{macro}%^^A \secdef
+% \end{macro}%^^A \SecDef
+% \begin{macro}{\scr@sect}
+% \changes{v3.10}{2011/08/30}{entfällt}^^A
+% \begin{macro}{\@sect}
+% \changes{v3.10}{2011/08/30}{Vollständige Neudefinition zur Realisierung
+% der Erweiterung für das optionale Argument}^^A
+% \changes{v3.10}{2011/08/30}{Verwendung von
+% \cs{csname}\texttt{add\#1tocentry}\cs{endcsname}
+% bzw. \cs{addtocentrydefault}}^^A
+% \changes{v3.18}{2015/05/20}{definiert \cs{IfUsePrefixLine} intern}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \cs{numexpr} für Argument 2}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \cs{gluexpr} für Argument
+% 3--5}^^A
+% \changes{v3.19}{2015/07/17}{Verwendung von \cs{sectionlinesformat} und
+% \cs{sectioncatchphraseformat}}^^A
+% Damit auch alle mit \cs{@startsection} definierten Gliederungsebenen
+% bei der Entscheidung berücksichtigt werden, muss ein internes Makro
+% des \LaTeX-Kerns erweitert werden. Für die Ebenen \cs{part} und
+% \cs{chapter} wird der Test direkt in der Definition der Befehle
+% erledigt.
+% \begin{macrocode}
+%<*body>
+\def\@tempa#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\ifx\@sect\@tempa\else
+ \ClassWarning{\KOMAClassName}{%
+ Unexpected definition of \string\@sect!\MessageBreak
+ Please send information about this to\MessageBreak
+ the KOMA-Script maintainer!\MessageBreak
+ Maybe LaTeX will be broken by the redefinition\MessageBreak
+ of \string\@sect\space}%
+\fi
+%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro \string\@sect}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum \scr@osectarg=\z@
+ \@scr@tempswafalse
+ \else
+ \scr@istest#7=\@nil
+ \fi
+ \if@scr@tempswa
+ \setkeys{KOMAarg.section}{tocentry={#8},head={#8},reference={#8},#7}%
+ \else
+ \ifcase \scr@osectarg\relax
+ \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#8},head={#7},reference={#8}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#7},head={#8},reference={#7}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#7},head={#7},reference={#7}}%
+ \fi
+ \fi
+% \end{macrocode}
+% \changes{v3.23}{2017/02/04}{support for \textsf{minitoc}}^^A
+% \changes{v3.23}{2017/03/24}{usage of \cs{ext@figure} and \cs{ext@table}
+% instead of \texttt{lof} and \texttt{lot}}^^A
+% Add the \texttt{xsect} entries to \texttt{lof} and \texttt{lot}. Note, that
+% the original \cs{starsection} tests of \textsf{minitoc} has a bug and so
+% does not work. And the original code of \textsf{minitoc} has hard coded
+% \texttt{lot} and \texttt{lof} instead of \cs{ext@figure} and
+% \cs{ext@table}. This is a fixed one:
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@mt@saved@sect}{}{%
+ \expandafter\ifx\csname #1\endcsname\section
+ \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}%
+ \addcontentsline{\ext@table}{xsect}{\@currenttocentry}%
+ \fi
+ \expandafter\ifx\csname #1\endcsname\starsection\relax
+ \addcontentsline{\ext@figure}{xsect}{\@currenttocentry}%
+ \addcontentsline{\ext@table}{xsect}{\@currenttocentry}%
+ \fi
+ }%
+ \let\IfUsePrefixLine\@secondoftwo
+ \ifnum \numexpr #2\relax>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \expandafter\@maybeautodot\csname the#1\endcsname
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+% \end{macrocode}
+% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}^^A
+% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
+% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
+% nicht.
+% \begin{macrocode}
+ \ifdim
+ \scr@sect@runin{\z@}{\p@}{\glueexpr #5\relax}>\z@
+ \begingroup
+% \end{macrocode}
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
+% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
+% der Fontänderung.
+% \begin{macrocode}
+ #6{\nobreak\interlinepenalty \@M
+ \sectionlinesformat{#1}{\glueexpr #3\relax}\@svsec{#8}\@@par}%
+ \endgroup
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ head=`\detokenize\expandafter{\@currentheadentry}'\MessageBreak
+ tocentry=`\detokenize\expandafter{\@currenttocentry}'\MessageBreak
+ reference=`\detokenize\expandafter{\@currentlabelname}'}%
+%</trace>
+ \expandafter\csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
+ \ifx\@currenttocentry\@empty\else
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \expandafter\global\expandafter\def
+ \csname add#1tocentry\endcsname##1##2{%
+ \addtocentrydefault{#1}{##1}{##2}%
+ }%
+ }{}%
+ \ifnum \numexpr #2\relax>\c@secnumdepth
+ \csname add#1tocentry\endcsname{}{\@currenttocentry}%
+ \else
+ \csname add#1tocentry\endcsname{\csname the#1\endcsname}{%
+ \@currenttocentry}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% Da Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
+% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
+% der Fontänderung.
+% \begin{macrocode}
+ \def\@svsechd{%
+ #6{\nobreak\sectioncatchphraseformat{#1}{\glueexpr #3\relax}\@svsec{#8}}%
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ head=`\detokenize\expandafter{\@currentheadentry}'\MessageBreak
+ tocentry=`\detokenize\expandafter{\@currenttocentry}'\MessageBreak
+ reference=`\detokenize\expandafter{\@currentlabelname}'}%
+%</trace>
+ \expandafter\csname #1mark\expandafter\endcsname
+ \expandafter{\@currentheadentry}%
+ \ifx\@currenttocentry\@empty\else
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \expandafter\global\expandafter\def
+ \csname add#1tocentry\endcsname####1####2{%
+ \addtocentrydefault{#1}{####1}{####2}%
+ }%
+ }{}%
+ \ifnum \numexpr #2\relax>\c@secnumdepth
+ \csname add#1tocentry\endcsname{}{\@currenttocentry}%
+ \else
+ \csname add#1tocentry\endcsname{\csname the#1\endcsname}{%
+ \@currenttocentry}%
+ \fi
+ \fi
+ }%
+ \fi
+ \let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
+ \@xsect{\glueexpr #5\relax}%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@ds@tocentry}
+% \changes{v3.10}{2011/08/30}{neu (intern)}^^A
+% \begin{macro}{\@currenttocentry}
+% \changes{v3.22}{2016/07/12}{\cs{scr@ds@tocentry} (semi-intern)
+% umbenannt}^^A
+% \begin{macro}{\scr@ds@head}
+% \changes{v3.10}{2011/08/30}{neu (intern)}^^A
+% \begin{macro}{\@currentheadentry}
+% \changes{v3.22}{2016/07/12}{\cs{scr@ds@head} (semi-intern)
+% umbenannt}^^A
+% \begin{macro}{\@currentlabelname}
+% \changes{v3.22}{2016/07/12}{neu (semi-intern)}
+% \begin{macro}{\if@scr@tempswa}
+% \changes{v3.10}{2011/08/30}{neu (intern)}^^A
+% \begin{macro}{\scr@istest}
+% \changes{v3.10}{2011/08/30}{neu (intern)}^^A
+% Für die Realisierung werden noch ein paar Key-Value-Definitionen und ein
+% paar Hilfsmakros benötigt:
+% \begin{macrocode}
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.section]{KOMAarg}
+\providecommand*\@currenttocentry{}
+\providecommand*\@currentheadentry{}
+\providecommand*\@currentlabelname{}
+\FamilyStringKey[.section]{KOMAarg}{tocentry}{\@currenttocentry}
+\FamilyStringKey[.section]{KOMAarg}{head}{\@currentheadentry}
+\DefineFamilyKey[.section]{KOMAarg}{reference}{%
+ \scr@ifundefinedorrelax{NR@gettitle}{%
+ \scr@ifundefinedorrelax{GetTitleString}{%
+ \def\@currentlabelname{#1}%
+ }{%
+ \GetTitleString{#1}%
+ \let\@currentlabelname\GetTitleStringResult
+ }%
+ }{%
+ \NR@gettitle{#1}%
+ }%
+ \scr@ifundefinedorrelax{TR@gettitle}{}{%
+ \expandafter\TR@gettitle\expandafter{\@currentlabelname}%
+ }%
+ \scr@ifundefinedorrelax{ztitlerefsetup}{}{%
+ \ztitlerefsetup{title=\@currentlabelname}%
+ }%
+ \FamilyKeyStateProcessed
+}
+\newcommand*{\scr@istest}{}
+\def\scr@istest#1=#2\@nil{%
+ \ifx\relax#2\relax\@scr@tempswafalse\else\@scr@tempswatrue\fi
+}
+\newif\if@scr@tempswa
+% \end{macrocode}
+% \end{macro}^^A \scr@istest
+% \end{macro}^^A \if@scr@tempswa
+% \end{macro}^^A \@currentlabelname
+% \end{macro}^^A \@currentheadentry
+% \end{macro}^^A \scr@ds@head
+% \end{macro}^^A \@currenttocentry
+% \end{macro}^^A \scr@ds@tocentry
+% \begin{macro}{\sectionlinesformat}
+% \changes{v3.19}{2015/07/17}{neue Anweisung}^^A
+% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
+% \texttt{section}, wenn mit Überschriftenzeilen gearbeitet
+% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
+% Argumente sind:
+% \begin{description}
+% \item[\meta{Ebene} --] der Name der Gliederungebene
+% \item[\meta{Einzug} --] ein eventuell zu verwendender horizontaler
+% Einzug.
+% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
+% Gliederungsnummer oder leer, falls keine Gliederungsnummer auszugeben ist.
+% \item[\meta{Text} --] der Text der Überschrift.
+% \end{description}
+% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
+% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
+% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
+% internen Absatz abgeschlossen wird.
+% \begin{macrocode}
+\newcommand{\sectionlinesformat}[4]{%
+ \@hangfrom{\hskip #2#3}{#4}%
+}
+% \end{macrocode}
+% \end{macro}^^A \sectionlinesformat
+% \begin{macro}{\sectioncatchphraseformat}
+% \changes{v3.19}{2015/07/17}{neue Anweisung}^^A
+% Diese Anweisung definiert das Format der eigentlichen Überschriften im
+% Stil \texttt{section}, wenn mit Spitzmarken gearbeitet
+% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
+% Argumente sind:
+% \begin{description}
+% \item[\meta{Ebene} --] der Name der Gliederungebene
+% \item[\meta{Einzug} --] ein eventuell zu verwendender horizontaler
+% Einzug.
+% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
+% Gliederungsnummer oder leer, falls keine Gliederungsnummer auszugeben
+% ist.
+% \item[\meta{Text} --] der Text der Überschrift.
+% \end{description}
+% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
+% Seitenumbruch erfolgen kann.
+% \begin{macrocode}
+\newcommand{\sectioncatchphraseformat}[4]{%
+ \hskip #2#3#4%
+}
+% \end{macrocode}
+% \end{macro}^^A \sectioncatchphraseformat
+% \end{macro}^^A \@sect
+% \end{macro}^^A \scr@sect
+%
+% \begin{macro}{\@ssect}
+% \changes{v3.19}{2015/07/17}{Vollständige Neudefinition zur Realisierung
+% der Erweiterung für die Formatieurng der Überschrift}^^A
+% Das wird für Überschriften ohne Nummer verwendet. Im Prinzip machen wir hier
+% dasselbe wie zuvor.
+% \begin{macrocode}
+\def\@tempa#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \else
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \fi
+ \@xsect{#3}}
+\ifx\@ssect\@tempa\else
+ \ClassWarning{\KOMAClassName}{%
+ Unexpected definition of \string\@ssect!\MessageBreak
+ Please send information about this to\MessageBreak
+ the KOMA-Script maintainer!\MessageBreak
+ Maybe LaTeX will be broken by the redefinition\MessageBreak
+ of \string\@ssect\space}%
+\fi
+%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro
+%<trace> \string\@ssect}
+\def\@ssect#1#2#3#4#5{%
+ \scr@ifundefinedorrelax{scr@s@ct@@nn@m@}{%
+ \ClassWarning{\KOMAClassName}{incompatible usage of
+ \string\@ssect\space detected.\MessageBreak
+ You've used the KOMA-Script implementation of
+ \string\@ssect\MessageBreak
+ from within a non compatible caller, that does not\MessageBreak
+ \string\scr@s@ct@@nn@m@\space locally.\MessageBreak
+ This could result in several error messages}%
+ \def\scr@s@ct@@nn@m@{\string\scr@s@ct@@nn@m@}%
+ }{}%
+% \end{macrocode}
+% \changes{v3.26}{2018/09/18}{\cs{scr@sect@runin} beachten}^^A
+% Falls \cs{scr@sect@runin} nicht definiert ist, wird es jetzt höchste Zeit
+% dafür. Und natürlich nutzen wir es dann für die Entscheidung Spitzmarke oder
+% nicht.
+% \begin{macrocode}
+ \ifdim
+ \scr@sect@runin{\z@}{\p@}{\glueexpr #3\relax}>\z@
+ \begingroup
+% \end{macrocode}
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
+% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
+% der Fontänderung.
+% \begin{macrocode}
+ #4{\nobreak\interlinepenalty \@M
+ \expandafter\sectionlinesformat\expandafter{\scr@s@ct@@nn@m@}%
+ {\glueexpr #1\relax}\@empty{#5}\@@par}%
+ \endgroup
+ \else
+ \edef\@svsechd{%
+ \unexpanded{#4}{%
+% \end{macrocode}
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% Das Farbänderungen im Schriftargument erlaubt sein sollen und diese aktuelle
+% \cs{penalty}-Werte wieder aufheben, verbiete ich hier einen Umbruch nach
+% der Fontänderung.
+% \begin{macrocode}
+ \noexpand\nobreak
+ \noexpand\sectioncatchphraseformat{\scr@s@ct@@nn@m@}%
+ \unexpanded{{\glueexpr #1\relax}\@empty{#5}}%
+ }%
+ }%
+ \fi
+ \let\scr@s@ct@@nn@m@\relax
+ \@xsect{\glueexpr #3\relax}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@ssect
+% \begin{macro}{\@xsect}
+% \changes{v3.26}{2018/09/18}{wird umdefiniert}^^A
+% Wir brauchen zum Einen in \cs{@xsect} einen Fallunterscheidung nach
+% \cs{scr@sect@runin} und zum Anderen muss diese Fallunterscheidung am Ende
+% wieder zurückgesetzt werden.
+% \begin{macrocode}
+%<*body>
+\def\@tempa#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \ignorespaces
+}
+\ifx\@xsect\@tempa\else
+ \ClassWarning{\KOMAClassName}{%
+ Unexpected definition of \string\@xsect!\MessageBreak
+ Please send information about this to\MessageBreak
+ the KOMA-Script maintainer!\MessageBreak
+ Maybe LaTeX will be broken by the redefinition\MessageBreak
+ of \string\@xsect\space}%
+\fi
+%<trace>\ClassInfo{\KOMAClassName}{redefining LaTeX kernel macro
+%<trace> \string\@xsect}
+\def\@xsect#1{%
+ \@ifundefined{scr@sect@runin}{%
+ \def\scr@sect@runin##1##2##3{##3}%
+ }%
+ \@tempskipa #1\relax
+ \ifdim \scr@sect@runin{\z@}{\p@}{\@tempskipa}>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa<\z@
+ \hskip -\@tempskipa
+ \else
+ \hskip \@tempskipa
+ \fi
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \def\scr@sect@runin##1##2##3{##3}%
+ \ignorespaces
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@xsect
+%
+% \begin{macro}{\IfUsePrefixLine}
+% \changes{v3.18}{2015/06/09}{außerhalb von Gliederungsbefehlsstilen
+% definiert}^^A
+% Eigentlich ist diese Anweisung nur innerhalb von Gliederungsbefehlen
+% sinnvoll und wurde bis \KOMAScript{} 3.17c auch nur dort definiert. Dann gab
+% es aber Leute, die \cs{chapterformat} missbraucht haben und gleich meldete
+% sich jemand, die nicht verstehen konnte, warum die Anweisung dann einen
+% Fehler produzieren muss. Wenn man den Code nicht verstanden hat, dann ist
+% das nämlich so. Deshalb gebe ich jetzt eine Warnung aus, dass die Verwendung
+% nicht unbedingt zu dem Resultat führt, das erwartet wird.
+% \begin{macro}{\scr@IfUsePrefixLineWarning}
+% \changes{v3.18}{2015/06/09}{neu (intern)}
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@IfUsePrefixLineWarning}[2]{%
+ \ClassWarning{\KOMAClassName}{%
+ usage of \string\IfUsePrefixLine\space outside
+ section command\MessageBreak
+ style makes no sense, because the behaviour not only\MessageBreak
+ depends on class options but also on the run-time\MessageBreak
+ section command style.\MessageBreak
+ Neither the then-code nor the else-code will be\MessageBreak
+ executed.\MessageBreak
+ You may change this and avoid the warning by LOCALLY\MessageBreak
+ setting \string\IfUsePrefixLine\space to either
+ \string\@firstoftwo\space or\MessageBreak
+ \string\@secondoftwo\space before using it%
+ }%
+}
+\newcommand*{\IfUsePrefixLine}[2]{}
+\let\IfUsePrefixLine\scr@IfUsePrefixLineWarning
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \scr@IfUsePrefixLineWarning
+% \end{macro}^^A \IfUsePrefixLine
+%
+%
+% \begin{macro}{\raggedsection}
+% \changes{v2.3h}{1996/01/20}{Überschriften werden \cs{raggedsection}^^A
+% gesetzt}^^A
+% \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als \cs{raggedright}
+% voreingestellt}^^A
+% Dieses Makro gibt an, wie die Überschriften formatiert
+% werden. Voreingestellt ist linksbündig. Da dies nicht nur die Formatierung
+% von \cs{section} (und darunter), sondern auch die Voreinstellung für die
+% höheren Ebenen ist, wird die Definition hier vorgezogen.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\raggedsection}{}
+\let\raggedsection\raggedright
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \raggedsection
+%
+%
+% \begin{macro}{\DeclareSectionCommand}
+% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
+% \changes{v3.17}{2015/03/23}{Komplettumbau, um stilabhängige Optionen zu
+% ermöglichen}^^A
+% \changes{v3.18}{2015/05/22}{\cs{scr@dsc@def@style@\dots @command}
+% definiert alle Stil abhängigen Anweisungen}^^A
+% \changes{v3.20}{2015/10/03}{\cs{DeclareTOCStyleEntry}
+% definiert die Verzeichnisstil abhängigen Anweisungen}^^A
+% Definition neuer oder Umdefinition existierender Gliederungsbefehle, die auf
+% \cs{scr@startsection} basieren. Ebenso wird ein Verzeichniseintrag erzeugt,
+% falls ein solcher noch nicht existiert. Die Deklaration geschieht über
+% diverse Optionen (Achtung: Unbedingt daran denken, diese in
+% \cs{ProvideSectionCommands} ebenfalls zu definieren!!!):
+% \begin{macrocode}
+%<*body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.dsc]{KOMAarg}
+% \end{macrocode}
+% \begin{macro}{\DeclareSectionCommandStyleOption}
+% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A
+% Definiert eine neue Option für einen Stil eines Gliederungsbefehls. Das
+% erste Argument ist der Stil, das zweite der Name der Option, das dritte ist
+% die Definition. Sollte innerhalb der Definition eine Familie benötigt
+% werden, so ist \texttt{KOMAarg} zu verwenden.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleOption}[3]{%
+ \AddToSectionCommandOptionsDoList{#2}%
+ \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{%
+ \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\DeclareSectionCommandDummyOption}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
+% \changes{v3.20}{2015/11/18}{wird nicht mehr benötigt}^^A
+% \end{macro}^^A \DeclareSectionCommandDummyOption
+% \begin{macro}{\AddToSectionCommandOptionsDoList}
+% \changes{v3.20}{2015/11/18}{neu}
+% \begin{macro}{\@AddToSectionCommandOptionsDoList}
+% \changes{v3.20}{2015/11/18}{neu (intern)}
+% \begin{macro}{\scr@dsc@doopts}
+% \changes{v3.20}{2015/11/18}{neu (intern)}
+% Registriert eine neue Gliederungsbefehlsoption, indem sie der internen Liste
+% der Gliederungsbefehlsoptionen hinzugefügt wird.
+% \begin{macrocode}
+\newcommand*{\AddToSectionCommandOptionsDoList}[1]{%
+ \kernel@ifnextchar [%]
+ {\@AddToSectionCommandOptionListWithDefault{#1}}%
+ {\l@addto@macro\scr@dsc@doopts{\do{#1}}}%
+}
+\newcommand*{\@AddToSectionCommandOptionListWithDefault}{}
+\def\@AddToSectionCommandOptionListWithDefault#1[#2]{%
+ \l@addto@macro\scr@dsc@doopts{\do[{#2}]{#1}}
+}%
+\newcommand*{\scr@dsc@doopts}{}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@dooptions
+% \end{macro}^^A \@AddToSectionCommandOptionsListWithDefault
+% \end{macro}^^A \AddToSectionCommandOptionsDoList
+% \begin{macro}{\RelaxSectionCommandOptions}
+% \changes{v3.20}{2015/11/18}{neu}
+% Diese Option macht alle Gliederungsbefehlsoptionen ungültig.
+% \begin{macrocode}
+\newcommand*{\RelaxSectionCommandOptions}{%
+ \begingroup
+ \def\do@endgroup{\endgroup}%
+ \def\do{%
+ \kernel@ifnextchar [%]
+ {\@do}%
+ {\@do[]}%
+ }%
+ \def\@do[##1]##2{%
+ \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dsc]{KOMAarg}{##2}}%
+ }%
+ \scr@dsc@doopts
+ \do@endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \RelaxSectionCommandOptions
+% \end{macro}^^A \DeclareSectionCommandStyleOption
+% \begin{macro}{\DeclareSectionCommandStyleLengthOption}
+% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A
+% \changes{v3.20}{2016/04/25}{Argument wird ggf. expandiert}^^A
+% Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Längenoption und speichert das Ergebnis in einem Makro, das sich aus
+% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleLengthOption}[4]{%
+ \DeclareSectionCommandStyleOption{#1}{#2}{%
+ \protected@edef\reserved@a{%
+ \noexpand\FamilySetLength{KOMAarg}{#2}{\noexpand\@tempskipa}{##1}%
+ }\reserved@a
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifscr@dsc@expandtopt
+ \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{%
+ \the\@tempskipa}%
+ \else
+ \expandafter\edef\csname #3\scr@dsc@current#4\endcsname{##1}%
+ \fi
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommandStyleLengthOption
+% \begin{macro}{\DeclareSectionCommandStyleNumberOption}
+% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A
+% \changes{v3.20}{2016/04/25}{Argument wird expandiert}^^A
+% Definiert eine für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Zahlenoption und speichert das Ergebnis in einem Makro, das sich aus
+% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleNumberOption}[4]{%
+ \DeclareSectionCommandStyleOption{#1}{#2}{%
+ \protected@edef\reserved@a{%
+ \noexpand\FamilySetCounterMacro{KOMAarg}{#2}{\noexpand\reserved@a}{##1}
+ }\reserved@a
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \expandafter\let\csname #3\scr@dsc@current#4\endcsname\reserved@a
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommandStyleNumberOption
+% \begin{macro}{\DeclareSectionCommandStyleFontOption}
+% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A
+% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Schrift und speichert das Ergebnis in einem Element, das sich aus
+% Argument 3 gefolgt von der aktuellen Ebene gefolgt von Argument 4 ergibt.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleFontOption}[4]{%
+ \DeclareSectionCommandStyleOption{#1}{#2}{%
+ \IfExistskomafont{#3\scr@dsc@current#4}{%
+ \setkomafont
+ }{%
+ \newkomafont
+ }{#3\scr@dsc@current#4}{##1}%
+ \FamilyKeyStateProcessed
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommandStyleFontOption
+% \begin{macro}{\DeclareSectionCommandStyleFuzzyOption}
+% \changes{v3.26}{2018/09/18}{neue Anweisung}^^A
+% Definiert für die aktuelle Ebene \cs{scr@dsc@current} eine neue
+% Fuzzy-Auswahl. Eine Fuzzy-Auswahl akzeptiert neben den Werten für
+% boolsche-Schalter noch einen weiteren Wert. Es wird davon eine Anweisung
+% mit drei Argumenten definiert. Abhängig vom Wert wird das erste
+% (\texttt{true}), zweite (\texttt{false}) oder dritte (\emph{sonst}) Argument
+% ausgeführt. Der erlaubte weitere Wert wird als 5. Argument angegeben.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommandStyleFuzzyOption}[5]{%
+ \DeclareSectionCommandStyleOption{#1}{#2}{%
+ \FamilySetBool{KOMAarg}{#2}{@tempswa}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####1}%
+ \else
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####2}%
+ \fi
+ \else
+ \ifstr{##1}{#5}{%
+ \expandafter\def\csname #3\scr@dsc@current#4\endcsname
+ ####1####2####3{####3}%
+ \FamilyKeyStateProcessed
+ }{}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommandStyleFuzzyOptions
+%
+% \begin{macro}{\scr@dsc@style@section@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
+% Dann für die Optionen des Stils \texttt{section}:
+% \begin{macrocode}
+\newcommand*{\scr@dsc@style@section@options}{}
+% \end{macrocode}
+% \begin{description}\item[\texttt{indent}]
+% Linker Einzug der Überschrift
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{section}
+ {indent}{scr@}{@sectionindent}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{section}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{section}
+ {beforeskip}{scr@}{@beforeskip}
+% \end{macrocode}
+% \begin{description}\item[\texttt{runin}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{runin}}^^A
+% Fuzzy-Logik. Ein boolscher Wert gibt an, dass die Überschrift als
+% Spitzmarke (\texttt{true}) oder als eigene Zeile (\texttt{false}) gesetzt
+% werden soll. Als dritter Wert ist \texttt{bysign} möglich. Dann hängt
+% Spitzmarke oder nicht vom Vorzeichen von \texttt{afterskip} ab. Spitzmarke
+% gibt es dann bei einem negativen Wert von \texttt{afterskip}.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{section}
+ {runin}{scr@}{@runin}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{afterskip}] Im Fall einer Spitzmarke (siehe
+% \texttt{runin}) der horizontale Abstand nach der Überschrift. Im Fall einer
+% freistehenden Überschrift der vertikale Abstand nach der Überschrift. Falls
+% die Spitzmarke über das Vorzeichen aktiviert wird, wird immer der Betrag des
+% Wertes verwendet!
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{section}
+ {afterskip}{scr@}{@afterskip}
+% \end{macrocode}
+% \begin{description}\item[\texttt{font}] Schrifteinstellungen für das
+% Element.\end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFontOption{section}{font}{}{}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@section@options
+% \begin{macro}{\scr@dsc@def@style@section@command}
+% \changes{v3.18}{2015/05/21}{neue Anweisung (intern)}^^A
+% \changes{v3.20}{2016/01/19}{korrekte Spitzmarkenprüfung für
+% \cs{parfillskip}-Änderung}^^A
+% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{section} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, beispielsweise \texttt{section},
+% \texttt{subsection} etc. Hier ist es recht einfach, da lediglich
+% \cs{\meta{Name}} per \cs{scr@startsection} definiert werden muss.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@section@command}[1]{%
+ \@namedef{#1}{%
+ \scr@startsection{#1}%
+ {\csname #1numdepth\endcsname}%
+ {\csname scr@#1@sectionindent\endcsname}%
+ {\csname scr@#1@beforeskip\endcsname}%
+ {\csname scr@#1@afterskip\endcsname}%
+ {%
+ \ifdim\glueexpr\csname scr@#1@afterskip\endcsname >\z@
+ \expandafter\ifnum\scr@v@is@gt{2.96}\relax
+ \setlength{\parfillskip}{\z@ plus 1fil}%
+ \fi
+ \fi
+ \raggedsection\normalfont\sectfont\nobreak
+ \usekomafont{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@section@command
+%
+% \begin{macro}{\scr@dsc@style@chapter@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
+% Dann für die Optionen des Stils \texttt{chapter}:
+% \begin{macrocode}
+%<*book|report>
+\newcommand*{\scr@dsc@style@chapter@options}{}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
+% Gliederungsebene.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleOption{chapter}{pagestyle}{%
+ \@namedef{\scr@dsc@current pagestyle}{#1}%
+ \FamilyKeyStateProcessed
+}%
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{chapter}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{chapter}
+ {beforeskip}{scr@}{@beforeskip}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand
+% innerhalb der Überschrift zwischen Präfix-Zeile und Text an.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{chapter}
+ {innerskip}{scr@}{@innerskip}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach
+% der Überschrift an.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{chapter}
+ {afterskip}{scr@}{@afterskip}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{font}] Schrifteinstellungen für das Element.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFontOption{chapter}{font}{}{}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{prefixfont}] Schrifteinstellungen für die Präfixzeile des
+% Elements.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@chapter@options
+% \begin{macro}{\scr@dsc@def@style@chapter@command}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung left fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{chapter} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, normalerweise \texttt{chapter}.
+% Das ist etwas komplizierter als bei \cs{scr@dsc@def@style@section@command},
+% da hier eine ganze Reihe von miteinander verschachtelten Anweisungen zu
+% definieren sind.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@chapter@command}[1]{%
+ \@namedef{#1}{\scr@startchapter{#1}}%
+ \@namedef{@#1}{\scr@@startchapter{#1}}%
+ \@namedef{@s#1}{\scr@@startschapter{#1}}%
+ \@namedef{@make#1head}{\scr@makechapterhead{#1}}%
+ \@namedef{@makes#1head}{\scr@makeschapterhead{#1}}%
+ \@namedef{@@make#1head}{\scr@@makechapterhead{#1}}%
+ \@namedef{@@makes#1head}{\scr@@makeschapterhead{#1}}%
+ \@namedef{set#1preamble}{\set@preamble{#1}}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@chapter@command
+%
+% \begin{macro}{\scr@dsc@style@part@options}
+% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A
+% Dann für die Optionen des Stils \texttt{part}:
+% \begin{macrocode}
+\newcommand*{\scr@dsc@style@part@options}{}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{pagestyle}] Seitenstil für die Anfangsseite der
+% Gliederungsebene.
+% \end{description}
+% \begin{macrocode}
+%<*report|book>
+\DeclareSectionCommandStyleOption{part}{pagestyle}{%
+ \@namedef{\scr@dsc@current pagestyle}{#1}%
+ \FamilyKeyStateProcessed
+}%
+%</report|book>
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{afterindent}]
+% \changes{v3.26}{2018/09/18}{neue Option \texttt{afterindent}}^^A
+% Fuzzy-Logik. Ein boolcher Wert gibt an, ob die erste Zeile nach der
+% Überschrift eingezogen werden soll. Als dritter Wert ist \texttt{bysign}
+% möglich. Dann hängt die Entscheidung für den Einzug vom Vorzeichen von
+% \texttt{beforeskip} ab. Ein negativer Wert bedeutet dann, dass der
+% Absatzeinzug nach der Überschrift unterdrückt werden soll.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFuzzyOption{part}
+ {afterindent}{scr@}{@afterindent}
+ {bysign}
+% \end{macrocode}
+% \begin{description}\item[\texttt{beforeskip}]
+% Gibt den vertikalen Abstand vor der Übeschrift an. Im Fall von
+% \texttt{afterindent=bysign} wird der Absolutwert verwendet.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{part}
+ {beforeskip}{scr@}{@beforeskip}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{innerskip}] Der Absolutwert gibt den vertikalen Abstand
+% innerhalb der Überschrift zwischen Präfix-Zeile und Text an.
+% \end{description}
+% \begin{macrocode}
+%<*book|report>
+\DeclareSectionCommandStyleLengthOption{part}
+ {innerskip}{scr@}{@innerskip}
+%</book|report>
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{afterskip}] Der Absolutwert gibt den vertikalen Abstand nach
+% der Überschrift an.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleLengthOption{part}
+ {afterskip}{scr@}{@afterskip}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{font}] Schrifteinstellungen für das Element.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFontOption{part}{font}{}{}
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{font}] Schrifteinstellungen für die Präfixzeile des Elements.
+% \end{description}
+% \begin{macrocode}
+\DeclareSectionCommandStyleFontOption{part}{prefixfont}{}{prefix}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@part@options
+% \begin{macro}{\scr@dsc@def@style@part@command}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}
+% Diese Anweisung legt fest, wie ein Gliederungsbefehl für den Stil
+% \texttt{part} zu definieren ist. Das einzige Argument ist dabei der
+% \meta{Name} der Gliederungsebene, normalerweise \texttt{part}.
+% Das ist ganz ähnlich wie bei \cs{scr@dsc@def@style@chapter@command}.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@def@style@part@command}[1]{%
+ \@namedef{#1}{\scr@startpart{#1}}%
+ \@namedef{@#1}{\scr@@startpart{#1}}%
+ \@namedef{@s#1}{\scr@@startspart{#1}}%
+%<book|report> \@namedef{@end#1}{\scr@@endpart{#1}}%
+%<book|report> \@namedef{set#1preamble}{\set@preamble{#1}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@def@style@part@command
+%
+% \begin{macro}{\scr@dsc@style@section@neededoptionstest}
+% \changes{v3.17}{2015/03/24}{Neu (intern)}^^A
+% \changes{v3.24}{2017/04/25}{Voreinstellungen für \texttt{indent} und
+% \texttt{font}}^^A
+% \changes{v3.26}{2018/09/18}{\texttt{runin} und \texttt{afterindent}
+% beachten}^^A
+% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
+% Definition der spezifischen Gliederungsebene im section-Stil bekannt
+% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
+% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@style@section@neededoptionstest}{%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {section indent}{indent}{0pt}%
+ {\@namedef{scr@\scr@dsc@current @sectionindent}{0pt}}%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {before section skip}{beforeskip}%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {after section skip}{afterskip}%
+ }{}%
+ \IfExistskomafont{\scr@dsc@current}{}{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {font}{font}{\normalsize}%
+ {\newkomafont{\scr@dsc@current}{\normalsize}}%
+ }%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @runin}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `runin=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @runin\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `afterindent=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@section@neededoptionstest
+%
+% \begin{macro}{\scr@dsc@style@chapter@neededoptionstest}
+% \changes{v3.17}{2015/03/24}{Neu (intern)}^^A
+% \changes{v3.24}{2017/04/25}{Voreinstellungen für alle außer auf Ebene
+% \texttt{chapter}}^^A
+% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
+% Definition der spezifischen Gliederungsebene im chapter-Stil bekannt
+% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
+% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*{\scr@dsc@style@chapter@neededoptionstest}{%
+ \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {initial page style}{pagestyle}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {initial page style}{pagestyle}%
+ {\chapterpagestyle}%
+ {\@namedef{\scr@dsc@current pagestyle}{\chapterpagestyle}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {inner chapter skip}{innerskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {inner chapter skip}{innerskip}%
+ {\scr@chapter@innerskip}%
+ {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@chapter@innerskip}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {before chapter skip}{beforeskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {before chapter skip}{beforeskip}%
+ {\scr@chapter@beforeskip}%
+ {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@chapter@beforeskip}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {after chaper skip}{afterskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {after chaper skip}{afterskip}%
+ {\scr@chapter@afterskip}%
+ {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@chapter@afterskip}}%
+ }%
+ }{}%
+ \IfExistskomafont{\scr@dsc@current}{}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {font}{font}%
+ {\usekomafont{chapter}}%
+ {\newkomafont{\scr@dsc@current}{\usekomafont{chapter}}}%
+ }%
+ }%
+ \IfExistskomafont{\scr@dsc@current prefix}{}{%
+ \ifstr{\scr@dsc@current}{chapter}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {prefix line font}{prefixfont}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {prefix line font}{prefixfont}%
+ {\usekomafont{chapterprefix}}%
+ {\newkomafont{\scr@dsc@current prefix}{\usekomafont{chapterprefix}}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}
+ {using compatibility default `afterindent=bysign'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3{##3}%
+ }%
+ }{}%
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@chapter@neededoptionstest
+%
+% \begin{macro}{\scr@dsc@style@part@neededoptionstest}
+% \changes{v3.17}{2015/03/24}{Neu (intern)}
+% \changes{v3.24}{2017/04/25}{Voreinstellungen für alle außer auf Ebene
+% \texttt{part}}^^A
+% Dieses Anweisung überprüft, ob alle notwendigen Eigenschaften für die
+% Definition der spezifischen Gliederungsebene im part-Stil bekannt
+% sind. Sollte das nicht der Fall sein, meldet sie einen Fehler und sorgt sie
+% mit \cs{aftergroup}\cs{@gobbletwo} dafür, dass die Definition unterbleibt.
+% \begin{macrocode}
+\newcommand*{\scr@dsc@style@part@neededoptionstest}{%
+%<*book|report>
+ \scr@ifundefinedorrelax{\scr@dsc@current pagestyle}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {initial page style}{pagestyle}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {initial page style}{pagestyle}%
+ {\partpagestyle}%
+ {\@namedef{\scr@dsc@current pagestyle}{\partpagestyle}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {inner part skip}{innerskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {inner part skip}{innerskip}%
+ {\scr@part@innerskip}%
+ {\@namedef{scr@\scr@dsc@current @innerskip}{\scr@part@innerskip}}%
+ }%
+ }{}%
+%</book|report>
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {before part skip}{beforeskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {before part skip}{beforeskip}%
+ {\scr@part@beforeskip}%
+ {\@namedef{scr@\scr@dsc@current @beforeskip}{\scr@part@beforeskip}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {after part skip}{afterskip}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {after part skip}{afterskip}%
+ {\scr@part@afterskip}%
+ {\@namedef{scr@\scr@dsc@current @afterskip}{\scr@part@afterskip}}%
+ }%
+ }{}%
+ \IfExistskomafont{\scr@dsc@current}{}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}{font}{font}%
+ {\usekomafont{part}}%
+ {\newkomafont{\scr@dsc@current}{\usekomafont{part}}}%
+ }%
+ }{}%
+ \IfExistskomafont{\scr@dsc@current prefix}{}{%
+ \ifstr{\scr@dsc@current}{part}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}%
+ {number font}{prefixfont}%
+ }{%
+ \scr@declaresectioncommandwarning{\scr@dsc@current}%
+ {number font}{prefixfont}%
+ {\usekomafont{partprefix}}%
+ {\newkomafont{\scr@dsc@current prefix}{\usekomafont{partprefix}}}%
+ }%
+ }{}%
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterindent}{%
+ \l@addto@macro\local@endgroup{%
+ \ClassInfo{\KOMAClassName}{%
+ using compatibility default
+%<article> `afterindent=false'\MessageBreak
+%<book|report> `afterindent=true'\MessageBreak
+ for `\expandafter\string\csname \scr@dsc@current\endcsname}%
+ \expandafter\gdef\csname scr@\scr@dsc@current @afterindent\endcsname
+ ##1##2##3%
+%<article> {##2}%
+%<book|report> {##1}%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@dsc@style@part@neededoptionstest
+%
+% \begin{macro}{\ifscr@dsc@parametersonly}
+% \changes{v3.17}{2015/03/24}{neu}^^A
+% \changes{v3.20}{2015/11/18}{es gibt keine Dummy-Optionen mehr}^^A
+% Dieser Schalter wird verwendet, um die Einstellungen entsprechend dem
+% aktuell gültigen Stil zu ändern, die zugehörige Anweisung selbst aber nicht
+% neu zu definieren. Er wird von einem leeren \texttt{style}-Wert lokal
+% gesetzt.
+% \begin{macrocode}
+\newif\ifscr@dsc@parametersonly
+% \end{macrocode}
+% \end{macro}^^A \ifscr@dsc@parametersonly
+%
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommand}[2][]{%
+ \edef\scr@dsc@current{#2}%
+% \end{macrocode}
+% Im ersten Durchlauf werden nur die Stil-Optionen ausgewertet:
+% \begin{description}
+% \item[\texttt{style}] Stil der Gliederungsebene
+% \end{description}
+% \begin{macrocode}
+ \scr@dsc@parametersonlyfalse
+ \DefineFamilyKey[.dsc]{KOMAarg}{style}{%
+ \IfArgIsEmpty{##1}{%
+ \scr@dsc@parametersonlytrue
+ \FamilyKeyStateProcessed
+ }{%
+ \scr@ifundefinedorrelax{scr@dsc@def@style@##1@command}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \@namedef{scr@\scr@dsc@current @style}{##1}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{tocstyle}]
+% \changes{v3.20}{2015/11/12}{Option \texttt{tocstyle} frühzeitig
+% auswerten}^^A
+% Verzeichnis-Eintrags-Stil, damit auch für diesen anschließend die Optionen
+% definiert bzw. aktiviert werden können.
+% \end{description}
+% \begin{macrocode}
+ \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{%
+ \IfArgIsEmpty{##1}{%
+ \expandafter\let\csname scr@dte@\scr@dsc@current @style\endcsname
+ \relax
+ \FamilyKeyStateProcessed
+ }{%
+%<trace> \typeout{TRACE: option tocstyle=##1}%
+%<trace> \typeout{TRACE: command=\scr@dsc@current}%
+ \scr@ifundefinedorrelax{scr@dte@def@l@##1}{%
+%<trace> \typeout{TRACE: style not defined}%
+ \FamilyKeyStateUnknownValue
+ }{%
+%<trace> \typeout{TRACE: style defined}%
+ \@namedef{scr@dte@\scr@dsc@current @style}{##1}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{@else@}]
+% \changes{v3.20}{2015/11/18}{Option \texttt{tocstyle} frühzeitig
+% auswerten}^^A
+% Damit keine anderen Optionen ausgewertet werden müssen aber auch nicht als
+% unbekannte Optionen einen Fehler erzeugen, wird diese Spezialoption
+% definiert, die einfach nur \cs{FamilyKeyStateProcessed} setzt.
+% \end{description}
+% \begin{macrocode}
+ \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{%
+%<*trace>
+ \typeout{TRACE: ignoring option `@else@=\detokenize{##1}'}%
+ \typeout{TRACE:
+ \string\scr@key@atlist=`\detokenize\expandafter{\scr@key@atlist}'}%
+ \typeout{TRACE:
+ \string\scr@key@name=`\detokenize\expandafter{\scr@key@name}'}%
+ \typeout{TRACE:
+ \string\scr@key@value=`\detokenize\expandafter{\scr@key@value}'}%
+%</trace>
+ \FamilyKeyStateProcessed
+ }%
+ \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/18}{Rüchnahme der Optionen nach dem ersten
+% Durchgang}^^A
+% Nach dem ersten Druchgang müssen alle Optionen wieder zurückgenommen
+% werden.
+% \begin{macrocode}
+ \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{style}%
+ \begingroup
+ \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}
+ {section command style}{style}%
+ }{}%
+ \endgroup
+ \@firstofone{%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/12}{keine Dummy-Optionen für den echten Lauf}^^A
+% Nachdem nun der Stil für den Gliederungsbefehl bekannt ist, können wir
+% dessen Optionen aktivieren:
+% \begin{macrocode}
+%<trace> \typeout{TRACE: style=\@nameuse{scr@\scr@dsc@current @style}}%
+ \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}%
+% \end{macrocode}
+% Außerdem muss der Verzeichniseintrags-Stils initialisiert werden:
+% \begin{macrocode}
+%<trace> \typeout{TRACE: tocstyle=%
+%<trace> \@nameuse{scr@dte@\scr@dsc@current @style}}%
+ \scr@ifundefinedorrelax{scr@dte@\scr@dsc@current @style}{%
+ \scr@ifundefinedorrelax{l@\scr@dsc@current}{%
+ \@namedef{scr@dte@\scr@dsc@current @style}{default}%
+ }{}%
+ }{}%
+% \end{macrocode}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.21}{2016/06/12}{erlaube auch \texttt{tocentry} an Stelle von
+% \texttt{toc} als Präfix}^^A
+% An dieser Stelle müssen die Optionen des Verzeichniseintrags auf Optionen
+% der Gliederungsebene abgebildet werden. Dazu erhalten sie in der
+% Gliederungebene den Präfix \texttt{toc}. Das bedeutet gleichzeitig, dass es
+% keine Verzeichniseintragsoption Namens \texttt{style} geben kann und dass
+% Gliederungsoptionen nicht mit \texttt{toc} beginnen dürfen.
+% \begin{macrocode}
+ \let\scr@dsc@tocstyle@options\@empty
+ \let\scr@dsc@extra@relax@opts\@empty
+ \scr@ifundefinedorrelax{scr@dte@\scr@dsc@current @style}{}{%
+ \begingroup
+ \def\scr@dte@current{#2}%
+ \edef\reserved@a{%
+ \noexpand\@ExecuteTOCEntryStyleInitCode{%
+ \@nameuse{scr@dte@\scr@dsc@current @style}%
+ }{\scr@dsc@current}%
+ }\reserved@a
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro\scr@dsc@extra@relax@opts{%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{toc##1}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{tocentry##1}%
+ }%
+ }%
+ \kernel@ifnextchar[%]
+ {\@dodefault{##1}}%
+ {\@donodefault{##1}}%
+ }%
+ \def\@donodefault##1{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}{%
+ \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
+ \FamilyKeyStateProcessed
+ }%
+ \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}{%
+ \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \def\@dodefault##1[##2]{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.dsc]{KOMAarg}{toc##1}[##2]{%
+ \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
+ \FamilyKeyStateProcessed
+ }%
+ \DefineFamilyKey[.dsc]{KOMAarg}{tocentry##1}[##2]{%
+ \l@addto@macro{\scr@dsc@tocstyle@options}{##1={####1},}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \scr@dte@doopts
+ \do@endgroup
+ }%
+% \end{macrocode}
+% Die Optionen für die Stile von Verzeichniseintrag und Gliederungsebene
+% werden nicht erneut benötigt, müssten aber natürlich erneut verarbeitet
+% werden.
+% \begin{macrocode}
+ \DefineFamilyKey[.dsc]{KOMAarg}{style}{\FamilyKeyStateProcessed}%
+ \DefineFamilyKey[.dsc]{KOMAarg}{tocstyle}{\FamilyKeyStateProcessed}%
+% \end{macrocode}
+% Dazu kommen einige Optionen, die es schlicht immer gibt:
+% \begin{description}\item[\texttt{expandtopt}] Schalter, um die Längen zur
+% Definitionszeit statt zur Anwendungszeit komplett zu expandieren. Das
+% bedingt dann aber auch, dass die Längen nicht mehr abhängig von der
+% aktuellen Schriftgröße sind.\end{description}
+% \begin{macrocode}
+ \FamilyBoolKey[.dsc]{KOMAarg}{expandtopt}{scr@dsc@expandtopt}%
+ \scr@dsc@expandtoptfalse
+% \end{macrocode}
+% \begin{description}\item[\texttt{increaselevel}] Automatische Erhöhung des
+% Wertes von Option \texttt{level} mit Säumniswert 1. Diese Option wird nur
+% definiert, wenn \cs{DeclareSectionCommands} verwendet wurde, was an
+% \cs{scr@local@levelincrease} erkannt wird.\end{description}
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@local@levelincrease}{%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
+ }{%
+ \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]%
+ {\scr@local@levelincrease}%
+ }%
+% \end{macrocode}
+% \begin{description}\item[\texttt{level}] nummerische
+% Gliederungsebene\end{description}
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@local@leveloffset}{%
+ \edef\reserved@a{%
+ \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{level}{%
+ \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname}%
+ }\reserved@a
+ }{%
+ \edef\reserved@a{%
+ \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{%
+ \noexpand\FamilySetCounterMacro{KOMAarg}{level}{%
+ \expandafter\noexpand\csname \scr@dsc@current numdepth\endcsname
+ }%
+ \unexpanded{%
+ {\numexpr ##1+\scr@local@leveloffset\relax}%
+ \edef\scr@local@leveloffset{%
+ \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax
+ }%
+ }%
+ }%
+ }\reserved@a
+ }%
+% \end{macrocode}
+% \changes{v3.19}{2015/09/09}{neue Eigenschaft \texttt{counterwithout}}
+% \begin{description}\item[\texttt{counterwithout}] Der Zähler dieser Ebene
+% soll nicht länger abhängen vom angegebenen Zähler.
+% \end{description}
+% \begin{macrocode}
+ \FamilyStringKey[.dsc]{KOMAarg}{counterwithout}{\scr@local@counterwithout}%
+ \let\scr@local@counterwithout\relax
+% \end{macrocode}
+% \begin{description}\item[\texttt{counterwithin}] Der Zähler dieser Ebene
+% soll abhängen vom angegebenen Zähler.
+% \end{description}
+% \begin{macrocode}
+ \FamilyStringKey[.dsc]{KOMAarg}{counterwithin}{\scr@local@counterwithin}%
+ \let\scr@local@counterwithin\relax
+% \end{macrocode}
+% \begin{description}
+% \item[\texttt{toclevel}] Ebene im Inhaltsverzeichnis (Voreinstellung ist
+% derselbe Wert wie für level); diese Option gibt es nur, wenn der
+% Verzeichnisstil sie unterstützt (was jeder Verzeichnisstil
+% sollte); wenn allerdings ein Offset dafür definiert ist, dann wird die
+% Option nicht einfach an den Stil weitergereicht, muss also noch einmal
+% umdefiniert werden.
+% \end{description}
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@local@tocleveloffset}{}{%
+ \scr@ifundefinedorrelax{KV@KOMAarg.dsc@toclevel}{%
+ }{%
+ \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{%
+ \edef\reserved@a{%
+ \noexpand\l@addto@macro{\noexpand\scr@dsc@tocstyle@options}{%
+ level=\the\numexpr ##1+\scr@local@tocleveloffset\relax,%
+ }%
+ }\reserved@a
+ \edef\scr@local@tocleveloffset{%
+ \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax
+ }%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/12}{Optionen werden nur temporär definiert}^^A
+% Optionen ausführen und anschließend wieder freigeben.
+% \begin{macrocode}
+ \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
+ \scr@dsc@extra@relax@opts
+ \let\scr@dsc@extra@relax@opts\relax
+ \RelaxSectionCommandOptions
+ \RelaxFamilyKey[.dsc]{KOMAarg}{style}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{tocstyle}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{expandtopt}%
+ \scr@ifundefinedorrelax{scr@local@levelincrease}{}{%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
+ }%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{level}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{counterwithin}%
+% \end{macrocode}
+% Testen, ob alle benötigten Optionen für die (Um-)Definierung des
+% Gliederungsbefehls gesetzt sind:
+% \begin{macrocode}
+ \begingroup
+ \def\local@endgroup{\endgroup}%
+ \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{%
+ \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}%
+ }{}%
+ \@nameuse{scr@dsc@style@%
+ \@nameuse{scr@\scr@dsc@current @style}%
+ @neededoptionstest}%
+ \local@endgroup
+% \end{macrocode}
+% Wenn alle Informationen für die (Um-)Definierung des Gliederungsbefehls
+% zusammen sind \dots
+% \begin{macrocode}
+ \@firstofone{%
+% \end{macrocode}
+% Zunächst sicherstellen, dass der Zähler existiert und ggf. dessen
+% Ausgabe anpassen:
+% \changes{v3.20}{2015/10/15}{fehlendes \cs{expandafter} ergänzt}^^A
+% \begin{macrocode}
+ \@ifundefined{c@#2}{\newcounter{#2}}{}%
+ \ifx\scr@local@counterwithout\relax
+ \else\ifx\scr@local@counterwithout\@empty
+ \else
+ \@removefromreset{#2}{\scr@local@counterwithout}%
+ \fi
+ \@namedef{the#2}{\arabic{#2}}%
+ \fi
+ \ifx\scr@local@counterwithin\relax
+ \else\ifx\scr@local@counterwithin\@empty
+ \@namedef{the#2}{\arabic{#2}}%
+ \else
+ \@removefromreset{#2}{\scr@local@counterwithin}%
+ \@addtoreset{#2}{\scr@local@counterwithin}%
+ \expandafter\def\csname the#2\expandafter\endcsname\expandafter{%
+ \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}%
+ \fi
+ \fi
+ \@ifundefined{#2format}{%
+ \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}%
+ }{}%
+% \end{macrocode}
+% Dann den eigentlichen Gliederungsbefehl definieren:
+% \begin{macrocode}
+ \ifscr@dsc@parametersonly
+ \ClassInfo{\KOMAClassName}{%
+ not defining `\expandafter\string\csname #2\endcsname' due
+ to\MessageBreak
+ empty section style option%
+ }%
+ \else
+ \scr@ifundefinedorrelax{%
+ scr@dsc@def@style@\@nameuse{scr@#2@style}@command%
+ }{%
+ \ClassWarning{\KOMAClassName}{%
+ not defining `\expandafter\string\csname #2\endcsname'
+ due\MessageBreak
+ to not yet defined section style\MessageBreak
+ `\@nameuse{scr@#2@style}'%
+ }%
+ }{%
+ \@nameuse{scr@dsc@def@style@\@nameuse{scr@#2@style}@command}{#2}%
+ }%
+ \fi
+% \end{macrocode}
+% Zu jedem Gliederungsbefehl gehört auch ein Befehl für den Kolumnentitel, der
+% bei \KOMAScript{} außerdem eine Formatierung des Zählers benötigt. Falls
+% \textsf{scrlayer} geladen ist, wird das über dessen Befehl
+% |\DeclareSectionNumberDepth| erledigt, sonst direkt:
+% \changes{v3.15a}{2015/01/21}{fix: \cs{endskip} statt \cs{enskip}}^^A
+% \begin{macrocode}
+ \@ifundefined{DeclareSectionNumberDepth}{%
+ \@ifundefined{#2markformat}{%
+ \@namedef{#2markformat}{\csname the#2\endcsname\autodot\enskip}%
+ }{}%
+ \@ifundefined{#2mark}{%
+ \expandafter\let\csname #2mark\endcsname\@gobble
+ }{}%
+ }{%
+ \DeclareSectionNumberDepth{#2}{\csname #2numdepth\endcsname}%
+ }%
+% \end{macrocode}
+% Und es gehören Befehle dazu, um einen Eintrag ins Inhaltsverzeichnis zu
+% schreiben und den Eintrag auch darzustellen:
+% \begin{macrocode}
+ \expandafter\providecommand\expandafter*%
+ \csname add#2tocentry\endcsname[2]{%
+ \addtocentrydefault{#2}{##1}{##2}%
+ }%
+ \scr@ifundefinedorrelax{scr@dte@#2@style}{%
+ }{%
+ \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{%
+ \@nameuse{scr@dte@#2@style}%
+ }{#2}%
+ }%
+ \scr@ifundefinedorrelax{l@#2}{%
+ \DeclareTOCStyleEntry[\scr@dsc@tocstyle@options]{default}{#2}%
+ }{}%
+% \end{macrocode}
+% \changes{v3.20}{2015/0/07}{\textsf{hyperref} bei den Ebenen der
+% Verzeichniseinträge berücksichtigen}^^A
+% \changes{v3.26}{2018/06/27}{Einstellungen von \textsl{hyperref}
+% überschreiben}^^A
+% \changes{v3.26}{2018/06/27}{Notfallbehandlung für Lücken in den
+% Bookmark-Ebenen}^^A
+% \begin{macrocode}
+ \if@atdocument
+ \let\reserved@a\@firstofone
+ \else
+ \@ifpackageloaded{hyperref}{%
+ \let\reserved@a\@firstofone
+ }{%
+ \def\reserved@a##1{%
+ \AfterAtEndOfPackage{hyperref}{\AtBeginDocument{##1}}%
+ }%
+ }%
+ \fi
+ \reserved@a{%
+ \expandafter\let\csname toclevel@#2\expandafter\endcsname
+ \csname #2tocdepth\endcsname
+ \scr@ifundefinedorrelax{bookmarksetup}{%
+ \scr@ifundefinedorrelax{scr@min@toclevel}{%
+ \expandafter\let\expandafter\scr@min@toclevel
+ \csname toclevel@#2\endcsname
+ }{%
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ < \numexpr \scr@min@toclevel-1\relax
+ \ClassWarning{\KOMAClassName}{%
+ Trying emergency fix for bookmark level gap,\MessageBreak
+ because toclevel of `#2'
+ (\csname toclevel@#2\endcsname)\MessageBreak
+ is more than 1 lower than currently lowest\MessageBreak
+ known level (\scr@min@toclevel).\MessageBreak
+ Note: This fix can fail and you should load\MessageBreak
+ package `bookmark' to avoid usage of this\MessageBreak
+ fix%
+ }%
+ \expandafter\edef\csname toclevel@#2\endcsname{%
+ \the\numexpr \scr@min@toclevel-1\relax
+ }%
+ \fi
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ < \scr@min@toclevel\relax
+ \expandafter\let\expandafter\scr@min@toclevel
+ \csname toclevel@#2\endcsname
+ \fi
+ }%
+ \scr@ifundefinedorrelax{scr@max@toclevel}{%
+ \expandafter\let\expandafter\scr@max@toclevel
+ \csname toclevel@#2\endcsname
+ }{%
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ > \numexpr \scr@max@toclevel+1\relax
+ \ClassWarning{\KOMAClassName}{%
+ Trying emergency fix for bookmark level gap,\MessageBreak
+ because toclevel of `#2'
+ (\csname toclevel@#2\endcsname)\MessageBreak
+ is more than 1 greater than currently highest\MessageBreak
+ known level (\scr@max@toclevel).\MessageBreak
+ Note: This fix can fail and you should load\MessageBreak
+ package `bookmark' to avoid usage of this\MessageBreak
+ fix%
+ }%
+ \expandafter\edef\csname toclevel@#2\endcsname{%
+ \the\numexpr \scr@max@toclevel+1\relax
+ }%
+ \fi
+ \expandafter\ifnum \csname toclevel@#2\endcsname
+ > \scr@max@toclevel\relax
+ \expandafter\let\expandafter\scr@max@toclevel
+ \csname toclevel@#2\endcsname
+ \fi
+ }%
+ }{}%
+ }%
+ }%
+ }%
+ \let\scr@dsc@current\relax
+}
+% \end{macrocode}
+% \begin{macro}{\scr@declaresectioncommanderror}
+% \changes{v3.15}{2014/11/21}{neue (interne) Anweisung}^^A
+% Gibt einen Fehler aus, falls \cs{DeclareSectionCommand} zu wenige Optionen
+% übergeben wurde. Das erste Argument ist der Name des zu deklarierenden
+% Befehls, das zweite ist eine textuelle Beschreibung der fehlenden Option und
+% das dritte ist der Name der fehlenden Option. Als Seiteneffekt sorgt der
+% Befehl dafür, dass die Deklaration nicht stattfindet.
+% \begin{macrocode}
+\newcommand*{\scr@declaresectioncommanderror}[3]{%
+ \ClassError{\KOMAClassName}{%
+ #2 of \expandafter\string\csname #1\endcsname\space unknown%
+ }{%
+ Please use option `#3' to declare the #2.\MessageBreak
+ If you'll continue, declaration will be ignored%
+ }%
+ \let\local@endgroup\endgroup
+ \aftergroup\@gobbletwo
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@declaresectioncommanderror
+% \begin{macro}{\scr@declaresectioncommandwarning}
+% \changes{v3.24}{2017/04/25}{neue (interne) Anweisung}^^A
+% In einigen Fällen genügt es hingegen eine Warnung oder Info für fehlende
+% Optionen auszugeben und einen Defaultwert zu verwenden. Das erste Argument
+% ist auch hier der Name des zu deklarierenden Befehls, das zweite eine
+% textuelle Beschreibung der fehlenden Option und das dritte der Name der
+% fehlenden Option. Das vierte ist der Defaultwert, der ersatzweise verwendet
+% wird. Der Befehl hat wie \cs{scr@declaresectioncommanderror} einen
+% Seiteneffekt. In diesem Fall wird \cs{local@endgroup} um das fünfte Argument
+% erweitert.
+% \begin{macrocode}
+\newcommand*{\scr@declaresectioncommandwarning}[5]{%
+ \ClassInfo{\KOMAClassName}{%
+ #2 of \expandafter\string\csname #1\endcsname\space unknown.\MessageBreak
+ You should use option `#3' if you\MessageBreak
+ do not want to use the default value\MessageBreak
+ `\detokenize{#4}'%
+ }%
+ \l@addto@macro\local@endgroup{#5}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@declaresectioncommandwarning
+% \end{macro}^^A \DeclareSectionCommand
+%
+% \begin{macro}{\DeclareNewSectionCommand}
+% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
+% \changes{v3.25}{2018/03/10}{zusätzliche Tests und Fehlermeldungen bei
+% \cs{the\dots}, \cs{\dots mark}, \cs{\dots format},
+% \cs{\dots markformat}}^^A
+% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
+% definiert, die zuvor noch nicht existierte. Wichtig zu bemerken ist, dass
+% die ganzen Hilfsanweisungen bereits existieren dürfen.
+% \begin{macrocode}
+\newcommand*{\DeclareNewSectionCommand}[2][]{%
+ \@ifundefined{#2}{%
+ \@tempswatrue
+ \let\reserved@b\@empty
+ \@for \reserved@a:=the#2,#2mark,#2format,#2markformat\do{%
+ \expandafter\scr@ifundefinedorrelax\expandafter{\reserved@a}{}{%
+ \@tempswafalse
+ \edef\reserved@b{\expandafter\string\csname \reserved@a\endcsname}%
+ }
+ }
+ \if@tempswa
+ \DeclareSectionCommand[{#1}]{#2}%
+ \else
+ \ClassError{\KOMAClassName}{%
+ command `\reserved@b` already defined%
+ }{%
+ You've tried to define the section command `\expandafter\string\csname
+ #2\endcsname` newly.\MessageBreak
+ Such a section command needs an additional new command
+ `\reserved@b`,\MessageBreak
+ but this already exists. So you cannot define
+ `\expandafter\string\csname #2\endcsname` newly.\MessageBreak
+ Maybe you should use one of \string\DeclareSectionCommand,
+ \string\RedeclareSectionCommand,\MessageBreak
+ or \string\ProvideSectionCommand.\MessageBreak
+ If you'll continue, the command will be ignored.%
+ }%
+ \fi
+ }{%
+ \ClassError{\KOMAClassName}{%
+ command `\expandafter\string\csname #2\endcsname` already defined%
+ }{%
+ You've tried to define the section command `\expandafter\string\csname
+ #2\endcsname` newly,\MessageBreak
+ but a command or something else with this name already
+ exists.\MessageBreak
+ Maybe you should use one of \string\DeclareSectionCommand,
+ \string\RedeclareSectionCommand,\MessageBreak
+ or \string\ProvideSectionCommand.\MessageBreak
+ If you'll continue, the command will be ignored.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareNewSectionCommand
+%
+% \begin{macro}{\RedeclareSectionCommand}
+% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
+% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
+% umdefiniert, die zuvor bereits existierte. Wichtig zu bemerken ist, dass
+% die ganzen Hilfsanweisungen nicht zu exisieren brauchen.
+% \begin{macrocode}
+\newcommand*{\RedeclareSectionCommand}[2][]{%
+ \@ifundefined{#2}{%
+ \ClassError{\KOMAClassName}{%
+ command `\expandafter\string\csname #2\endcsname` not defined%
+ }{%
+ You've tried to re-define the section command `\expandafter\string\csname
+ #2\endcsname`,\MessageBreak
+ but a command with this name does not exists.\MessageBreak
+ Maybe you should use one of \string\DeclareSectionCommand,
+ \string\DeclareNewSectionCommand,\MessageBreak
+ or \string\ProvideSectionCommand.\MessageBreak
+ If you'll continue, the command will be irgnored.%
+ }%
+ }{%
+ \DeclareSectionCommand[{#1}]{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \RedeclareSectionCommand
+%
+% \begin{macro}{\ProvideSectionCommand}
+% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A
+% Basierend auf |\DeclareSectionCommand| wird eine Gliederungsanweisung
+% definiert, wenn sie zuvor noch nicht existierte. Wichtig zu bemerken ist,
+% dass die ganzen Hilfsanweisungen bereits existieren dürfen.
+% \begin{macrocode}
+\newcommand*{\ProvideSectionCommand}[2][]{%
+ \@ifundefined{#2}{%
+ \DeclareSectionCommand[{#1}]{#2}%
+ }{%
+ \ClassInfo{\KOMAClassName}{%
+ \string\ProvideSectionCommand{#1} ignored%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \ProvideSectionCommand
+%
+% \begin{macro}{\DeclareSectionCommands}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
+% Basierend auf \cs{DeclareSectionCommand} können gleich mehrere
+% Gliederungsanweisungen definiert werden. Dabei sorgt Option
+% \texttt{increaselevel} dafür, dass die Werte von \texttt{level} und
+% \texttt{toclevel} automatisch von Befehl zu Befehl um den angegebenen Wert
+% (Default ist 1) erhöht werden.
+% \begin{macrocode}
+\newcommand*{\DeclareSectionCommands}[2][]{%
+ \edef\reserved@a{#2}%
+ \def\scr@local@levelincrease{\z@}%
+ \def\scr@local@leveloffset{\z@}%
+ \def\scr@local@tocleveloffset{\z@}%
+ \@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
+ \edef\reserved@a{%
+ \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
+ }%
+ \reserved@a
+ }%
+ \let\scr@local@levelincrease\relax
+ \let\scr@local@leveloffset\relax
+ \let\scr@local@tocleveloffset\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareSectionCommands
+%
+% \begin{macro}{\DeclareNewSectionCommands}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
+% Im Unterschied zu \cs{DeclareNewSectionCommand} führt diese Anweisung die
+% Änderung auch dann aus, wenn die Anweisung bereits deklariert war. Eine
+% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
+% ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für
+% nachfolgende Befehle nicht mehr korrekt arbeiten würde.
+% \begin{macrocode}
+\newcommand*{\DeclareNewSectionCommands}[2][]{%
+ \edef\reserved@a{#2}%
+ \def\scr@local@levelincrease{\z@}%
+ \def\scr@local@leveloffset{\z@}%
+ \def\scr@local@tocleveloffset{\z@}%
+ \@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
+ \@ifundefined{\reserved@a}{}{%
+ \ClassError{\KOMAClassName}{%
+ command `\expandafter\string\csname\reserved@a\endcsname` already
+ defined%
+ }{%
+ You've tried to define the section command
+ `\expandafter\string\csname\reserved@a\endcsname` newly,\MessageBreak
+ but a command, token, box or length with this name already
+ exists.\MessageBreak
+ Maybe you should use one of \string\DeclareSectionCommand,
+ \string\RedeclareSectionCommand,\MessageBreak
+ or \string\ProvideSectionCommand.\MessageBreak
+ Nevertheless, if you'll continue, the command will be defined.%
+ }%
+ }%
+ \edef\reserved@a{%
+ \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
+ }%
+ \reserved@a
+ }%
+ \let\scr@local@levelincrease\relax
+ \let\scr@local@leveloffset\relax
+ \let\scr@local@tocleveloffset\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \DeclareNewSectionCommands
+%
+% \begin{macro}{\RedeclareSectionCommands}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
+% Im Unterschied zu \cs{RedeclareNewSectionCommands} führt diese Anweisung die
+% Änderung auch dann aus, wenn die Anweisung noch nicht deklariert war. Eine
+% Fehlermeldung wird aber natürlich trotzdem ausgegeben. Dieser Unterschied
+% ist jedoch notwendig, weil sonst Option \texttt{increaselevel} für
+% nachfolgende Befehle nicht mehr korrekt arbeiten würde.
+% \begin{macrocode}
+\newcommand*{\RedeclareSectionCommands}[2][]{%
+ \edef\reserved@a{#2}%
+ \def\scr@local@levelincrease{\z@}%
+ \def\scr@local@leveloffset{\z@}%
+ \def\scr@local@tocleveloffset{\z@}%
+ \@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
+ \@ifundefined{\reserved@a}{%
+ \ClassError{\KOMAClassName}{%
+ command `\expandafter\string\csname\reserved@a\endcsname` not defined%
+ }{%
+ You've tried to re-define the section command
+ `\expandafter\string\csname\reserved@a\endcsname`,\MessageBreak
+ but a command with this name does not exists.\MessageBreak
+ Maybe you should use one of \string\DeclareSectionCommand,
+ \string\DeclareNewSectionCommand,\MessageBreak
+ or \string\ProvideSectionCommand.\MessageBreak
+ Nevertheless, if you'll continue, the command will be defined.%
+ }%
+ }{}%
+ \edef\reserved@a{%
+ \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
+ }%
+ \reserved@a
+ }%
+ \let\scr@local@levelincrease\relax
+ \let\scr@local@leveloffset\relax
+ \let\scr@local@tocleveloffset\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \RedeclareSectionCommands
+%
+% \begin{macro}{\ProvideSectionCommands}
+% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A
+% \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu
+% ermöglichen}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} eingefügt}^^A
+% Hier wird es nun wirklich schwierig, weil wir irgendwie dafür sorgen müssen,
+% dass Option \texttt{increaselevel} funktioniert, auch wenn gar nichts
+% definiert werden darf. Das macht die Geschichte ein wenig auswändig.
+% \begin{macrocode}
+\newcommand*{\ProvideSectionCommands}[2][]{%
+ \edef\reserved@a{#2}%
+ \def\scr@local@levelincrease{\z@}%
+ \def\scr@local@leveloffset{\z@}%
+ \def\scr@local@tocleveloffset{\z@}%
+ \@for\reserved@a:=\reserved@a\do{%
+ \scr@trim@spaces\reserved@a
+ \@ifundefined{\reserved@a}{%
+ \edef\reserved@a{%
+ \unexpanded{\DeclareSectionCommand[{#1}]}{\reserved@a}%
+ }%
+ \reserved@a
+ }{%
+% \end{macrocode}
+% Wenn die Anweisung bereits definiert ist, dann müssen wir trotzdem die
+% Optionen auswerten, wobei allerdings nur die Option \texttt{level} und
+% \texttt{increaselevel} eine Wirkung haben dürfen. Der Rest wird per
+% \texttt{@else}-Optionen erledigt.
+% \begin{macrocode}
+ \DefineFamilyKey[.dsc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}%
+ \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]%
+ {\scr@local@levelincrease}%
+ \DefineFamilyKey[.dsc]{KOMAarg}{level}{%
+ \FamilySetCounterMacro{KOMAarg}{level}{\reserved@b}{##1}%
+ \edef\scr@local@leveloffset{%
+ \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax
+ }%
+ }%
+ \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{%
+ \FamilySetCounterMacro{KOMAarg}{toclevel}{\reserved@b}{##1}%
+ \edef\scr@local@tocleveloffset{%
+ \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax
+ }%
+ }%
+ \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{toclevel}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{level}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{increaselevel}%
+ \RelaxFamilyKey[.dsc]{KOMAarg}{@else@}%
+ }%
+ }%
+ \let\scr@local@levelincrease\relax
+ \let\scr@local@leveloffset\relax
+ \let\scr@local@tocleveloffset\relax
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \ProvideSectionCommands
+%
+% \begin{option}{bookmarkpackage}
+% \selectlanguage{english}^^A
+% \changes{v3.26}{2018/06/27}{new option}^^A
+% Package \textsf{hyperref} has problems with bookmark level gaps. So if
+% either the users omits a heading level or defines a heading with a level
+% that distinguish more than one from the previous or following level, there
+% would be a problem. One recommended solution for this would be to use
+% package \textsf{bookmark}. So if we load this package, we can use the same
+% value for bookmark levels and TOC levels even within
+% \textsf{scrartcl}. Nevertheless we allow the user to decide not to use
+% \textsf{bookmark}, but then it is not my fault, if something strange
+% happens.
+% \begin{macrocode}
+%<*option>
+\KOMA@ifkey{bookmarkpackage}{@scr@autoloadbookmarkpackage}
+\@scr@autoloadbookmarkpackagetrue
+\KOMA@kav@add{.\KOMAClassFileName}{bookmarkpackage}{true}
+\AfterAtEndOfPackage{hyperref}{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{bookmark}{}{%
+ \if@scr@autoloadbookmarkpackage
+ \ClassInfo{\KOMAClassName}{%
+ loading recommended package `bookmark'.\MessageBreak
+ Using `bookmark' together with `hyperref' is
+ recommended,\MessageBreak
+ because of handling of possible bookmark level gaps.\MessageBreak
+ You can avoid loading `bookmark' with KOMA-Script
+ option\MessageBreak
+ `bookmarkpackage=false' before \string\begin{document}
+ and\MessageBreak
+ you can avoid this message with
+ `\string\usepackage{bookmark}'\MessageBreak
+ before \string\begin{document}%
+ }%
+ \RequirePackage{bookmark}%
+% \end{macrocode}
+% \changes{v3.26b}{2019/01/17}{workaround for \cs{@beginmainauxhook} added}^^A
+% Sometimes \textsf{auxhook} is not able to recognize that it cannot use a
+% patch of \cs{document} to execute \cs{@beginmainauxhook} if it is loaded via
+% \cs{AtBeginDocument}. In this case we do it here.
+% \begin{macrocode}
+ \ifx\@beginmainauxhook\relax
+ \else
+ \if@filesw
+ \ClassWarning{\KOMAClassName}{%
+ seems someone has broken package auxhook.\MessageBreak
+ Usually this happens, if auxhook is loaded or used\MessageBreak
+ implicitly or explicitly by patching
+ `\string\document'%
+ \scr@ifundefinedorrelax{AtEndPreamble}{}{%
+ \MessageBreak
+ or via etoolbox command \string\AtEndPreamble
+ }.\MessageBreak
+ Trying an emergency workaround%
+ }%
+ \@beginmainauxhook
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+%</option>
+%</class>
+% \end{macrocode}
+% \selectlanguage{ngerman}^^A
+% \end{option}^^A bookmarkpackage
+%
+%
+% \subsection{Definitionen für Präambeln}
+%
+% Bei den \KOMAScript-Klassen \textsf{scrbook} und \textsf{scrreprt}
+% können \cs{part} und \cs{chapter} mit Präambeln versehen werden. Es
+% wird gleichzeitig eine Präambel über und unter der jeweiligen
+% Überschrift unterstützt.
+%
+% \begin{macro}{\use@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% Dieses Makro dient allgemein zum Setzen einer Präambel (für
+% Gliederungsüberschriften), wenn eine solche definiert ist. Als
+% Argument wird der Name der Präambel übergeben, an den automatisch
+% \texttt{@preamble} angehängt wird. Zum Schluss wird die gespeicherte
+% Präambel gelöscht.
+% \begin{macrocode}
+%<*class>
+%<*book|report>
+%<*body>
+\newcommand*{\use@preamble}[1]{%
+ \@ifundefined{#1@preamble}{}{%
+ \@nameuse{#1@preamble}%
+ \global\expandafter\let\csname#1@preamble\endcsname=\relax
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\set@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Das Makro \cs{set@preamble} dient allgemein der Defintion einer
+% Präambel (für Gliederungsüberschriften). Als Argument wird der
+% Name der Gliederungsebene übergeben. Danach folgt ein optionales
+% Argument, das die Position der Präambel angibt. Darauf folgt ein
+% weiteres optionales Argument, das die Breite der Präambel
+% angibt. Ist nur ein optionales Argument angegeben, so ist es die
+% Position. Es folgt ein obligatorisches Argument mit dem Inhalt der
+% Präambel. Die Definition der Präambel erfolgt global.
+% \begin{macro}{\set@@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\set@@@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \begin{macro}{\set@@@@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}^^A
+% \changes{v3.12}{2012/10/16}{b mit derselben Funktion wie u erlaubt}^^A
+% \changes{v3.12a}{2014/02/14}{b korrigiert}^^A
+% Da mehrere optionale Argumente nach einem obligatorischen Argument
+% auszuwerten sind, werden diverse Hilfsmakros benötigt.
+% \begin{macrocode}
+\newcommand*{\set@preamble}[1]{%
+% \end{macrocode}
+% Zunächst wird das erste optionale Argument gesucht.
+% \begin{macrocode}
+ \kernel@ifnextchar [%]
+ {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}%
+}
+\newcommand*{\set@@preamble}{}
+\def\set@@preamble#1[#2]{%
+% \end{macrocode}
+% Wenn ein optionales Argument existiert, kann es auch ein zweites
+% geben. Wenn nicht, wird mit der Voreinstellung gearbeitet.
+% \begin{macrocode}
+ \kernel@ifnextchar [%]
+ {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}%
+}
+\newcommand{\set@@@preamble}{}
+\long\def\set@@@preamble#1[#2][#3]#4{%
+% \end{macrocode}
+% Dies ist das Hauptmakro, das die eigentliche Arbeit macht. Es muss
+% \cs{long} definiert werden, da die Präambel auch aus mehreren
+% Absätzen bestehen kann.
+%
+% Zunächst wird das Positionsargument ausgewertet. Dies geschieht mit
+% lokalen Hilfsmakros und einer Schleife. Zur Funktion der Schleife
+% siehe im dokumentierten \LaTeX-Kern.
+% \begin{macrocode}
+ \begingroup
+ \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax
+ \expandafter \@tfor \expandafter \@tempa
+ \expandafter :\expandafter =\prmbl@pos
+ \do{%
+ \if \@tempa l%
+ \set@preamble@hpos{0}{#2}%
+ \fi%
+ \if \@tempa c%
+ \set@preamble@hpos{1}{#2}%
+ \fi%
+ \if \@tempa r%
+ \set@preamble@hpos{2}{#2}%
+ \fi%
+ \if \@tempa u%
+ \set@preamble@vpos{0}{#2}%
+ \fi%
+ \if \@tempa b%
+ \set@preamble@vpos{0}{#2}%
+ \fi
+ \if \@tempa o%
+ \set@preamble@vpos{1}{#2}%
+ \fi%
+ \if \@tempa t%
+ \set@preamble@vpos{1}{#2}%
+ \fi
+ }%
+% \end{macrocode}
+% Wurde keine horizontale oder vertikale Ausrichtung definiert, so
+% wird nun der Standardwert dafür eingesetzt.
+% \begin{macrocode}
+ \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}%
+ \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}%
+% \end{macrocode}
+% Nun sind die Positionen ermittelt und es werden abhängig davon
+% entsprechende Päambelmakros definiert.
+% \begin{macrocode}
+ \ifcase\prmbl@hpos
+% \end{macrocode}
+% Zunächst links unten und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4}%
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4}%
+ \fi
+ \or
+% \end{macrocode}
+% Dann zentriert unten und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4}%
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4}%
+ \fi
+ \else
+% \end{macrocode}
+% Zum Schluss rechts und oben:
+% \begin{macrocode}
+ \ifcase\prmbl@vpos
+ \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4}%
+ \else
+ \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4}%
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% Es folgt das Makro, mit dem die Definition tatsächlich
+% stattfindet. Das erste Argument ist der Name der Präambel, das
+% zweite die Positionsoption für die verwendete \cs{parbox}, das
+% dritte ist die Breite der \cs{parbox}, dann zwei Argumente mit der
+% horizontalen Ausrichtung vor und nach der \cs{parbox} und das
+% sechste Agument ist schließlich der Inhalt der \cs{parbox}.
+% \begin{macrocode}
+\newcommand{\set@@@@preamble}[6]{%
+ \expandafter\gdef\csname #1@preamble\endcsname{%
+ \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\set@preamble@hpos}
+% \changes{v2.8q}{2001/09/25}{neu (intern)}^^A
+% Eines der Hilfsmakros dient dazu, die horizontale Position der
+% Präambel einzustellen, falls dies nicht bereits erfolgt ist. Ist es
+% bereits nicht über"-einstimmend erfolgt, wird ein Fehler
+% ausgegeben. Dieses Makro ist extrem intern und funktioniert nur im
+% Kontext vor \cs{set@preamble}.
+% \begin{macrocode}
+\newcommand*{\set@preamble@hpos}[2]{%
+ \@ifundefined{prbml@hpos}{%
+ \def\prmbl@hpos{#1}%
+ }{%
+ \ifnum \prmbl@hpos=0\relax\else%
+ \ClassError{\KOMAClassName}{%
+ inconsistent hpos options%
+ }{%
+ You've said `#2' as position option. But you have
+ to\MessageBreak
+ use only one of `l', `r', or `c' not two of
+ these.\MessageBreak
+ If you'll continue only first hpos option will be
+ used%
+ }%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \set@preamble@hpos
+% \begin{macro}{\set@preamble@vpos}
+% \changes{v2.8q}{2001/09/25}{neu (intern)}^^A
+% Das Hilfsmakro für die vertikale Position funktioniert in gleicher
+% Weise.
+% \begin{macrocode}
+\newcommand*{\set@preamble@vpos}[2]{%
+ \@ifundefined{prbml@vpos}{%
+ \def\prmbl@vpos{#1}%
+ }{%
+ \ifnum \prmbl@vpos=0\relax\else%
+ \ClassError{\KOMAClassName}{%
+ inconsistent vpos options%
+ }{%
+ You've said `#2' as position option. But you have
+ to\MessageBreak
+ use only one of `t', `o', `b', or `u' not two of
+ these.\MessageBreak
+ If you'll continue only first vpos option will be
+ used%
+ }%
+ \fi
+ }%
+}
+%</body>
+%</book|report>
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{\KOMAScript-eigene Befehle für Verzeichniseinträge}
+% Wie schon bei den Gliederungsbefehlen genügt \KOMAScript{} nicht, was der
+% \LaTeX-Kern für Verzeichniseinträge zu bieten hat.
+%
+% \begin{macro}{\bprot@dottedtocline}
+% \changes{v2.96a}{2006/11/30}{neu (intern)}^^A
+% Dieses Makro wird benötigt, um die Ebenen unterhalb von \cs{chapter}
+% bzw. \cs{section} im Inhaltsverzeichnis ebenfalls vor unerwünschten
+% Umbrüchen zwischen Eintrag und Unterebene zu schützen.
+% \begin{macrocode}
+%<*class>
+%<*body>
+\newcommand*{\bprot@dottedtocline}[5]{%
+ \expandafter\ifnum\scr@v@is@gt{2.96}\relax
+ \ifnum #1>\c@tocdepth \else
+ \ifnum \lastpenalty<\numexpr 20010-#1\relax
+ \addpenalty{\@lowpenalty}%
+ \fi
+ \@dottedtocline{#1}{#2}{#3}{#4}{#5}%
+ \penalty \numexpr 20009-#1\relax
+ \fi
+ \else
+ \@dottedtocline{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+%</body>
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Grobeinteilung von Büchern}
+%
+% Bei Büchern gibt es teilweise eine Einteilung in Vorderteil, Hauptteil und
+% Endteil, die nicht wirklich eine Gliederung darstellt, sondern auf
+% Gliederung, Seitennummerierung etc. Einfluss nimmt.
+%
+% \begin{macro}{\if@mainmatter}
+% \begin{macro}{\@mainmattertrue}
+% \begin{macro}{\@mainmatterfalse}
+% \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung verschoben}^^A
+% Über diesen Schalter wird bei Buchklassen festgelegt, ob wir uns im
+% Hauptteil des Dokuments befinden oder nicht. Die eigentliche
+% Umschaltung geschieht mit Hilfe der Befehle \cs{frontmatter},
+% \cs{mainmatter}, \cs{backmatter}. Ohne Umschaltung befinden wir uns
+% bereits im Hauptteil.
+% \begin{macrocode}
+%<*class>
+%<*book>
+%<*body>
+\newif\if@mainmatter\@mainmattertrue
+% \end{macrocode}
+% \end{macro}^^A \@mainmatterfalse
+% \end{macro}^^A \@mainmattertrue
+% \end{macro}^^A \if@mainmatter
+%
+% \begin{macro}{\frontmatter}
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
+% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}^^A
+% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
+% \cs{cleardoublepage}}^^A
+% Der Vorspann enthält bei Büchern oftmals Inhaltsverzeichnis, Vorwort
+% und dergleichen und wird mit kleinen römischen Seitenzahlen
+% versehen.
+% \begin{macrocode}
+\newcommand*\frontmatter{%
+ \if@twoside\cleardoubleoddpage\else\clearpage\fi
+ \@mainmatterfalse\pagenumbering{roman}%
+}
+% \end{macrocode}
+% \end{macro}^^A \frontmatter
+% \begin{macro}{\mainmatter}
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
+% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten}^^A
+% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
+% \cs{cleardoublepage}}^^A
+% Der Hauptteil ist das Fleisch der Bücher.
+% \begin{macrocode}
+\newcommand*\mainmatter{%
+ \if@twoside\cleardoubleoddpage\else\clearpage\fi
+ \@mainmattertrue\pagenumbering{arabic}%
+}
+% \end{macrocode}
+% \end{macro}^^A \mainmatter
+% \begin{macro}{\backmatter}
+% \changes{v3.00}{2008/09/27}{\cs{cleardoubleoddpage} statt
+% \cs{cleardoublepage}}^^A
+% Auch wenn nicht ganz einzusehen ist, warum das anders sein soll,
+% wird hier nicht nach der Option \texttt{twoside}, sondern nach
+% \texttt{openright} unterschieden.
+% \begin{macrocode}
+\newcommand*\backmatter{%
+ \if@openright\cleardoubleoddpage\else\clearpage\fi\@mainmatterfalse
+}
+%</body>
+%</book>
+%</class>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Anhang}
+%
+% Teile gibt es tatsächlich bei allen drei Hauptklassen.
+%
+% \begin{macro}{\appendix}
+% Wird der Anhang aktiviert, so werden Kapitel bzw. Abschnitte zukünftig mit
+% Buchstaben nummeriert.
+% \changes{v2.2d}{1995/05/28}{\textsf{scrartcl} benötigt keinen Zähler für
+% \cs{chapter}}^^A
+% \changes{v2.3c}{1995/08/06}{alternative Nummerierung bei Verwendung eines
+% Anhangs}^^A
+% \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet}^^A
+% \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht länger
+% ausgeführt}^^A
+% \changes{v2.8o}{2001/09/19}{\cs{par} eingefügt}^^A
+% \changes{v2.95}{2006/07/04}{\cs{newcommand*} durch \cs{gdef} ersetzt}^^A
+% \changes{v2.95}{2006/07/04}{Ausführung von \cs{appendixmore}^^A
+% vereinfacht}^^A
+% \changes{v3.20}{2016/12/05}{neue eindeutige Warnung}
+% \begin{macro}{\appendixmore}
+% \cs{appendixmore} kann als \emph{hook} verwendet werden. Derzeit wird dieser
+% allerdings noch recht stiefmütterlich behandelt und lediglich von Option
+% \texttt{appendixprefix} definiert.
+% \begin{macrocode}
+%<*class>
+%<*body>
+\newcommand*\appendix{%
+ \ifstr{\@currenvir}{appendix}{%
+ \ClassWarning{\KOMAClassName}{%
+ You are using
+ `\string\begin{appendix}...\string\end{appendix}'.\MessageBreak
+ You should note, that `\string\appendix' is a mostly
+ globally\MessageBreak
+ working command not an enviroment with only local\MessageBreak
+ effects. Therefore `\string\end{appendix}' will neither\MessageBreak
+ switch back to normal section numbering nor finish\MessageBreak
+ every other effect of `\string\begin{appendix}'.\MessageBreak
+ Nevertheless, some effects may end with\MessageBreak
+ `\string\end{appendix}' and the document may become\MessageBreak
+ inconsistent.\MessageBreak
+ Because of this, you should remove `\string\end{appendix}'\MessageBreak
+ and replace `\string\begin{appendix}' by command\MessageBreak
+ `\string\appendix'%
+ }%
+ }{}%
+ \par%
+%<*article>
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \gdef\thesection{\@Alph\c@section}%
+%</article>
+%<*report|book>
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \gdef\@chapapp{\appendixname}%
+ \gdef\thechapter{\@Alph\c@chapter}%
+%</report|book>
+ \csname appendixmore\endcsname
+}
+%</body>
+%</class>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Teile}
+%
+% \changes{v2.8e}{2001/07/10}{\cs{@thepart} entfernt}
+%
+% Teile sind bei den unterschiedlichen Klassen unterschiedlich definiert.
+%
+% \begin{macro}{\size@part}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
+% wenn es keine Auswirkung auf den Zeilen abstand hat}^^A
+% \begin{macro}{\size@partnumber}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
+% wenn es keine Auswirkung auf den Zeilen abstand hat}^^A
+% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
+% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
+% \begin{macrocode}
+%<*class>
+%<*prepare>
+\newcommand*{\size@part}{}
+\newcommand*{\size@partnumber}{}
+%</prepare>
+% \end{macrocode}
+% \end{macro}^^A \size@partnumber
+% \end{macro}^^A \size@part
+%
+%
+% \begin{macro}{\partheadstartvskip}
+% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A
+% \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
+% \cs{scr@part@beforeskip}}^^A
+% \begin{macro}{\partheadmidvskip}
+% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A
+% \begin{macro}{\partheadendvskip}
+% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A
+% \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet
+% \cs{scr@part@afterskip}}^^A
+% \begin{macro}{\parheademptypage}
+% \changes{v3.02}{2009/01/01}{neue Konfigurationsmöglichkeit}^^A
+% Diese vier Makros werden verwendet, um den Abstand über in und unter der
+% Überschrift eines Teils und die leere Rückseite zu definieren. Prinzipiell
+% kann damit auch der Umbruch zwischen Nummer und Text entfernt werden.
+% Da die Größe nicht über Option \texttt{headings} beeinflusst werden kann,
+% müssen diese Hilfsmakros nicht bereits vor den Optionen definiert werden.
+%
+% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
+% zunächst einige Hilfsanweisung definiert und verwendet.
+% \begin{macro}{\scr@part@sectionbeforeskip}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@beforeskip}}^^A
+% \begin{macro}{\scr@part@sectionafterskip}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% \changes{v3.17}{2015/03/25}{umbenannt in \cs{scr@part@afterskip}}^^A
+% \begin{macro}{\scr@part@sectionindent}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}^^A
+% \changes{v3.17}{2015/03/24}{entfernt}^^A
+% \end{macro}^^A \scr@part@sectionindent
+% \end{macro}^^A \scr@part@sectionafterskip
+% \end{macro}^^A \scr@part@sectionbeforeskip
+% \begin{macro}{\scr@part@beforeskip}
+% \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von
+% \cs{scr@part@ectionbeforeskip}}^^A
+% \begin{macro}{\scr@part@innerskip}
+% \changes{v3.17}{2015/03/24}{neu (intern)}^^A
+% \begin{macro}{\scr@part@afterskip}
+% \changes{v3.17}{2015/03/25}{neu (intern) aus Umdefinierung von
+% \cs{scr@part@ectionbeforeskip}}^^A
+% \begin{macro}{\scr@part@style}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% Es wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part}
+% über \cs{DeclareSectionCommand} verhindert werden.
+% \begin{macrocode}
+%<*prepare>
+\newcommand*{\scr@part@beforeskip}{%
+%<article> 4ex
+% \end{macrocode}
+% Hinweis: Das |+\baselineskip| wird benötigt, um Kompatibilitätsprobleme mit
+% der Umdefinierung von |\chapterheadstartvskip| zu vermeiden.
+% \begin{macrocode}
+%<report|book> \z@ \@plus 1fil + \baselineskip
+}
+%<book|report>\newcommand*{\scr@part@innerskip}{20\p@}
+\newcommand*{\scr@part@afterskip}{%
+%<article> 3ex
+%<report|book> \z@ \@plus 1fil
+}
+\newcommand*{\scr@part@style}{part}
+% \end{macrocode}
+% \end{macro}^^A \scr@part@style
+% \end{macro}^^A \scr@part@afterskip
+% \end{macro}^^A \scr@part@innerskip
+% \end{macro}^^A \scr@part@beforeskip
+% \begin{macrocode}
+\newcommand*{\partheadstartvskip}{%
+%<article> \addvspace{\@tempskipa}%
+%<report|book> \null\vskip-\baselineskip\vskip\@tempskipa
+}
+\newcommand*{\partheadmidvskip}{%
+ \par\nobreak
+%<book|report> \vskip\@tempskipa
+}
+\newcommand*{\partheadendvskip}{%
+%<article> \vskip\@tempskipa
+%<report|book> \vskip\@tempskipa\newpage
+}
+%<*report|book>
+\newcommand*{\partheademptypage}{%
+ \if@twoside\if@openright
+ \null%
+ \thispagestyle{empty}%
+ \newpage
+ \fi\fi
+}
+%</report|book>
+%</prepare>
+% \end{macrocode}
+% \end{macro}^^A \partheademptypage
+% \end{macro}^^A \partheadendvskip
+% \end{macro}^^A \partheadmidvskip
+% \end{macro}^^A \partheadstartvskip
+%
+%
+% \begin{macro}{\scr@startpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{part}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
+% \changes{v2.8p}{2001/09/27}{Präambel über der Überschrift hinzugefügt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
+% leer}^^A
+% \changes{v3.26}{2018/10/14}{Option \texttt{afterindent} wird beachtet}^^A
+% Die Anweisung definiert den Gliederungsüberschriften-Stil
+% \texttt{part}. Dazu bekommt sie als einziges explizites Argument den
+% \meta{Namen} der Gliederungsüberschrift. Weitere Argumente wie ein
+% optionaler Stern oder ein optionales Argument für Inhaltsverzeichnis und
+% Kolumnentitel sowie ein obligatorisches Argument für den Text der
+% Überschrift sind implizit, das heißt, sie werden erst im weiteren Verlauf
+% von Unter-Macros eingelesen und verarbeitet.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@startpart}[1]{%
+%<article> \par
+%<*book|report>
+ \if@openright\cleardoublepage\else\clearpage\fi
+ \scr@ifundefinedorrelax{#1pagestyle}{}{%
+ \ifstr{#1pagestyle}{}{}{%
+ \thispagestyle{\@nameuse{#1pagestyle}}%
+ }%
+ }%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+%</book|report>
+ \@tempskipa=\glueexpr\@nameuse{scr@#1@beforeskip}\relax
+ \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \ifdim\@tempskipa<\z@
+ \@tempskipa=-\@tempskipa
+ \@afterindentfalse
+ \fi
+ }%
+ }%
+ \partheadstartvskip
+%<*book|report>
+ \vbox to\z@{\vss\use@preamble{#1@o}\strut\par}%
+ \vskip-\baselineskip\nobreak
+%</book|report>
+ \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
+}
+% \end{macrocode}
+%
+% \begin{macro}{\scr@@startpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@part}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.95}{2002/08/13}{\cs{centering} und \cs{@parskipfalse}%
+% \cs{@parskip@indent} vertauscht}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% Die Anweisung macht die eigentliche Arbeit für den Fall einer
+% Gliederungsanweisung ohne Stern. Das erste obligatorische Argument ist der
+% \meta{Name} der Gliederungsanweisung. Das zweite eigentlich optionale
+% Argument, das hier jedoch zwingend ist, ist der \meta{Spezial-Text} für
+% Kolumnentitel und Inhaltsverzeichnis. Das dritte obligatorische Argument
+% ist der \meta{Text} für die Überschrift.
+% \begin{macrocode}
+\newcommand{\scr@@startpart}{}
+\long\def\scr@@startpart#1[#2]#3{%
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
+% erfolgen, falls das erweitere optionale Argument aktiviert ist:
+% \begin{macrocode}
+ \ifnum \scr@osectarg=\z@
+ \@scr@tempswafalse
+ \else
+ \scr@istest#2=\@nil
+ \fi
+ \if@scr@tempswa
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}%
+ \else
+ \ifcase \scr@osectarg\relax
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
+% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
+% erstellt werden.
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry} in
+% \cs{typeout}}^^A
+% \begin{macrocode}
+ \ifnumbered{#1}{%
+ \refstepcounter{#1}%
+ \@maybeautodot\thepart%
+ \expandafter\@maybeautodot\csname the#1\endcsname
+ \typeout{#1 \csname the#1\endcsname.}%
+ \ifx\@currenttocentry\@empty\else
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{\csname the#1\endcsname}{\@currenttocentry}%
+ \fi
+ }{%
+% \end{macrocode}
+% \changes{v3.18}{2015/05/23}{Resetliste auch bei nicht nummerierten
+% Überschriften abarbeiten}^^A
+% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
+% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
+% erstellen.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@v@is@lt{3.18}\relax\else
+ \begingroup
+ \let\@elt\@stpelt
+ \csname cl@#1\endcsname
+ \endgroup
+ \fi
+ \typeout{#1 without number}%
+ \ifx\@currenttocentry\@empty\else
+% \end{macrocode}
+% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
+% Inhaltsverzeichniseinträge ausgeführt werden.
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addparttocentry}}^^A
+% \changes{v3.18}{2015/05/23}{\cs{addparttocentry} verallgemeinert}^^A
+% \begin{macrocode}
+ \hy@insteadofrefstepcounter{#1}%
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{}{\@currenttocentry}%
+ \fi
+ }%
+% \end{macrocode}
+% Es folgt das eigentliche Setzen der Überschrift. Übrigens ist der ganze Code
+% oben bei \cs{scr@@startchapter} praktisch identisch. Lediglich das
+% Abarbeiten der Resetliste gibt es dort bereits seit Version~3.15. In
+% \cs{scr@@startchapter} wird an dieser Stelle dann \cs{@make\dots head}
+% ausgeführt. Das könnte man eigentlich irgendwann hier genauso machen.
+% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt}^^A
+% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch
+% \cs{size@partnumber} ersetzt}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor \cs{size@part} und
+% \cs{size@partnumber} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt einen
+% Bug im color Paket}^^A
+% \changes{v3.18}{2015/05/23}{\cs{size@\dots} durch \cs{usekomafont}
+% ersetzt}^^A
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} definiert}^^A
+% \changes{v3.25}{2017/09/07}{\cs{sectfont} durch \cs{usekomafont}
+% ersetzt}^^A
+% \changes{v3.25}{2017/09/07}{Umstellung auf
+% \cs{partlineswithprefixformat}}^^A
+% \changes{v3.25}{2018/02/12}{Verwendung des korrekten Font-Elements}^^A
+% \begin{macrocode}
+ \begingroup
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \def\IfUseNumber{\ifnumbered{#1}}%
+ \raggedpart
+ \normalfont\usekomafont{disposition}{\nobreak
+ \IfUseNumber{%
+ \partlineswithprefixformat{#1}{%
+ \usekomafont{#1prefix}{\nobreak\@nameuse{#1format}}%
+%<book|report> \setlength{\@tempskipa}{\@nameuse{scr@#1@innerskip}}%
+ \partheadmidvskip
+ }{%
+ \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}%
+ }%
+ }{%
+ \partlineswithprefixformat{#1}{}{%
+ \usekomafont{#1}{\nobreak\interlinepenalty \@M#3\strut\@@par}%
+ }
+ }%
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
+% stattdessen \cs{@mkboth}{}{} aufgerufen.}^^A
+% Und noch den Kolumnentitel setzen.
+% \begin{macrocode}
+ \expandafter\ifx\csname #1mark\endcsname\@gobble
+ \@mkboth{}{}%
+ \else
+ \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
+ \fi
+ }%
+ \endgroup
+% \end{macrocode}
+% Ganz zum Schluss muss noch einmal ein Abstand eingefügt werden.
+% \begin{macrocode}
+%<*article>
+ \nobreak
+ \@tempskipa=\glueexpr\@nameuse{scr@#1@afterskip}\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \partheadendvskip
+%</article>
+%<book|report> \@nameuse{@end#1}%
+% \end{macrocode}
+% \changes{v3.26}{2018/10/14}{Verwendung von \@cs{@afterheading} für
+% \textsf{scrbook} und \textsf{scrreprt}}^^A
+% Ab \KOMAScript{} 3.26 wird hier \cs{@afterheading} für alle Klassen
+% aufgerufen. Damit kann der Einzug nach der Überschrift eingestellt werden.
+% \begin{macrocode}
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startpart
+%
+% \begin{macro}{\scr@@startspart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark}^^A
+% bzw. \cs{sectionmark} eingefügt, um die Kolumnentitel zu
+% löschen}^^A
+% \changes{v2.6a}{2000/01/20}{zum Löschen der Kolumnentitel wird
+% nun \cs{@mkboth} verwendet}^^A
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}^^A
+% \changes{v2.95}{2002/08/13}{\cs{centering} und
+% \cs{@parskipfalse}\cs{@parskip@indent} vertauscht}^^A
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} und \cs{@parskip@indent}
+% ersetzt}^^A
+% Die Anweisung macht die eigentliche Arbeit für den Fall einer
+% Gliederungsanweisung mit Stern. Das erste obligatorische Argument ist der
+% \meta{Name} der Gliederungsanweisung. Das zweite obligatorische Argument
+% ist der \meta{Text} für die Überschrift.
+% \begin{macrocode}
+\newcommand{\scr@@startspart}[2]{%
+% \end{macrocode}
+% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
+% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
+% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
+% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
+% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
+% soll.
+% \begin{macrocode}
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \hy@insteadofrefstepcounter{#1}%
+ \endgroup
+% \end{macrocode}
+% Erst dann erfolgt die tatsächliche Ausgabe der Überschrift.
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} definiert}^^A
+% \changes{v3.25}{2017/09/07}{\cs{sectfont} durch \cs{usekomafont}
+% ersetzt}^^A
+% \changes{v3.25}{2017/09/07}{Umstellung auf
+% \cs{partlineswithprefixformat}}^^A
+% \begin{macrocode}
+ \begingroup
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \let\IfUseNumber\@secondoftwo
+ \raggedpart
+ \normalfont\usekomafont{disposition}{%
+ \nobreak
+ \partlineswithprefixformat{#1}{}{%
+ \usekomafont{#1}{\nobreak\interlinepenalty \@M#2\strut\@@par}%
+ }%
+ \@mkboth{}{}%
+ }%
+ \endgroup
+%<*article>
+ \nobreak
+ \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \partheadendvskip
+ \@afterheading
+%</article>
+%<book|report> \@nameuse{@end#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startspart
+%
+% \begin{macro}{\partlineswithprefixformat}
+% \changes{v3.25}{2017/09/07}{neu}
+% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
+% \texttt{part}. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt
+% order Teil der Argumente. Die Argumente sind:
+% \begin{description}
+% \item[\meta{Befehlsname} --] der Name der Gliederungsebene, normalerweise
+% \texttt{chapter}.
+% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
+% Gliederungsnummer einschließlich des nachfolgenden vertikalen Abstands
+% oder leer, falls keine Gliederungsnummer auszugeben ist.
+% \item[\meta{Text} --] der Text der Überschrift.
+% \end{description}
+% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
+% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
+% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
+% internen Absatz abgeschlossen wird.
+% \begin{macrocode}
+\newcommand{\partlineswithprefixformat}[3]{%
+ #2#3%
+}
+% \end{macrocode}
+% \end{macro}^^A \partlineswithprefixformat
+%
+% \begin{macro}{\scr@@endpart}
+% \changes{v3.18}{2015/05/23}{neue Anweisung (intern)}^^A
+% Diese Anweisung ist von der ursprünglichen Definition von \cs{@spart}
+% abgeleitet und erbt deren ChangeLog-Einträge.
+% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird für
+% \textsf{scrartcl} nicht mehr definiert}^^A
+% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten}^^A
+% \changes{v2.6c}{2000/06/10}{\cs{@endpart} fügt nur noch in
+% beidseitigen Dokumenten bei Verwendung von \texttt{openright} eine
+% Leerseite ein}^^A
+% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingefügt}^^A
+% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt
+% \cs{@part@preamble}}^^A
+% \changes{v3.02}{2009/01/01}{Verwendung des neuen
+% \cs{partheademptypage}}^^A
+% Die Anweisung wird bei \textsf{scrbook} und \textsf{screprt} verwendet, um
+% die Überschrift abzuschließen. \textsf{scrartcl} hat keine solche Anweisung.
+% Da einzige Argument ist der \meta{Name} der Gliederungsanweisung.
+% \begin{macrocode}
+%<*book|report>
+\newcommand*{\scr@@endpart}[1]{%
+ \vbox to\z@{\use@preamble{#1@u}\vss}%
+ \@tempskipa=\glueexpr\csname scr@#1@afterskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \partheadendvskip
+ \partheademptypage
+ \if@tempswa
+ \twocolumn
+ \fi
+}
+%</book|report>
+% \end{macrocode}
+% \end{macro}^^A \scr@@endpart
+% \end{macro}^^A \scr@startpart
+%
+%
+% \begin{macro}{\hy@insteadofrefstepcounter}
+% \changes{v3.18}{2015/05/22}{neu (intern und \textsf{hyperref})}
+% Normalerweise führt \textsf{hyperref} via \cs{refstepcounter}
+% Initialisierungen für ein nachfolgendes \cs{addcontentsline} durch. Wenn
+% allerdings eine nicht nummerierte Überschrift ins Inhaltsverzeichnis
+% eingetragen wird, dann fehlt das vorherige \cs{refstepcounter}. Statt
+% \cs{@chapter}, \cs{@schapter}, \cs{@part}, \cs{@spart} etc. direkt zu
+% patchen, erscheint es mir sinnvoller einen Hook dafür zu definieren, der
+% dann von \textsf{hyperref} entsprechend definiert werden kann. Solange
+% \textsf{hyperref} das nicht macht, versuche ich mich selbst daran und kann
+% nur hoffen, dass es funktioniert. Dabei verwende ich im Gegensatz zu
+% \textsf{hyperref} für \cs{Hy@MakeCurrentHrefAuto} kein \cs{Hy@chapapp}, weil
+% ja \cs{autoref} für nicht nummerierte Überschriften ohnehin sinnlos
+% ist. Stattdessen verwende ich den Gliederungsbefehl.
+% \begin{macrocode}
+\newcommand*{\hy@insteadofrefstepcounter}[1]{}
+\let\hy@insteadofrefstepcounter\@gobble
+\BeforePackage{hyperref}{%
+ \let\scr@orig@chapter\@chapter
+ \let\scr@orig@schapter\@schapter
+ \let\scr@orig@addchap\@addchap
+}
+\AfterPackage!{hyperref}{%
+ \let\@chapter\scr@orig@chapter
+ \let\@schapter\scr@orig@schapter
+ \let\@addchap\scr@orig@addchap
+ \ifx\hy@insteadofrefstepcounter\@gobble
+ \renewcommand*{\hy@insteadofrefstepcounter}[1]{%
+ \Hy@MakeCurrentHrefAuto{#1*}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \hy@insteadofrefstepcounter
+%
+% \begin{macro}{\addparttocentry}
+% \changes{v3.08}{2010/11/01}{Neu}^^A
+% Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{part}
+% per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das
+% erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht
+% nummerierten Teilen leer. Das zweite Argument ist der Überschriftstext für
+% das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach
+% umdefiniert werden. Verwendet wird hier die Standardanweisung für
+% Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist:
+% \begin{macrocode}
+\newcommand*{\addparttocentry}[2]{%
+ \addtocentrydefault{part}{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \addparttocentry
+%
+%
+% \begin{macro}{\part}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@startpart}}^^A
+% \begin{macro}{\@part}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@startpart}}^^A
+% \begin{macro}{\@spart}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@startspart}}^^A
+% \begin{macro}{\@endpart}
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\setpartpreamble}
+% \changes{v2.8f}{2001/07/12}{neu}^^A
+% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\part@u@preamble}
+% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
+% \changes{v2.8p}{2001/09/27}{Ersatz für \cs{part@preamble}}^^A
+% \changes{v3.12a}{2014/02/14}{flaschen (\cs{part@preamble@u}) Namen
+% korrigiert}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% \begin{macro}{\part@o@preamble}
+% \changes{v2.8p}{2001/09/27}{neu (intern)}^^A
+% \changes{v3.12a}{2014/02/14}{flaschen Namen (\cs{part@preamble@o})
+% korrigiert}^^A
+% \changes{v3.18}{2015/05/23}{siehe \cs{scr@dsc@def@style@part@command} und
+% \cs{scr@@endpart}}^^A
+% Diese Anweisungen werden indirekt über \cs{DeclareSectionCommand} und
+% \cs{scr@dsc@def@style@part@command} bzw. \cs{setpartpreamble} definiert.
+% \end{macro}^^A \setpartpreamble
+% \end{macro}^^A \part@u@preamble
+% \end{macro}^^A \part@o@preamble
+% \end{macro}^^A \@endpart
+% \end{macro}^^A \@spart
+% \end{macro}^^A \@part
+% \end{macro}^^A \part
+%
+% \begin{macro}{\addpart}
+% \changes{v2.8c}{2001/06/29}{neu}^^A
+% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}}^^A
+% \changes{v2.95a}{2006/07/10}{support of preamble added}^^A
+% \changes{v3.11b}{2012/07/29}{missing negativ \cs{vskip} added}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \changes{v3.15a}{2015/01/22}{Anpassung an geänderte Abstandsbehandlung bei
+% \cs{part} und \cs{@spart}}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
+% \begin{macro}{\@addpart}
+% \changes{v2.8c}{2001/06/29}{neu (intern)}^^A
+% \changes{v2.8l}{2001/08/17}{erst eintragen, dann ausgeben}^^A
+% \changes{v2.95}{2004/07/20}{kann Kolumnentitel erzeugen}^^A
+% \changes{v3.00}{2008/07/01}{Notlösung für \textsf{hyperref} eingefügt}^^A
+% \changes{v3.08}{2010/11/02}{Verwendung von \cs{addparttocentry}}^^A
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird
+% \cs{@mkboth}{}{} aufgerufen.}^^A
+% \changes{v3.17}{2015/04/20}{Es wird \cs{addpartmark} verwendet und auch
+% nie \cs{@mkboth}{}{} aufgerufen.}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
+% \begin{macro}{\@saddpart}
+% \changes{v2.8c}{2001/06/29}{neu (intern)}^^A
+% \changes{v3.18}{2015/05/25}{Komplett neu definiert}^^A
+% \begin{macrocode}
+\newcommand\addpart{%
+ \SecDef\@addpart\@saddpart
+}
+\newcommand*{\@addpart}{}
+\long\def\@addpart[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \part[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \partnumdepth-1\relax
+ \reserved@a
+}
+\newcommand{\@saddpart}[1]{%
+ \part*{#1}%
+ \addpartmark{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@saddpart
+% \end{macro}^^A \@addpart
+% \end{macro}^^A \addpart
+%
+%
+% \begin{macro}{\l@part}
+% \changes{v2.97c}{2007/06/21}{\cs{sectfont}\cs{large} durch Verwendung von
+% Element \texttt{partentry} ersetzt}^^A
+% \changes{v2.97c}{2007/06/21}{Element \texttt{partentrypagenumber} wird
+% verwendet}^^A
+% \changes{v3.15}{2014/12/23}{Verwendung von \cs{parttocdepth} und
+% \cs{scr@part@numwidth}}^^A
+% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}^^A
+% Der Eintrag für \cs{part}. Es werden einige Hilfsmakros passend zu
+% \cs{DeclareSectionCommand} definiert. Dadurch können diverse Einstellungen
+% darüber geändert werden. Es kann jedoch derzeit kein neuer Stil zugewiesen
+% werden.
+% \begin{macro}{\scr@part@tocindent}
+% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}^^A
+% Der Einzug des Eintrags noch vor der Nummer.
+% \end{macro}^^A \scr@part@tocindent
+% \begin{macro}{\scr@part@tocnumwidth}
+% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/06/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% Die definierte Breite der Nummer für den Eintrag ins Inhaltsverzeichnis.
+% \end{macro}
+% \end{macro}^^A \l@part
+%
+%
+% \begin{Counter}{part}
+% \begin{macro}{\thepart}
+% \begin{macro}{\partformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A
+% \changes{v2.5f}{1999/02/14}{überflüssiges Leerzeichen am Ende
+% entfernt}^^A
+% \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot}^^A
+% wieder eingefügt}^^A
+% Jede Gliederungsebene benötigt einen Zähler für die Gliederungsnummer und
+% eine Darstellung des Zählers (\cs{the\dots}). Desweiteren wird eine
+% Formatierung des Zählers in den Gliederungsüberschriften
+% (\texttt{\bslash\dots format}) benötigt.
+% \begin{macrocode}
+\newcounter{part}
+\renewcommand*{\thepart}{\@Roman\c@part}
+\newcommand*{\partformat}{\partname~\thepart\autodot}
+% \end{macrocode}
+% \end{macro}^^A \partformat
+% \end{macro}^^A \thepart
+% \end{Counter}{part}
+%
+%
+% \begin{macro}{\partname}
+% Namen der Gliederungsebenen \cs{part}.
+% \begin{macrocode}
+\newcommand*\partname{Part}
+% \end{macrocode}
+% \end{macro}^^A \partname
+%
+%
+% \begin{macro}{\partmark}
+% \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}^^A
+% \changes{v3.18}{2015/05/24}{Voreinstellung von \cs{@gobble} zu
+% \cs{@mkboth{}{}} geändert}
+% \begin{macrocode}
+\newcommand*{\partmark}[1]{\@mkboth{}{}}
+% \end{macrocode}
+% \end{macro}^^A \partmark
+%
+% \begin{macro}{\addpartmark}
+% \changes{v3.17}{2015/04/20}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/24}{abhängig von \cs{partnumdepth}}^^A
+% Analog zu \cs{addchapmark} für \cs{addpart}. Auch dabei gilt, dass
+% \cs{if@mainmatter} hier auch von \textsf{scrreprt} definiert wird. Das ist
+% Absicht und vereinfacht dem einen oder anderen Paket oder Benutzer
+% vielleicht die Arbeit.
+% \begin{macrocode}
+\newcommand*\addpartmark[1]{%
+ \begingroup
+ \expandafter\let\csname if@mainmatter\expandafter\endcsname
+ \csname iffalse\endcsname
+ \c@secnumdepth=\numexpr \partnumdepth-1\relax
+ \partmark{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \addpartmark
+%
+%
+% \begin{macro}{\raggedpart}
+% \changes{v2.95a}{2006/07/10}{neue Konfigurationsmöglichkeit}^^A
+% Die Ausrichtung der Überschrift von \cs{part} kann davon abweichend über
+% \cs{raggedpart} konfiguriert werden. Die Voreinstellung ist von der
+% Klasse abhängig.
+% \begin{macrocode}
+\newcommand*{\raggedpart}{}
+%<article>\let\raggedpart\raggedsection
+%<report|book>\let\raggedpart\centering
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{KOMAfont}{part}
+% \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}^^A
+% \begin{macro}{\scr@fnt@part}
+% \changes{v2.8p}{2001/09/23}{neues Element \texttt{part}}^^A
+% \begin{KOMAfont}{partnumber}
+% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}^^A
+% \begin{macro}{\scr@fnt@partnumber}
+% \changes{v2.8p}{2001/09/23}{neues Element \texttt{partnumber}}^^A
+% \begin{KOMAfont}{partprefix}
+% \changes{v3.18}{2015/06/10}{neues Alias-Element \texttt{partprefix}}^^A
+% \begin{macrocode}
+\newcommand*{\scr@fnt@part}{\size@part}
+\newcommand*{\scr@fnt@partnumber}{\size@partnumber}
+\aliaskomafont{partprefix}{partnumber}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{partentry}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
+% \texttt{disposition} ersetzt}^^A
+% Schrift für den \cs{part}-Eintrag im Inhaltsverzeichnis.
+% \begin{macrocode}
+\newkomafont{partentry}{\usekomafont{disposition}\large}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{partentrypagenumber}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% Schrift für die Seitenzahl des \cs{part}-Eintrags im Inhaltsverzeichnis
+% abweichend von \texttt{partentry}.
+% \begin{macrocode}
+\newkomafont{partentrypagenumber}{}
+%</body>
+%</class>
+% \end{macrocode}
+% \end{KOMAfont}
+%
+%
+% \subsection{Kapitel}
+%
+% Bei den Klassen \texttt{scrbook} und \texttt{scrreprt} gibt es im
+% Unterschied zu \texttt{scrartcl} auch noch die Kapitelebene. Für die
+% Definition des Kapitelstils mittels \cs{DeclareSectionCommand} werden neben
+% den Optionen und \cs{scr@dsc@def@style@chapter@command} noch diverse
+% Anweisungen benötigt. Diese sind allesamt von der ursprünglichen Definition
+% für Kapitel abgeleitet. Eine Besonderheit ist dabei, dass \textsf{hyperref}
+% dem neuen Code durch (inkompatible) Umdefinierung von \cs{@schapter} und
+% \cs{@chapter} in die Quere kommt. Das gilt es also zusätzlich zu verhindern
+% und dennoch \cs{hyperref} zu berücksichtigen. Dies gelingt am einfachsten
+% durch einen neuen Hook, den \cs{hyperref} zukünftig gerne selbst passend
+% umdefinieren kann. Wer sonst noch an \cs{@chapter} und \cs{@schaper}
+% herumdoktert und dabei \KOMAScript{} aus dem Tritt bringt, ist selbst
+% schuld.
+%
+% \begin{option}{chapterprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}^^A
+% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^A
+% \changes{v3.18}{2015/05/22}{die Option bezieht sich allgemein auf den
+% Gliederungsstil}^^A
+% \begin{option}{nochapterprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}^^A
+% \changes{v2.95c}{2006/08/21}{obsolete Option}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Normalerweise verwenden \textsf{scrbook} und \textsf{scrreprt} nicht
+% die enorm großen Überschriften von \textsf{book} und
+% \textsf{report}, die mit einem Absatz "`Kapitel \emph{Nummer}"'
+% beginnen. Mit der Option \texttt{chapterprefix} kann dies jetzt
+% wieder aktiviert werden. Die Option, zur Deaktivierung heißt
+% entsprechend \textsf{nochapterprefix}.
+% Um für Spezialanwendungen auch innerhalb des Dokuments eine
+% Umschaltung zu ermöglichen bzw. für die Optionen
+% \texttt{appendixprefix} und \texttt{noappendixprefix} erfolgt die
+% Umschaltung durch einen Schalter.
+% \begin{macrocode}
+%<*class>
+%<*book|report>
+%<prepare>\newif\if@chapterprefix
+%<*option>
+\KOMA@key{chapterprefix}[true]{%
+ \KOMA@set@ifkey{chapterprefix}{@chapterprefix}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@replacebool{.\KOMAClassFileName}%
+ {chapterprefix}{@chapterprefix}%
+ \KOMA@kav@remove{.\KOMAClassFileName}%
+ {headings}{twolinechapter}%
+ \KOMA@kav@remove{.\KOMAClassFileName}%
+ {headings}{onelinechapter}%
+ \KOMA@kav@xadd{.\KOMAClassFileName}%
+ {headings}{%
+ \if@chapterprefix twolinechapter\else onelinechapter\fi
+ }%
+ \fi
+}
+\KOMA@DeclareDeprecatedOption{nochapterprefix}{chapterprefix=false}
+\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}%
+%</option>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{appendixprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}^^A
+% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A
+% \begin{option}{noappendixprefix}
+% \changes{v2.8}{2001/06/15}{neue Option}^^A
+% \changes{v2.95c}{2006/08/21}{obsolete Option}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% Will man abweichend von der Option \texttt{chapterprefix} die großen
+% Überschriften für den Anhang aktivieren oder deaktivieren, so kann man das
+% mit dieser Option erreichen. Allerdings setzt diese keinen Schalter, sondern
+% ein Zusatzmakro, das auch für andere Zwecke genutzt werden kann. Übrigens
+% ist keine der beiden Einstellungen die Voreinstellung!
+% \begin{macrocode}
+%<*option>
+\KOMA@key{appendixprefix}[true]{%
+ \KOMA@set@ifkey{appendixprefix}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.\KOMAClassFileName}{appendixprefix}{#1}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{twolineappendix}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{onelineappendix}%
+ \if@tempswa
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{twolineappendix}%
+ \@ifundefined{appendixmore}{%
+ \def\appendixmore{\@chapterprefixtrue}%
+ }{%
+ \l@addto@macro\appendixmore{\@chapterprefixtrue}%
+ }%
+ \else
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{onelineappendix}%
+ \@ifundefined{appendixmore}{%
+ \def\appendixmore{\@chapterprefixfalse}%
+ }{%
+ \l@addto@macro\appendixmore{\@chapterprefixfalse}%
+ }%
+ \fi
+ \fi
+}
+\KOMA@DeclareDeprecatedOption{noappendixprefix}{appendixprefix=false}
+%</option>
+% \end{macrocode}
+% \end{option}^^A noappendixprefix
+% \end{option}^^A appendixprefix
+%
+%
+% \begin{macro}{\size@chapter}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \changes{v2.96a}{2006/12/02}{letztes Element darf ein Argument erwarten,
+% wenn es keine Auswirkung auf den Zeilen abstand hat}^^A
+% \begin{macro}{\size@chapterprefix}
+% \changes{v2.96a}{2006/12/02}{neu (intern)}^^A
+% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
+% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
+% \begin{macrocode}
+%<*prepare>
+\newcommand*{\size@chapter}{}
+\newcommand*{\size@chapterprefix}{\size@chapter}
+%</prepare>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\chapterheadstartvskip}
+% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} wird
+% definiert und verwendet}^^A
+% \begin{macro}{\chapterheadendvskip}
+% \changes{v3.11c}{2013/02/13}{\cs{chapterheadstartvskip} und
+% \cs{chapterheadendvskip} haben in \textsf{scrartcl} nichts verloren}^^A
+% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@afterskip} wird
+% definiert und verwendet}^^A
+% \changes{v3.15}{2014/12/10}{\cs{vspace} durch \cs{vskip} ersetzt, damit
+% \cs{lastskip} korrekt gesetzt ist}
+% \begin{macro}{\chapterheadmidvskip}
+% \changes{v3.15}{2014/11/20}{neue Anweisung}^^A
+% \changes{v3.17}{2015/03/25}{\cs{scr@chapter@innerskip} wird
+% definiert und verwendet}^^A
+% Mit diesen Anweisungen wird üblicherweise der Abstand zwischen
+% oberem Rand des Textbereichs und der Überschrift bzw. der Abstand
+% zwischen der Überschrift und dem Text des Kapitels gesetzt. Man kann
+% die Anweisungen aber zusätzlich auch für andere Zwecke
+% missbrauchen. Das ist der Grund warum diese Makros keine Längen,
+% sondern komplette Anweisungen enthalten. In der Voreinstellung
+% enthalten sie jedoch gar nichts. Die tatsächlichen Werte werden
+% durch die Optionen festgelegt. Dabei wird \cs{chapterheadmidvskip} nur
+% verwendet, wenn Option \texttt{chapterprefix} aktiv ist.
+%
+% Zur Erhöhung der Kompatibilität mit \cs{DeclareSectionCommand} werden
+% zunächst einige Hilfsanweisung definiert und verwendet.
+% \begin{macro}{\scr@chapter@beforeskip}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% \changes{v3.17}{2015/03/25}{umbenannt in
+% \cs{scr@chapter@beforeskip}}^^A
+% \begin{macro}{\scr@chapter@afterskip}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% \changes{v3.17}{2015/03/25}{umbenannt in
+% \cs{scr@chapter@afterskip}}^^A
+% \begin{macro}{\scr@chapter@sectionindent}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung (unbenutzt)}^^A
+% \changes{v3.17}{2015/04/24}{entfernt}^^A
+% \end{macro}^^A \scr@chapter@sectionindent
+% \end{macro}^^A \scr@chapter@afterskip
+% \end{macro}^^A \scr@chapter@beforeskip
+% \begin{macro}{\scr@chapter@beforeskip}
+% \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von
+% \cs{scr@chapter@sectionbeforeskip}}^^A
+% \begin{macro}{\scr@chapter@innerskip}
+% \changes{v3.17}{2015/03/25}{Neu (intern)}^^A
+% \begin{macro}{\scr@chapter@afterskip}
+% \changes{v3.17}{2015/03/25}{Neu (intern) aus Umdefinierung von
+% \cs{scr@chapter@sectionafterskip}}^^A
+% \begin{macro}{\scr@chapter@style}
+% \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A
+% Dabei wird der leere Stil verwendet, mit dem Neudefinitionen von \cs{part}
+% über \cs{DeclareSectionCommand} verhindert werden. Gleichzeitig können
+% jedoch Einstellungen einiger Werte darüber erfolgen.
+% \begin{macrocode}
+%<*prepare>
+\newcommand*{\scr@chapter@beforeskip}{\z@}
+\let\scr@chapter@beforeskip\z@
+\newcommand*{\scr@chapter@afterskip}{\z@}
+\let\scr@chapter@afterskip\z@
+\newcommand*{\scr@chapter@innerskip}{\z@}
+\let\scr@chapter@innerskip\z@
+\newcommand*{\scr@chapter@style}{chapter}
+% \end{macrocode}
+% \end{macro}^^A \scr@chapter@style
+% \end{macro}^^A \scr@chapter@innerskip
+% \end{macro}^^A \scr@chapter@beforeskip
+% \end{macro}^^A \scr@chapter@afterskip
+% \begin{macrocode}
+\newcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}
+\newcommand*{\chapterheadendvskip}{\vskip\@tempskipa}
+\newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}
+%</prepare>
+% \end{macrocode}
+% \end{macro}^^A \chapterheadmidvskip
+% \end{macro}^^A \chapterheadendvskip
+% \end{macro}^^A \chapterheadstartvskip
+%
+%
+% \begin{macro}{\scr@startchapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (für Paketautoren)}
+% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn definiert und nicht
+% leer}^^A
+% Diese Anweisung legt fest, wie der konkrete Aufruf für Überschriften des
+% Stils \texttt{chapter} lautet. Einziges Argument ist dabei der Name der
+% Gliederungsebene, beispielsweise \texttt{chapter}. Alle anderen benötigten
+% Werte ergeben sich aus den Einstellungen für die Gliederungsebene. Beim
+% tatsächlichen Aufruf wird dann daran wie üblich noch optional noch entweder
+% ein Stern oder ein Argument für Kolumnentitel und Inhaltsverzeichniseintrag
+% und der Text der Überschrift angehängt. Diese Anweisung wurde von der
+% ursprünglichen Definition von \cs{chapter} abgeleitet.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@startchapter}[1]{%
+ \if@openright\cleardoublepage\else\clearpage\fi
+ \scr@ifundefinedorrelax{#1pagestyle}{}{%
+ \ifstr{#1pagestyle}{}{}{%
+ \thispagestyle{\@nameuse{#1pagestyle}}%
+ }%
+ }%
+ \global\@topnum\z@
+ \@ifundefined{scr@#1@afterindent}{\@afterindentfalse}{%
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \@afterindenttrue
+ \@ifundefined{scr@#1@beforeskip}{\@afterindentfalse}{%
+ \ifdim\glueexpr\@nameuse{scr@#1@beforeskip}\relax<\z@
+ \@afterindentfalse
+ \fi
+ }%
+ }%
+ }%
+ \expandafter\SecDef\csname @#1\expandafter\endcsname\csname @s#1\endcsname
+}
+% \end{macrocode}
+%
+% \begin{macro}{\scr@@startchapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@chapter} ein und
+% erbst damit auch die ganzen noch relevanten ChangeLog-Einträge dieser
+% Anweisung.
+% \begin{macrocode}
+\newcommand*{\scr@@startchapter}{}
+\def\scr@@startchapter#1[#2]#3{%
+% \end{macrocode}
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% Für das erweitere optionale Argument muss hier eine key-value-Auswertung
+% erfolgen, falls das erweitere optionale Argument aktiviert ist:
+% \begin{macrocode}
+ \ifnum \scr@osectarg=\z@
+ \@scr@tempswafalse
+ \else
+ \scr@istest#2=\@nil
+ \fi
+ \if@scr@tempswa
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#3},reference={#3},#2}%
+ \else
+ \ifcase \scr@osectarg\relax
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#3},head={#2},reference={#3}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#3},reference={#2}}%
+ \or
+ \setkeys{KOMAarg.section}{tocentry={#2},head={#2},reference={#2}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Als nächstes muss für nummerierte Überschriften dieser Ebene sowohl der
+% Zähler erhöht also auch ein nummerierter Eintrag ins Inhaltsverzeichnis
+% erstellt werden.
+% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen}^^A
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{add\meta{Name}tocentry}}^^A
+% \changes{v3.18}{2015/05/22}{Verwendung von \meta{Name} statt \cs{@chapapp}
+% in \cs{typeout}}^^A
+% \begin{macrocode}
+ \ifnumbered{#1}{%
+%<book> \if@mainmatter
+ \@tempswatrue
+%<book> \else\@tempswafalse\fi
+ }{\@tempswafalse}%
+ \if@tempswa
+ \refstepcounter{#1}%
+ \expandafter\@maybeautodot\csname the#1\endcsname
+ \typeout{#1 \csname the#1\endcsname.}%
+ \ifx\@currenttocentry\@empty\else
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{\csname the#1\endcsname}{\@currenttocentry}%
+ \fi
+% \end{macrocode}
+% Für alle nicht nummerieten Überschriften dieser Ebene trotzdem die
+% Resetliste des Zählers ausführen und ggf. einen Verzeichniseintrag
+% erstellen.
+% \begin{macrocode}
+ \else
+ \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else
+ \begingroup
+ \let\@elt\@stpelt
+ \csname cl@#1\endcsname
+ \endgroup
+ \fi
+ \typeout{#1 without number}%
+ \ifx\@currenttocentry\@empty\else
+% \end{macrocode}
+% An dieser Stelle muss ggf. der \textsf{hyperref}-Hook für nicht nummerierte
+% Inhaltsverzeichniseinträge ausgeführt werden.
+% \begin{macrocode}
+ \hy@insteadofrefstepcounter{#1}%
+ \scr@ifundefinedorrelax{add#1tocentry}{%
+ \addtocentrydefault{#1}%
+ }{%
+ \@nameuse{add#1tocentry}%
+ }{}{\@currenttocentry}%
+ \fi
+ \fi
+% \end{macrocode}
+% Jetzt kommt der Kolumnentitel an die Reihe.
+% \begin{macrocode}
+ \csname #1mark\expandafter\endcsname\expandafter{\@currentheadentry}%
+% \end{macrocode}
+% Und die Abstände in die andere Verzeichnisse.
+% \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun
+% auch ein vertikaler Abstand in Listen des \texttt{float}-Pakets
+% eingebaut}^^A
+% \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
+% float-Verzeichnisse mit hyperref}^^A
+% \begin{macrocode}
+ \ifdim \@chapterlistsgap>\z@
+ \doforeachtocfile{%
+ \iftocfeature{\@currext}{chapteratlist}{%
+ \addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
+ }{}%
+ }%
+ \@ifundefined{float@addtolists}{}{%
+ \scr@float@addtolists@warning
+ \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
+ }%
+ \fi
+% \end{macrocode}
+% Jetzt kommt die eigentliche Überschrift. An dieser Stelle wird ab
+% Version~3.18 nicht mehr stur \cs{@makecshapterhead} verwendet, sondern eine
+% Anweisung, die vom Namen der Gliederungsüberschrift abhängig ist.
+% \changes{v3.18}{2015/05/22}{\cs{@makechapterhead} durch
+% \cs{@make\meta{Name}head} ersetzt}^^A
+% \begin{macrocode}
+ \if@twocolumn
+ \if@at@twocolumn
+ \@nameuse{@make#1head}{#3}%
+ \else
+ \@topnewpage[\@nameuse{@make#1head}{#3}]%
+ \fi
+ \else
+ \@nameuse{@make#1head}{#3}%
+ \fi
+% \end{macrocode}
+% Und das Ganze endet schließlich mit:
+% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}^^A
+% \begin{macrocode}
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startchapter
+%
+% \begin{macro}{\scr@@startschapter}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@schapter} ein sie ist
+% sehr viel einfacher gestrickt als \cs{scr@@startchapter}.
+% \begin{macrocode}
+\newcommand*{\scr@@startschapter}[2]{%
+% \end{macrocode}
+% Für Leute, die unbedingt nach der Sternversion noch ein \cs{addcontentsline}
+% anfügen wollen, muss hier ebenfalls der \textsf{hyperref}-Hook ausgeführt
+% werden. Allerdings passiert das hier entsprechend dem Vorgehen von
+% \textsf{hyperref} selbst in einer Gruppe, in der zusätzlich \cs{@mkboth} zu
+% \cs{@gobbletwo} gemacht wird, auch wenn ich absolut nicht versehe, was das
+% soll.
+% \begin{macrocode}
+ \begingroup
+ \let\@mkboth\@gobbletwo
+ \hy@insteadofrefstepcounter{#1}%
+ \endgroup
+% \end{macrocode}
+% Dann wird die eigentliche Überschrift ausgegeben.
+% \begin{macrocode}
+ \if@twocolumn
+ \if@at@twocolumn
+ \@nameuse{@makes#1head}{#2}%
+ \else
+ \@topnewpage[\@nameuse{@makes#1head}{#2}]%
+ \fi
+ \else
+ \@nameuse{@makes#1head}{#2}%
+ \fi
+% \end{macrocode}
+% Und das Ganze endet schließlich mit:
+% \changes{v3.18}{2015/05/21}{\cs{@afterheading} in jedem Fall}^^A
+% \begin{macrocode}
+ \@afterheading
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@startschapter
+%
+%% \begin{macro}{\if@at@twocolumn}
+% \changes{v2.7b}{2001/01/05}{neu (intern)}^^A
+% \begin{macro}{\scr@topnewpage}
+% \changes{v2.7b}{2001/01/05}{neu (intern)}^^A
+% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}^^A
+% \begin{macro}{\@topnewpage}
+% \changes{v2.7b}{2001/01/05}{neu (\LaTeX{} intern)}^^A
+% \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} ergänzt}^^A
+% \changes{v3.01}{2008/11/13}{Verwendung von
+% \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}^^A
+% Interessant ist dabei die Erweiterung, daß jedes Kapitel mit einer
+% Präambel versehen werden kann. Diese wird im zweispaltigen Satz wie
+% die Überschrift selbst einspaltig gesetzt. Intern wird dies für
+% die Preambel des Index und der Bibliography verwendet. Dabei
+% entsteht aber wiederum das Problem, dass der Indexkopf innerhalb von
+% \cs{twocolumn} ausgegeben wird andererseits aber innerhalb von
+% \cs{chapter} das Makro \cs{@topnewpage} verwendet wird. Damit würde
+% dann also \cs{@topnewpage} innerhalb von \cs{@topnewpage}
+% aufgerufen. Das ist jedoch nicht erlaubt. Als muss der Aufruf von
+% \cs{@topnewpage} in \cs{@chapter} und \cs{@schapter} verhindert
+% werden, wenn wir uns bereits in \cs{@topnewpage} befinden. Eine
+% Möglichkeit dafür wäre, einen Schalter in den Index-Kopf
+% einzubauen. Ich wähle hingegen die Methode, \cs{@topnewpage}
+% entsprechend umzudefinieren. Damit kann dann auch der Anwender
+% \cs{@chapter} innerhalb des optionalen Arguments von \cs{twocolumn}
+% verwenden. Ein Schalter wird allerdings trotzdem gebraucht.
+% \begin{macrocode}
+\newif\if@at@twocolumn
+\newcommand*\scr@topnewpage{}
+\let\scr@topnewpage\@topnewpage
+\long\def\@topnewpage[#1]{%
+ \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse
+}
+% \end{macrocode}
+% \end{macro}^^A \@topnewpage
+% \end{macro}^^A \scr@topnewpage
+% \end{macro}^^A \if@at@twocolumn
+%
+% \begin{macro}{\scr@makechapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makechapterhead}
+% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
+% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
+% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \changes{v2.7b}{2001/01/05}{Kapitel können grundsätzlich mit einer
+% Präambel versehen werden}^^A
+% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von Präambeln}^^A
+% \changes{v3.15}{2014/12/10}{\cs{nobreak} am Ende entfernt}^^A
+% \begin{macrocode}
+\newcommand*{\scr@makechapterhead}[2]{%
+ \use@chapter@o@preamble{#1}%
+ \@nameuse{@@make#1head}{#2}%
+ \use@preamble{#1@u}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@makechapterhead
+%
+% \begin{macro}{\scr@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@makeschapterhead}
+% ein. Mit dem neuen Mechanismus könnte man auf diesen zusätzlichen Schritt
+% verzichten. Aus Gründen der Kompatibilität wurde er aber übernommen. Daher
+% übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \begin{macrocode}
+\newcommand*{\scr@makeschapterhead}[2]{%
+ \use@chapter@o@preamble{#1}%
+ \@nameuse{@@makes#1head}{#2}%
+ \use@preamble{#1@u}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@makeschapterhead
+%
+% \begin{macro}{\scr@@makechapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
+% ein. Daher übernimmt sie auch die ChangeLog-Einträge der alten Anweisung.
+% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option
+% \texttt{chapterprefix} auch auf den Präfix angewendet}^^A
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
+% \changes{v2.96a}{2006/12/02}{Abstand nach der Präfixzeile nur, wenn eines
+% Präfixzeile ausgegeben wurde}^^A
+% \changes{v2.97b}{2007/03/09}{\cs{endgraf} korrigiert}^^A
+% \changes{v3.15}{2014/11/20}{Generalumbau}^^A
+% \changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
+% \cs{raggedsection}}^^A
+% \changes{v3.17}{2015/04/03}{Verwendung von \cs{usefontofkomafont} für die
+% initiale Fontumstellung}^^A
+% \begin{macrocode}
+\newcommand*{\scr@@makechapterhead}[2]{%
+% \end{macrocode}
+% Der Absolutwert des Abstandes davor wird eingefügt.
+% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
+% \texttt{beforeskip} gesetzt}^^A
+% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
+% \texttt{afterindent}}^^A
+% \begin{macrocode}
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
+ \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
+ \fi
+ }%
+ \chapterheadstartvskip
+% \end{macrocode}
+% Dann die eigentliche Überschrift innerhalb einer Gruppe.
+% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
+% 1fil} gesetzt}^^A
+% \begin{macrocode}
+ {%
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}%
+% \end{macrocode}
+% \changes{v3.19}{2015/08/02}{Verwendung von \cs{chapterlinesformat} und
+% \cs{chapterlineswithprefixformat}}^^A
+% \changes{v3.19}{2015/08/02}{Verwendung von Element \texttt{disposition} an
+% Stelle von Befehl \cs{sectfont}}^^A
+% \changes{v3.19a}{2015/10/03}{Bug durch vergessene Definition von
+% \cs{IfUseNumber} behoben}^^A
+% Ab Version~3.19 wurde der Code weitgehend umgebaut, um die Befehle
+% \cs{chapterlinesformat} für die hängende Version und
+% \cs{chapterlinesandprefixformat} für die Version mit Präfixzeile zu
+% verwenden. Dadurch entfällt dann auch die Verwendung von
+% \cs{usefontofkomafont}. Ich bin mir bewusst, dass dadurch diverse Hacks
+% bezüglich der Kapitelüberschriften nicht mehr funktionieren. Dafür kann man
+% diese Hacks nun durch saubere Lösungen ersetzen.
+% \begin{macrocode}
+ \def\IfUseNumber{\ifnumbered{#1}}%
+%<book> \if@mainmatter\else\let\IfUseNumber\@secondoftwo\fi
+ \if@chapterprefix
+ \let\IfUsePrefixLine\@firstoftwo
+ \else
+ \let\IfUsePrefixLine\@secondoftwo
+ \fi
+ \normalfont\usekomafont{disposition}{%
+ \usekomafont{#1}{%
+ \settoheight{\@tempskipa}{%
+ {\usekomafont{#1prefix}{%
+ \vrule \@width\z@ \@height\csname scr@#1@innerskip\endcsname}}%
+ }%
+ \raggedchapter
+ \IfUseNumber{%
+ \IfUsePrefixLine{%
+ \chapterlineswithprefixformat{#1}%
+ {{\usekomafont{#1prefix}{\csname #1format\endcsname%
+ \setlength{\@tempskipa}{\csname scr@#1@innerskip\endcsname}%
+ \chapterheadmidvskip}}}%
+ {\interlinepenalty \@M#2\@@par}%
+ }{%
+ \chapterlinesformat{#1}%
+ {\csname #1format\endcsname}%
+ {\interlinepenalty \@M#2\@@par}%
+ }%
+ }{%
+ \IfUsePrefixLine{%
+ \chapterlineswithprefixformat{#1}%
+ {}%
+ {\interlinepenalty \@M#2\@@par}%
+ }{%
+ \chapterlinesformat{#1}%
+ {}%
+ {\interlinepenalty \@M#2\@@par}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \nobreak\par\nobreak
+% \end{macrocode}
+% Zum Schluss der Absolutwert des Abstandes dahinter.
+% \changes{v3.26}{2018/09/20}{Betragsbildung entfernt}^^A
+% \begin{macrocode}
+ \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
+ \chapterheadendvskip
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@makechapterhead
+%
+% \begin{macro}{\scr@@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{neue Anweisung (intern)}
+% Diese Anweisung nimmt die Rolle des ursprüngliche \cs{@@makechapterhead}
+% ein. Sie ist um einiges einfacher als \cs{scr@@makechapterhead} orientiert
+% sich aber prinzipiell daran.
+% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A
+% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead}^^A
+% angepasst}^^A
+%\changes{v3.15}{2014/12/09}{\cs{raggedchapter} ersetzt
+% \cs{raggedsection}}^^A
+%\changes{v3.19}{2015/08/02}{an die Änderungen bei \cs{scr@@makechapterhead}
+% angepasst}^^A
+% \changes{v3.20}{2015/12/23}{\cs{parfillskip} auf \texttt{\cs{z@} plus
+% 1fil} gesetzt}^^A
+% \changes{v3.22}{2016/12/21}{\cs{@afterindentrue} wird bei positivem
+% \texttt{beforeskip} gesetzt}^^A
+% \changes{v3.25}{2017/09/07}{\cs{IfUseNumber} korrigiert}^^A
+% \changes{v3.26}{2018/09/18}{Beachtung von Einstellung
+% \texttt{afterindent}}^^A
+% \changes{v3.26}{2018/09/20}{Betragsbildung für \texttt{afterskip}
+% entfernt}^^A
+% \begin{macrocode}
+\newcommand*{\scr@@makeschapterhead}[2]{%
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \csname scr@#1@afterindent\endcsname
+ {\@afterindenttrue}{\@afterindentfalse}{%
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\else
+ \expandafter\ifnum\scr@v@is@ge{3.22}\@afterindenttrue\fi
+ \fi
+ }%
+ \chapterheadstartvskip
+ {%
+ \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ plus 1fil}%
+ \let\IfUseNumber\@secondoftwo
+ \if@chapterprefix
+ \let\IfUsePrefixLine\@firstoftwo
+ \else
+ \let\IfUsePrefixLine\@secondoftwo
+ \fi
+ \normalfont\usekomafont{disposition}{%
+ \usekomafont{#1}{%
+ \raggedchapter
+ \IfUsePrefixLine{%
+ \chapterlineswithprefixformat{#1}%
+ {}%
+ {\interlinepenalty \@M#2\@@par}%
+ }{%
+ \chapterlinesformat{#1}%
+ {}%
+ {\interlinepenalty \@M#2\@@par}%
+ }%
+ }%
+ }%
+ }%
+ \nobreak\par\nobreak
+ \@tempskipa=\glueexpr \csname scr@#1@afterskip\endcsname\relax\relax
+ \chapterheadendvskip
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@@makeschapterhead
+%
+% \begin{macro}{\chapterlinesformat}
+% \changes{v3.19}{2015/08/02}{neue Anweisung}
+% \begin{macro}{\chapterlineswithprefixformat}
+% \changes{v3.19}{2015/08/02}{neue Anweisung}
+% Diese Anweisung definiert das Format der eigentlichen Überschriften im Stil
+% \texttt{chapter}, wenn mit Überschriftenzeilen gearbeitet
+% wird. Fonteinstellungen sind zu diesem Zeitpunkt bereits erfolgt. Die
+% Argumente sind:
+% \begin{description}
+% \item[\meta{Befehlsname} --] der Name der Gliederungsebene, normalerweise
+% \texttt{chapter}.
+% \item[\meta{Gliederungsnummer} --] die bereits fertig formatierte
+% Gliederungsnummer (bei \cs{chapterlineswithprefixformat} einschließlich
+% des nachfolgenden vertikalen Abstands) oder leer, falls keine
+% Gliederungsnummer auszugeben ist.
+% \item[\meta{Text} --] der Text der Überschrift.
+% \end{description}
+% Der Anwender ist selbst verantwortlich, dass innerhalb der Überschrift kein
+% Seitenumbruch erfolgen kann. Nach der Überschrift wird jedoch zwangsweise
+% ein \cs{@@par} ausgeführt, so dass sichergestellt ist, dass mit einem
+% internen Absatz abgeschlossen wird.
+% \begin{macrocode}
+\newcommand{\chapterlinesformat}[3]{%
+ \@hangfrom{#2}{#3}%
+}
+\newcommand{\chapterlineswithprefixformat}[3]{%
+ #2#3%
+}
+% \end{macrocode}
+% \end{macro}^^A \chapterlineswithprefixformat
+% \end{macro}^^A \chapterlinesformat
+%
+% \begin{macro}{\use@chapter@o@preamble}
+% \changes{v3.15}{2014/12/08}{Anpassung an geänderte Abstandsbehandlung}^^A
+% \changes{v3.15a}{2015/02/02}{Korrektur, zur Verhinderung falscher
+% \texttt{overfull \cs{vbox}} Meldungen}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung befehlsabhängiger Abstände und
+% Warnungen}^^A
+% \changes{v3.18}{2015/05/22}{Bekommt ein Argument und setzt die Prämabel
+% der Anweisung nicht des Stils}^^A
+% Das Makro wird benötigt, weil das Setzen der oberen Präambel etwas
+% mehr Aufwand bedeutet. Die Anweisung spart Platz, da sie zweimal
+% verwendet wird.
+% \begin{macrocode}
+\newcommand*{\use@chapter@o@preamble}[1]{%
+ {%
+ \settoheight{\@tempdima}{%
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \vbox{\chapterheadstartvskip}%
+ }%
+ \settodepth{\@tempdimb}{%
+ \@tempskipa=\glueexpr \csname scr@#1@beforeskip\endcsname\relax\relax
+ \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi
+ \vbox{\chapterheadstartvskip}%
+ }%
+ \addtolength{\@tempdima}{\@tempdimb}%
+ \setbox\z@\vbox{%
+ \use@preamble{#1@o}%
+ }%
+ \setlength{\@tempdimb}{\ht0}%
+ \addtolength{\@tempdimb}{\dp0}%
+ \vbox to \z@{%
+ \vskip-\baselineskip
+ \vbox to \@tempdima{%
+ \vfill
+ \box\z@
+ }%
+ \vss
+ }\vskip-\parskip\vskip-\baselineskip
+ \ifdim \@tempdimb>\@tempdima%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+ \ifdim\@tempdimb<\vfuzz
+ \ClassInfo{\KOMAClassName}{%
+ preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
+ Tolerated without warning because of\MessageBreak
+ \string\vfuzz\space = \the\vfuzz\space >= \the\@tempdimb
+ }%
+ \else
+ \ClassWarning{\KOMAClassName}{%
+ preamble before #1 is \the\@tempdimb\space to high.\MessageBreak
+ To avoid the overfull \string\vbox\space you may
+ change\MessageBreak
+ the `beforeskip' value using
+ \string\RedeclareSectionCommand\MessageBreak
+ at the preamble of your document.\MessageBreak
+ You may also change \string\setchapterpreamble\MessageBreak
+ before the command, which generates the message
+ about\MessageBreak
+ an overfull \string\vbox
+ }%
+ \fi
+ \fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \use@chapter@o@preamble
+% \end{macro}^^A \scr@startchapter
+%
+% \begin{macro}{\addchaptertocentry}
+% \changes{v3.08}{2010/11/01}{Neu}^^A
+% \changes{v3.12}{2013/09/24}{Behandlung von \cs{if@chaptertolists} hier}^^A
+% \changes{v3.12}{2013/09/24}{Verwendung von \cs{addxcontentsline}}^^A
+% Seit Version~3.08 wird der Eintrag nicht direkt innerhalb von \cs{chapter}
+% per \cs{addcontentsline} erzeugt, sondern indirekt über diese Anweisung. Das
+% erste Argument ist dabei die (formatierte) Nummer bzw. bei nicht
+% nummerierten Kapiteln leer. Das zweite Argument ist der Überschriftstext für
+% das Verzeichnis. Durch diesen indirekten Weg, kann die Anweisung einfach
+% umdefiniert werden. Verwendet wird hier die Standardanweisung für
+% Inhaltsverzeichniseinträge, die in \texttt{scrkliof.dtx} definiert ist:
+% \begin{macrocode}
+\newcommand*{\addchaptertocentry}[2]{%
+ \addtocentrydefault{chapter}{#1}{#2}%
+ \if@chaptertolists
+ \doforeachtocfile{%
+ \iftocfeature{\@currext}{chapteratlist}{%
+ \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
+ }{}%
+ }%
+ \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \addchaptertocentry
+%
+% \begin{macro}{\@chapter}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@startchapter}}^^A
+% \begin{macro}{\@makechapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@makechapterhead}}^^A
+% \begin{macro}{\@@makechapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@makechapterhead}}^^A
+% \begin{macro}{\@schapter}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@startschapter}}^^A
+% \begin{macro}{\@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@makeschapterhead}}^^A
+% \begin{macro}{\@@makeschapterhead}
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}
+% und \cs{scr@@makeschapterhead}}^^A
+% \begin{macro}{\setchapterpreamble}
+% \changes{v2.7b}{2001/01/05}{neu}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% \begin{macro}{\chapter@u@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% \begin{macro}{\chapter@o@preamble}
+% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A
+% \changes{v3.18}{2015/05/22}{siehe \cs{scr@dsc@def@style@chapter@command}}^^A
+% All diese Anweisungen wurden in früheren Versionen von \KOMAScript{}
+% explizit definiert. Nun werden sie nur noch indirekt über
+% \cs{scr@dsc@def@style@chapter@command} definiert und verwenden dabei andere
+% interne Anweisungen als früher. Deshalb funktionieren ggf. das Patchen mit
+% \textsf{etoolbox}, \textsf{xpatch} und ähnlichen Paketen nicht mehr. Das ist
+% der Preis für die neuen Möglichkeiten.
+% \end{macro}^^A \chapter@o@preamble
+% \end{macro}^^A \chapter@u@preamble
+% \end{macro}^^A \setchapterpreamble
+% \end{macro}^^A \@@makeschapterhead
+% \end{macro}^^A \@makeschapterhead
+% \end{macro}^^A \@schapter
+% \end{macro}^^A \@@makechapterhead
+% \end{macro}^^A \@makechapterhead
+% \end{macro}^^A \@chapter
+%
+% \begin{macro}{\addchap}
+% \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef} ersetzt}^^A
+% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch
+% \cs{addcontentsline} ersetzt}^^A
+% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch
+% \cs{@makeschapterhead} ersetzt}^^A
+% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch
+% \cs{@afterheading} ersetzt}^^A
+% \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark}^^A
+% entfernt bei \textsf{scrbook}}^^A
+% \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
+% \cs{sectionmark} ersetzt}^^A
+% \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth}
+% ersetzt}^^A
+% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
+% \texttt{plain}}^^A
+% \changes{v3.00}{2008/07/01}{jetzt auch Kapiteleinträge in andere
+% float-Verzeichnisse mit hyperref}^^A
+% \changes{v3.01}{2008/11/13}{Verwendung von
+% \cs{scr@float@addtolists@warning} (aus \texttt{scrkliof.dtx})}^^A
+% \changes{v3.08}{2010/11/01}{Verwendung von \cs{addchaptertocentry}}^^A
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
+% \KOMAScript{} bietet in \textsf{scrbook} und \textsf{scrreprt} den
+% zusätzlichen Gliederungsbefehl \cs{addchap}. Es handelt sich dabei
+% um einen mit \cs{chapter*} vergleichbaren Befehl, bei dem jedoch der
+% Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis
+% erfolgt (nicht in der Stern-Variante).
+%
+% Die Definition von \cs{addcap} sah bis zu Version 2.7 so aus:
+% \begin{verbatim}
+% \newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi
+% \thispagestyle{plain}%
+% \global\@topnum\z@
+% \@afterindentfalse
+% \secdef\@addchap\@saddchap}
+% \def\@addchap[#1]#2{\typeout{#2}
+% \addcontentsline{toc}{chapter}{#1}
+% \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi
+% \addtocontents{lof}{\protect\addvspace{10\p@}}%
+% \addtocontents{lot}{\protect\addvspace{10\p@}}%
+% \if@twocolumn
+% \@topnewpage[\@makeschapterhead{#2}]%
+% \else
+% \@makeschapterhead{#2}%
+% \@afterheading
+% \fi}
+% \def\@saddchap#1{\@mkboth{}{}
+% \if@twocolumn
+% \@topnewpage[\@makeschapterhead{#1}]%
+% \else
+% \@makeschapterhead{#1}%
+% \@afterheading
+% \fi}
+% \end{verbatim}\vspace{-\baselineskip}
+% Dies führte jedoch zu Problemen im Zusammenhang mit
+% \textsf{hyperref}, da hierbei keine korrekten Links erzeugt
+% werden. Mit dem \texttt{hypertex}-Treiber von \textsf{hyperref}
+% bis Version 6.71a werden auch in der neuen Implementierung keine
+% korrekten Links erzeugt. Dies ist jedoch ein Bug in jenem
+% Treiber. Mit neuen Versionen tritt das Problem nicht mehr auf.
+% Deshalb wurde der Code wie folgt vereinfacht. Von wesentlicher
+% Bedeutung ist dabei der Aufruf von \cs{chapter*}, da in
+% \texttt{hpdftex.def} das interne Makro \cs{@schapter} so umdefiniert
+% wird, dass ein korrekter Link erzeugt wird.
+% \begin{macro}{\@addchap}
+% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A
+% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addchapmark}
+% expandieren}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
+% \begin{macro}{\@saddchap}
+% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A
+% \changes{v3.18}{2015/05/22}{Komplett neu definiert}^^A
+% Seit \KOMAScript~3.18 wurden die Definitionen noch einmal deutlich
+% vereinfacht. Deshalb wird nun auch nur noch für \cs{addchap*} die neue
+% Anweisung \cs{addchapmark} benötigt. Bei \cs{addchap} geht es hingegen
+% einfach über \cs{chaptermark} innerhalb von \cs{chapter}.
+% \begin{macrocode}
+\newcommand\addchap{%
+ \SecDef\@addchap\@saddchap
+}%
+\newcommand*{\@addchap}{}%
+\long\def\@addchap[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \chapter[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \chapternumdepth-1\relax
+ \reserved@a
+}
+\newcommand{\@saddchap}[1]{%
+ \chapter*{#1}%
+ \addchapmark{}%
+}%
+% \end{macrocode}
+% In \texttt{hyperref} bis Version 6.71a ist ein dicker Bug. In
+% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne}
+% \KOMAScript-Makro \cs{@addchap} umdefiniert, ohne sicherzustellen,
+% dass das Makro auch noch so aussieht, wie man das erwartet hat. Die
+% sauberste Lösung wäre sicher gewesen dort \cs{@addchap} nur zu
+% ergänzen, so wie man das auch bei \cs{@schapter} gemacht hatte. Ab
+% Version 6.71b ist dieser Bug behoben. Damit ich nicht eines Fehlers
+% verdächtigt werde, wird ggf. eine entsprechende Meldung ausgegeben.
+% \changes{v2.7e}{2001/04/16}{fehlende, schließende Klammer
+% ergänzt}^^A
+% \changes{v2.7f}{2001/04/17}{fehlendes Klammerpaar ergänzt}^^A
+% \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur Überprüfung der
+% \textsf{hyperref}-Version verwendet}
+% \begin{macrocode}
+%<*book>
+\AfterPackage{hyperref}{%
+ \@ifpackagelater{hyperref}{2001/02/19}{}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ You are using an old version of hyperref package!\MessageBreak%
+ This version has a buggy hack at many drivers\MessageBreak%
+ causing \string\addchap\space to behave strange.\MessageBreak%
+ Please update hyperref to at least version
+ 6.71b}}}
+%</book>
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@saddchap
+% \end{macro}^^A \@addchap
+% \end{macro}^^A \addchap
+%
+%
+% \begin{macro}{\l@chapter}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A
+% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
+% Inhaltsverzeichnis und übergeordneten Einträgen verhindern}^^A
+% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{chapter}-Eintrag im
+% Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A
+% \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
+% Element \texttt{chapterentry} ersetzt}^^A
+% \changes{v2.97c}{2007/06/21}{Element \texttt{chapterentrypagenumber} wird
+% verwendet}^^A
+% \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
+% Einträge zu ermöglichen}^^A
+% \changes{v3.15}{2014/12/22}{Verwendung von \cs{chaptertocdepth} und
+% \cs{scr@chapter@tocnumwidth}}^^A
+% \changes{v3.15}{2014/12/10}{Verwendung von \cs{addvspace} statt \cs{vskip}
+% für den Abstand am Anfang}^^A
+% \changes{v3.20}{2015/10/06}{überführt in Verzeichnisstil}^^A
+% Für die Definition des Kapiteleintrags ins Inhaltsverzeichnis werden einige
+% Parameter von \cs{DeclareSectionCommand} definiert und teilweise
+% verwendet. Damit kann man dann zumindest einige Änderungen mit
+% \cs{DeclareSectionCommand} vornehmen, allerdings noch keine komplette
+% Neugestaltung des Eintrags erreichen.
+% \begin{macro}{\scr@chapter@tocindent}
+% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \changes{v3.20}{2015/11/06}{wird nun auch verwendet}^^A
+% Der Einzug des Eintrags noch vor der Nummer.
+% \end{macro}^^A \scr@chapter@tocindent
+% \begin{macro}{\scr@chapter@tocnumwidth}
+% \changes{v3.15}{2014/12/02}{neue (interne) Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
+% Die Breite der Nummer des Eintrags wird tatsächlich verwendet.
+% \end{macro}
+% \begin{option}{chapterentrydots}
+% \changes{v3.15}{2014/12/10}{Neu}^^A
+% Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und
+% Seitenzahl in den Kapiteleinträgen einschalten.
+% \begin{macrocode}
+%<*option>
+\KOMA@ifkey{chapterentrydots}{@chapterentrywithdots}
+%</option>
+% \end{macrocode}
+% \end{option}^^A chapterentrydots
+% \begin{macro}{\raggedchapterentry}
+% \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A
+% \changes{v3.20}{2016/02/23}{wird nicht mehr verwendet}^^A
+% \changes{v3.21}{2016/06/06}{siehe \texttt{scrkernel-tocstyle.dtx},
+% Stil \texttt{tocline}, Eigenschaft \texttt{raggedentrytext}}^^A
+% Ausrichtung des Textes der Kapiteleinträge im Inhaltsverzeichnis.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\raggedchapterentry}{}
+% \end{macrocode}
+% \end{macro}^^A \raggedchapterentry
+% \end{macro}^^A \l@chapter
+%
+% \begin{macro}{\l@chapteratlist}
+% \changes{v2.96a}{2006/12/03}{neues Macro}^^A
+% Dieses Makro wird ggf. für die Kapiteleinträge in den Listen der
+% Gleitumgebungen verwendet. Zunächst einmal wird hier dasselbe verwendet, wie
+% für die Kapiteleinträge ins Inhaltsverzeichnis.
+% \begin{macrocode}
+\newcommand*{\l@chapteratlist}{\l@chapter}
+% \end{macrocode}
+% \end{macro}^^A \l@chapteratlist
+%
+% \begin{Counter}{chapter}
+% \begin{macro}{\thechapter}
+% \begin{macro}{\chapterformat}
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A
+% \changes{v2.7}{2000/01/03}{einfaches Leerzeichen durch \cs{enskip}^^A
+% ersetzt}^^A
+% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}^^A
+% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
+% \cs{chapappifprefix}} ^^A
+% \changes{v2.96a}{2006/12/02}{\cs{mbox} eingefügt, um \cs{caps} zu
+% ermöglichen}^^A
+% \changes{v3.17}{2015/03/08}{\cs{enskip} not in prefix line mode}^^A
+% \begin{macro}{\chaptermarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erhöht}^^A
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A
+% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingefügt}^^A
+% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt
+% \cs{chapappifprefix}}^^A
+% \changes{v3.03a}{2009/04/03}{Tilde durch \cs{nobreakspace} ersetzt, um die
+% Kompatibilität mit Spanisch zu verbessern}^^A
+% Jede Gliederungsebene benötigt einen Zähler für die
+% Gliederungsnummer und eine Darstellung des Zählers
+% (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in
+% den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine
+% Formatierung des Zählers in der Kopfzeile
+% (\texttt{\bslash\dots markformat}) benötigt.
+% \begin{macrocode}
+\newcounter{chapter}
+\renewcommand*{\thechapter}{\@arabic\c@chapter}
+\newcommand*{\chapterformat}{%
+ \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot
+ \IfUsePrefixLine{}{\enskip}}%
+}
+\newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }%
+ \thechapter\autodot\enskip}
+% \end{macrocode}
+% \end{macro}^^A \chaptermarkformat
+% \end{macro}^^A \chapterformat
+% \end{macro}^^A \thechapter
+% \end{Counter}^^A chapter
+%
+%
+% \begin{macro}{\chaptername}
+% Name der Gliederungsebenen \cs{chapter}.
+% \begin{macrocode}
+\newcommand*\chaptername{Chapter}
+% \end{macrocode}
+% \end{macro}^^A \chaptername
+%
+%
+% \begin{macro}{\appendixname}
+% Der Name des Anhangs.
+% \begin{macrocode}
+\newcommand*\appendixname{Appendix}
+% \end{macrocode}
+% \end{macro}^^A \appendixname
+%
+%
+% \begin{macro}{\chapappifprefix}
+% \changes{v2.8}{2001/06/15}{neu}^^A
+% \changes{v2.8o}{2001/09/19}{obsolet}^^A
+% \begin{macro}{\chapappifchapterprefix}
+% \changes{v2.8o}{2001/09/19}{neu}^^A
+% \changes{v2.8o}{2001/09/19}{Argument ist nicht optional}^^A
+% \changes{v3.18}{2015/06/09}{verwendet \cs{IfChapterUsePrefixLine}}^^A
+% \begin{macro}{\IfChapterUsesPrefixLine}
+% \changes{v3.18}{2015/06/09}{neu (intern)}
+% \begin{macro}{\chapapp}
+% \changes{v2.8}{2001/06/15}{neu}^^A
+% Das in \cs{chapterformat} verwendete Makro
+% \cs{chapappifchapterprefix} setzt abhängig von \cs{if@chapterprefix}
+% noch das Makro \cs{chapapp} gefolgt vom obliatorischen Argument.
+% \cs{chapapp} macht \cs{@chapapp} auf Anwenderebene verfügbar. Der
+% Vorteil des neuen \cs{chapappifchapterprefix} gegenüber dem alten
+% \cs{chapappifprefix} ist, dass nun beim Umdefinieren von
+% \cs{chapterformat} und \cs{chaptermarkformat} wieder
+% \cs{renewcommand} verwendet werden kann und beim Umschalten in den
+% Anhang die Kopfzeile korrekt ist, weil das Makro nun nicht mehr
+% geschützt ist, sondern direkt expandiert.
+% \begin{macrocode}
+\newcommand*{\chapappifprefix}[1][]{%
+ \ClassWarning{\KOMAClassName}{%
+ Please don't use obsolete command
+ \string\chapappifprefix.\MessageBreak
+ The new command \string\chapappifchapterprefix\space has
+ an\MessageBreak
+ obligatory instead of an optional argument. Use that\MessageBreak
+ new command%
+ }%
+ \chapappifchapterprefix{#1}%
+}
+\newcommand*{\chapappifchapterprefix}[1]{%
+ \IfChapterUsesPrefixLine{\chapapp#1}{}%
+}
+\newcommand*{\IfChapterUsesPrefixLine}{%
+ \if@chapterprefix\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+\newcommand*{\chapapp}{\@chapapp}
+% \end{macrocode}
+% \begin{macro}{\@chapapp}
+% Dieses Makro enthält den Kapitelname (\cs{chaptername}), der sich im
+% Anhang üblicherweise ändert (\cs{appendixname}).
+% \begin{macrocode}
+\newcommand*\@chapapp{\chaptername}
+% \end{macrocode}
+% \end{macro}^^A \@chapapp
+% \end{macro}^^A \chapapp
+% \end{macro}^^A \IfChapterUsePrefixLine
+% \end{macro}^^A \chapappifchapterprefix
+% \end{macro}^^A \chapappifprefix
+%
+%
+% \begin{macro}{\chaptermark}
+% Da \cs{chapter} nicht mit Hilfe von \cs{@startsection} definiert
+% wird, wird auch \cs{chaptermark} nicht automatisch definiert. Es
+% wird aber in den Seitenstilen benötigt bzw. umdefiniert. Also hier
+% vorsorglich eine Dummy-Definition:
+% \begin{macrocode}
+\newcommand*\chaptermark[1]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addchapmark}
+% \changes{v3.12}{2013/03/26}{neue Anweisung}^^A
+% Für \cs{addchapmark} gilt dies hingegen nicht. Das wird nicht von den Stilen
+% definiert, sondern direkt mit der gewünschten Definition
+% initialisiert. Bitte nicht davon verwirren lassen, dass \cs{if@mainmatter}
+% hier auch von \textsf{scrreprt} definiert wird. Das ist Absicht und
+% vereinfacht dem einen oder anderen Paket oder Benutzer vielleicht die
+% Arbeit.
+% \begin{macrocode}
+\newcommand*\addchapmark[1]{%
+ \begingroup
+ \expandafter\let\csname if@mainmatter\expandafter\endcsname
+ \csname iffalse\endcsname
+ \c@secnumdepth=\numexpr \chapternumdepth-1\relax
+ \chaptermark{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \addchapmark
+%
+%
+% \begin{macro}{\raggedchapter}
+% \changes{v3.15}{2014/12/09}{neu}^^A
+% Da das doch recht häufig gewünscht wird, kann man die Ausrichtung der
+% Kapitelüberschrift auch getrennt von der Ausrichtung der übrigen
+% Überschriften einstellen.
+% \begin{macrocode}
+\newcommand*{\raggedchapter}{\raggedsection}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{KOMAfont}{chapter}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}^^A
+% \begin{macro}{\scr@fnt@chapter}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{chapter}}^^A
+% \begin{KOMAfont}{chapterprefix}
+% \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}^^A
+% \begin{macro}{\scr@fnt@chapterprefix}
+% \changes{v2.96a}{2006/12/02}{neues Element \texttt{chapterprefix}}^^A
+% \begin{macrocode}
+\newcommand*{\scr@fnt@chapter}{\size@chapter}
+\newcommand*{\scr@fnt@chapterprefix}{\size@chapterprefix}
+% \end{macrocode}
+% \end{macro}^^A \scr@fnt@chapterprefix
+% \end{KOMAfont} chapterprefix
+% \end{macro}^^A \scr@fnt@chapter
+% \end{KOMAfont}^^A chapter
+%
+% \begin{KOMAfont}{chapterentry}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
+% \texttt{disposition} ersetzt}^^A
+% Schrift für den \cs{chapter}-Eintrag im Inhaltsverzeichnis.
+% \begin{macrocode}
+\newkomafont{chapterentry}{\usekomafont{disposition}}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{chapterentrypagenumber}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% Schrift für die Seitenzahl des \cs{chapter}-Eintrags im Inhaltsverzeichnis
+% abweichend von \texttt{chapterentry}.
+% \begin{macrocode}
+\newkomafont{chapterentrypagenumber}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{chapterentrydots}
+% \changes{v3.15}{2014/12/10}{neues Font-Element}^^A
+% Schrift für die optionalen Pünktchen des \cs{chapter}-Eintrags im
+% Inhaltsverzeichnis abweichend von \texttt{chapterentrypagenumber}.
+% \begin{macrocode}
+\newkomafont{chapterentrydots}{\normalfont}
+%</body>
+%</book|report>
+%</class>
+% \end{macrocode}
+% \end{KOMAfont}
+%
+%
+% \subsection{Abschnitte und Untergliederungen}
+%
+% Alle Ebenen ab \cs{section} ähneln sich so sehr, dass sie gemeinsam
+% behandelt werden. Lediglich bei \textsf{scrartl} gibt es für \cs{section}
+% selbst noch ein paar Besonderheiten.
+%
+% \begin{macro}{\size@section}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \begin{macro}{\size@subsection}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \begin{macro}{\size@subsubsection}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \begin{macro}{\size@paragraph}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% \begin{macro}{\size@subparagraph}
+% \changes{v2.8o}{2001/09/14}{neu (intern)}^^A
+% Hier werden diese Befehle nur vordefiniert. Ihre tatsächliche Einstellung
+% erfolgt über die (Vor-)Auswahl von Option \texttt{headings}.
+% \begin{macrocode}
+%<*class>
+%<*prepare>
+\newcommand*{\size@section}{}
+\newcommand*{\size@subsection}{}
+\newcommand*{\size@subsubsection}{}
+\newcommand*{\size@paragraph}{}
+\newcommand*{\size@subparagraph}{}
+%</prepare>
+% \end{macrocode}
+% \end{macro}^^A \size@subparagraph
+% \end{macro}^^A \size@paragraph
+% \end{macro}^^A \size@subsubsection
+% \end{macro}^^A \size@subsection
+% \end{macro}^^A \size@section
+%
+%
+% \begin{macro}{\l@section}
+% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}}^^A
+% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
+% Inhaltsverzeichnis und übergeordneten Einträgen verhindern}^^A
+% \changes{v2.96b}{2006/11/30}{Umbruch zwischen \cs{section}-Eintrag im
+% Inhaltsverzeichnis und untergeordneten Einträgen verhindern}^^A
+% \changes{v2.97c}{2007/06/21}{\cs{sectfont} durch Verwendung von
+% Element \texttt{sectionentry} ersetzt}^^A
+% \changes{v2.97c}{2007/06/21}{Element \texttt{sectionentrypagenumber} wird
+% verwendet}^^A
+% \changes{v2.97c}{2007/06/21}{weitgehend umgeschrieben, um linksbündige
+% Einträge zu ermöglichen}^^A
+% \changes{v3.15}{2014/11/24}{\cs{sectiontocdepth},
+% \cs{scr@section@tocindent} und \cs{scr@section@tocnumwidth} werden
+% verwendet}^^A
+% \changes{v3.20}{2015/10/06}{Überführung in Verzeichnisstil}^^A
+% Bei der Artikel-Klasse folgt die Formatierung für
+% \cs{section}-Einträge, an Stelle der Einträge für \cs{chapter}
+% der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier
+% stattdessen um eine normale Ebene.
+% \begin{option}{sectionentrydots}
+% \changes{v3.15}{2014/12/10}{Neu}^^A
+% Seit Version~3.15 kann man mit dieser Option Pünktchen zwischen Text und
+% Seitenzahl in den Kapiteleinträgen einschalten.
+% \begin{macrocode}
+%<*article>
+%<*option>
+\KOMA@ifkey{sectionentrydots}{@sectionentrywithdots}
+%</option>
+% \end{macrocode}
+% \end{option}^^A sectionentrydots
+% \begin{macro}{\raggedsectionentry}
+% \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A
+% \changes{v3.20}{2016/02/23}{nicht mehr verwendet}^^A
+% Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\raggedsectionentry}{}
+%</body>
+%</article>
+% \end{macrocode}
+% \end{macro}^^A \raggedsectionentry
+% \end{macro}^^A \l@section
+%
+%
+% \begin{macro}{\addsec}
+% \changes{v2.0e}{1994/10/12}{mehrfach \cs{markboth} durch
+% \cs{sectionmark} ersetzt}^^A
+% \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth}
+% ersetzt}^^A
+% \changes{v2.3h}{1995/01/21}{jetzt auch bei \textsf{scrbook} und
+% \textsf{scrreprt}}^^A
+% \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit
+% dadurch provozierte Seitenumbrüche im Inhaltsverzeichnis
+% berücksichtigt werden}^^A
+% \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch
+% \cs{markright} ersetzt}^^A
+% \changes{v2.7a}{2001/01/04}{\cs{addsec} für eine bessere
+% Unterstützung von \textsf{hyperref} geändert}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{SecDef}}^^A
+% \begin{macro}{\@addsec}
+% \changes{v3.10}{2011/08/30}{Verwendung von \cs{addsectiontocentry}}^^A
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}^^A
+% \changes{v3.18}{2015/05/22}{komplett neu definiert}^^A
+% \begin{macro}{\@saddsec}
+% \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}^^A
+% \changes{v3.17}{2015/04/20}{\cs{scr@ds@head} in \cs{addsecmark}
+% expandieren}^^A
+% \KOMAScript{} bietet in allen drei Hauptklassen den zusätzlichen
+% Gliederungsbefehl \cs{addsec}. Es handelt sich dabei um einen mit
+% \cs{section*} vergleichbaren Befehl, bei dem jedoch der
+% Kolumnentitel korrigiert wird und ein Eintrag ins Inhaltsverzeichnis
+% erfolgt (nicht in der Stern-Variante).
+%
+% Mit Version~3.18 wurde \cs{addsec} deutlich vereinfacht. Seither verwendet
+% nur noch \cs{@saddsec} die Anweiung \cs{addsecmark}, während \cs{@addsec}
+% direkt über das \cs{sectionmark} von \cs{section} arbeitet.
+% \begin{macrocode}
+%<*body>
+\newcommand\addsec{\SecDef\@addsec\@saddsec}
+\newcommand*{\@addsec}{}
+\def\@addsec[#1]#2{%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \section[{#1}]{#2}%
+ \c@secnumdepth=
+ }\the\c@secnumdepth\relax
+ }%
+ \c@secnumdepth=\numexpr \sectionnumdepth-1\relax
+ \reserved@a
+}
+\newcommand*{\@saddsec}[1]{%
+ \section*{#1}\addsecmark{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@saddsec
+% \end{macro}^^A \@addsec
+% \end{macro}^^A \addsec
+%
+%
+% \begin{macro}{\minisec}
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak}^^A
+% entfernt}^^A
+% \changes{v3.13a}{2014/08/07}{Absicherung der Abstände bei
+% aufeinanderfolgenden Überschriften entsprechend \cs{@startsection}}^^A
+% \changes{v3.26}{2018/05/14}{fehlendes \cs{interlinepenalty}\cs{@M}
+% ergänzt}^^A
+% \begin{KOMAfont}{minisec}
+% \changes{v2.96a}{2006/12/03}{\texttt{minisec} ist ein eigenes
+% Fontelement}^^A
+% \changes{v3.21}{2016/06/12}{fehlendes \cs{nobreak} ergänzt}^^A
+% In \KOMAScript{} gibt es diese zusätzliche Gliederungsebene, die
+% immer ohne Nummer und ohne Eintrag ins Inhaltsverzeichnis erfolgt.
+% \begin{macrocode}
+\newkomafont{minisec}{}
+\newcommand\minisec[1]{%
+ \expandafter\ifnum\scr@v@is@lt{3.13a}\relax
+ \@afterindentfalse \vskip 1.5ex
+ \else
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@afterindentfalse
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace{1.5ex}%
+ \fi
+ \fi
+ {\parindent \z@
+ \expandafter\ifnum\scr@v@is@gt{2.96}\relax
+ \setlength{\parfillskip}{\z@ plus 1fil}\fi
+ \raggedsection\normalfont\sectfont\nobreak
+ \usekomafont{minisec}{\nobreak\interlinepenalty \@M #1\par\nobreak}%
+ }\nobreak
+ \@afterheading
+}
+% \end{macrocode}
+% \end{KOMAfont}
+% \end{macro}
+%
+%
+% \begin{macro}{\addsectiontocentry}
+% \changes{v3.10}{2011/08/30}{Neu}^^A
+% Entsprechend \cs{addparttocentry} und \cs{addchaptertocentry}.
+% \begin{macrocode}
+\newcommand*{\addsectiontocentry}[2]{%
+ \addtocentrydefault{section}{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addsubsectiontocentry}
+% \changes{v3.10}{2011/08/30}{Neu}^^A
+% Entsprechend \cs{addparttocentry} usw.
+% \begin{macrocode}
+\newcommand*{\addsubsectiontocentry}[2]{%
+ \addtocentrydefault{subsection}{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addparagraphtocentry}
+% \changes{v3.10}{2011/08/30}{Neu}^^A
+% Entsprechend \cs{addparttocentry} usw.
+% \begin{macrocode}
+\newcommand*{\addparagraphtocentry}[2]{%
+ \addtocentrydefault{paragraph}{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addsubparagraphtocentry}
+% \changes{v3.10}{2011/08/30}{Neu}^^A
+% Entsprechend \cs{addparttocentry} usw.
+% \begin{macrocode}
+\newcommand*{\addsubparagraphtocentry}[2]{%
+ \addtocentrydefault{subparagraph}{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{Counter}{section}
+% \begin{macro}{\thesection}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}^^A
+% \changes{v3.03b}{2009/06/09}{\cs{relax} im Kompatibilitätstest durch ein
+% Leerzeichen ersetzt, obwohl das die Wartbarkeit verschlechtert, aber
+% \textsf{hyperref} hat mit dem \cs{relax} ein nicht dokumentieres Problem}
+% \begin{macro}{\sectionmarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
+% erhöht}^^A
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A
+% \begin{Counter}{subsection}
+% \begin{macro}{\thesubsection}
+% \begin{macro}{\subsectionmarkformat}
+% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer
+% erhöht}^^A
+% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A
+% \begin{Counter}{subsubsection}
+% \begin{macro}{\thesubsubsection}
+% \begin{Counter}{paragraph}
+% \begin{macro}{\theparagraph}
+% \begin{Counter}{subparagraph}
+% \begin{macro}{\thesubparagraph}
+% Jede Gliederungsebene benötigt einen Zähler für die
+% Gliederungsnummer und eine Darstellung des Zählers
+% (\cs{the\dots}). Desweiteren wird eine Formatierung des Zählers in
+% den Gliederungsüberschriften (\texttt{\bslash\dots format}) und eine
+% Formatierung des Zählers in der Kopfzeile
+% (\texttt{\bslash\dots markformat}) benötigt.
+% \begin{macrocode}
+%<*book|report>
+\newcounter{section}[chapter]
+\renewcommand*\thesection{%
+%<*book>
+ \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d} % the space before this
+ % comment should be \relax but hyperref has a
+ % not documented problem with \relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+ \thechapter.%
+%<book> \fi
+ \@arabic\c@section
+}
+%</book|report>
+%<*article>
+\newcounter{section}
+\renewcommand*{\thesection}{\@arabic\c@section}
+%</article>
+\newcommand*\sectionmarkformat{\thesection\autodot\enskip}
+\newcounter{subsection}[section]
+\renewcommand*{\thesubsection}{\thesection.\@arabic\c@subsection}
+%<*article>
+\newcommand*\subsectionmarkformat{\thesubsection\autodot\enskip}
+%</article>
+\newcounter{subsubsection}[subsection]
+\renewcommand*{\thesubsubsection}{%
+ \thesubsection.\@arabic\c@subsubsection
+}
+\newcounter{paragraph}[subsubsection]
+\renewcommand*{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph}
+\newcounter{subparagraph}[paragraph]
+\renewcommand*{\thesubparagraph}{%
+ \theparagraph.\@arabic\c@subparagraph
+}
+% \end{macrocode}
+% \begin{macro}{\@seccntformat}
+% \changes{v2.3c}{1995/08/06}{CJK erweitert}^^A
+% \changes{v2.9p}{2004/01/07}{\cs{protect} eingefügt}^^A
+% \changes{v2.97}{2007/01/24}{Workaround für das blöde \cs{protect}}^^A
+% \changes{v3.17}{2015/02/23}{verwendet \cs{\dots format}, wenn es
+% existiert}^^A
+% \changes{v3.17}{2015/03/31}{verwendet \cs{protect} für \cs{\dots
+% format}}^^A
+% \begin{macro}{\othersectionlevelsformat}
+% \changes{v2.7}{2000/01/03}{neu}^^A
+% \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt}^^A
+% \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt}^^A
+% \changes{v2.97}{2007/01/24}{statt einem Argument jetzt drei}^^A
+% Bei den Ebenen ab \cs{section} erfolgt die Formatierung der
+% Gliederungnummer in der Überschrift mit einer gemeinsamen
+% Anweisung. Die interne Anweisung \cs{@seccntformat} wird dabei von
+% \LaTeX-Kern verwendet und muss umdefiniert werden, um eine
+% entsprechende Anweisung auf Anwenderebene verfügbar zu haben.
+% Ab Version 2.9p wurde in \cs{@seccntformat} ein \cs{protect} vor
+% \cs{othersectionlevelsformat} eingefügt. Damit wurde es für den Benutzer
+% deutlich einfacher, die Anweisung \cs{othersectionlevelsformat}
+% umzudefinieren. Dafür war dadurch aber \cs{the\dots} nicht mehr
+% expandiert. Das wiederum gab Probleme, wenn \cs{@seccntformat} für den
+% \cs{mark}-Mechanismus genutzt wurde. Deshalb hat
+% \cs{othersectionlevelsformat} ab Version 2.97 drei Argumente statt nur
+% eines. Das zweite Argument sollte vom Anwender ignoriert werden, es
+% existiert nur, um die Kompatibitlität Umdefinitionen zu erhalten, bei denen
+% \cs{othersectionlevelsformat} nur ein Argument besitzt. Das dritte Argument
+% ist die \cs{the\dots}-Anweisung. Das zweite Argument funktioniert so, das es
+% das dritte Argument frisst, falls \cs{othersectionlevelsformat} nur ein
+% Argument liest.
+% \begin{macrocode}
+\newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip}
+\renewcommand*{\@seccntformat}[1]{%
+ \expandafter\ifnum\scr@v@is@lt{3.17}\relax
+ \protect\othersectionlevelsformat{#1}{%
+ \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}%
+ \else
+ \scr@ifundefinedorrelax{#1format}{%
+ \protect\othersectionlevelsformat{#1}{%
+ \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}%
+ }{\expandafter\protect\csname #1format\endcsname}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \othersectonlevelsformat
+% \end{macro}^^A \@seccntformat
+% \end{macro}^^A \thesubparagraph
+% \end{Counter}^^A subparagraph
+% \end{macro}^^A \theparagraph
+% \end{Counter}^^A paragraph
+% \end{macro}^^A \thesubsubsection
+% \end{Counter}^^A subsubsection
+% \end{macro}^^A \subsectionformat
+% \end{macro}^^A \thesubsection
+% \end{Counter}^^A subsection
+% \end{macro}^^A \sectionformat
+% \end{macro}^^A \thesection
+% \end{Counter}^^A section
+%
+%
+% \begin{macro}{\addsecmark}
+% \changes{v3.12}{2013/03/26}{neue Anweisung}^^A
+% \cs{addsecmark} wird nicht von den Seitenstilen definiert, sondern direkt
+% mit der gewünschten Definition initialisiert.
+% \begin{macrocode}
+\newcommand*\addsecmark[1]{%
+ \begingroup
+ \c@secnumdepth=\numexpr \sectionnumdepth-1\relax
+ \sectionmark{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \addsecmark
+%
+% \begin{KOMAfont}{section}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}^^A
+% \begin{macro}{\scr@fnt@section}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{section}}^^A
+% \begin{KOMAfont}{subsection}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}^^A
+% \begin{macro}{\scr@fnt@subsection}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsection}}^^A
+% \begin{KOMAfont}{subsubsection}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}^^A
+% \begin{macro}{\scr@fnt@subsubsection}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subsubsection}}^^A
+% \begin{KOMAfont}{paragraph}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}^^A
+% \begin{macro}{\scr@fnt@paragraph}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{paragraph}}^^A
+% \begin{KOMAfont}{subparagraph}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}^^A
+% \begin{macro}{\scr@fnt@subparagraph}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{subparagraph}}^^A
+% \begin{KOMAfont}{minisec}
+% \changes{v2.8o}{2001/09/14}{neuer Ersatz für das Element
+% \texttt{minisec}}^^A
+% \changes{v2.96a}{2007/01/08}{Alias für das Element \texttt{minisec}^^A
+% entfernt, da es nun ein eigenes Element ist}^^A
+% Definition der Elemente der Gliederung, deren Schrift geändert
+% werden kann.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@section}{\size@section}
+\newcommand*{\scr@fnt@subsection}{\size@subsection}
+\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection}
+\newcommand*{\scr@fnt@paragraph}{\size@paragraph}
+\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
+% \end{macrocode}
+% \end{KOMAfont}^^A minisec
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+% \end{macro}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{sectionentry}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% \changes{v3.06}{2010/06/09}{Verwendung von \texttt{sectioning} durch
+% \texttt{disposition} ersetzt}^^A
+% Schrift für den \cs{section}-Eintrag im Inhaltsverzeichnis.
+% \begin{macrocode}
+%<*article>
+\newkomafont{sectionentry}{\usekomafont{disposition}}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{sectionentrypagenumber}
+% \changes{v2.97c}{2007/06/21}{neues Font-Element}^^A
+% Schrift für die Seitenzahl des \cs{section}-Eintrags im Inhaltsverzeichnis
+% abweichend von \texttt{sectionentry}.
+% \begin{macrocode}
+\newkomafont{sectionentrypagenumber}{}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{sectionentrydots}
+% \changes{v3.15}{2014/12/10}{neues Font-Element}^^A
+% Schrift für die optionalen Pünktchen des \cs{section}-Eintrags im
+% Inhaltsverzeichnis abweichend von \texttt{sectionentrypagenumber}.
+% \begin{macrocode}
+\newkomafont{sectionentrydots}{\normalfont}
+%</article>
+% \end{macrocode}
+% \end{KOMAfont}
+%
+%
+% \begin{macro}{\partnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.18}{2015/05/24}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chapternumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\sectionnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsectionnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsubsectionnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\paragraphnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subparagraphnumdepth}
+% \changes{v3.12}{2013/12/16}{new read only command}^^A
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
+% Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit
+% der Verzeichnisebene der Gliederungsanweisungen).
+% \begin{macro}{\parttocdepth}
+% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/25}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\chaptertocdepth}
+% \changes{v3.15}{2014/12/22}{neue Anweisung}^^A
+% \changes{v3.18}{2015/05/20}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\sectiontocdepth}
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsectiontocdepth}
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsubsectiontocdepth}
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\paragraphtocdepth}
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subparagraphtocdepth}
+% \changes{v3.15}{2014/12/09}{indirekt über \cs{DeclareSectionCommand}}^^A
+% Diese dürfen nur gelesen, sollten aber nie umdefiniert werden und geben die
+% Verzeichnisebene der Gliederungsanweisungen an.
+% \begin{macro}{\part}
+% \changes{v3.18}{2015/05/25}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v3.26}{2018/06/27}{Definition nach \cs{section} verschoben (wegen
+% bookmark level fix)}^^A
+% \begin{macro}{\chapter}
+% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt
+% \texttt{plain}}^^A
+% \changes{v3.18}{2015/05/20}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% Als Besonderheit werden für \cs{chapter} nur diejenigen Werte gesetzt, die
+% nicht über Optionen eingestellt werden können und daher vorab deklariert
+% werden müssen. Bei den Anweisungen der unteren Ebenen werden hingegen alle
+% Einstellungen über \cs{DeclareSectionCommand} vorgenommen.
+% \begin{macro}{\section}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@section} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsection}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsection} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subsubsection}
+% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} nun
+% ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subsubsection} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/11/30}{Standardwert für \cs{parfillskip} (abhängig
+% von Option \texttt{version})}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\paragraph}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@paragraph} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \begin{macro}{\subparagraph}
+% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor
+% \cs{size@subparagraph} aufgerufen}^^A
+% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont}
+% behebt einen Bug im color Paket}^^A
+% \changes{v2.96a}{2006/12/03}{alle nicht benötigten \cs{nobreak} entfernt}^^A
+% \changes{v3.13a}{2014/09/11}{Verwendung von \cs{scr@startsection}}^^A
+% \changes{v3.15}{2014/11/24}{Verwendung von \cs{DeclareSectionCommand}}^^A
+% \changes{v3.15}{2014/11/24}{\cs{parindent} durch \cs{scr@parindent}
+% ersetzt}^^A
+% Die Standardgliederungsbefehle \cs{section} bis \cs{subparagraph}
+% sind seit \KOMAScript{} v3.15 über die von \KOMAScript{} bereitgestellte
+% Schnittstelle \cs{DeclareSectionCommand} definiert.
+% \begin{macrocode}
+%<*book|report>
+\DeclareSectionCommand[%
+ style=chapter,%
+ level=\z@,%
+ pagestyle=plain,%
+ tocstyle=chapter,%
+ tocindent=\z@,%
+ tocnumwidth=1.5em%
+]{chapter}
+%</book|report>
+\DeclareSectionCommand[%
+ style=section,%
+ level=1,%
+ indent=\z@,%
+ beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,%
+ afterskip=2.3ex \@plus.2ex,%
+ tocstyle=section,%
+%<article> tocindent=0pt,%
+%<book|report> tocindent=1.5em,%
+%<article> tocnumwidth=1.5em%
+%<book|report> tocnumwidth=2.3em%
+]{section}
+\DeclareSectionCommand[%
+ style=part,%
+%<article> level=\z@,%
+%<report|book> level=\m@ne,%
+%<report|book> pagestyle=plain,%
+ tocstyle=part,%
+ toclevel=\m@ne,%
+ tocindent=\z@,%
+ tocnumwidth=2em%
+]{part}
+\DeclareSectionCommand[%
+ style=section,%
+ level=2,%
+ indent=\z@,%
+ beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+ afterskip=1.5ex \@plus .2ex,%
+%<article> tocstyle=subsection,%
+%<book|report> tocstyle=section,%
+%<article> tocindent=1.5em,%
+%<book|report> tocindent=3.8em,%
+%<article> tocnumwidth=2.3em%
+%<book|report> tocnumwidth=3.2em%
+]{subsection}
+\DeclareSectionCommand[%
+ style=section,%
+ level=3,%
+ indent=\z@,%
+ beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+ afterskip=1.5ex \@plus .2ex,%
+%<article> tocstyle=subsection,%
+%<book|report> tocstyle=section,%
+%<article> tocindent=3.8em,%
+%<book|report> tocindent=7.0em,%
+%<article> tocnumwidth=3.2em%
+%<book|report> tocnumwidth=4.1em%
+]{subsubsection}
+\DeclareSectionCommand[%
+ style=section,%
+ level=4,%
+ indent=\z@,%
+ beforeskip=3.25ex \@plus1ex \@minus.2ex,%
+ afterskip=-1em,%
+%<article> tocstyle=subsection,%
+%<book|report> tocstyle=section,%
+%<article> tocindent=7.0em,%
+%<book|report> tocindent=10em,%
+%<article> tocnumwidth=4.1em%
+%<book|report> tocnumwidth=5em%
+]{paragraph}
+\DeclareSectionCommand[%
+ style=section,%
+ level=5,%
+ indent=\scr@parindent,%
+ beforeskip=3.25ex \@plus1ex \@minus .2ex,%
+ afterskip=-1em,%
+%<article> tocstyle=subsection,%
+%<book|report> tocstyle=section,%
+%<article> tocindent=10em,%
+%<book|report> tocindent=12em,%
+%<article> tocnumwidth=5em%
+%<book|report> tocnumwidth=6em%
+]{subparagraph}
+\expandafter\ifnum\scr@v@is@lt{3.15}\relax
+ \let\scr@subparagraph@sectionindent\parindent
+\else
+ \def\scr@subparagraph@sectionindent{\scr@parindent}%
+\fi
+%</body>
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \subparagraph
+% \end{macro}^^A \paragraph
+% \end{macro}^^A \subsubsection
+% \end{macro}^^A \subsection
+% \end{macro}^^A \section
+% \end{macro}^^A \chapter
+% \end{macro}^^A \part
+% \end{macro}^^A \subparargraphtocdepth
+% \end{macro}^^A \paragraphtocdepth
+% \end{macro}^^A \subsubsectiontocdepth
+% \end{macro}^^A \subsectiontocdepth
+% \end{macro}^^A \sectiontocdepth
+% \end{macro}^^A \chaptertocdepth
+% \end{macro}^^A \parttocdepth
+% \end{macro}^^A \subparargraphnumdepth
+% \end{macro}^^A \paragraphnumdepth
+% \end{macro}^^A \subsubsectionnumdepth
+% \end{macro}^^A \subsectionnumdepth
+% \end{macro}^^A \sectionnumdepth
+% \end{macro}^^A \chapternumdepth
+% \end{macro}^^A \partnumdepth
+%
+%
+% \subsection{Font und Größeneinstellungen}
+%
+% Die Einstellungen für die einzelnen Ebenen werden bei den Definitonen der
+% Ebenen vorgenommen. Hier gibt es nur Einstellungen, die nicht einer
+% einzelnen Ebene zugeordnet sind.
+%
+% \begin{KOMAfont}{disposition}
+% \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}^^A
+% \begin{KOMAfont}{sectioning}
+% \begin{macro}{\scr@fnt@disposition}
+% \changes{v2.95b}{2006/07/30}{neues Element \texttt{disposition}}^^A
+% \begin{macro}{\sectfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}^^A
+% \changes{v3.12}{2013/11/11}{wird wegen Option
+% \texttt{headings!=standardclasses} früher definiert}^^A
+% \changes{v3.20}{2016/01/29}{\cs{sffamily} durch \cs{@gr@gsffamily}
+% ersetzt}^^A
+% Dies Schriftart nicht nur für die Gliederungsbefehle. Dieses Makro
+% ist als intern zu betrachten. Der Anwender sollte stattdessen das
+% entsprtechende Fontelement verwenden.
+% \begin{macrocode}
+%<*prepare>
+\newcommand*{\sectfont}{\normalcolor\@gr@gsffamily\bfseries}
+%</prepare>
+%<*body>
+\newcommand*{\scr@fnt@disposition}{\sectfont}
+\aliaskomafont{sectioning}{disposition}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \sectfont
+% \end{macro}^^A \scr@fnt@disposition
+% \end{KOMAfont}^^A sectioning
+% \end{KOMAfont}^^A disposition
+%
+%
+% \begin{option}{headings}
+% \changes{v2.3h}{1996/01/20}{Größe von \cs{chapter} um eine Stufe
+% verringert}^^A
+% \changes{v2.3h}{1996/01/20}{Verwendung von \cs{chapterheadstartvskip} und
+% \cs{chapterheadendvskip} an Stelle von festen vertikalen Abständen am
+% Anfang und am Ende eines Kapitels}^^A
+% \changes{v2.7c}{2000/01/19}{vertikale Abstände nach der Kapitelüberschrift
+% geringfügig verändert und mit Leim versehen, um mit \cs{flushbottom} zu
+% besseren Ergebnissen zu gelangen}^^A
+% \changes{v2.98c}{2008/03/10}{Neue Option}^^A
+% \changes{v3.10}{2011/08/30}{Integration der Erweiterung für das optionale
+% Argument der Gliederungsbefehle}^^A
+% \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit
+% \cs{FamilyKeyState}}^^A
+% \changes{v3.12}{2013/08/26}{\cs{KOMA@options} durch \cs{KOMAoptions}
+% ersetzt}^^A
+% \changes{v3.12}{2013/11/11}{neuer Wert \texttt{standardclasses}}^^A
+% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@beforeskip} und
+% \cs{scr@chapter@afterskip} werden verwendet}^^A
+% \changes{v3.17}{2015/03/09}{interne Speicherung des Wert}^^A
+% \changes{v3.18}{2015/05/20}{Werte für \cs{scr@chapter@beforeskip}
+% negiert}^^A
+% Dies ist eine neue zentrale Option für Überschriften. Dabei ergibt sich
+% nun auch das Problem, dass die Gesamtmenge der Überschriften mal
+% \emph{headings} (Überschriften), mal \emph{sectioning}
+% (Abschnittseinteilung) und mal \emph{disposition} (Gliederung) genannt
+% wird. Es wäre gut gewesen, sich bei Zeiten Gedanken darüber zu machen, wie
+% man das am besten einheitlich nennt.
+% \begin{macrocode}
+%<*class>
+%<*option>
+\KOMA@key{headings}{%
+ \KOMA@set@ncmdkey{headings}{@tempa}{%
+ {big}{0},%
+ {normal}{1},%
+ {small}{2},%
+%<*book|report>
+ {openany}{3},%
+ {openright}{4},%
+ {openleft}{5},%
+ {twolinechapter}{6},{chapterprefix}{6},{chapterwithprefix}{6},%
+ {chapterwithprefixline}{6},%
+ {onelinechapter}{7},{nochapterprefix}{7},{chapterwithoutprefix}{7},%
+ {chapterwithoutprefixline}{7},%
+ {twolineappendix}{8},{appendixprefix}{8},{appendixwithprefix}{8},%
+ {appendixwithprefixline}{8},%
+ {onelineappendix}{9},{noappendixprefix}{9},{appendixwithoutprefix}{9},%
+ {appendixwithoutprefixline}{9},%
+%</book|report>
+ {optiontotocandhead}{10},{optiontoheadandtoc}{10},%
+ {optiontotoc}{11},%
+ {optiontohead}{12},%
+ {standardclasses}{13}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax% big
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{big}%
+% \end{macrocode}
+% Als erstes kümmern wir uns um die drei Größenabstufungen für die
+% Überschriften, die \KOMAScript{} bietet, und zwar in der Reihenfolge
+% \texttt{big}, \texttt{normal}, \texttt{small}. Es sei darauf hingewiesen,
+% dass die Verwendung dieser Option alle Änderungen an
+% \cs{chapterheadstartvskip} oder \cs{chapterheadendvskip} oder den
+% Font-Elementen für die einzelnen Überschriften aufhebt macht!
+%
+% Hinweis: Es wurde |+\baselineskip+\parskip| hinzugefügt, um
+% Kompatibilitätsprobleme zu vermeiden. Die entsprechenden Werte werden in der
+% Präambel aber wieder abgezogen, um Überschriften wirklich mit
+% |beforeskip=0pt| an den oberen Rand zu bekommen.
+% \begin{macrocode}
+%<*book|report>
+ \renewcommand*{\scr@chapter@beforeskip}{-3.3\baselineskip-\parskip}%
+ \renewcommand*{\scr@chapter@afterskip}{%
+ 1.725\baselineskip \@plus .115\baselineskip \@minus .192\baselineskip
+ }%
+ \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
+ \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
+ \renewcommand*{\chapterheadendvskip}{%
+ \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
+ \else\vskip\@tempskipa\fi
+ }%
+ \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
+%</book|report>
+ \renewcommand*{\size@part}{\Huge}%
+ \renewcommand*{\size@partnumber}{\huge}%
+%<book|report> \renewcommand*{\size@chapter}{\huge}%
+%<book|report> \renewcommand*{\size@chapterprefix}{\size@chapter}%
+ \renewcommand*{\size@section}{\Large}%
+ \renewcommand*{\size@subsection}{\large}%
+ \renewcommand*{\size@subsubsection}{\normalsize}%
+ \renewcommand*{\size@paragraph}{\normalsize}%
+ \renewcommand*{\size@subparagraph}{\normalsize}%
+ \or % normal
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{normal}%
+%<*book|report>
+ \renewcommand*{\scr@chapter@beforeskip}{-3\baselineskip-\parskip}%
+ \renewcommand*{\scr@chapter@afterskip}{%
+ 1.5\baselineskip \@plus .1\baselineskip \@minus .167\baselineskip
+ }%
+ \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
+ \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
+ \renewcommand*{\chapterheadendvskip}{%
+ \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
+ \else\vskip\@tempskipa\fi
+ }%
+ \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
+%</book|report>
+ \renewcommand*{\size@part}{\huge}%
+ \renewcommand*{\size@partnumber}{\huge}%
+%<*book|report>
+ \renewcommand*{\size@chapter}{\LARGE}%
+ \renewcommand*{\size@chapterprefix}{\size@chapter}%
+ \renewcommand*{\size@section}{\Large}%
+ \renewcommand*{\size@subsection}{\large}%
+%</book|report>
+%<*article>
+ \renewcommand*{\size@section}{\large}%
+ \renewcommand*{\size@subsection}{\normalsize}%
+%</article>
+ \renewcommand*{\size@subsubsection}{\normalsize}%
+ \renewcommand*{\size@paragraph}{\normalsize}%
+ \renewcommand*{\size@subparagraph}{\normalsize}%
+ \or % small
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{small}%
+%<*book|report>
+ \renewcommand*{\scr@chapter@beforeskip}{-2.8\baselineskip-\parskip}%
+ \renewcommand*{\scr@chapter@afterskip}{%
+ 1.35\baselineskip \@plus 0.09\baselineskip \@minus .15\baselineskip
+ }%
+ \renewcommand*{\scr@chapter@innerskip}{.5\baselineskip}%
+ \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
+ \renewcommand*{\chapterheadendvskip}{%
+ \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa
+ \else\vskip\@tempskipa\fi
+ }%
+ \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
+%</book|report>
+ \renewcommand*{\size@part}{\LARGE}%
+ \renewcommand*{\size@partnumber}{\LARGE}%
+%<*book|report>
+ \renewcommand*{\size@chapter}{\Large}%
+ \renewcommand*{\size@chapterprefix}{\size@chapter}%
+ \renewcommand*{\size@section}{\large}%
+%</book|report>
+%<*article>
+ \renewcommand*{\size@section}{\normalsize}%
+%</article>
+ \renewcommand*{\size@subsection}{\normalsize}%
+ \renewcommand*{\size@subsubsection}{\normalsize}%
+ \renewcommand*{\size@paragraph}{\normalsize}%
+ \renewcommand*{\size@subparagraph}{\normalsize}%
+% \end{macrocode}
+% Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die
+% Möglichkeit, auch hierüber die Optionen \texttt{open=any},
+% \texttt{open=right} und \texttt{open=left} zu setzen.
+% \begin{macrocode}
+ \or % openany
+%<*book|report>
+ \KOMAoptions{open=any}%
+%</book|report>
+ \or % openright
+%<*book|report>
+ \KOMAoptions{open=right}%
+%</book|report>
+ \or % openleft
+%<*book|report>
+ \KOMAoptions{open=left}%
+%</book|report>
+% \end{macrocode}
+% Für \textsf{scrbook} und \textsf{scrreprt} gibt es dann noch die
+% Möglichkeit, auch hierüber die Optionen \texttt{chapterprefix} und
+% \texttt{appendixprefix} zu setzen.
+% \begin{macrocode}
+ \or % twolinechapter
+%<*book|report>
+ \KOMAoptions{chapterprefix=true}%
+%</book|report>
+ \or % onelinechapter
+%<*book|report>
+ \KOMAoptions{chapterprefix=false}%
+%</book|report>
+ \or % twolineappendix
+%<*book|report>
+ \KOMAoptions{appendixprefix=true}%
+%</book|report>
+ \or % onelineappend
+%<*book|report>
+ \KOMAoptions{appendixprefix=false}%
+%</book|report>
+% \end{macrocode}
+% Ab Version~3.10 wird über diese Option auch noch die Erweiterung für das
+% optionale Argument der Gliederungsüberschriften aktiviert und gesteuert.
+% \begin{macrocode}
+ \or % optiontotocandhead
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotocandhead}%
+ \scr@activate@xsection{3}%
+ \or % optiontotoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontotoc}%
+ \scr@activate@xsection{2}%
+ \or % optiontohead
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotocandhead}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontotoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{optiontohead}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{optiontohead}%
+ \scr@activate@xsection{1}%
+% \end{macrocode}
+% Ab Version~3.12 gibt es noch die Möglichkeit, die Überschriftengrößen der
+% Standardklassen zu emulieren.
+% \begin{macrocode}
+ \or % standardclasses
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{big}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{normal}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{small}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{headings}{standardclasses}%
+ \KOMA@kav@add{.\KOMAClassFileName}{headings}{standardclasses}%
+%<*book|report>
+ \renewcommand*{\scr@chapter@beforeskip}{-50\p@}%
+ \renewcommand*{\scr@chapter@afterskip}{40\p@}%
+ \renewcommand*{\scr@chapter@innerskip}{20\p@}%
+ \renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}}%
+ \renewcommand*{\chapterheadendvskip}{\vskip\@tempskipa}%
+ \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}%
+ \renewcommand*{\size@part}{\Huge}%
+ \renewcommand*{\size@partnumber}{\huge}%
+ \renewcommand*{\size@chapter}{\Huge}%
+ \renewcommand*{\size@chapterprefix}{\huge}%
+%</book|report>
+%<*article>
+ \renewcommand*{\size@part}{\huge}%
+ \renewcommand*{\size@partnumber}{\Large}%
+%</article>
+ \renewcommand*{\size@section}{\Large}%
+ \renewcommand*{\size@subsection}{\large}%
+ \renewcommand*{\size@subsubsection}{\normalsize}%
+ \renewcommand*{\size@paragraph}{\normalsize}%
+ \renewcommand*{\size@subparagraph}{\normalsize}%
+ \renewcommand*{\sectfont}{\bfseries}%
+%<book|report> \KOMAoptions{open=right,chapterprefix=true}%
+ \fi
+ \fi
+}
+\KOMA@kav@add{.\KOMAClassFileName}{headings}{big}
+%<book|report>\KOMA@kav@add{.\KOMAClassFileName}{headings}{onelinechapter}
+% \end{macrocode}
+% \end{option}^^A headings
+%
+% \begin{option}{bigheadings}
+% \changes{v2.3h}{1996/01/20}{neue Option}^^A
+% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
+% Verwendung des alten, falschen Namens wird ein Fehler
+% ausgegeben}^^A
+% \changes{v2.98c}{2008/03/10}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macro}{\@bigheadings}
+% \changes{v2.98c}{2008/03/10}{entfernt}^^A
+% \begin{option}{normalheadings}
+% \changes{v2.3h}{1996/01/20}{neue Option}^^A
+% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
+% Verwendung des alten, falschen Namens wird ein Fehler
+% ausgegeben}^^A
+% \changes{v2.98c}{2008/03/10}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macro}{\@normalheadings}
+% \changes{v2.98c}{2008/03/10}{entfernt}^^A
+% \begin{option}{smallheadings}
+% \changes{v2.3h}{1996/01/20}{neue Option}^^A
+% \changes{v2.4g}{1996/11/04}{die Option heißt nun wirklich so; bei
+% Verwendung des alten, falschen Namens wird ein Fehler
+% ausgegeben}^^A
+% \changes{v2.98c}{2008/03/10}{obsolet}^^A
+% \changes{v3.01a}{2008/11/20}{deprecated}^^A
+% \begin{macro}{\@smallheadings}
+% \changes{v2.98c}{2008/03/10}{entfernt}^^A
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{bigheadings}{headings=big}
+\KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal}
+\KOMA@DeclareDeprecatedOption{smallheadings}{headings=small}
+%</option>
+%</class>
+% \end{macrocode}
+% \end{macro}^^A \@smallheadings
+% \end{option}^^A smallheadings
+% \end{macro}^^A \@normalheadings
+% \end{option}^^A normalheadings
+% \end{macro}^^A \@bigheadings
+% \end{option}^^A bigheadings
+%
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-sections.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-latin-1
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-title.dtx b/macros/latex/contrib/koma-script/source/scrkernel-title.dtx
new file mode 100644
index 0000000000..4aa076b934
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-title.dtx
@@ -0,0 +1,1071 @@
+% \CheckSum{974}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-title.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-title.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-title.dtx 3052 2019-01-01 12:47:38Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2019-01-01 13:47:38 +0100 (Tue, 01 Jan 2019) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-title.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source (title pages)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-title.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/26}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Die Titelei}
+%
+% Die Titelei ist gegenüber den Standardklassen erheblich
+% erweitert. Trotzdem kann ein Titel einer Standardklasse unmittelbar
+% mit einer \KOMAScript-Klasse gesetzt werden. Briefe besitzen allerdings
+% keine Titelei im eigentlichen Sinne.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*!letter>
+% \fi
+%
+% \iffalse
+%<*option>
+% \fi
+%
+%
+% \subsection{Optionen der Titelei}
+%
+% \begin{option}{titlepage}
+% \changes{v2.95c}{2006/08/21}{als \textsf{keyval}-Option}^^A
+% \changes{v3.12}{2013/11/21}{neuer Wert \texttt{firstiscover}}^^A
+% \changes{v3.17}{2015/03/10}{interne Speicherung des Werts}^^A
+% \begin{option}{notitlepage}
+% \changes{v2.95c}{2006/08/21}{Option ist obsolet}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% Es werden zei Arten von Titeln unterstützt. Da sind zum einen eigene
+% Titelseiten, zum anderen sogenannte Titelköpfe, also Titel, die nicht eine
+% eigene Seite erhalten, sondern am Anfang einer Seite stehen. Zwischen den
+% beiden Arten wird mit einer Option umgeschaltet. Ab Version~3.12 unterstützt
+% \KOMAScript{} außerdem die Einstellung \texttt{titlepage=firstiscover} bei
+% der die erste Titelseite als Umschlagseite gesetzt wird.
+% \begin{macro}{\if@titlepage}
+% \begin{macro}{\@titlepagetrue}
+% \begin{macro}{\@titlepagefalse}
+% Die gewählte Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+%<*class>
+\newif\if@titlepage
+%<article>\@titlepagefalse
+%<report|book>\@titlepagetrue
+%</class>
+% \end{macrocode}
+% Im Falle von \textsf{scrextend} ist die Option Teil der Erweiterung.
+% \begin{macrocode}
+%<*package&extend>
+\scr@ext@activateable{title}{%
+ \scr@ifundefinedorrelax{if@titlepage}{%
+ \expandafter\newif\csname if@titlepage\endcsname
+ \@titlepagefalse
+ }{}%
+ \scr@ifundefinedorrelax{if@titlepageiscoverpage}{%
+ \expandafter\newif\csname if@titlepageiscoverpage\endcsname
+ \@titlepageiscoverpagefalse
+ }{}%
+%</package&extend>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+%<*class|package>
+%<class>\newif\if@titlepageiscoverpage
+\KOMA@key{titlepage}[true]{%
+%<!(package&extend)> \ifstr{#1}{firstiscover}{%
+%<package&extend> \ifstr{##1}{firstiscover}{%
+ \@titlepagetrue
+ \@titlepageiscoverpagetrue
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{titlepage}{firstiscover}%
+ }{%
+ \def\FamilyElseValue{, `firstiscover'}%
+%<!(package&extend)> \KOMA@set@ifkey{titlepage}{@titlepage}{#1}%
+%<package&extend> \KOMA@set@ifkey{titlepage}{@titlepage}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@remove{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{titlepage}{firstiscover}%
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{titlepage}{@titlepage}%
+ \@titlepageiscoverpagefalse
+ \fi
+ }%
+}
+\KOMA@kav@xadd{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+}{titlepage}{\if@titlepage true\else false\fi}
+%<*extend>
+% \end{macrocode}
+% Diese Erweiterung soll dann auch tatsächlich sofort aktiviert werden:
+% \begin{macrocode}
+ \def\scr@ext@immediate@title{%
+ \scr@ext@activate{title}%
+ \let\scr@ext@immediate@title\relax
+ }%
+}
+%</extend>
+%</class|package>
+\KOMA@DeclareStandardOption%
+%<package> [scrextend]%
+ {notitlepage}{titlepage=false}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{abstract}
+% \changes{v2.95c}{2006/08/21}{neue \textsf{keyval}-Option}^^A
+% \begin{option}{abstracton}
+% \changes{v2.95c}{2006/08/21}{Option ist obsolet}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% \begin{option}{abstractoff}
+% \changes{v2.95c}{2006/08/21}{Option ist obsolet}^^A
+% \changes{v3.01a}{2008/11/21}{standard statt obsolet}^^A
+% Obwohl die Zusammenfassung nicht unbedingt auf einer Titelseite steht,
+% gehört sie doch zur Titelei und wird daher hier mit behandelt. Die
+% Zusammenfassung kann mit einem standardmäßigen Titel versehen werden. Der
+% Titel kann aber auch unterdrückt werden.
+% \iffalse
+%<*class>
+%<*article|report>
+% \fi
+% Bei Büchern gibt es keine Zusammenfassung als gesonderte Umgebung. Als
+% Ersatz kann bei Büchern auf \cs{addchap*} zurückgegriffen werden.
+% \begin{macro}{\if@abstrt}
+% \changes{v3.17}{2015/03/10}{wird von \cs{KOMA@ifkey} definiert}^^A
+% \begin{macro}{\@abstrttrue}
+% \begin{macro}{\@abstrtfalse}
+% Die Enscheidung, ob der Titel der Zusammenfassung gesetzt werden soll, wird
+% in einem Schalter gespeichert.
+% \begin{macrocode}
+\KOMA@ifkey{abstract}{@abstrt}
+\KOMA@DeclareStandardOption{abstracton}{abstract=true}
+\KOMA@DeclareStandardOption{abstractoff}{abstract=false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \iffalse
+%</article|report>
+%</class>
+% \fi
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+%
+% \subsection{Definitionen der Titelei}
+%
+% \begin{macro}{\extratitle}
+% \begin{macro}{\@extratitle}
+% \begin{macro}{\frontispiece}
+% \changes{v3.25}{2017/11/21}{neu}
+% \begin{macro}{\@frontispiece}
+% \changes{v3.25}{2017/11/21}{neu (intern)}
+% \begin{macro}{\titlehead}
+% \begin{macro}{\@titlehead}
+% \begin{macro}{\subject}
+% \begin{macro}{\@subject}
+% \begin{macro}{\subtitle}
+% \changes{v2.97c}{2007/06/20}{neue Möglichkeit}^^A
+% \begin{macro}{\@subtitle}
+% \changes{v2.97c}{2007/06/20}{neu (intern)}^^A
+% \begin{macro}{\publishers}
+% \begin{macro}{\@publishers}
+% \begin{macro}{\uppertitleback}
+% \begin{macro}{\@uppertitleback}
+% \begin{macro}{\lowertitleback}
+% \begin{macro}{\@lowertitleback}
+% \begin{macro}{\dedication}
+% \begin{macro}{\@dedication}
+% Da der Titel im \KOMAScript{} Paket wesentlich mehr Angaben erlaubt
+% als bei den Standardklassen, gibt es natürlich auch einige Befehle,
+% mit denen diese gesetzt werden können. Alle zusätzlichen Angaben
+% sind optional und können auch weggelassen werden. In diesem Fall
+% werden Leerfelder verwendet. Bis auf \cs{subject} sind alle
+% Zusatzbefehle \cs{long} deklariert, können also ganze Absätze
+% enthalten.
+% \begin{macrocode}
+%<package&extend>\scr@ext@addto@activateable{title}{%
+\newcommand*{\@extratitle}{}%
+\newcommand{\extratitle}[1]{\gdef\@extratitle{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@frontispiece}{}%
+\newcommand{\frontispiece}[1]{\gdef\@frontispiece{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@titlehead}{}%
+\newcommand{\titlehead}[1]{\gdef\@titlehead{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@subject}{}%
+\newcommand*{\subject}[1]{\gdef\@subject{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\subtitle}[1]{\gdef\@subtitle{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@subtitle}{}%
+\newcommand*{\@publishers}{}%
+\newcommand{\publishers}[1]{\gdef\@publishers{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@uppertitleback}{}%
+\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@lowertitleback}{}%
+\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+\newcommand*{\@dedication}{}%
+\newcommand{\dedication}[1]{\gdef\@dedication{%
+%<extend> ##1%
+%<!extend> #1%
+}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\next@tpage}
+% \changes{v2.3b}{1995/07/24}{\cs{null} entfernt.}
+% \changes{v2.3g}{1996/01/14}{\cs{newpage} durch \cs{clearpage} ersetzt}
+% \changes{v3.11c}{2013/02/14}{Fußnoten der letzten Titelseite ausgeben}^^A
+% \changes{v3.11c}{2013/02/14}{Fußnoten für die nächste Titelseite
+% initialisieren}^^A
+% \changes{v3.20}{2015/10/14}{\cs{setparsizes} bzw. entsprechende Angaben
+% für die Längen eingefügt}^^A
+% \begin{macro}{\next@tdpage}
+% \changes{v3.11c}{2013/02/14}{neue Anweisung (intern)}^^A
+% \changes{v3.12}{2013/11/21}{\cs{titlepage@restore} hinzugefügt}
+% Innerhalb eines Titels auf die nächste Seite bzw. nächste rechte Seite
+% umschalten.
+% \begin{macrocode}
+\newcommand*{\next@tpage}{%
+ \@thanks\global\let\@thanks\@empty
+ \clearpage
+ \csname titlepage@restore\endcsname
+%<!extend> \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+%<extend> \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil
+ \thispagestyle{empty}%
+ \let\footnote\thanks
+ \setcounter{footnote}{0}%
+}
+\newcommand*{\next@tdpage}{%
+ \next@tpage\if@twoside \ifodd\value{page}\else\null\next@tpage\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\maketitle}
+% \changes{v3.11c}{2013/02/14}{Schmutztitel bei Titelkopf in eigene
+% Anweisung verlagert}^^A
+% \changes{v3.11c}{2013/02/14}{Verwendung von \cs{next@tdpage}}^^A
+% Mit dieser Anweisung wird der Titel generiert, dessen Inhalt zuvor
+% gesetzt wurde. Es muss unterschieden werden, ob der Titel auf einer
+% eigenen Titelseite oder als Seitenkopf erstellt werden soll. Der
+% \KOMAScript-Titel ist u.\,U. sehr groß. Im Fall dass diverse
+% Zusatzelemente verwendet werden, sollte eigentlich immer eine
+% Titelseite verwendet werden.%
+% \changes{v2.1a}{1994/10/29}{das Hilfskonstrukt \cs{@maketitle}
+% wurde aus der Unterscheidung herausgenommen (für den Fall, dass
+% \cs{maketitle} von einem Paket überladen wird)}^^A
+% \changes{v2.3a}{1995/07/08}{\texttt{plus} durch \cs{@plus}
+% ersetzt}^^A
+% \changes{v2.3a}{1995/07/08}{\texttt{fill} durch \cs{fill}
+% ersetzt}^^A
+% \changes{v2.3d}{1995/08/19}{\cs{fill} durch \texttt{fill}
+% ersetzt}^^A
+% \changes{v2.3a}{1995/07/08}{\cs{vfil} durch \cs{vfill} ersetzt}^^A
+% \changes{v2.3b}{1995/07/24}{Umbruch bei \cs{@extratitle} in der
+% beidseitigen Titelseite korrigiert}^^A
+% \changes{v2.3g}{1996/01/14}{\cs{footnote} funktioniert nun auch
+% im Titel}^^A
+% \changes{v2.4}{1996/02/25}{\cs{footnote} funktioniert nun
+% wirklich im Titel}^^A
+% \changes{v2.4h}{1996/11/09}{egal ob der Titel auf eine Extraseite
+% kommt oder nicht, \cs{@title} wird mit \cs{sectfont} gesetzt,
+% wobei die Größe neuerdings danach eingestellt wird}^^A
+% \changes{v2.4l}{1997/02/06}{symbolische Fußnoten und
+% Fußnotensymbolbreiten von 0\,pt zur besseren Zentrierung des
+% Autors sind auch bei Titelseiten angebracht}^^A
+% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von
+% \cs{sectfont}}^^A
+% \changes{v2.95c}{2006/08/21}{Absatzgrundeinstellungen}^^A
+% \changes{v2.97c}{2007/08/31}{Vakatseiten in der Titelei immer im
+% Seitenstil \texttt{empty}}^^A
+% \changes{v3.04a}{2009/07/14}{die Unterscheidung, ob Titelseite oder
+% Titelkopf sollte erst in \cs{maketitle} und nicht schon bei dessen
+% Definition erfolgen}^^A
+% \changes{v3.12}{2013/05/29}{Verwendung neuer Font-Elemente
+% \texttt{titlehead}, \texttt{author}, \texttt{date}, \texttt{publishers},
+% \texttt{dedication}}^^A
+% \changes{v3.25}{2017/11/21}{Verwendung von \cs{@frontispiece}}^^A
+% \begin{macrocode}
+%<package&extend>\let\maketitle\relax\let\@maketitle\relax
+\newcommand*\maketitle[1][1]{%
+% \end{macrocode}
+% Da ab Version~3.12 auch mehrere \cs{maketitle} möglich sind, muss ggf. für
+% eine korrekte Definition von \cs{and} gesorgt werden:
+% \begin{macrocode}
+ \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
+ \else
+ \def\and{%
+ \end{tabular}%
+ \hskip 1em \@plus.17fil%
+ \begin{tabular}[t]{c}%
+ }%
+ \fi
+% \end{macrocode}
+% Es folgt die eigentliche Definition, die davon abhängt, ob wir uns im
+% doppelseitigen Modus befinden oder nicht.
+% \begin{macrocode}
+ \if@titlepage
+ \begin{titlepage}
+ \setcounter{page}{%
+%<extend> ##1%
+%<!extend> #1%
+ }%
+% \end{macrocode}
+% \changes{v3.12}{2013/11/21}{Berücksichtigung von
+% \texttt{titlepage!=firstiscover}}^^A
+% Ab Version~3.12 gibt es hier eine Sonderbehandlung für die erste Titelseite,
+% falls es sich dabei um eine Umschlagsseite handeln soll. In diesem Fall
+% werden die Maße der Seite verändert, was später per \cs{titlepage@restore}
+% ggf. wieder zurückgenommen wird.
+% \begin{macrocode}
+ \if@titlepageiscoverpage
+ \edef\titlepage@restore{%
+ \noexpand\endgroup
+ \noexpand\global\noexpand\@colht\the\@colht
+ \noexpand\global\noexpand\@colroom\the\@colroom
+ \noexpand\global\vsize\the\vsize
+ \noexpand\global\noexpand\@titlepageiscoverpagefalse
+ \noexpand\let\noexpand\titlepage@restore\noexpand\relax
+ }%
+ \begingroup
+ \topmargin=\dimexpr \coverpagetopmargin-1in\relax
+ \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \textwidth=\dimexpr
+ \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
+ \textheight=\dimexpr
+ \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
+ \headheight=0pt
+ \headsep=0pt
+ \footskip=\baselineskip
+ \@colht=\textheight
+ \@colroom=\textheight
+ \vsize=\textheight
+ \columnwidth=\textwidth
+ \hsize=\columnwidth
+ \linewidth=\hsize
+ \else
+ \let\titlepage@restore\relax
+ \fi
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}%
+ \ifx\@extratitle\@empty
+ \ifx\@frontispiece\@empty
+ \else
+ \if@twoside\mbox{}\next@tpage\fi
+ \noindent\@frontispiece\next@tdpage
+ \fi
+ \else
+ \noindent\@extratitle
+ \ifx\@frontispiece\@empty
+ \else
+ \next@tpage
+ \noindent\@frontispiece
+ \fi
+ \next@tdpage
+ \fi
+%<!extend> \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+%<extend> \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil
+ \ifx\@titlehead\@empty \else
+ \begin{minipage}[t]{\textwidth}%
+ \usekomafont{titlehead}{\@titlehead\par}%
+ \end{minipage}\par
+ \fi
+ \null\vfill
+ \begin{center}
+ \ifx\@subject\@empty \else
+ {\usekomafont{subject}{\@subject\par}}%
+ \vskip 3em
+ \fi
+ {\usekomafont{title}{\huge \@title\par}}%
+ \vskip 1em
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
+ \vskip 2em
+ {%
+ \usekomafont{author}{%
+ \lineskip 0.75em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par
+ }%
+ }%
+ \vskip 1.5em
+ {\usekomafont{date}{\@date \par}}%
+ \vskip \z@ \@plus3fill
+ {\usekomafont{publishers}{\@publishers \par}}%
+ \vskip 3em
+ \end{center}\par
+ \@thanks\let\@thanks\@empty
+ \vfill\null
+ \if@twoside
+% \end{macrocode}
+% \changes{v3.12}{2013/11/21}{Rückseite wird nur bei Bedarf ausgegeben.}^^A
+% Ab Version~3.12 wird die Rückseite der Titelseite nur noch bei Bedarf
+% ausgegeben. Das gilt aber nur, wenn keine Kompatibilität mit früheren
+% Versionen verlangt ist.
+% \begin{macrocode}
+ \@tempswatrue
+ \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
+ \else
+ \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
+ \@tempswafalse
+ \fi\fi
+ \fi
+ \if@tempswa
+ \next@tpage
+ \begin{minipage}[t]{\textwidth}
+ \@uppertitleback
+ \end{minipage}\par
+ \vfill
+ \begin{minipage}[b]{\textwidth}
+ \@lowertitleback
+ \end{minipage}\par
+ \@thanks\let\@thanks\@empty
+ \fi
+% \end{macrocode}
+% \changes{v3.27}{2019/01/01}{Warnung für nicht leere Titelrückseite bei
+% einseitigen Dokumenten}^^A
+% Bei einseitigen Dokumenten werden eventuell gesetzte Inhalte von
+% \cs{uppertitleback} oder \cs{lowertitleback} nicht ausgegeben.
+% \begin{macrocode}
+ \else
+ \ifx\@uppertitleback\@empty\else
+%<package> \PackageWarning{scrextend}{%
+%<class> \ClassWarning{\KOMAClassName}{%
+ non empty \string\uppertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `twoside=false' mode%
+ }%
+ \fi
+ \ifx\@lowertitleback\@empty\else
+%<package> \PackageWarning{scrextend}{%
+%<class> \ClassWarning{\KOMAClassName}{%
+ non empty \string\lowertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `twoside=false' mode%
+ }%
+ \fi
+ \fi
+ \ifx\@dedication\@empty
+ \else
+ \next@tdpage\null\vfill
+ {\centering\usekomafont{dedication}{\@dedication \par}}%
+ \vskip \z@ \@plus3fill
+ \@thanks\let\@thanks\@empty
+% \end{macrocode}
+% \changes{v3.12}{2013/10/31}{Nach der Widmung kein \cs{next@tdpage},
+% sondern nur \cs{cleardoubleemptypage}}^^A
+% \begin{macrocode}
+ \cleardoubleemptypage
+ \fi
+% \end{macrocode}
+% Falls wir uns noch immer auf einer Umschlagseite befinden, muss diese hier
+% beendet werden.
+% \begin{macrocode}
+ \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
+ \end{titlepage}
+% \end{macrocode}
+% \changes{v2.3a}{1995/07/08}{Verwendung von \cs{@makefnmark} in
+% \cs{@makefntext}}^^A
+% \changes{v2.3a}{1995/07/08}{Definition von \cs{@makefnmark} und
+% \cs{@makefntext} unabhängig von math}^^A
+% \changes{v2.3e}{1995/08/30}{optionales Argument bei der
+% einseitigen Version erlauben und ignorieren}^^A
+% \changes{v2.3g}{1996/01/14}{mehrfach \cs{null} bei
+% \cs{next@tpage} ergänzt}^^A
+% \changes{v2.4l}{1997/02/06}{es ist nicht mehr notwendig
+% \cs{\@makefntext} umzudefinieren, stattdessen wird nur
+% \cs{\@makefnmark} umdefiniert}^^A
+% \changes{v2.8d}{2001/07/05}{\cs{titlepagestyle} statt
+% \texttt{plain}}^^A
+% \changes{v3.12a}{2014/03/03}{Leerzeichenfehler behoben}^^A
+% \changes{v3.12a}{2014/03/03}{Schmutztitel wird nur ausgegeben, wenn er
+% nicht leer ist}^^A
+% \changes{v3.12a}{2014/03/03}{\cs{next@tdpage} aus \cs{@maketitle} und
+% \cs{@makeextrattitle} entfernt}^^A
+% \changes{v3.19}{2015/08/25}{Seitenstil nur ändern wenn nicht leer}^^A
+% \begin{macrocode}
+ \else
+ \par
+ \@tempcnta=%
+%<extend> ##1%
+%<!extend> #1%
+ \relax\ifnum\@tempcnta=1\else
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package> \PackageWarning{scrextend}{%
+ Optional argument of \string\maketitle\space ignored\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \ifx\@uppertitleback\@empty\else
+%<package> \PackageWarning{scrextend}{%
+%<class> \ClassWarning{\KOMAClassName}{%
+ non empty \string\uppertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \ifx\@lowertitleback\@empty\else
+%<package> \PackageWarning{scrextend}{%
+%<class> \ClassWarning{\KOMAClassName}{%
+ non empty \string\lowertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \begingroup
+ \let\titlepage@restore\relax
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}%
+ \next@tdpage
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \ifx\@extratitle\@empty
+ \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi
+ \else
+ \@makeextratitle
+ \fi
+ \ifx\@frontispiece\@empty
+ \ifx\@extratitle\@empty\else\next@tdpage\fi
+ \else
+ \next@tpage
+ \@makefrontispiece
+ \next@tdpage
+ \fi
+ \@maketitle
+ \else
+ \ifx\@extratitle\@empty
+ \ifx\@frontispiece\@empty\else\if@twoside\mbox{}\fi\fi
+ \else
+ \twocolumn[\@makeextratitle]%
+ \fi
+ \ifx\@frontispiece\@empty
+ \ifx\@extratitle\@empty\else\next@tdpage\fi
+ \else
+ \next@tpage
+ \twocolumn[\@makefrontispiece]%
+ \next@tdpage
+ \fi
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \ifx\@extratitle\@empty
+ \ifx\@frontispiece\@empty\else \mbox{}\fi
+ \else
+ \@makeextratitle
+ \fi
+ \ifx\@frontispiece\@empty
+ \ifx\@extratitle\@empty\else\next@tdpage\fi
+ \else
+ \next@tpage
+ \@makefrontispiece
+ \next@tdpage
+ \fi
+ \@maketitle
+ \fi
+ \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
+ \@thanks
+ \endgroup
+ \fi
+ \setcounter{footnote}{0}%
+% \end{macrocode}
+% \changes{v3.12}{2013/11/21}{die Titelei wird nur noch bei Kompatibilität
+% zu früheren Versionen zerstört}^^A
+% \begin{macrocode}
+ \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
+ \let\thanks\relax
+ \let\maketitle\relax
+ \let\@maketitle\relax
+% \end{macrocode}
+% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{global}\cs{let}
+% statt \cs{gdef}, um Speicher zu sparen}
+% \changes{v2.3g}{1996/01/14}{\cs{@date} und \cs{title}
+% u.\,ä. ebenfalls löschen, um Speicher zu sparen}
+% \begin{macrocode}
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@subtitle\@empty
+ \global\let\@extratitle\@empty
+ \global\let\@frontispiece\@empty
+ \global\let\@titlehead\@empty
+ \global\let\@subject\@empty
+ \global\let\@publishers\@empty
+ \global\let\@uppertitleback\@empty
+ \global\let\@lowertitleback\@empty
+ \global\let\@dedication\@empty
+ \global\let\author\relax
+ \global\let\title\relax
+ \global\let\extratitle\relax
+ \global\let\titlehead\relax
+ \global\let\subject\relax
+ \global\let\publishers\relax
+ \global\let\uppertitleback\relax
+ \global\let\lowertitleback\relax
+ \global\let\dedication\relax
+ \global\let\date\relax
+ \fi
+ \global\let\and\relax
+}%
+% \end{macrocode}
+% \begin{macro}{\@maketitle}
+% \changes{v2.95c}{2006/08/21}{Absatzgrundeinstellungen}^^A
+% \changes{v3.11c}{2012/02/14}{Schmutztitel in eigene Anweisung verlagert}^^A
+% \changes{v3.12a}{2014/03/03}{\cs{next@tdpage} aus \cs{@maketitle}
+% entfernt}^^A
+% \begin{macro}{\@makeextratitle}
+% \changes{v3.11c}{2013/02/14}{neue Anweisung (intern)}^^A
+% \changes{v3.12a}{2014/03/03}{\cs{next@tdpage} aus \cs{@makeextrattitle}
+% entfernt}^^A
+% Damit wird im Fall des Titelkopfes die eigentliche Arbeit geleistet.
+% \begin{macro}{\@makefrontispiece}
+% \changes{v3.25}{2017/11/21}{neu}^^A
+% \begin{macrocode}
+\newcommand*{\@makeextratitle}{%
+ \ifx\@extratitle\@empty \else
+ \noindent\@extratitle\par
+ \fi
+}
+\newcommand*{\@makefrontispiece}{%
+ \ifx\@frontispiece\@empty \else
+ \noindent\@frontispiece\par
+ \fi
+}
+\newcommand*{\@maketitle}{%
+ \global\@topnum=\z@
+%<!extend> \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+%<extend> \parskip\z@ \parindent\z@ \parfillskip\z@\@plus 1fil
+ \ifx\@titlehead\@empty \else
+ \begin{minipage}[t]{\textwidth}
+ \usekomafont{titlehead}{\@titlehead\par}%
+ \end{minipage}\par
+ \fi
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \ifx\@subject\@empty \else
+ {\usekomafont{subject}{\@subject \par}}%
+ \vskip 1.5em
+ \fi
+ {\usekomafont{title}{\huge \@title \par}}%
+ \vskip .5em
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}%
+ \vskip 1em
+ {%
+ \usekomafont{author}{%
+ \lineskip .5em%
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par
+ }%
+ }%
+ \vskip 1em%
+ {\usekomafont{date}{\@date \par}}%
+ \vskip \z@ \@plus 1em
+ {\usekomafont{publishers}{\@publishers \par}}%
+ \ifx\@dedication\@empty \else
+ \vskip 2em
+ {\usekomafont{dedication}{\@dedication \par}}%
+ \fi
+ \end{center}%
+ \par
+ \vskip 2em
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\coverpagetopmargin}
+% \changes{v3.12}{2013/11/21}{neu}^^A
+% Oberer Rand für Umschlagsseiten.
+% \begin{macrocode}
+\newcommand*{\coverpagetopmargin}{%
+ \dimexpr \topmargin+1in\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\coverpagebottommargin}
+% \changes{v3.12}{2013/11/21}{neu}^^A
+% Unterer Rand für Umschlagsseiten.
+% \begin{macrocode}
+\newcommand*{\coverpagebottommargin}{%
+ 2\dimexpr\coverpagetopmargin\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\coverpageleftmargin}
+% \changes{v3.12}{2013/11/21}{neu}^^A
+% Linker Rand für Umschlagsseiten.
+% \begin{macrocode}
+\newcommand*{\coverpageleftmargin}{%
+ \dimexpr \evensidemargin+1in\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\coverpagerightmargin}
+% \changes{v3.12}{2013/11/21}{neu}^^A
+% Oberer Rand für Umschlagsseiten.
+% \begin{macrocode}
+\newcommand*{\coverpagerightmargin}{\coverpageleftmargin}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Umgebung für die Titelseite}
+%
+% \begin{environment}{titlepage}
+% Die Titelseite bedarf ebenfalls einer gesonderter Umgebung. Beim
+% zweispaltigen Layout soll die Titelseite z.\,B. einspaltig gedruckt
+% werden.
+% \begin{macrocode}
+%<package&extend>\scr@ifundefinedorrelax{titlepage}{%
+\newenvironment{titlepage}{%
+%<report|book> \cleardoublepage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}%
+ \fi
+}{%
+ \if@restonecol\twocolumn \else \newpage \fi
+}%
+%<package&extend>}{}%
+% \end{macrocode}
+% \end{environment}
+%
+% Im Fall von \textsf{scrextend} muss jetzt das Kürzel \emph{title} beendet
+% werden:
+% \begin{macrocode}
+%<package&extend>}\csname scr@ext@immediate@title\endcsname
+% \end{macrocode}
+%
+% \subsection{Fonts für den Titel}
+%
+% \begin{macro}{\titlefont}
+% \changes{v2.8p}{2001/09/22}{neu}^^A
+% Wie oben zu sehen ist, wird in der Titelei ein eigenes Schriftmakro
+% verwendet. Dieses ist als internes Makro zu verstehen. Der Anwender
+% sollte stattdessen auf das entsprechende Element zugreifen (siehe
+% unten).
+% \begin{macro}{\subject@font}
+% \changes{v2.8q}{2002/01/14}{neu (intern)}^^A
+% \changes{v2.95}{2002/06/26}{jetzt auch bei \textsf{scrbook},
+% \textsf{scrreprt} und \textsf{scrartcl}}
+% Ebenso verhält es sich mit den \emph{Subject} im Titel. Hier ist
+% aber von vornherein ein internes Makro definiert.
+% \begin{macrocode}
+\newcommand*\titlefont{\sectfont}%
+\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{KOMAfont}{subtitle}
+% \changes{v2.97c}{2007/06/20}{neu}^^A
+% \begin{macrocode}
+\newkomafont{subtitle}{\usekomafont{title}\large}%
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{titlehead}
+% \changes{v3.12}{2013/05/29}{neu}^^A
+% \begin{macrocode}
+\newkomafont{titlehead}{}%
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{author}
+% \changes{v3.12}{2013/05/29}{neu}^^A
+% \begin{macrocode}
+\newkomafont{author}{\Large}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{date}
+% \changes{v3.12}{2013/05/29}{neu}^^A
+% \begin{macrocode}
+\newkomafont{date}{\Large}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{publishers}
+% \changes{v3.12}{2013/05/29}{neu}^^A
+% \begin{macrocode}
+\newkomafont{publishers}{\Large}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{KOMAfont}{dedication}
+% \changes{v3.12}{2013/05/29}{neu}^^A
+% \begin{macrocode}
+\newkomafont{dedication}{\Large}
+% \end{macrocode}
+% \end{KOMAfont}
+%
+% \begin{macro}{\scr@fnt@title}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{title}}
+% \begin{macro}{\scr@fnt@subject}
+% \changes{v2.8q}{2002/01/14}{neues Element \texttt{subject}}
+% \changes{v2.95}{2002/06/26}{jetzt auch bei \textsf{scrbook},
+% \textsf{scrreprt} und \textsf{scrartcl}}
+% Die beiden Elemente, deren Schrift geändert werden kann.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@title}{\titlefont}%
+\newcommand*{\scr@fnt@subject}{\subject@font}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Umgebung für die Zusammenfassung}
+%
+% \begin{environment}{abstract}
+% \textsf{scrartcl} und \textsf{scrreprt} bieten die Möglichkeit einer
+% Zusammenfassung, eines sogenannten \emph{Abstracts}. Wenn eine
+% Titelseite verlangt wurde, wird auch die Zusammenfassung auf eine
+% eigene Seite gesetzt. \textsf{scrbook} kennt keine Zusammenfassung
+% dieser Art. In Büchern werden Zusammenfassungen üblicherweise mit
+% Kapitelcharakter gesetzt.
+% \iffalse
+%<*class>
+%<*article|report>
+% \fi
+% \changes{v2.3a}{1995/07/08}{\cs{@endparpenalty} zur Verhinderung
+% eines Seitenumbruchs nach dem Abstract-Kopf eingefügt}^^A
+% \changes{v2.3g}{1996/01/14}{\cs{@beginparpenalty} zur
+% Verhinderung eines Seitenumbruchs vor dem Abstract-Kopf
+% eingefügt}^^A
+% \changes{v2.7a}{2001/01/04}{statt \cs{section*} wird nun
+% \cs{addsec*} verwendet, damit die Kolumnentitel korrekt
+% behandelt werden}^^A
+% \changes{v3.04a}{2009/07/14}{die Unterscheidung, ob Titelseite oder
+% Titelkopf sollte erst in der Umgebung und nicht schon bei deren
+% Definition erfolgen}^^A
+% \begin{macrocode}
+\newenvironment{abstract}{%
+ \if@titlepage
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \if@abstrt
+ \begin{center}
+ \normalfont\sectfont\nobreak\abstractname
+ \@endparpenalty\@M
+ \end{center}
+ \fi
+ \else
+ \if@twocolumn\if@abstrt
+ \addsec*{\abstractname}
+ \fi
+ \else
+ \if@abstrt
+ \small
+ \begin{center}
+ {\normalfont\sectfont\nobreak\abstractname
+ \vspace{-.5em}\vspace{\z@}}%
+ \end{center}
+ \fi
+ \quotation
+ \fi
+ \fi
+}{%
+ \if@titlepage
+ \par\vfil\null\endtitlepage
+ \else
+ \if@twocolumn\else\endquotation\fi
+ \fi
+}
+% \end{macrocode}
+% \end{environment}^^A abstract
+%
+% \begin{macro}{\abstractname}
+% Name der Zusammenfassung.
+% \begin{macrocode}
+\newcommand*\abstractname{Abstract}
+% \end{macrocode}
+% \end{macro}^^A \abstractname
+%
+% \iffalse
+%</article|report>
+%</class>
+% \fi
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</!letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-title.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx b/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
new file mode 100644
index 0000000000..04dec8e47f
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-tocstyle.dtx
@@ -0,0 +1,2090 @@
+% \CheckSum{1380}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-tocstyle.dtx
+% Copyright (c) Markus Kohm, 2015-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-tocstyle.dtx
+% Copyright (c) Markus Kohm, 2015-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-tocstyle.dtx 3011 2018-08-29 07:35:17Z kohm $
+% The runs of run-time file generation:
+%<preidentify>%%% (run: preidentify)
+% - everything that is needed before selfidentification of resulting files
+% (unused)
+%<identify>%%% (run: identify)
+% - everything that is needed for selfidentification of resulting files
+% (unused)
+%<prepare>%%% (run: prepare)
+% - everything that is needed to define options
+%<option>%%% (run: option)
+% - definition of options (unused)
+%<execoption>%%% (run: execoption)
+% - initial option executions up to \KOMAProcessOptions
+% (unused)
+%<body>%%% (run: body)
+% - everything, that should be done after \KOMAProcessOptions
+%<exit>%%% (run: exit)
+% - everything, that should be done immediately before leaving the file
+% (unused)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2254 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-tocstyle.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source (TOC styles)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-tocstyle.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei
+ \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \section{Verzeichnisstile}
+%
+% Verzeichnisstile werden derzeit nur in Kooperation mit Gliederungsstilen
+% untersützt. In Zukunft soll das aber mal anders werden. Dann sollen
+% Verzeichnisstile Teil der Grundfunktionalität für Verzeichnisse (Paket
+% \textsf{tocbasic}) werden und auch unabhängig von Gliederungsstilen
+% einsetzbar sein.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \changes{v3.20}{2015/11/13}{neu und nur bei Vorhandensein verwendet}
+%
+%
+% \subsection{Einstellungen unabhängig von Verzeichnisstilen und doch
+% Grundlage für diese}
+%
+% Bis \KOMAScript~3.20 waren die Befehle, die hier definiert werden, Teil der
+% KOMA-Script-Klassen. Allerdings zeigt sich, dass es für die Definition von
+% Verzeichnisstilen von Vorteil ist, wenn diese Definitionen im Paket
+% vorhanden sind.
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macro}{\numberline}
+% \changes{v3.20}{2016/03/10}{\cs{numberline} wird indirekt über
+% \cs{scr@numberline} definiert}^^A
+% \begin{macro}{\scr@numberline}
+% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert}^^A
+% \changes{v3.06}{2010/05/18}{Verwendung von \cs{numberline@prefix} und
+% \cs{numberline@postfix}}^^A
+% \changes{v3.12}{2013/11/22}{use \cs{numberline@numberformat} only, if the
+% argument expands to a non-empty string}^^A
+% Dieses Makro wird indirekt im Inhaltsverzeichnis verwendet und muss
+% umdefiniert werden, um Duden, 20.~Auflage, Regel~5 und Regel~6 zu
+% implementieren.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@numberline}[1]{%
+ \numberline@box{%
+ \numberline@prefix
+ \ifstr{#1}{}{#1}{%
+ \numberline@numberformat{#1}%
+ }%
+ \numberline@postfix
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\usetocbasicnumberline}
+% \changes{v3.20}{2016/03/15}{neu}^^A
+% Dieses Makro testet, ob \cs{numberline} auf \cs{scr@numberline}
+% basiert. Falls das nicht der Fall ist, führt es das optionale Argument aus
+% und führt dann eine entsprechende Umdefinierung statt. Falls es jedoch der
+% Fall ist, lässt es alles unverändert.
+% \begin{macrocode}
+\newcommand*{\usetocbasicnumberline}[1][%
+ \PackageInfo{tocbasic}{Using my definition of `\string\numberline'}%
+]{%
+ \@tempswatrue
+ \begingroup
+ \def\scr@numberline##1{\global\@tempswafalse}%
+% \end{macrocode}
+% \cs{@tempdima} ist üblicherweise bei \cs{numberline} die Breite der Nummer.
+% Damit zu kleine Werte nicht zu einem Problem werden können, nehme ich hier
+% gleich mal einen richtig großen Wert.
+% \begin{macrocode}
+ \@tempdima\maxdimen
+ \sbox\@tempboxa{\numberline{0}}%
+ \endgroup
+ \if@tempswa #1\renewcommand*{\numberline}[1]{\scr@numberline{##1}}\fi
+}
+% \end{macrocode}
+% \end{macro}^^A \usetocbasicnumberline
+% \begin{macro}{\numberline@prefix}
+% \changes{v3.06}{2010/05/18}{neu (intern)}^^A
+% Das ist in der Voreinstellung einfach leer. Es könnte verwendet werden, um
+% etwas vor die Nummer zu setzen oder die Nummer rechtsbündig zu setzen.
+% \begin{macrocode}
+\newcommand*{\numberline@prefix}{}
+% \end{macrocode}
+% \end{macro}^^A \numberline@prefix
+% \begin{macro}{\numberline@postfix}
+% \changes{v3.06}{2010/05/18}{neu (intern)}
+% Das ist in der Voreinstellung einfach \cs{hfil} und dient dazu die Nummer
+% linksbündig zu platzieren.
+% \begin{macrocode}
+\newcommand*{\numberline@postfix}{\hfil}
+% \end{macrocode}
+% \end{macro}^^A \numberline@postfix
+% \begin{macro}{\numberline@numberformat}
+% \changes{v3.06}{2010/05/18}{neu (intern)}^^A
+% \changes{v3.12}{2013/11/22}{don't output anything, if argument expands to
+% an empty string}^^A
+% Das dient in der Voreinstellung dazu, Regel~5 und 6 aus der 20.~Auflage des
+% DUDENs umzusetzen.
+% \begin{macrocode}
+\newcommand*{\numberline@numberformat}[1]{%
+ \ifstr{#1}{}{}{\numberline@numberprefix#1\numberline@numberpostfix}%
+}
+% \end{macrocode}
+% \begin{macro}{\numberline@numberprefix}
+% \changes{v3.20}{2016/03/15}{neu (intern)}
+% Wird verwendet, um innerhalb von \cs{numberline@numberformat} der Nummer
+% einen Präfix voran zu stellen. Im Gegensatz zu \cs{numberline@prefix} wird
+% dieser nur ausgegeben, wenn das Argument von \cs{numberline@numberformat},
+% also auch das Argument von \cs{numberline} nicht leer ist.
+% \begin{macrocode}
+\newcommand*{\numberline@numberprefix}{}
+% \end{macrocode}
+% \end{macro}^^A \numberline@numberprefix
+% \begin{macro}{\numberline@numberpostfix}
+% \changes{v3.20}{2016/03/15}{neu (intern)}
+% Wird verwendet, um innerhalb von \cs{numberline@numberformat} der Nummer
+% einen Postfix anzuhängen. Im Gegensatz zu \cs{numberline@prefix} wird
+% dieser nur ausgegeben, wenn das Argument von \cs{numberline@numberformat},
+% also auch das Argument von \cs{numberline} nicht leer ist.
+% \begin{macrocode}
+\newcommand*{\numberline@numberpostfix}{}
+% \end{macrocode}
+% \end{macro}^^A \numberline@numberpostfix
+% \end{macro}^^A \numberline@numberformat
+% \begin{macro}{\numberline@box}
+% \changes{v3.06}{2010/05/18}{neu (intern)}
+% Das dient in der Voreinstellung dazu, die Gliederungsnummer in eine Box zu
+% setzen.
+% \begin{macrocode}
+\newcommand*{\numberline@box}[1]{\hb@xt@\@tempdima{#1}}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \numberline@box
+% \end{macro}^^A \scr@numberline
+%
+% \iffalse
+%</package>
+%<*class>
+% \fi
+%
+% \begin{macrocode}
+%<*body>
+\let\numberline\scr@numberline
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \numberline
+%
+% \iffalse
+%</class>
+% \fi
+%
+% \subsection{Grundlagen für Verzeichniseintragsstile}
+%
+% Ab \KOMAScript~3.20 halten Stile Einzug in die Verzeichnisse. Der erste
+% Schritt dabei sind die Stile der Verzeichniseinträge. Jeder Stil besteht aus
+% einer Anweisung, mit der ein Verzeichnisbefehl definiert wird und
+% zugehörigen Optionen. Die Optionen dienen dazu, Einstellungen für die
+% einzelnen Verzeichnisbefehle vorzunehmen.
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \changes{v3.20}{2015/11/17}{Verzeichnisstile bekommen das
+% \texttt{KOMAarg}-Mitglied \texttt{.dte}}^^A
+% \begin{macrocode}
+%<*body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.dte]{KOMAarg}
+%</body>
+% \end{macrocode}
+%
+% \begin{macro}{\@DefineTOCEntryOption}
+% \changes{v3.20}{2015/04/10}{neu (intern)}
+% Die Definition der Optionen geschieht mit einer einheitlichen
+% Schnittstelle. Wichtig dabei ist, dass hier nicht tatsächlich die Optionen
+% definiert werden, sondern eine Anweisung, die ihrerseits die Optionen bei
+% Bedarf definiert. Ein solcher Bedarf besteht beispielsweise bei der
+% Definition des Eintragsbefehls selbst. Er besteht aber auch innerhalb von
+% \cs{DeclareSectionCommand}, weil diese Anweisung ebenfalls indirekt
+% Verzeichniseinträge definiert und deshalb die Optionen auswerten können
+% soll. Es gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option abhängig von der
+% \meta{Definition}
+% \item[\marg{Definition}: \meta{Code},] Definition der Option
+% \end{description}
+% \begin{macro}{\@DefineTOCEntryOptionWithoutDefault}
+% \changes{v3.20}{2015/11/10}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryOptionWithDefault}
+% \changes{v3.20}{2015/11/10}{neu (intern)}
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden zwei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryOption}[2]{%
+ \edef\scr@dte@doopts{%
+ \unexpanded\expandafter{\scr@dte@doopts}\noexpand\do{#2}%
+ }%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryOptionWithDefault{#1}{#2}}%
+ {\@DefineTOCEntryOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryOptionWithoutDefault}[3]{%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2}{#3}%
+}
+\newcommand*{\@DefineTOCEntryOptionWithDefault}{}
+\def\@DefineTOCEntryOptionWithDefault#1#2[#3]#4{%
+ \l@addto@macro\scr@dte@doopts{[{#3}]}%
+ \DefineFamilyKey[.dte]{KOMAarg}{#2}[{#3}]{#4}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DefineTOCEntryOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryOption
+%
+% \begin{macro}{\@RelaxTOCEntryOptions}
+% \changes{v3.20}{2015/04/10}{neu (intern)}
+% Setzt alle Optionen der aktuellen Do-Liste zurück auf \cs{relax}.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@RelaxTOCEntryOptions}{%
+ \begingroup
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \l@addto@macro\do@endgroup{\RelaxFamilyKey[.dte]{KOMAarg}{##1}}%
+ \scr@dte@gobbleopt
+ }%
+ \scr@dte@doopts
+ \do@endgroup
+}
+\newcommand{\scr@dte@gobbleopt}[1][]{}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@RelaxTOCEntryOptions
+%
+% \begin{macro}{\@DefineTOCEntryLengthOption}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
+% Längenmacro definiert. Es gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
+% \end{description}
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt.
+% \begin{macro}{\@DefineTOCEntryLengthOptionWithoutDefault}
+% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% \begin{macro}{\@DefineTOCEntryLengthOptionWithDefault}
+% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% \begin{macro}{\@DefineTOCEntryLengthOptionMacro}
+% \changes{v3.20}{2015/11/10}{neu (intern)}^^A
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryLengthOption}[2]{%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryLengthOptionWithDefault{#1}{#2}}
+ {\@DefineTOCEntryLengthOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryLengthOptionWithoutDefault}[5]{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#5}%
+ \@DefineTOCEntryOption{#1}{#2}{%
+ \@DefineTOCEntryLengthOptionMacro{#2}{#3}{#4}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryLengthOptionWithDefault}{}
+\def\@DefineTOCEntryLengthOptionWithDefault#1#2[#3]#4#5#6{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#6}%
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryLengthOptionMacro{#2}{#4}{#5}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryLengthOptionMacro}[4]{%
+ \protected@edef\reserved@a{%
+ \noexpand\FamilySetLength{KOMAarg}{#1}{\noexpand\@tempskipa}{#4}%
+ }\reserved@a
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifscr@dte@expandtopt
+ \expandafter\edef\csname #2\scr@dte@current#3\endcsname{%
+ \the\@tempskipa}%
+ \else
+ \expandafter\protected@edef\csname #2\scr@dte@current#3\endcsname{#4}%
+ \fi
+ \fi
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DefineTOCEntryLengthOptionMacro
+% \end{macro}^^A \@DefineTOCEntryLengthOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryLengthOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryLengthOption
+%
+% \begin{macro}{\@DefineTOCEntryNumberOption}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
+% Nummernmacro definiert. Es gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
+% \end{description}
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt.
+% \begin{macro}{\@DefineTOCEntryNumberOptionWithoutDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryNumberOptionWithDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryNumberOptionMacro}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryNumberOption}[2]{%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryNumberOptionWithDefault{#1}{#2}}
+ {\@DefineTOCEntryNumberOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryNumberOptionWithoutDefault}[5]{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#5}%
+ \@DefineTOCEntryOption{#1}{#2}{%
+ \@DefineTOCEntryNumberOptionMacro{#2}{#3}{#4}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryNumberOptionWithDefault}{}
+\def\@DefineTOCEntryNumberOptionWithDefault#1#2[#3]#4#5#6{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#6}%
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryNumberOptionMacro{#2}{#4}{#5}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryNumberOptionMacro}[4]{%
+ \protected@edef\reserved@a{%
+ \noexpand\FamilySetCounterMacro{KOMAarg}{#1}{%
+ \expandafter\noexpand\csname #2\scr@dte@current#3\endcsname
+ }{#4}%
+ }\reserved@a
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DefineTOCEntryNumberOptionMacro
+% \end{macro}^^A \@DefineTOCEntryNumberOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryNumberOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryNumberOption
+%
+% \begin{macro}{\@DefineTOCEntryBooleanOption}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die einen
+% Schalter definiert. Es gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
+% \end{description}
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt.
+% \begin{macro}{\@DefineTOCEntryBoolOptionWithoutDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryBoolOptionWithDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryBoolOptionMacro}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryBooleanOption}[2]{%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryBoolOptionWithDefault{#1}{#2}}
+ {\@DefineTOCEntryBoolOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryBoolOptionWithoutDefault}[5]{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{if#3}{#4}{#2}{#5}%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4false}{#2}{#5}%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4false}{#2}{#5}%
+ \@DefineTOCEntryOption{#1}{#2}[true]{%
+ \@DefineTOCEntryBoolOptionMacro{#2}{#3}{#4}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryBoolOptionWithDefault}{}
+\def\@DefineTOCEntryBoolOptionWithDefault#1#2[#3]#4#5#6{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{if#4}{#5}{#2}{#6}%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5true}{#2}{#6}%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5false}{#2}{#6}%
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryBoolOptionMacro{#2}{#4}{#5}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryBoolOptionMacro}[4]{%
+ \@ifundefined{if#2\scr@dte@current#3}{%
+ \expandafter\newif\csname if#2\scr@dte@current#3\endcsname
+ }{}%
+ \FamilySetBool{KOMAarg}{#1}{#2\scr@dte@current#3}{#4}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DefineTOCEntryBoolOptionMacro
+% \end{macro}^^A \@DefineTOCEntryBoolOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryBoolOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryBooleanOption
+%
+% \begin{macro}{\@DefineTOCEntryIfOption}
+% \changes{v3.20}{2015/12/06}{neu (intern)}
+% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die eine
+% If-Anweisung definiert. Die Option selbst ist dabei eine Schalter-Option. Es
+% gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \end{description}
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt.
+% \begin{macro}{\@DefineTOCEntryIfOptionWithoutDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryIfOptionWithDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryIfOptionMacro}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryIfOption}[2]{%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryIfOptionWithDefault{#1}{#2}}
+ {\@DefineTOCEntryIfOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryIfOptionWithoutDefault}[5]{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{If#3}{#4}{#2}{#5}%
+ \@DefineTOCEntryOption{#1}{#2}[true]{%
+ \@DefineTOCEntryIfOptionMacro{#2}{#3}{#4}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryIfOptionWithDefault}{}
+\def\@DefineTOCEntryIfOptionWithDefault#1#2[#3]#4#5#6{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{If#4}{#5}{#2}{#6}%
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryIfOptionMacro{#2}{#4}{#5}{##1}%
+ }%
+}
+\newcommand*{\@DefineTOCEntryIfOptionMacro}[4]{%
+ \FamilySetBool{KOMAarg}{#1}{@tempswa}{#4}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\let\csname If#2\scr@dte@current#3\endcsname\@firstoftwo
+ \else
+ \expandafter\let\csname If#2\scr@dte@current#3\endcsname\@secondoftwo
+ \fi
+ \fi
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DefineTOCEntryIfOptionMacro
+% \end{macro}^^A \@DefineTOCEntryIfOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryIfOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryIfOption
+%
+% \begin{macro}{\@DefineTOCEntryCommandOption}
+% \changes{v3.20}{2015/11/17}{neu}
+% Verwendet \cs{DefineTOCEntryOption}, um eine Option zu definieren, die ein
+% Macro definiert. Es gibt folgende Parameter:
+% \begin{description}
+% \item[\marg{Stil}: \meta{String},] Name des Eintragsstils
+% \item[\marg{Option}: \meta{String},] Name der Option
+% \item[\oarg{Wert}:] der Säumniswert der Option
+% \item[\marg{Prefix}: \meta{String},] Präfix des zu definierenden Makros
+% \item[\marg{Postfix}: \meta{String},] Postfix des zu definierenden Makros
+% \item[\oarg{Argumentzahl}: \meta{Nummer},] Anzahl der Argumente des Makros
+% \item[\marg{Erklärung}: \meta{String},] Erklärung der Option
+% \item[\oarg{Init}: \meta{Code},] Initialisierung der Option
+% \end{description}
+% Zwischen Prefix und Postfix wird bei der späteren, tatsächlichen Definition
+% automatisch \cs{scr@dte@current} eingefügt.
+% \begin{macro}{\@DefineTOCEntryCommandOptionWithoutDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@@DefineTOCEntryCommandOptionWithoutDefault}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryCommandOptionWithDefault}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@@DefineTOCEntryCommandOptionWithDefault}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
+% \begin{macro}{\@DefineTOCEntryCommandOptionMacro}
+% \changes{v3.20}{2015/11/12}{neu (intern)}
+% \begin{macro}{\@@DefineTOCEntryCommandOptionMacro}
+% \changes{v3.20}{2015/11/26}{neu (intern)}
+% Da mit einem optionalen Argument an Position 3 gearbeitet wird, werden drei
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@DefineTOCEntryCommandOption}[2]{%
+ \kernel@ifnextchar [%]
+ {\@DefineTOCEntryCommandOptionWithDefault{#1}{#2}}
+ {\@DefineTOCEntryCommandOptionWithoutDefault{#1}{#2}}%
+}
+\newcommand*{\@DefineTOCEntryCommandOptionWithoutDefault}[4]{%
+ \@testopt{\@@DefineTOCEntryCommandOptionWithoutDefault{#1}{#2}{#3}{#4}}0%
+}
+\newcommand*{\@@DefineTOCEntryCommandOptionWithoutDefault}{}%
+\def\@@DefineTOCEntryCommandOptionWithoutDefault#1#2#3#4[#5]#6{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#3}{#4}{#2}{#6}%
+ \ifcase #5
+ \@DefineTOCEntryOption{#1}{#2}{%
+ \@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1}%
+ }%
+ \or
+ \@DefineTOCEntryOption{#1}{#2}{%
+ \@DefineTOCEntryCommandOptionMacro{#2}{#3}{#4}[#5]{##1{####1}}%
+ }%
+ \else
+%<class> \ClassError{\KOMAClassName
+%<package> \PackageError{tocbasic%
+ }{only one argument supported}{%
+ \string\DefineTOCEntryCommandOption\space currently supports only
+ commands with\MessageBreak
+ at most one argument not #5}%
+ \fi
+}
+\newcommand*{\@DefineTOCEntryCommandOptionWithDefault}{}
+\def\@DefineTOCEntryCommandOptionWithDefault#1#2[#3]#4#5{%
+ \@testopt{\@@DefineTOCEntryCommandOptionWithDefault{#1}{#2}{#3}{#4}{#5}}0%
+}
+\def\@@DefineTOCEntryCommandOptionWithDefault#1#2#3#4#5[#6]#7{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}{#4}{#5}{#2}{#7}%
+ \ifcase #6
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1}%
+ }%
+ \or
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}}%
+ }%
+ \or
+ \@DefineTOCEntryOption{#1}{#2}[{#3}]{%
+ \@DefineTOCEntryCommandOptionMacro{#2}{#4}{#5}[#6]{##1{####1}{####2}}%
+ }%
+ \else
+%<class> \ClassError{\KOMAClassName
+%<package> \PackageError{tocbasic%
+ }{only one argument supported}{%
+ \string\DefineTOCEntryCommandOption\space currently supports only
+ commands with\MessageBreak
+ at most two argument not #6}%
+ \fi
+}
+\newcommand*{\@DefineTOCEntryCommandOptionMacro}[3]{%
+ \@testopt{\@@DefineTOCEntryCommandOptionMacro{#1}{#2}{#3}}0%
+}
+\newcommand*{\@@DefineTOCEntryCommandOptionMacro}{}
+\long\def\@@DefineTOCEntryCommandOptionMacro#1#2#3[#4]#5{%
+ \let\l@ngrel@x\long
+ \expandafter\@yargdef\csname #2\scr@dte@current#3\endcsname\@ne{#4}{#5}%
+ \FamilyKeyStateProcessed
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@@DefineTOCEntryCommandOptionMacro
+% \end{macro}^^A \@DefineTOCEntryCommandOptionMacro
+% \end{macro}^^A \@@DefineTOCEntryCommandOptionWithDefault
+% \end{macro}^^A \@DefineTOCEntryCommandOptionWithDefault
+% \end{macro}^^A \@@DefineTOCEntryCommandOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryCommandOptionWithoutDefault
+% \end{macro}^^A \@DefineTOCEntryCommandOption
+%
+% \begin{macro}{\@AddToDeclareTOCStyleEntryPreCheckNeeds}
+% \changes{v3.20}{2015/12/06}{neu (intern)}
+% \begin{macro}{\@PreToDeclareTOCStyleEntryPreCheckNeeds}
+% \changes{v3.20}{2015/12/06}{neu (intern)}
+% Noch bevor die benötigten Befehle getestet werden, wird in
+% \cs{DeclareTOCStyleEntry} ein Hook ausgeführt. Für das Hinzufügen von Code
+% zu diesem Hook gibt es folgende Parameter:
+% \begin{description}
+% \item[\marg{Code}: \meta{Code},] Code, der ausgeführt werden soll.
+% \end{description}
+% Bitte beachten, dass diese Anweisung im Init-Code von Stilen verwendet wird,
+% also innerhalb von \cs{DeclareTOCEntryStyle}, während der Hook innerhalb
+% von \cs{DeclareTOCStyleEntry} ausgeführt wird. Der Code des Hooks hat ein
+% Argument: Den Namen der Gliederungsebene.
+% \begin{macrocode}
+%<*body>
+\newcommand{\@AddToDeclareTOCEntryStylePreCheckNeeds}[1]{%
+ \expandafter\providecommand\csname scr@dte@precheck\endcsname[1]{}%
+ \expandafter\l@addto@macro@a\csname scr@dte@precheck\endcsname
+}
+\newcommand{\@PreToDeclareTOCEntryStylePreCheckNeeds}[1]{%
+ \expandafter\providecommand\csname scr@dte@precheck\endcsname[1]{}%
+ \expandafter\l@preto@macro@a\csname scr@dte@precheck\endcsname
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@PreToDeclareTOCStyleEntryPreCheckNeeds
+% \end{macro}^^A \@AddToDeclareTOCStyleEntryPreCheckNeeds
+%
+% \begin{macro}{\@TOCEntryStyleNeedsCommandByOption}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Fügt einen oder mehrere Befehle der Liste der benötigten Befehle hinzu.
+% \begin{description}
+% \item[\marg{Stil}:] Der Stil \meta{string}, der die Befehle benötigt.
+% \item[\marg{Präfix}:] Präfix \meta{string} des benötigten Befehls.
+% \item[\marg{Postfix}:] Postfix \meta{string} des benötigten Befehls.
+% \item[\marg{Option}:] Die Option \meta{string}, über die dieser Befehl
+% definiert wird.
+% \item[\marg{Erklärung}:] Bedeutung \meta{string} des Befehls.
+% \end{description}
+% Zwischen Präfix und Postfix wird dann automatisch der Name der
+% Gliederungsebene eingefügt.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\@TOCEntryStyleNeedsCommandByOption}[5]{%
+ \expandafter\providecommand\expandafter*\csname scr@dte@#1@needs\endcsname{}%
+ \expandafter\l@addto@macro\csname scr@dte@#1@needs\endcsname{%
+ \do{#2}{#3}{#4}{#5}%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@TOCEntryStyleNeedsCommandByOption
+%
+% \begin{macro}{\TOCEntryStyleInitCode}
+% \changes{v3.20}{2015/11/19}{neu}
+% \begin{macro}{\TOCEntryStyleStartInitCode}
+% \changes{v3.20}{2015/11/25}{neu}
+% Führt Befehle aus, bevor ein Verzeichnisbefehl in diesem Stil definiert wird
+% und noch bevor die \emph{needs}-Liste abgearbeitet wird.
+% Argumente sind:
+% \begin{description}
+% \item[\marg{Stil}:] Der Stil \meta{string} für den die Initialisierung
+% erfolgen soll.
+% \item[\marg{Code}:] Wird zwecks Initialisierung ausgeführt. Innerhalb dieses
+% Codes ist \texttt{\#1} der Name der Verzeichnisebene.
+% \end{description}
+% \begin{macrocode}
+%<*body>
+\newcommand{\TOCEntryStyleInitCode}[1]{%
+ \scr@ifundefinedorrelax{scr@dte@#1@init}{%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@dte@#1@init\endcsname[1]%
+ }{%
+ \expandafter\l@addto@macro@a\csname scr@dte@#1@init\endcsname
+ }%
+}
+\newcommand{\TOCEntryStyleStartInitCode}[1]{%
+ \scr@ifundefinedorrelax{scr@dte@#1@init}{%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@dte@#1@init\endcsname[1]%
+ }{%
+ \expandafter\l@preto@macro@a\csname scr@dte@#1@init\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \TOCEntryStyleStartInitCode
+% \end{macro}^^A \TOCEntryStyleInitCode
+% \begin{macro}{\@ExecuteTOCEntryStyleInitCode}
+% \changes{v3.20}{2015/12/04}{neu (intern)}
+% Führt den Init-Code eines Stils aus. Das erste Argument ist der Name des
+% Stils, das zweite der Name der Verzeichnisebene. Diesen erhält die
+% Init-Anweisung außerdem als Argument.
+% \begin{macrocode}
+\newcommand*{\@ExecuteTOCEntryStyleInitCode}[2]{%
+ \let\scr@dte@doopts\@empty
+ \scr@ifundefinedorrelax{scr@dte@#1@init}{}{%
+ \def\DefineTOCEntryBooleanOption{\@DefineTOCEntryBooleanOption{#1}}%
+ \def\DefineTOCEntryCommandOption{\@DefineTOCEntryCommandOption{#1}}%
+ \def\DefineTOCEntryIfOption{\@DefineTOCEntryIfOption{#1}}%
+ \def\DefineTOCEntryLengthOption{\@DefineTOCEntryLengthOption{#1}}%
+ \def\DefineTOCEntryNumberOption{\@DefineTOCEntryNumberOption{#1}}%
+ \def\DefineTOCEntryOption{\@DefineTOCEntryOption{#1}}%
+ \def\AddToDeclareTOCEntryStylePreCheckNeeds{%
+ \@AddToDeclareTOCEntryStylePreCheckNeeds{#1}}%
+ \def\PreToDeclareTOCEntryStylePreCheckNeeds{%
+ \@PreToDeclareTOCEntryStylePreCheckNeeds{#1}}%
+ \def\TOCEntryStyleNeedsCommandByOption{%
+ \@TOCEntryStyleNeedsCommandByOption{#1}}%
+ \@nameuse{scr@dte@#1@init}{#2}%
+ \let\TOCEntryStyleNeedsCommandByOption\relax
+ \let\PreToDeclareTOCEntryStylePreCheckNeeds\relax
+ \let\AddToDeclareTOCEntryStylePreCheckNeeds\relax
+ \let\DefineTOCEntryOption\relax
+ \let\DefineTOCEntryNumberOption\relax
+ \let\DefineTOCEntryLengthOption\relax
+ \let\DefineTOCEntryIfOption\relax
+ \let\DefineTOCEntryCommandOption\relax
+ \let\DefineTOCEntryBooleanOption\relax
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \ExecuteTOCEntryStyleInitCode
+%
+% \begin{macro}{\DeclareTOCStyleEntry}
+% \changes{v3.20}{2015/11/13}{neu}
+% Diese Anweisung definiert einen Verzeichniseintragsbefehl. Dabei wird auch
+% geprüft, ob all benötigten Befehle definiert sind. Falls das nicht der Fall
+% ist, wird der Verzeichniseintragsbefehl nicht definiert, sondern ein Fehler
+% gemeldet. Für die Definition werden folgende Argumente verwendet.
+% \begin{description}
+% \item[\oarg{Optionen}:] Komma separierte Liste von Optionen für die
+% Definition des Eintrags.
+% \item[\marg{Stil}:] Der Stil \meta{string}, in dem der Verzeichniseintrag
+% sein soll.
+% \item[\marg{Gliederungsebene}:] Der Name \meta{string} der Gliederungsebene
+% für die ein Verzeichniseintrag definiert werden soll.
+% \end{description}
+% Es wird außerdem eine Anweisung \cs{scr@dte@def@l@\meta{Stil}} benötigt,
+% über die dann die eigentliche Definition der Eintragsanweisung
+% erfolgt. Diese hat genau ein Argument: \meta{Gliederungsebene}.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\DeclareTOCStyleEntry}[3][]{%
+ \scr@ifundefinedorrelax{scr@dte@def@l@#2}{%
+%<class> \ClassError{\KOMAClassName
+%<package> \PackageError{tocbasic%
+ }{toc entry style `#2' undefined}{%
+ Somebody told me to define toc entry `#3' with style `#2',\MessageBreak
+ but I do not know style `#2'.\MessageBreak
+ You should first define the style then define the entry.\MessageBreak
+ If you'll continue, I'll ignore the command. This could result
+ in\MessageBreak
+ further error messages.%
+ }%
+ }{%
+ \let\scr@dte@precheck\@gobble
+ \def\scr@dte@current{#3}%
+ \@ExecuteTOCEntryStyleInitCode{#2}{#3}%
+ \IfArgIsEmpty{#1}{}{%
+ \FamilyBoolKey[.dte]{KOMAarg}{expandtopt}{scr@dte@expandtopt}%
+ \scr@dte@expandtoptfalse
+ \FamilyExecuteOptions[.dte]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.dte]{KOMAarg}{expandtopt}%
+ }%
+ \@RelaxTOCEntryOptions
+ \let\scr@dte@doopts\relax
+ \let\scr@dte@current\relax
+ \scr@ifundefinedorrelax{#3tocdepth}{%
+ \expandafter\let\csname #3tocdepth\expandafter\endcsname
+ \csname #3numdepth\endcsname
+ }{}%
+ \scr@dte@precheck{#3}%
+ \let\scr@dte@precheck\relax
+ \begingroup
+ \aftergroup\@tempswatrue
+ \def\do##1##2##3##4{%
+ \scr@ifundefinedorrelax{##1#3##2}{%
+%<class> \ClassError{\KOMAClassName
+%<package> \PackageError{tocbasic%
+ }{toc style `#2' needs ##4}{%
+ Usually the ##4 is defined using option `##3'.\MessageBreak
+ In some cases it may be set defining command
+ `\expandafter\string\csname ##1#3##2\endcsname'.\MessageBreak
+ If you'll continue, I'll ignore the command. This could result
+ in\MessageBreak
+ further error messages.%
+ }%
+ \aftergroup\@tempswafalse
+ }{}%
+ }%
+ \do{}{tocdepth}{level}{toc style level}%
+ \@nameuse{scr@dte@#2@needs}%
+ \endgroup
+ \if@tempswa
+ \@nameuse{scr@dte@def@l@#2}{#3}%
+ \expandafter\edef\csname scr@dte@#3@style\endcsname{#2}%
+% \end{macrocode}
+% \changes{v3.21}{2016/06/09}{\cs{toclevel@\emph{ebene}} wird für
+% \textsf{hyperref} neu gesetzt}^^A
+% Da verschiedene Pakete davon ausgehen, dass die Ebene
+% \textsf{hyperref}-kompatibel gespeichert ist, setzen wir die hier
+% zusätzlich. Das \textsf{hyperref} die Einstellungen ggf. überschreibt,
+% machen wir das in der Dokumentpräambel auch mehrfach.
+% \begin{macrocode}
+ \expandafter\let\csname toclevel@#3\expandafter\endcsname
+ \csname #3tocdepth\endcsname
+ \if@atdocument\else
+ \scr@ifundefinedorrelax{AfterPackage}{%
+ \AtBeginDocument
+ }{%
+ \AfterPackage*{hyperref}%
+ }%
+ {%
+ \expandafter\let\csname toclevel@#3\expandafter\endcsname
+ \csname #3tocdepth\endcsname
+ }%
+ \fi
+ \fi
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \DeclareTOCStyleEntry
+%
+% \begin{macro}{\DeclareTOCStyleEntries}
+% \changes{v3.26}{2018/08/27}{new}^^A
+% Use \cs{DeclareTOCStyleEntry} to define a list of entries, all with the same
+% options and style.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\DeclareTOCStyleEntries}[3][]{%
+ \edef\reserved@a{#3}%
+ \@for \reserved@a:=\reserved@a \do {%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \IfArgIsEmpty{#1}{%
+ \edef\reserved@a{%
+ \unexpanded{\DeclareTOCStyleEntry{#2}}{\reserved@a}}%
+ }{%
+ \edef\reserved@a{%
+ \unexpanded{\DeclareTOCStyleEntry[{#1}]{#2}}{\reserved@a}}%
+ }%
+ \reserved@a
+ \fi
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \DeclareTOCStyleEntries
+%
+% \begin{macro}{\DeclareTOCEntryStyle}
+% \changes{v3.20}{2015/11/17}{neu}
+% \begin{macro}{\@DeclareTOCEntryStyle}
+% \changes{v3.20}{2015/11/17}{neu (intern)}
+% Über diese Anweisung wir ein neuer Stil für TOC-Einträge definiert. Ein Stil
+% besteht aus:
+% \begin{description}
+% \item[\marg{Stil}:] Der Stil \meta{string}, der definiert werden soll.
+% \item[\oarg{Initialisierungscode}:] Dieser Code wird bei der Definition
+% eines Verzeichnisbefehls ausgeführt und enthält beispielsweise
+% Optionendeklarationen. Es ist zu beachten, dass dieser Code ggf. auch
+% mehrfach ausgeführt werden kann!
+% \item[\marg{Code}:] Der Code, der ausgeführt wird, wenn ein
+% Verzeichniseintrag ausgegeben werden soll.
+% \end{description}
+% Unabhängig davon, ob eine \meta{Optionendeklaration} angegeben ist oder
+% nicht, wird immer eine Option \texttt{level} definiert, über die die
+% Verzeichnisebene einen nummerischen Wert erhält.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\DeclareTOCEntryStyle}[1]{%
+ \kernel@ifnextchar [%]
+ {\@DeclareTOCEntryStyle{#1}}%
+ {\@DeclareTOCEntryStyle{#1}[]}%
+}
+\newcommand{\@DeclareTOCEntryStyle}{}
+\long\def\@DeclareTOCEntryStyle#1[#2]#3{%
+ \@namedef{scr@dte@def@l@#1}##1{%
+ \@namedef{l@##1}####1####2{%
+ \TOC@EntryStartHook{##1}%
+ #3%
+ \TOC@EntryEndHook{##1}%
+ }%
+ }%
+ \TOCEntryStyleInitCode{#1}{%
+ \DefineTOCEntryNumberOption{level}{}{tocdepth}{toc entry level}%
+ #2%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@DeclareTOCEntryStyle
+% \end{macro}^^A \DeclareTOCEntryStyle
+%
+% \begin{macro}{\TOC@EntryStartHook}
+% \changes{v3.20}{2016/01/12}{neu (intern)}
+% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
+% ist, kann vor dem jeweiligen Eintrag über einen Haken eine Reihe
+% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
+% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
+% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
+% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
+% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
+% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
+% Anweisung, um diesen zu ändern oder zu erweitern.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\TOC@EntryStartHook}[1]{}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \TOC@EntryStartHook
+%
+% \begin{macro}{\TOC@EntryEndHook}
+% \changes{v3.20}{2016/01/12}{neu (intern)}
+% Bei jedem Eintrag, der über einen Eintragsstil von \KOMAScript{} definiert
+% ist, kann nach dem jeweiligen Eintrag über einen Haken eine Reihe
+% von Anweisungen ausgeführt werden. Innerhalb dieser Anweisungen ist
+% \texttt{\#1} der Name der Gliederungsebene. In der Regel dürfen diese
+% Anweisungen keinerlei Ausgaben tätigen und weder \cs{lastpenalty} noch
+% \cs{lastskip} verändern. Der Anwender ist dafür selbst verantwortlich! Weil
+% diese Einschränkung jedoch etwas kritisch ist und der Aufruf ohnehin ein
+% \cs{makeatletter} benötigt, wird nur der Haken definiert aber keine
+% Anweisung, um diesen zu ändern oder zu erweitern.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\TOC@EntryEndHook}[1]{}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \TOC@EntryEndHook
+%
+% \begin{macro}{\CloneTOCEntryStyle}
+% \changes{v3.20}{2015/11/25}{neu}
+% Diese Anweisung dupliziert einen Stil samt seiner Optionen und
+% Befehle. Anschließend kann man ihn beispielsweise verändern. Das erste
+% Argument ist der Name des ursprünglichen Stils, das zweite der neue Name.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\CloneTOCEntryStyle}[2]{%
+% \end{macrocode}
+% Als erstes wird die Anweisung kopiert, mit der die \cs{l@\dots}-Anweisungen
+% definiert werden.
+% \begin{macrocode}
+ \expandafter\let\csname scr@dte@def@l@#2\expandafter\endcsname
+ \csname scr@dte@def@l@#1\endcsname
+% \end{macrocode}
+% Der Init-Code wird kopiert.
+% \begin{macrocode}
+ \expandafter\let\csname scr@dte@#2@init\expandafter\endcsname
+ \csname scr@dte@#1@init\endcsname
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Vorgefertigte Verzeichniseintragsstile}
+%
+% Hier wird quasi an Beispielen gezeigt, wie man Verzeichniseintragsstile
+% definieren kann. Einige dieser Stile sind sehr grundlegend. Andere sind
+% stellen Erweiterungen der grundlegenden Stile dar. Die Stile können über
+% mehrere \texttt{docstrip}-Durchgänge einzeln in den Quelltext gelangen.
+%
+% \iffalse
+%<*style>
+% \fi
+%
+% \begin{macro}{\scr@dte@def@l@gobble}
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{gobble}}^^A
+% Der aller einfachste Verzeichniseintragsstil ist \texttt{gobble}. Er nimmt
+% die beiden Argumente für den Verzeichniseintrag und die Seitenzahl und
+% vergisst sie unabhängig von der Ebene des Eintrags einfach. Daher benötigt
+% dieser Stil auch keinerlei Optionen oder Initialisierung.
+% \begin{macrocode}
+%<*gobble>
+%%% (run: style,gobble)
+\DeclareTOCEntryStyle{gobble}{}%
+%</gobble>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@gobble
+%
+% \begin{macro}{\scr@dte@def@l@dottedtocline}
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{dottedtocline}}^^A
+% Der einfachste echte Verzeichniseintragsstil ist
+% \texttt{dottedtocline}. Dieser verwendet einfach nur die
+% \LaTeX-Kern-Anweisung \cs{dottedtocline}. Für \KOMAScript{} selbst sollte
+% man dieses Stil nicht verwenden. Man kann ihn aber beispielsweise mit den
+% Standardklassen verwenden, wenn man kompatibel bleiben will. Dieser benötigt
+% jedoch bereits Angaben bezüglich der Nummernbreite und des
+% Eintragseinzugs. Der ohnehin immer definierte Level wird ebenfalls
+% ausgewertet.
+% \begin{macro}{\scr@dte@def@l@undottedtocline}
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{undottedtocline}}^^A
+% Im Unterschied dazu entspricht der Verzeichniseintragsstil
+% \texttt{undottedtocline} dem der \texttt{chapter}-Ebene der
+% Standardklassen. Im Unterschied zu diesen wird jedoch ein Eintragseinzug
+% unterstützt.
+% \begin{macro}{\scr@dte@def@l@largetocline}
+% \changes{v3.20}{2015/11/20}{neuer Verzeichniseintragsstil
+% \texttt{largetocline}}^^A
+% Im Unterschied dazu entspricht der Verzeichniseintragsstil
+% \texttt{largetocline} dem der \texttt{part}-Ebene der Standardklassen. Im
+% Unterschied zu diesen wird jedoch ein Eintragseinzug unterstützt. Eine
+% Nummernbreite gibt es hingegen nicht. Stattdessen werden die Einträge nicht
+% hängend gesetzt.
+% \begin{macro}{\scr@dte@def@l@tocline}
+% \changes{v3.20}{2015/11/22}{neuer Verzeichniseintragsstil
+% \texttt{tocline}}^^A
+% Das hingegen wird der hochflexible Stil für Verzeichniseinträge, die aus
+% einer oder mehreren Zeilen bestehen. Dieser wird später über diverse
+% Hilfsmakros definiert.
+% \begin{macrocode}
+%<*dottedtocline|undottedtocline|largetocline|tocline>
+%<*dottedtocline>
+%%% (run: style,dottedtocline)
+\DeclareTOCEntryStyle{dottedtocline}[{%
+%</dottedtocline>
+%<*undottedtocline>
+%%% (run: style,undottedtocline)
+\DeclareTOCEntryStyle{undottedtocline}[{%
+%</undottedtocline>
+%<*largetocline>
+%%% (run: style, largetocline)
+\DeclareTOCEntryStyle{largetocline}[{%
+%</largetocline>
+%<*tocline>
+%%% (run: style,tocline)
+\DeclareTOCEntryStyle{tocline}[{%
+ \DefineTOCEntryLengthOption{beforeskip}%
+ {scr@tso@}{@beforeskip}{vertical skip before the entry}%
+ \DefineTOCEntryIfOption{breakafternumber}%
+ {scr@tso@}{@breakafternumber}{line break after number flag}%
+ \DefineTOCEntryIfOption{dynnumwidth}%
+ {scr@tso@}{@dynnumwidth}{dynamic number width flag}%
+ \DefineTOCEntryCommandOption{entryformat}%
+ {scr@tso@}{@entryformat}[1]{entry format}%
+ \DefineTOCEntryCommandOption{entrynumberformat}%
+ {scr@tso@}{@numberformat}[1]{entry number format}%
+ \DefineTOCEntryCommandOption{linefill}[\TOCLineLeaderFill]%
+ {scr@tso@}{@linefill}{filling between text and page number}%
+ \DefineTOCEntryLengthOption{numsep}%
+ {scr@tso@}{@numsep}{entry number separation}%
+ \DefineTOCEntryCommandOption{onstarthigherlevel}%
+ {scr@tso@}{@LastTOCLevelWasLower}{start higher level entry hook}%
+ \DefineTOCEntryCommandOption{onstartlowerlevel}%
+ {scr@tso@}{@LastTOCLevelWasHigher}{start lower level entry hook}%
+ \DefineTOCEntryCommandOption{onstartsamelevel}%
+ {scr@tso@}{@LastTOCLevelWasSame}{start same level entry hook}%
+ \DefineTOCEntryCommandOption{pagenumberbox}%
+ {scr@tso@}{@pagenumberbox}[1]{page number box}%
+ \DefineTOCEntryCommandOption{pagenumberformat}%
+ {scr@tso@}{@pagenumberformat}[1]{page number format}%
+% \end{macrocode}
+% \changes{v3.21}{2016/06/06}{neue Option \texttt{raggedentrytext}}^^A
+% Die Option \texttt{raggedentrytext} muss leider etwas umständlich definiert
+% werden, damit sie mit der früheren Definition eines Makros
+% \cs{raggedchapterentry} halbwegs kompatibel ist.
+% \begin{macrocode}
+ \DefineTOCEntryOption{raggedentrytext}[true]{%
+ \FamilySetBool{KOMAarg}{raggedentrytext}{@tempswa}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\let\csname ragged\scr@dte@current entry\endcsname
+ \raggedright
+ \else
+ \expandafter\let\csname ragged\scr@dte@current entry\endcsname
+ \relax
+ \fi
+ \fi
+ }%
+ \DefineTOCEntryIfOption{raggedpagenumber}%
+ {scr@tso@}{@raggedpage}{page number ragged flag}%
+%</tocline>
+ \DefineTOCEntryLengthOption{indent}%
+ {scr@tso@}{@indent}{entry indent}%
+%<*dottedtocline|undottedtocline|tocline>
+ \DefineTOCEntryLengthOption{numwidth}%
+ {scr@tso@}{@numwidth}{entry number width}%
+%</dottedtocline|undottedtocline|tocline>
+% \end{macrocode}
+% Die Ebene, \texttt{level} bzw. \cs{\dots tocdepth}, kann auf zweierlei Arten
+% automatisch bestimmt werden. Zum einen wird für Sub-Ebenen die Elternebene
+% um eins erhöht verwendet, falls die Elternebene bereits definiert ist.
+% \changes{v3.21}{2016/06/09}{\cs{the} eingefügt}^^A
+% \begin{macrocode}
+%<*tocline>
+ \scr@ifundefinedorrelax{#1tocdepth}{%
+ \ifstrstart{#1}{sub}{%
+ \scr@ifundefinedorrelax{\scr@dte@nosub{#1}tocdepth}{}{%
+ \expandafter\edef\csname #1tocdepth\endcsname{%
+ \the\numexpr \noexpand\@nameuse{\scr@dte@nosub{#1}tocdepth}+\@ne\relax
+ }%
+ }%
+ }{}%
+ }{}%
+%</tocline>
+% \end{macrocode}
+% War der Weg über Elternebenen nicht erfolgreich oder wurde er nicht
+% verwendet, so werden Standardwerte angenommen, wie sie bei den
+% Standardklassen und bei \KOMAScript{} zutreffen.
+% \begin{macrocode}
+ \@ifundefined{#1tocdepth}{%
+ \ifstr{#1}{part}{\@namedef{#1tocdepth}{-1}}{%
+ \ifstr{#1}{chapter}{\@namedef{#1tocdepth}{0}}{%
+ \ifstr{#1}{section}{\@namedef{#1tocdepth}{1}}{%
+ \ifstr{#1}{subsection}{\@namedef{#1tocdepth}{2}}{%
+ \ifstr{#1}{subsubsection}{\@namedef{#1tocdepth}{3}}{%
+ \ifstr{#1}{paragraph}{\@namedef{#1tocdepth}{4}}{%
+ \ifstr{#1}{subparagraph}{\@namedef{#1tocdepth}{5}}{%
+ \ifstr{#1}{figure}{\@namedef{#1tocdepth}{1}}{%
+ \ifstr{#1}{table}{\@namedef{#1tocdepth}{1}}{%
+% \end{macrocode}
+% Für unbekannte Anweisungen wird stattdessen eine eventuell vorhandene
+% Gliederungsebene auch als Verzeichnisebene übernommen:
+% \begin{macrocode}
+ \expandafter\let\csname #1tocdepth\expandafter\endcsname
+ \csname #1numdepth\endcsname
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+% Der Einzug kann wie der Level aus der Elternebene gebildet werden
+% \begin{macrocode}
+%<*tocline>
+ \scr@ifundefinedorrelax{scr@tso@#1@indent}{%
+ \@ifundefined{scr@#1@tocindent}{%
+ \ifstrstart{#1}{sub}{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@indent}{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{}{%
+ \expandafter\edef\csname scr@tso@#1@indent\endcsname{%
+ \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}%
+ \relax
+ }%
+ }%
+ }{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{%
+ \expandafter\edef\csname scr@tso@#1@indent\endcsname{%
+ \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}%
+ \relax
+ }%
+ }{%
+ \expandafter\edef\csname scr@tso@#1@indent\endcsname{%
+ \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@indent}%
+ +\noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}%
+ \relax
+ }%
+ }%
+ }%
+ }{}%
+ }{%
+% \end{macrocode}
+% Kompatibilität mit älteren \KOMAScript-Klassen.
+% \begin{macrocode}
+ \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}%
+ }%
+ }{}%
+%</tocline>
+% \end{macrocode}
+% War das nicht erfolgreich oder wird es nicht genutzt, so werden
+% Standardwerte verwendet, die sowohl für die Standardklasse als auch die
+% \KOMAScript-Klassen zutreffend sind.
+% \begin{macrocode}
+ \@ifundefined{scr@tso@#1@indent}{%
+%<*dottedtocline|undottedtocline|largetocline>
+ \@ifundefined{scr@#1@tocindent}{%
+%</dottedtocline|undottedtocline|largetocline>
+ \ifstr{#1}{figure}{\@namedef{scr@tso@#1@indent}{1.5em}}{%
+ \ifstr{#1}{table}{\@namedef{scr@tso@#1@indent}{1.5em}}{%
+ \ifstr{#1}{part}{\@namedef{scr@tso@#1@indent}{0em}}{%
+ \ifstr{#1}{chapter}{\@namedef{scr@tso@#1@indent}{0em}}{%
+% \end{macrocode}
+% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
+% nicht. Dazu sollte die Kapitelebene bereits definiert sein!
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{l@chapter}{%
+ \ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{0pt}}{%
+ \ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{1.5em}}{%
+ \ifstr{#1}{subsubsection}{%
+ \@namedef{scr@tso@#1@indent}{3.8em}%
+ }{%
+ \ifstr{#1}{paragraph}{%
+ \@namedef{scr@tso@#1@indent}{7em}%
+ }{%
+ \ifstr{#1}{subparagraph}{%
+ \@namedef{scr@tso@#1@indent}{10em}%
+ }{%
+% \end{macrocode}
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% \begin{macrocode}
+ }%
+ }%
+ }%
+ }%
+ }%
+ }{%
+ \ifstr{#1}{section}{\@namedef{scr@tso@#1@indent}{1.5em}}{%
+ \ifstr{#1}{subsection}{\@namedef{scr@tso@#1@indent}{3.8em}}{%
+ \ifstr{#1}{subsubsection}{%
+ \@namedef{scr@tso@#1@indent}{7.0em}%
+ }{%
+ \ifstr{#1}{paragraph}{%
+ \@namedef{scr@tso@#1@indent}{10em}%
+ }{%
+ \ifstr{#1}{subparagraph}{%
+ \@namedef{scr@tso@#1@indent}{12em}%
+ }{%
+% \end{macrocode}
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% \begin{macrocode}
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+%<*dottedtocline|undottedtocline|largetocline>
+ }{%
+% \end{macrocode}
+% Kompatibilität mit älteren \KOMAScript-Klassen.
+% \begin{macrocode}
+ \@namedef{scr@tso@#1@indent}{\@nameuse{scr@#1@tocindent}}%
+ }%
+%</dottedtocline|undottedtocline|largetocline>
+ }{}%
+% \end{macrocode}
+% Für die Nummernbreite gibt es ebenfalls beide Wege.
+% \begin{macrocode}
+%<*dottedtocline|undottedtocline|tocline>
+%<*tocline>
+ \scr@ifundefinedorrelax{scr@tso@#1@numwidth}{%
+ \scr@ifundefinedorrelax{scr@#1@tocnumwidth}{%
+ \ifstrstart{#1}{sub}{%
+ \scr@ifundefinedorrelax{scr@tso@\scr@dte@nosub{#1}@numwidth}{}{%
+ \expandafter\edef\csname scr@tso@#1@numwidth\endcsname{%
+ \glueexpr \noexpand\@nameuse{scr@tso@\scr@dte@nosub{#1}@numwidth}%
+ +.9em%
+ \relax
+ }%
+ }%
+ }{}%
+ }{%
+ \@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}%
+ }%
+ }{}%
+%</tocline>
+ \@ifundefined{scr@tso@#1@numwidth}{%
+%<*dottedtocline|undottedtocline>
+ \@ifundefined{scr@#1@tocnumwidth}{%
+%</dottedtocline|undottedtocline>
+ \ifstr{#1}{figure}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{%
+ \ifstr{#1}{table}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{%
+ \ifstr{#1}{chapter}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{%
+% \end{macrocode}
+% Ab hier hängt es nun davon ab, ob es eine Kapitel-Ebene gibt oder
+% nicht. Dazu sollte die Kapitelebene bereits definiert sein!
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{chapter}{%
+ \ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{1.5em}}{%
+ \ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{%
+ \ifstr{#1}{subsubsection}{%
+ \@namedef{scr@tso@#1@numwidth}{3.2em}%
+ }{%
+ \ifstr{#1}{paragraph}{%
+ \@namedef{scr@tso@#1@numwidth}{4.1em}%
+ }{%
+ \ifstr{#1}{subparagraph}{%
+ \@namedef{scr@tso@#1@numwidth}{5m}%
+ }{%
+% \end{macrocode}
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% \begin{macrocode}
+ }%
+ }%
+ }%
+ }%
+ }%
+ }{%
+ \ifstr{#1}{section}{\@namedef{scr@tso@#1@numwidth}{2.3em}}{%
+ \ifstr{#1}{subsection}{\@namedef{scr@tso@#1@numwidth}{3.2em}}{%
+ \ifstr{#1}{subsubsection}{%
+ \@namedef{scr@tso@#1@numwidth}{3.1em}%
+ }{%
+ \ifstr{#1}{paragraph}{%
+ \@namedef{scr@tso@#1@numwidth}{5em}%
+ }{%
+ \ifstr{#1}{subparagraph}{%
+ \@namedef{scr@tso@#1@numwidth}{6em}%
+ }{%
+% \end{macrocode}
+% Für unbekannte Ebenen muss der Wert selbst per Option gesetzt werden!
+% \begin{macrocode}
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+%<*dottedtocline|undottedtocline>
+ }{%
+% \end{macrocode}
+% Kompatibilität mit älteren \KOMAScript-Klassen.
+% \begin{macrocode}
+ \@namedef{scr@tso@#1@numwidth}{\@nameuse{scr@#1@tocnumwidth}}%
+ }%
+%</dottedtocline|undottedtocline>
+ }{}%
+%</dottedtocline|undottedtocline|tocline>
+%<*tocline>
+% \end{macrocode}
+% Die Standardeinstellungen für die drei Penalty-Hooks sind einfach die
+% Standardanweisungen dafür. Dabei ist das so definiert, dass Änderungen an
+% den Standardanweisungen direkte Auswirkungen haben.
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@LastTOCLevelWasLower\endcsname{\LastTOCLevelWasLower}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@LastTOCLevelWasSame\endcsname{\LastTOCLevelWasSame}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@LastTOCLevelWasHigher\endcsname{\LastTOCLevelWasHigher}%
+% \end{macrocode}
+% Die Voreinstellung für den vertikalen Abstand ist Null mit ein klein wenig
+% Leim, um den Seitenumbruch zu optimieren. Das genügt bei einer normalen
+% A4-Seite aber gerade mal für den Ausgleich einer Zeile. Bei den höheren
+% Ebenen werden stattdessen die Voreinstellungen der Standardklassen
+% verwendet.
+% \begin{macrocode}
+ \@ifundefined{scr@tso@#1@beforeskip}{%
+ \ifstr{#1}{part}{%
+ \@namedef{scr@tso@#1@beforeskip}{\glueexpr 2.25em \@plus\p@\relax}%
+ }{%
+ \ifstr{#1}{chapter}{%
+ \@namedef{scr@tso@#1@beforeskip}{\glueexpr 1.0em \@plus\p@\relax}%
+ }{%
+ \ifstr{#1}{section}{%
+ \scr@ifundefinedorrelax{l@chapter}{%
+ \@namedef{scr@tso@#1@beforeskip}{\glueexpr 1.0em \@plus\p@\relax}%
+ }{}%
+ }{}%
+ }%
+ }%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@tso@#1@beforeskip\endcsname{\glueexpr \z@ plus .2\p@\relax}%
+ }{}%
+% \end{macrocode}
+% Es ist gut zu wissen, wie breit die breiteste Nummer ist, damit wir
+% ggf. prüfen können, ob entsprechende Bedingungen eingehalten werden.
+% \begin{macrocode}
+ \@ifundefined{scr@dte@#1@maxnumwidth}{%
+ \expandafter\newlength\csname scr@dte@#1@maxnumwidth\endcsname
+ \setlength{\@nameuse{scr@dte@#1@maxnumwidth}}{\z@}%
+ }{}%
+ \providecommand*{\scr@dte@donumwidth}{}%
+ \g@addto@macro{\scr@dte@donumwidth}{\do{#1}}%
+% \end{macrocode}
+% Eine dieser Bedingungen ist, dass ein Mindestabstand zwischen Nummer und
+% Text eingehalten wird.
+% \begin{macrocode}
+ \expandafter\providecommand\expandafter*%
+ \csname scr@tso@#1@numsep\endcsname{.4em}%
+% \end{macrocode}
+% Jede Ebene kann ihre eigene Formatierungsanweisung für die Nummer haben.
+% Jede Ebene kann auch ihre eigene Formatierungsanweisung für Nummer und Text
+% haben. Für \texttt{part} wird hier die Voreinstellung der Standardklassen
+% verwendet.
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@numberformat\endcsname[1]{##1}%
+ \ifstr{#1}{part}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname[1]{\large\bfseries ##1}%
+ }{%
+ \ifstr{#1}{chapter}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname[1]{\bfseries ##1}%
+ }{%
+ \scr@ifundefinedorrelax{l@chapter}{%
+ \ifstr{#1}{section}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname[1]{\bfseries ##1}%
+ }{}%
+ }{}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname[1]{##1}%
+ }%
+ }%
+% \end{macrocode}
+% Nach der Nummer kann wahlweise ein Zeilenumbruch erfolgen, wobei in diesem
+% Fall der Text wieder auf Höhe der Nummer und nicht erst danach
+% erfolgt. Gesteuert wird das über einen Schalter. In der Voreinstellung
+% machen wird das nicht.
+% \begin{macrocode}
+ \expandafter\providecommand
+ \csname Ifscr@tso@#1@breakafternumber\endcsname[2]{##2}%
+% \end{macrocode}
+% Die Verbindung zwischen Ende des Eintrags und den Seitenzahlen erfolgt
+% normalerweise mit Pünktchen. Das wird auch genau die Voreinstellung für die
+% Option werden. In der Voreinstellung wird mit \cs{hfill} gefüllt.
+% \begin{macrocode}
+ \@ifundefined{scr@tso@#1@linefill}{%
+ \ifstr{#1}{part}{%
+ \@namedef{scr@tso@#1@linefill}{\hfill}%
+ }{%
+ \ifstr{#1}{chapter}{%
+ \@namedef{scr@tso@#1@linefill}{\hfill}%
+ }{%
+ \scr@ifundefinedorrelax{l@chapter}{%
+ \ifstr{#1}{section}{%
+ \@namedef{scr@tso@#1@linefill}{\hfill}%
+ }{}%
+ }{}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}%
+ }%
+ }%
+ }{}%
+% \end{macrocode}
+% Keine Verbindung bedeutet nicht automatisch, dass die Seitenzahlen nach vorn
+% rutschen. Das passiert erst, wenn die sie flatternd gesetzt werden:
+% \begin{macrocode}
+ \expandafter\providecommand\csname Ifscr@tso@#1@raggedpage\endcsname[2]{##2}%
+% \end{macrocode}
+% Auch die Seitenzahl kann speziell formatiert werden, wenn das gewünscht ist.
+% \begin{macrocode}
+ \ifstr{#1}{part}{%
+% \end{macrocode}
+% Für \texttt{part} normalerweise groß und fett:
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{\large\bfseries ##1}%
+ }{%
+% \end{macrocode}
+% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{chapter}-Einräge in der
+% Voreinstellung fett}^^A
+% Für \texttt{chapter} nur fett:
+% \begin{macrocode}
+ \ifstr{#1}{chapter}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{\bfseries ##1}%
+ }{%
+ \scr@ifundefinedorrelax{l@chapter}{%
+ \ifstr{#1}{section}{%
+% \end{macrocode}
+% \changes{v3.25}{2017/11/23}{Seitenzahlen für \texttt{section}-Einräge in der
+% Voreinstellung unter Umständen fett}^^A
+% Für \texttt{section} ggf. auch fett:
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{\bfseries ##1}%
+ }{}%
+ }{}%
+% \end{macrocode}
+% Sonst in normaler Schrift und Farbe:
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{%
+ \normalfont\normalcolor ##1}%
+ }%
+ }%
+% \end{macrocode}
+% Wobei die Seitenzahl normaleweise in eine Box fester Breite gesetzt wird.
+% \begin{macrocode}
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberbox\endcsname[1]{%
+ \hb@xt@\@pnumwidth{\hfil ##1}}%
+ \expandafter\providecommand\csname Ifscr@tso@#1@dynnumwidth\endcsname[2]{##2}%
+%</tocline>
+}]{%
+% \end{macrocode}
+% Damit ist die Initialisierung abgeschlossen und wir kommen zur
+% Eintragsanweisung selbst:
+% \begin{macrocode}
+%<*dottedtocline>
+ \@dottedtocline{\@nameuse{#1tocdepth}}{\@nameuse{scr@tso@#1@indent}}%
+ {\@nameuse{scr@tso@#1@numwidth}}{##1}{##2}%
+%</dottedtocline>
+%<*undottedtocline|largetocline>
+ \ifnum \c@tocdepth >\numexpr \@nameuse{#1tocdepth}-\@ne\relax
+% \end{macrocode}
+% An dieser Stelle gibt es einen kleinen Unterschied zwischen der
+% \texttt{chapter}-Ebene und der \texttt{section}-Ebene von
+% \textsf{article}. Diesen machen wir hier an der nummerischen Ebene fest.
+% \begin{macrocode}
+ \ifnum \@nameuse{#1tocdepth}<\@ne
+ \scr@ifundefinedorrelax{chapter}{%
+ \addpenalty\@secpenalty
+%<undottedtocline> \addvspace{1.0em \@plus\p@}%
+%<largetocline> \addvspace{2.25em \@plus\p@}%
+ }{%
+ \addpenalty{-\@highpenalty}%
+%<undottedtocline> \vskip 1.0em \@plus\p@
+%<largetocline> \addvspace{2.25em \@plus\p@}%
+ }%
+ \else
+ \addpenalty\@secpenalty
+%<undottedtocline> \addvspace{1.0em \@plus\p@}%
+%<largetocline> \addvspace{2.25em \@plus\p@}%
+ \fi
+%<undottedtocline> \setlength\@tempdima{\@nameuse{scr@tso@#1@numwidth}}%
+%<largetocline> \setlength\@tempdima{3em}%
+ \begingroup
+% \end{macrocode}
+% Es sei darauf hingewiesen, dass hier eigentlich zweimal \cs{@tocrmarg}
+% statt \cs{@pnumwidth} verwendet werden müsste. Allerdings habe ich
+% beschlossen, diesen schon vor Jahren gemeldeten Fehler aus
+% Kompatibilitätsgründen vorerst von den Standardklassen zu übernehmen.
+% \begin{macrocode}
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+% \end{macrocode}
+% Die Standardklassen fügen an dieser Stelle noch eine Gruppe ein, die dann
+% leider vor dem abschließenden \cs{par} bereits beendet wird. Das führt
+% natürlich zu falschen Zeilenabständen bei mehrzeiligen Einträgen. Ich habe
+% lange überlegt, aber schließlich beschlossen, diesen Fehler nicht aus den
+% Standardklassen zu übernehmen. Das war mir dann doch zu krass! Schlimmer
+% noch, würde man den Fehler übernehmen, müsste man das Setzen von
+% \cs{leftskip} abändern, weil natürlich auch das erst am Absatzende
+% wirklich zur Geltung kommt.
+% \begin{macrocode}
+ \leavevmode
+%<largetocline> \large
+ \bfseries
+% \end{macrocode}
+% Es sei darauf hingewiesen, dass hier eigentlich auch bei
+% \texttt{largetocline} \cs{@tempdima} mit berücksichtigt werden
+% müsste. Das geht nur deshalb nicht, weil bei den Standardklassen \cs{part}
+% kein \cs{numberline} verwendet. Deshalb werden mehrzeilige Einträge auch
+% nicht korrekt eingerückt. Auch das habe ich aus Kompatibilitätsgründen
+% beibehalten.
+% \begin{macrocode}
+%<undottedtocline> \advance\leftskip\@tempdima
+ \advance\leftskip\@nameuse{scr@tso@#1@indent}%
+%<*undottedtocline>
+ \hskip -\dimexpr \leftskip-\@nameuse{scr@tso@#1@indent}\relax
+%</undottedtocline>
+ ##1%
+%<undottedtocline> \nobreak
+% \end{macrocode}
+% Hier schließlich ist \cs{@pnumwidth} aufgrund des vorherigen
+% \cs{large} nicht mehr derselbe absolute Wert wie bei Einträgen ohne
+% \cs{large}. Deshalb müsste eigentlich noch vor dem \cs{large} der Wert
+% beispielsweise in eine Länge wie \cs{@tempdimb} übertragen und dann hier
+% verwendet werden. Auch das habe ich aus Kompatibilitätsgründen übernommen.
+% \begin{macrocode}
+ \hfil \nobreak\hb@xt@\@pnumwidth{\hss ##2}%
+ \par
+%<undottedtocline> \penalty\@highpenalty
+%<*largetocline>
+ \nobreak
+ \ifnum 0=
+ \scr@ifundefinedorrelax{chapter}{\if@compatibility 1\else 0\fi}{1}\relax
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+%</largetocline>
+ \endgroup
+ \fi
+%</undottedtocline|largetocline>
+%<*tocline>
+ \scr@dte@tocline{#1}{##1}{##2}%
+%</tocline>
+}
+%</dottedtocline|undottedtocline|largetocline|tocline>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@tocline
+% \end{macro}^^A \scr@dte@def@l@largetocline
+% \end{macro}^^A \scr@dte@def@l@undottedtocline
+% \end{macro}^^A \scr@dte@def@l@dottedtocline
+%
+% Für den Stil \texttt{tocline} werden diverse weitere Einstellungen und
+% Befehle benötigt:
+% \begin{macrocode}
+%<*tocline>
+\AtBeginDocument{%
+ \BeforeClosingMainAux{%
+ \begingroup
+ \def\do#1{%
+ \relax
+ \scr@ifundefinedorrelax{scr@dte@#1@maxnumwidth}{}{%
+ \ifdim \@nameuse{scr@dte@#1@maxnumwidth}>\z@
+ \if@filesw
+ \protected@write\@mainaux{}{%
+ \string\global\string\@namedef{scr@dte@#1@lastmaxnumwidth}%
+ {\the\@nameuse{scr@dte@#1@maxnumwidth}}%
+ }%
+ \fi
+ \@nameuse{scr@dte@#1@maxnumwidth}\z@
+ \fi
+ }%
+ }%
+ \@nameuse{scr@dte@donumwidth}%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@dte@nosub}
+% \changes{v3.20}{2015/11/23}{neu (intern)}
+% \begin{macro}{\@scr@dte@nosub}
+% \changes{v3.20}{2015/11/23}{neu (intern)}
+% Über diese Hilfsmacros werden die Buchstaben \texttt{sub} am Anfang des
+% Arguments entfernt. Stehen diese gar nicht am Anfang, so wird ein Fehler
+% wegen falscher Verwendung von \cs{@scr@de@nosub} gemeldet.
+% \begin{macrocode}
+\newcommand*{\scr@dte@nosub}[1]{\@scr@dte@nosub #1\relax}
+\newcommand*{\@scr@dte@nosub}{}
+\def\@scr@dte@nosub sub#1\relax{#1}
+% \end{macrocode}
+% \end{macro}^^A \@scr@dte@nosub
+% \end{macro}^^A \scr@dte@nosub
+% \begin{macro}{\scr@dte@tocline}
+% \changes{v3.20}{2015/11/22}{neu (intern)}
+% In gewisser Weise entspricht diese Anweisung der \LaTeX-Kern-Anweisung
+% \cs{dottedtocline}. Allerdings werden hier vielfältige
+% Eingriffsmöglichkeiten untersützt, die jeweils durch Optionen gesteuert
+% werden können. Daher hat der Befehl auch nur drei Argumente:
+% \begin{description}
+% \item[\marg{Ebene}:] Der Name \meta{string} der Verzeichnisebene.
+% \item[\marg{Eintrag}:] Der Verzeichniseintrag \meta{string}.
+% \item[\marg{Seite}:] Die Seitenzahl \meta{string} des Verzeichniseintrags.
+% \end{description}
+% \begin{Length}{\scr@dte@tocline@numberwidth}
+% \changes{v3.20}{2016/01/15}{neu (intern)}
+% Für alle, die es interessiert, gibt diese Länge die tatsächliche Breite der
+% formatierten Nummer an.
+% \begin{macrocode}
+\newlength\scr@dte@tocline@numberwidth
+\newcommand*{\scr@dte@tocline}[3]{%
+ \ifnum \@nameuse{#1tocdepth}>\c@tocdepth
+ \else
+ \tocbasic@DependOnPenaltyAndTOCLevel{#1}%
+ \addvspace{\@nameuse{scr@tso@#1@beforeskip}}\relax
+ {%
+ \leftskip \@nameuse{scr@tso@#1@indent}\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \@nameuse{Ifscr@tso@#1@raggedpage}{%
+ \addtolength{\parfillskip}{\z@ \@plus 1fil}%
+ }{}%
+ \parindent \@nameuse{scr@tso@#1@indent}\relax
+ \@afterindenttrue
+ \interlinepenalty\@M
+% \end{macrocode}
+% \changes{v3.21}{2016/06/06}{\cs{ragged\dots entry} wird (wieder)
+% ausgewertet}^^A
+% \begin{macrocode}
+ \expandafter\ifx\csname ragged#1entry\endcsname\raggedright
+ \addtolength\rightskip\@flushglue
+ \else
+ \def\reserved@a{\raggedright}%
+ \expandafter\ifx\csname ragged#1entry\endcsname\reserved@a
+ \addtolength\rightskip\@flushglue
+ \else
+ \renewcommand\reserved@a{\raggedright}%
+ \expandafter\ifx\csname ragged#1entry\endcsname\reserved@a
+ \addtolength\rightskip\@flushglue
+ \fi
+ \fi
+ \fi
+ \leavevmode
+ \@tempdima \@nameuse{scr@tso@#1@numwidth}\relax
+ \@nameuse{Ifscr@tso@#1@dynnumwidth}{%
+ \scr@ifundefinedorrelax{scr@dte@#1@lastmaxnumwidth}{}{%
+ \ifdim \@nameuse{scr@dte@#1@lastmaxnumwidth}>\@tempdima
+ \@tempdima\@nameuse{scr@dte@#1@lastmaxnumwidth}\relax
+ \fi
+ }%
+ }{}%
+ \advance\leftskip \@tempdima
+ \null\nobreak\hskip -\leftskip
+ {%
+% \end{macrocode}
+% An dieser Stelle wenden wir einen Trick an, um die Breite einer eventuell
+% vorhandenen Nummer während deren Ausgabe auszumessen. Dazu ist es eine
+% schlichte Notwendigkeit, dass \cs{numberline} die interne Definition
+% verwendet.
+% \begin{macrocode}
+ \usetocbasicnumberline
+ \let\scr@dte@numberline@box\numberline@box
+ \def\numberline@box##1{%
+ \sbox\scr@dte@tocline@numbox{\@nameuse{scr@tso@#1@numberformat}{##1}}%
+% \end{macrocode}
+% Die Zuweisung an die aktuelle Länge der Nummer muss global erfolgen, weil
+% wir hier in einer Gruppe sind.
+% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}^^A
+% \begin{macrocode}
+ \global\scr@dte@tocline@numberwidth
+ \dimexpr\wd\scr@dte@tocline@numbox+\@nameuse{scr@tso@#1@numsep}\relax
+% \end{macrocode}
+% \changes{v3.22}{2016/12/02}{fehlendes zweites \cs{relax} ergänzt}^^A
+% Achtung: Hier braucht es ein zweites \cs{relax}, weil das erste von
+% \cs{dimexpr} aufgezehrt wird.
+% \begin{macrocode}
+ \relax
+ \ifdim \scr@dte@tocline@numberwidth
+ >\@nameuse{scr@dte@#1@maxnumwidth}\relax
+ \global\@nameuse{scr@dte@#1@maxnumwidth}\scr@dte@tocline@numberwidth
+ \fi
+ \@nameuse{Ifscr@tso@#1@dynnumwidth}{}{%
+ \ifdim \scr@dte@tocline@numberwidth
+ >\dimexpr \@nameuse{scr@tso@#1@numwidth}%
+ +\@nameuse{scr@tso@#1@numsep}\relax\relax
+%<class> \ClassWarning{\KOMAClassName
+%<package> \PackageWarning{tocbasic%
+ }{%
+ number width of #1 toc entries should be
+ increased!\MessageBreak
+ Currently used number width =
+ \the\wd\scr@dte@tocline@numbox,\MessageBreak
+ Wanted number separation
+ \space\space\space =
+ \the\dimexpr\@nameuse{scr@tso@#1@numsep}\relax,\MessageBreak
+ Reserved number width \space\space\space\space\space\space =
+ \the\dimexpr\@nameuse{scr@tso@#1@numwidth}\relax%
+ }%
+ \fi
+ }%
+ \scr@dte@numberline@box{\@nameuse{scr@tso@#1@numberformat}{##1}}%
+ \@nameuse{Ifscr@tso@#1@breakafternumber}{%
+ {\parfillskip\@flushglue\par}\nobreak\hskip-\leftskip
+ }{}%
+ }%
+ \@nameuse{scr@tso@#1@entryformat}{%
+ #2%
+ \nobreak
+ {%
+ \normalfont\normalsize\@nameuse{scr@tso@#1@linefill}%
+ \nobreak
+ \@nameuse{scr@tso@#1@pagenumberbox}{%
+ \@nameuse{scr@tso@#1@pagenumberformat}{#3}%
+ }%
+ }%
+ \@par
+ }%
+ }%
+ }%
+ \tocbasic@SetPenaltyByTOCLevel{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{Length}^^A \scr@dte@tocline@numberwidth
+% \begin{macro}{\scr@dte@tocline@numbox}
+% \changes{v3.20}{2015/11/25}{neue Box (intern)}
+% Wird benötigt, um die Breite der Nummer auszumessen und die Nummer später
+% wieder zu verwenden.
+% \begin{macrocode}
+\newsavebox\scr@dte@tocline@numbox
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@tocline@numbox
+% \begin{macro}{\tocbasic@DependOnPenaltyAndTOCLevel}
+% \changes{v3.20}{2015/11/23}{neu}^^A
+% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
+% Befehle für Paketautoren}^^A
+% Führt eine gespeicherte Aktion in Abhängigkeit davon aus, ob der aktuelle
+% Penalty-Wert darauf schließen lässt, dass zuvor ein Eintrag mit einem
+% höheren, demselben oder einem tieferen Wert für die Ebene erfolgte.
+% \begin{macro}{\tocbasic@SetPenaltyByTOCLevel}
+% \changes{v3.20}{2015/11/23}{neu}
+% \changes{v3.20}{2016/03/12}{Anpassung an \textsf{tocbasic}-Syntax für
+% Befehle für Paketautoren}^^A
+% Setze die Strafpunkte für einen Umbruch entsprechend der aktuellen
+% Verzeichnisebene.
+% \begin{macro}{\LastTOCLevelWasHigher}
+% \changes{v3.20}{2015/11/23}{neu}
+% Standardaktion, falls der vorherige Level einen größeren Wert hatte: Umbruch
+% erlauben.
+% \begin{macro}{\LastTOCLevelWasSame}
+% \changes{v3.20}{2015/11/23}{neu}
+% Standardaktion, falls der vorherige Level denselben Wert hatte: Umbruch
+% erlauben.
+% \begin{macro}{\LastTOCLevelWasLower}
+% Standardaktion, falls der vorherige Level einen kleineren Wert hatte:
+% Penalty beibehalten und damit den Umbruch verbieten.
+% \changes{v3.20}{2015/11/23}{neu}
+% \begin{macrocode}
+\newcommand*{\tocbasic@DependOnPenaltyAndTOCLevel}[1]{%
+ \ifnum \lastpenalty<\numexpr 20009-\@nameuse{#1tocdepth}\relax
+ \@nameuse{scr@tso@#1@LastTOCLevelWasHigher}%
+ \else\ifnum \lastpenalty=\numexpr 20009-\@nameuse{#1tocdepth}\relax
+ \@nameuse{scr@tso@#1@LastTOCLevelWasSame}%
+ \else
+ \@nameuse{scr@tso@#1@LastTOCLevelWasLower}%
+ \fi
+ \fi
+}
+\newcommand*{\tocbasic@SetPenaltyByTOCLevel}[1]{%
+ \penalty \numexpr 20009-\@nameuse{#1tocdepth}\relax
+}
+\newcommand*{\LastTOCLevelWasHigher}{\ifvmode\addpenalty{\@lowpenalty}\fi}
+\newcommand*{\LastTOCLevelWasSame}{\ifvmode\addpenalty{\@lowpenalty}\fi}
+\newcommand*{\LastTOCLevelWasLower}{}
+% \end{macrocode}
+% \end{macro}^^A \tocbasic@SetPenaltyByTOCLevel
+% \end{macro}^^A \tocbasic@DependOnPenaltyAndTOCLevel
+% \end{macro}^^A \LastTOCLevelWasLower
+% \end{macro}^^A \LastTOCLevelWasSame
+% \end{macro}^^A \LastTOCLevelWasHigher
+% \begin{macro}{\TOCLineLeaderFill}
+% \changes{v3.20}{2015/11/14}{neu}
+% Füllt den Abstand zwischen Text und Seitenzahl komplett. Hat als einziges
+% optionales Argument das Füllzeichen.
+% \begin{macrocode}
+\newcommand*{\TOCLineLeaderFill}[1][.]{%
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{#1}\mkern \@dotsep
+ mu$}\hfill
+}
+%</tocline>
+% \end{macrocode}
+% \end{macro}^^A \TOCLineLeaderFill
+% \end{macro}^^A \scr@dte@tocline
+%
+% \begin{macro}{\scr@dte@def@l@default}
+% \changes{v3.20}{2015/12/16}{neu im Paket}^^A
+% Bereits im Paket gibt es einen Standardstil. Anderen Paketen ist es nicht
+% gestattet diesen umzudefinieren. Klassen ist das hingegen gestattet, damit
+% sie einen Dokument weiten Standardstil festlegen können.
+% \begin{macrocode}
+%<*default>
+%%% (run: style,dottedtocline)
+\CloneTOCEntryStyle{dottedtocline}{default}
+%</default>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</style>
+%</package>
+% \fi
+%
+% \subsubsection{Von den \KOMAScript-Klassen genutzte Stile}
+%
+% \iffalse
+%<*class>
+%<*style>
+% \fi
+%
+% Einige Stile sollen nur definiert werden, wenn die Definition in die Klasse
+% geschrieben wird:
+%
+% \begin{macro}{\scr@dte@def@l@part}
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{part}}^^A
+% Dieser Verzeichnisstil existiert bei \textsf{scrbook}, \textsf{scrreprt} und
+% \textsf{scrartcl}. Das Format des Eintrags und der Seitenzahl wird dabei
+% über die Elemente \texttt{partentry} und \texttt{partentrypagenumber}
+% realisiert.
+% \begin{macrocode}
+%<*part>
+%%% (run: class,style,part)
+\CloneTOCEntryStyle{tocline}{part}
+\TOCEntryStyleStartInitCode{part}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{\hfill}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname[1]{\usekomafont{partentry}{##1}}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{%
+ \usekomafont{partentry}{\usekomafont{partentrypagenumber}{##1}}}%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@tso@#1@beforeskip\endcsname{2.25em \@plus\p@}%
+}
+%</part>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@part
+%
+% \begin{macro}{\scr@dte@def@l@chapter}
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{chapter}}^^A
+% Dieser Verzeichnisstil existier bei \textsf{scrbook} und \textsf{scrreprt}.
+% \begin{macrocode}
+%<*chapter>
+%%% (run: class,style,chapter)
+\CloneTOCEntryStyle{tocline}{chapter}
+\TOCEntryStyleStartInitCode{chapter}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{%
+ \if@chapterentrywithdots
+ \TOCLineLeaderFill\relax
+ \else
+ \hfill
+ \fi
+ }%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname{\usekomafont{chapterentry}}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{%
+ \usekomafont{chapterentry}{\usekomafont{chapterentrypagenumber}{##1}}}%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@tso@#1@beforeskip\endcsname{1.0em \@plus\p@}%
+}
+%</chapter>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@chapter
+%
+% \begin{macro}{\scr@dte@def@l@section}
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{section}}^^A
+% Bei den Klassen \textsf{scrbook} und \textsf{scrreprt} ist das der Stil für
+% die \emph{kleinen} Verzeichnisebenen. Bei \textsf{scrartcl} ist es dagegen
+% der Stil für die obere Verzeichnisebene und entspricht damit obigem Stil
+% \texttt{chapter}.
+% \begin{macrocode}
+%<*section>
+%%% (run: class,style,section)
+\CloneTOCEntryStyle{tocline}{section}
+%<*book|report>
+\TOCEntryStyleStartInitCode{section}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}%
+}
+%</book|report>
+%<*article>
+\TOCEntryStyleStartInitCode{section}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{%
+ \if@sectionentrywithdots
+ \TOCLineLeaderFill\relax
+ \else
+ \hfill
+ \fi
+ }%
+ % Für die Einträge die Schrift von Element sectionentry verwenden.
+ \expandafter\providecommand%
+ \csname scr@tso@#1@entryformat\endcsname{\usekomafont{sectionentry}}%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@pagenumberformat\endcsname[1]{\usekomafont{sectionentry}{\usekomafont{sectionentrypagenumber}{##1}}}%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@tso@#1@beforeskip\endcsname{1.0em \@plus\p@}%
+}
+%</article>
+%</section>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@section
+%
+% \begin{macro}{\scr@dte@def@l@subsection}
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{subsection}}^^A
+% Dieser Stil existiert nur bei \textsf{scrartcl} und entspricht dann dem Stil
+% \texttt{section} bei \textsf{scrbook} und \textsf{scrreprt}.
+% \begin{macrocode}
+%<*subsection&article>
+%%% (run: class,style,subsection)
+\CloneTOCEntryStyle{tocline}{subsection}
+\TOCEntryStyleStartInitCode{subsection}{%
+ \expandafter\providecommand%
+ \csname scr@tso@#1@linefill\endcsname{\TOCLineLeaderFill\relax}%
+}
+%</subsection&article>
+% \end{macrocode}
+% \end{macro}^^A \scr@dte@def@l@subsection
+%
+% \begin{macro}{\scr@dte@def@l@default}
+% \changes{v3.20}{2015/12/07}{neuer Verzeichnisstil \texttt{default}}^^A
+% Dieser Stil entspricht bei \textsf{scrbook} und \textsf{scrreprt} dem Stil
+% \texttt{section} und bei \textsf{scrartcl} dem Stil \textsf{subsection}.
+% \begin{macrocode}
+%<*default>
+%%% (run: class,style,default)
+%<book|report>\CloneTOCEntryStyle{section}{default}
+%<article>\CloneTOCEntryStyle{subsection}{default}
+%</default>
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</style>
+%</class>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-tocstyle.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-latin-1
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-typearea.dtx b/macros/latex/contrib/koma-script/source/scrkernel-typearea.dtx
new file mode 100644
index 0000000000..d1b0b2d59c
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-typearea.dtx
@@ -0,0 +1,3338 @@
+%\CheckSum{2882}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-typearea.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-typearea.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse meta-comment
+%%% From File: $Id: scrkernel-typearea.dtx 2993 2018-07-16 07:33:22Z kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<options>%%% (run: options)
+%<body>%%% (run: body)
+%<final>%%% (run: final)
+%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-07-16 09:33:22 +0200 (Mon, 16 Jul 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2993 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-typearea.dtx}[%
+ \filedate\space\filerevision\space
+ KOMA-Script
+ }
+\reserved@a
+%</dtx>
+%<*dtx|(package&typearea&identify)>
+%<package>\ProvidesPackage{typearea}[%
+%!KOMAScriptVersion
+ package
+%<*dtx>
+ source
+%</dtx>
+ (type area)]
+%</dtx|(package&typearea&identify)>
+%<*dtx>
+%^^A The ins file:
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \generate{\usepreamble\defaultpreamble
+ \file{typearea.sty}{%
+ \from{scrkernel-version.dtx}{package,typearea}%
+ \from{scrkernel-typearea.dtx}{package,typearea,identify}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrkernel-compatibility.dtx}{package,typearea,init}%
+ \from{scrkernel-typearea.dtx}{package,typearea,init}%
+ \from{scrkernel-compatibility.dtx}{package,typearea,option}%
+ \from{scrkernel-typearea.dtx}{package,typearea,options}%
+ \from{scrkernel-compatibility.dtx}{package,typearea,body}%
+ \from{scrkernel-typearea.dtx}{package,typearea,body}%
+ \from{scrkernel-typearea.dtx}{package,typearea,final}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+%^^A The documentation driver (needed only for checksum calculation):
+\documentclass{scrdoc}
+\usepackage[main=english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-typearea.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{This is \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%^^A The documentation part:
+%
+% \changes{v2.95}{2002/06/20}{first version after splitting
+% \texttt{scrclass.dtx}}^^A
+% \changes{v3.24}{2017/07/23}{reorganization of code into semantic
+% portions}^^A
+% \changes{v3.24}{2017/07/23}{start of English translation}^^A
+%
+% \section{Typing Area Macros}
+%
+% This section contains macros for the typing area. These result not only in
+% the package \Package{typearea} but also provide features for the
+% \KOMAScript{} classes.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+%^^A The source part:
+%
+% \subsection{Loading packages}
+%
+% Package \Package{typearea} needs package \Package{scrkbase}. But this will
+% be loaded by \File{scrkernel-basics.dtx} just after the identify run of this
+% file. It does not need other packages.
+%
+% The \KOMAScript{} classes need package \Package{typearea}. This will be
+% loaded here as an early body action. Nevertheless, at this state the typing
+% area option code for the classes has already been loaded. So before loading
+% the almost identical option code of the package, some macros have to be
+% reset:
+% \begin{macrocode}
+%<*class&body>
+\let\@BCOR =\relax
+\let\@@BCOR =\relax
+\let\@DIV =\relax
+\let\@@DIV =\relax
+\let\@headlines =\relax
+\let\@@headlines =\relax
+\let\x@paper =\relax
+\let\x@@paper =\relax
+\let\scr@pti@nerr@r =\relax
+% \end{macrocode}
+% Now we can load \Package{typearea}:
+% \changes{v2.95}{2002/06/22}{Use \cs{KOMAScriptVersion} while loading
+% \Package{typearea}}^^A
+% We use \cs{KOMAScriptVersion} to verify the identical versions of
+% \KOMAScript{} and the package. See \File{scrkernel-version.dtx} for more
+% information about this verification.
+% \begin{macrocode}
+\RequirePackage{typearea}[\KOMAScriptVersion]
+%</class&body>
+% \end{macrocode}
+%
+% \subsection{Selection of paper size}
+%
+% Before we can define page margins and a typing area, we have to define the
+% paper size. Beside \Package{typearea} also \Package{scrletter} uses some of
+% this code, because it needs the paper size, too.
+%
+% \begin{macro}{\PaperNameToSize}
+% \changes{v3.23}{2017/02/22}{new}^^A
+% This command sets \cs{paperheight} and \cs{paperwidth} depending on
+% the name of a paper size. It currently supports the ISO formats of the
+% series A, B, C and D and the American formats letter, legal and
+% executive. The command is defined using \Macro{providecommand} so a class
+% can define it different before loading \Package{typearea}. The first
+% optional argument is the error class. Error classes will be defined using
+% \Macro{ProvideUnknownPaperSizeError} later. The second argument is the name
+% of the paper size.
+% \begin{macrocode}
+%<*package&options>
+\providecommand*{\PaperNameToSize}[2][warning]{%
+ \ifstr{#2}{letter}{%
+ \setlength\paperheight{11in}%
+ \setlength\paperwidth {8.5in}%
+ }{%
+ \ifstr{#2}{legal}{%
+ \setlength\paperheight{14in}%
+ \setlength\paperwidth {8.5in}%
+ }{%
+ \ifstr{#2}{executive}{%
+ \setlength\paperheight{10.5in}%
+ \setlength\paperwidth {7.25in}%
+ }{%
+ \ifstr{#2}{}{%
+ \ISO@PaperNameToSize[#1]{}{}\@nil
+ }{%
+ \edef\reserved@a{\noexpand\ISO@PaperNameToSize[#1]#2 \noexpand\@nil}%
+ \reserved@a
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\ISO@PaperNameToSize}
+% \changes{v3.23}{2017/02/22}{new (internal)}^^A
+% For ISO paper sizes a sub-macro is used. It has to split the series and the
+% root.
+% \begin{macrocode}
+\scr@ifundefinedorrelax{ISO@PaperNameToSize}{%
+ \def\ISO@PaperNameToSize[#1]#2#3\@nil{%
+ \lowercase{\edef\reserved@a{#2}}%
+ \@tempswafalse
+ \if \reserved@a a%
+ \ifnumber{#3}{%
+ \setlength{\paperwidth}{841sp}%
+ \setlength{\paperheight}{1189sp}%
+ \@tempswatrue
+ }{}%
+ \else
+ \if \reserved@a b%
+ \ifnumber{#3}{%
+ \setlength{\paperwidth}{1000sp}%
+ \setlength{\paperheight}{1414sp}%
+ \@tempswatrue
+ }{}%
+ \else
+ \if \reserved@a c%
+ \ifnumber{#3}{%
+ \setlength{\paperwidth}{917sp}%
+ \setlength{\paperheight}{1297sp}%
+ \@tempswatrue
+ }{}%
+ \else
+ \if \reserved@a d%
+ \ifnumber{#3}{%
+ \setlength{\paperwidth}{771sp}%
+ \setlength{\paperheight}{1090sp}%
+ \@tempswatrue
+ }{}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@tempswa
+ \@tempcnta=#3\relax
+ \@whilenum\@tempcnta>\z@
+ \do{\setlength{\@tempdima}{\paperwidth}%
+ \setlength{\paperwidth}{.5\paperheight}%
+ \setlength{\paperheight}{\@tempdima}%
+ \advance\@tempcnta by\m@ne
+ }%
+ \multiply\paperwidth by186468
+ \multiply\paperheight by186468
+ \else
+% \end{macrocode}
+% The paper size is not a supported ISO format. If
+% \Macro{scr@UnknownPaperSize@}\meta{errorclass} is defined, use it to show
+% the error. If not, use \Macro{scr@UnknownPaperSize@error}. This means,
+% \meta{errorclass} \texttt{error} has to be defined.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{scr@UnknownPaperSize@#1}{%
+ \scr@UnknownPaperSize@error{#2#3}%
+ }{%
+ \@nameuse{scr@UnknownPaperSize@#1}{#2#3}%
+ }%
+ \fi
+ }%
+}{}
+% \end{macrocode}
+% \begin{macro}{\ProvideUnknownPaperSizeError}
+% \changes{v3.23}{2017/02/22}{new}^^A
+% Define a new error class for unknown paper formats. The argument is the new
+% error class. Each error class is represented by a command
+% \Macro{scr@UnknownPaperSize@}\meta{errorclass}. That command also has
+% exactly one argument, the unknown paper size.
+% \begin{macrocode}
+\providecommand*{\ProvideUnknownPaperSizeError}[1]{%
+ \expandafter\providecommand\expandafter*%
+ \csname scr@UnknownPaperSize@#1\endcsname[1]%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@UnkownPaperSize@error}
+% \changes{v3.23}{2017/02/22}{new (internal)}
+% \begin{macro}{\scr@UnkownPaperSize@warning}
+% \changes{v3.23}{2017/02/22}{new (internal)}
+% \begin{macro}{\scr@UnkownPaperSize@info}
+% \changes{v3.23}{2017/02/22}{new (internal)}
+% \begin{macro}{\scr@UnkownPaperSize@ignore}
+% \changes{v3.23}{2017/02/22}{new (internal)}
+% Error handling (error classes) for \Macro{PaperNameToSize}.
+% \begin{macrocode}
+\ProvideUnknownPaperSizeError{error}{%
+ \PackageError{%
+%<typearea> typearea%
+%<letter> scrletter%
+ }{Unknown paper size #1}{%
+ \string\paperwidth\space and \string\paperheight\space stay unchanged,
+ because of unknown paper size.%
+ }%
+}
+%<*typearea>
+\ProvideUnknownPaperSizeError{warning}{%
+ \PackageWarning{%
+ typearea%
+ }{%
+ \string\paperwidth\space and \string\paperheight\space stay
+ unchanged, because\MessageBreak
+ of unknown paper size #1%
+ }%
+}
+\ProvideUnknownPaperSizeError{info}{%
+ \PackageInfo{%
+ typearea
+ }{%
+ \string\paperwidth\space and \string\paperheight\space stay
+ unchanged, because\MessageBreak
+ of unknown paper size #1%
+ }%
+}
+\ProvideUnknownPaperSizeError{ignore}{}
+%</typearea>
+%</package&options>
+% \end{macrocode}
+% \end{macro}^^A \scr@UnknownPaperSize@error
+% \end{macro}^^A \scr@UnknownPaperSize@warning
+% \end{macro}^^A \scr@UnknownPaperSize@info
+% \end{macro}^^A \scr@UnknownPaperSize@ignore
+% \end{macro}^^A \ProvideUnknownPaperSizeError
+% \end{macro}^^A \ISO@PaperNameToSize
+% \end{macro}^^A \PaperNameToSize
+%
+% \begin{option}{a4paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{a5paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{b5paper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{letterpaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{legalpaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{executivepaper}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{landscape}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% \begin{option}{portrait}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{the option is standard but not deprecated}^^A
+% The paper sizes of the standard classes are a special case. For
+% compatibility they are declared explicitly. Note: There is still a pattern
+% matching implementation for other paper size options, but the usage of those
+% is hardly deprecated.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@DeclareStandardOption[typearea]{a4paper}{paper=a4}
+\KOMA@DeclareStandardOption[typearea]{a5paper}{paper=a5}
+\KOMA@DeclareStandardOption[typearea]{b5paper}{paper=b5}
+\KOMA@DeclareStandardOption[typearea]{letterpaper}{paper=letter}
+\KOMA@DeclareStandardOption[typearea]{legalpaper}{paper=legal}
+\KOMA@DeclareStandardOption[typearea]{executivepaper}{paper=executive}
+\KOMA@DeclareStandardOption[typearea]{landscape}{paper=landscape}
+\KOMA@DeclareStandardOption[typearea]{portrait}{paper=portrait}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{paper}
+% \changes{v2.95}{2002/12/03}{new implementation}^^A
+% \changes{v3.01b}{2008/12/09}{height and width swapped}^^A
+% \changes{v3.02c}{2009/02/12}{new \Option{paper!=seascape}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \changes{v3.22}{2016/07/29}{paper orientation depends on format name}^^A
+% Normally, the paper size should be set using this option. It provides the
+% ISO series A, B, C, D, value pairs
+% \Option{(\meta{width},\meta{height})} and the orientations
+% \Option{portrait}, \Option{landscape} and \Option{seascape}.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{paper}{%
+ \ifstr{#1}{seascape}{%
+ \@seascapetrue
+ \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax
+ \@landscapetrue
+ \scr@setpaperorientation
+ \else
+ \if@landscape\else\scr@switchpapersizes\@landscapetrue\fi
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{seascape}%
+ }{%
+ \ifstr{#1}{landscape}{%
+ \@seascapefalse
+ \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax
+ \@landscapetrue
+ \scr@setpaperorientation
+ \else
+ \if@landscape\else\scr@switchpapersizes\@landscapetrue\fi
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{landscape}%
+ }{%
+ \ifstr{#1}{portrait}{%
+ \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax
+ \@landscapefalse
+ \scr@setpaperorientation
+ \else
+ \if@landscape\scr@switchpapersizes\@landscapefalse\fi
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{landscape}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{portrait}%
+ \KOMA@kav@remove{.typearea.\scr@pkgextension}{paper}{seascape}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{portrait}%
+ }{%
+ \ifstr{#1}{letter}{%
+ \if@landscape
+ \setlength\paperheight{8.5in}%
+ \setlength\paperwidth {11in}%
+ \else
+ \setlength\paperheight{11in}%
+ \setlength\paperwidth {8.5in}%
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{letter}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \if@seascape seascape\else
+ \if@landscape landscape\else portrait\fi\fi
+ }%
+ }{%
+ \ifstr{#1}{legal}{%
+ \if@landscape
+ \setlength\paperheight{8.5in}%
+ \setlength\paperwidth {14in}%
+ \else
+ \setlength\paperheight{14in}%
+ \setlength\paperwidth {8.5in}%
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{legal}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \if@seascape seascape\else
+ \if@landscape landscape\else portrait\fi\fi
+ }%
+ }{%
+ \ifstr{#1}{executive}{%
+ \if@landscape
+ \setlength\paperheight{7.25in}%
+ \setlength\paperwidth {10.5in}%
+ \else
+ \setlength\paperheight{10.5in}%
+ \setlength\paperwidth {7.25in}%
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{paper}{executive}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \if@seascape seascape\else
+ \if@landscape landscape\else portrait\fi\fi
+ }%
+ }{%
+ \iso@paper{#1}%
+ \if@tempswa
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{#1}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \if@seascape seascape\else
+ \if@landscape landscape\else portrait\fi\fi
+ }%
+ \else
+ \expandafter\maybe@pair#1::\@nil
+ \if@tempswa
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{paper}%
+ \expandafter\ifnum \scr@ta@v@is@lt{3.01b}\relax
+ \PackageWarningNoLine{typearea}{%
+ You may have to exchange height and width!\MessageBreak
+ Until KOMA-Script version 3.01b the semantic\MessageBreak
+ of option `paper' was `paper=height:width'\MessageBreak
+ instead of `paper=width:height'.\MessageBreak
+ I've switched back to that old interpretation\MessageBreak
+ because of the given compatiblity settings}%
+ \setlength\paperwidth{\@tempb}%
+ \setlength\paperheight{\@tempa}%
+ \else
+ \setlength\paperwidth{\@tempa}%
+ \setlength\paperheight{\@tempb}%
+ \fi
+ \expandafter\ifnum \scr@ta@v@is@lt{3.22}\relax
+ \if@landscape
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{\@tempa:\@tempb}%
+ \else
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{\@tempb:\@tempa}%
+ \fi
+ \else
+ \scr@setpaperorientation
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \the\paperwidth:\the\paperheight}%
+ \fi
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{paper}{%
+ \if@seascape seascape\else
+ \if@landscape landscape\else portrait\fi\fi
+ }%
+ \else
+ \KOMA@unknown@keyval{paper}{#1}{%
+ `letter', `legal', `executive', `a'<nr>, `b'<nr>,
+ `c'<nr>, `d'<nr>,\MessageBreak
+ <width>`:'<height>, `landscape' and `portrait'%
+ }%
+ \fi
+ \fi
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\if@seascape}
+% \changes{v3.02c}{2009/02/12}{new}^^A
+% \begin{macro}{\@seascapetrue}
+% \changes{v3.02c}{2009/02/12}{new}^^A
+% \begin{macro}{\@seascapefalse}
+% \changes{v3.02c}{2009/02/12}{new}^^A
+% This switch stores only whether or not the landscape orientation should be
+% up-side-down. Currently this makes sense only using \File{dvips}.
+% \begin{macrocode}
+\newif\if@seascape
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\if@landscape}
+% \begin{macro}{\@landscapetrue}
+% \begin{macro}{\@landscapefalse}
+% This switch stores whether using portrait or landscape orientation.
+% \begin{macrocode}
+\newif\if@landscape
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\maybe@pair}
+% \changes{v2.95}{2002/12/03}{new (internal)}^^A
+% \changes{v2.97e}{2007/11/26}{works really}^^A
+% Test whether the following parameter is of kind \texttt{\meta{first
+% argument}:\meta{second argument}}. If so \cs{@tempa} will become \meta{first
+% argument} and \cs{@tempb} will become \meta{second argument} and
+% \cs{if@tempswa} will become \cs{iftrue}. Otherwise \cs{if@tempswa} is
+% \cs{iffalse} and \cs{@tempa} and \cs{@tempb} are not specified.
+% \begin{macrocode}
+\newcommand*{\maybe@pair}{}
+\def\maybe@pair#1:#2:#3\@nil{%
+ \edef\@tempa{#1}\edef\@tempb{#2}%
+ \ifx\@tempa\@empty\@tempswafalse\else
+ \ifx\@tempb\@empty\@tempswafalse\else\@tempswatrue\fi
+ \fi
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \subsection{Special handling of \Package{geometry}}
+%
+% \begin{option}{usegeometry}
+% \changes{v3.17}{2015/02/07}{new}^^A
+% \Package{typearea} optionally can pass several settings to package
+% \Package{geometry}. The user decides whether or not to use this.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@ifkey{usegeometry}{@ta@usegeometry}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+%
+% \subsection{Setting the output paper size}
+%
+% The document paper format of option \Option{paper} is one thing. It is used
+% only for calculation of the dimensions used by \TeX{}. Originally
+% \textsc{dvi} does not know something like a paper size. It just contained
+% relative movements from the current position starting with the
+% origin. Setting up a page size depends on the output driver or back-end.
+%
+% \begin{option}{pagesize}
+% \changes{v2.7g}{2001/04/17}{new}^^A
+% \changes{v2.95}{2002/08/27}{new implementation}^^A
+% \changes{v3.02c}{2009/02/14}{new \Option{pagesize!=false}}^^A
+% \changes{v3.05a}{2010/03/18}{new \Option{pagesize!=dvipdfmx}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \changes{v3.17a}{2015/05/03}{logic redesigned}^^A
+% \changes{v3.20}{2015/07/10}{\File{luatex} as a synonym of
+% \File{pdftex}}^^A
+% This option is the main element for telling pdf\TeX, \File{dvips} or V\TeX{}
+% which paper size to use. It is also used by some deprecated options. Here
+% are the values and their meanings:
+% \begin{labeling}[~--]{\Option{automedia}}
+% \item[\Option{auto}] combination of options \Option{pdftex} and
+% \Option{dvips}.
+% \item[\Option{automedia}] like \Option{auto} with additional setting of
+% \cs{mediawidth} and \cs{mediaheight} if available.
+% \item[\Option{dvips}] adds a \File{dvips} \cs{special} to set the paper
+% size. This should be done only once in the document preamble. Usage inside
+% the document body is not fully supported and will raise a warning.
+% \item[\Option{dvipdfmx}] adds a \File{dvipdfmx} \cs{special} to set the
+% paper size.
+% \item[\Option{false}] switch of the automatic driver page size setting,
+% i.e., if there are changes inside the document.
+% \item[\Option{pdftex}] set \cs{pdfpagewidth} and \cs{pdfpageheight} if
+% available.
+% \end{labeling}
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{pagesize}[auto]{%
+ \KOMA@set@ncmdkey{pagesize}{@pagesizelast}{%
+ {off}{-1},{no}{-1},{false}{-1},%
+ {auto}{0},{automedia}{1},{dvips}{2},{pdftex}{3},{luatex}{3},{dvipdfmx}{4}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase\number\@pagesizelast\relax
+ \edef\@pagesizelast{auto}%
+ \if@atdocument
+ \set@pdftexpagesize
+ \set@dvipspagesize
+ \fi
+ \or
+ \edef\@pagesizelast{automedia}%
+ \if@atdocument
+ \set@pdftexpagesize
+ \set@vtexpagesize
+ \set@dvipspagesize
+ \fi
+ \or
+ \edef\@pagesizelast{dvips}%
+ \if@atdocument
+ \set@dvipspagesize
+ \fi
+ \or
+ \edef\@pagesizelast{pdftex}%
+ \if@atdocument
+ \set@pdftexpagesize
+ \fi
+ \or
+ \edef\@pagesizelast{dvipdfmx}%
+ \if@atdocument
+ \set@dvipdfmxpagesize
+ \fi
+ \else
+ \edef\@pagesizelast{false}%
+ \fi
+ \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}%
+ {pagesize}{\@pagesizelast}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\@pagesizelast}
+% This internal macro stores the current value of option \Option{pagesize} and
+% is needed to use the correct signalling if option \Option{paper} is used
+% inside the document and the initial setup in |\begin{document}|.
+% \begin{macrocode}
+\newcommand\@pagesizelast{auto}
+\AtBeginDocument{%
+ \KOMAExecuteOptions[.typearea.\scr@pkgextension]{pagesize=\@pagesizelast}%
+% \end{macrocode}
+% \end{macro}^^A \@pagesizelast
+%
+% \begin{macro}{\set@pdftexpagesize}
+% \changes{v2.95}{2002/08/27}{new (internal)}^^A
+% \changes{v3.20}{2015/07/10}{if \cs{pdfpage\dots} does not exist
+% \cs{page\dots} will be tried (needed for lua\TeX{}~0.80.1)}^^A
+% \begin{macro}{\set@dvipspagesize}
+% \changes{v2.95}{2002/08/27}{new (internal)}^^A
+% \changes{v3.02c}{2009/02/13}{respecting \Option{seascape}}
+% \changes{v3.02c}{2009/02/14}{can be used inside the document}^^A
+% \changes{v3.12}{2012/02/06}{not expanded
+% \cs{let}\cs{if@tempswa}\cs{if@dvips} does even work is the later is not
+% yet defined}
+% \begin{macro}{\setnot@dvipspagesize}
+% \changes{v2.95}{2002/08/27}{new (internal)}^^A
+% \begin{macro}{\set@dvipdfmxpagesize}
+% \changes{v3.05a}{2010/03/18}{new (internal)}^^A
+% \begin{macro}{\set@vtexpagesize}
+% \changes{v2.95}{2002/08/27}{new (internal)}^^A
+% \begin{macro}{\scr@updatedvipspagesize}
+% \changes{v3.02c}{2009/02/14}{new (internal)}^^A
+% \changes{v3.12}{2013/05/10}{deactivated, if \cs{XeTeXversion} exists}^^A
+% Option \Option{pagesize} needs some internal macros.
+% \begin{description}
+% \item{Attention:} The definition of these macros may change at usage of
+% themselves or at |\begin{document}|.
+% \end{description}
+% First of all the definition from |\begin{document}|:
+% \begin{macrocode}
+ \expandafter\ifnum\scr@ta@v@is@gt{3.02b}\relax
+ \renewcommand*{\set@dvipspagesize}{%
+% \end{macrocode}
+% \changes{v3.12}{2012/11/23}{use paper size update only for DVI and PS}^^A
+% \changes{v3.12}{2012/02/06}{not expanded
+% \cs{let}\cs{if@tempswa}\cs{if@dvips} does even work is the later is not
+% yet defined}^^A
+% Test whether unspecified \textsc{DVI} output or specified \textsc{PS} output
+% is used. Only in that cases the \textsc{PS} code for paper size updates will
+% be used.
+% \begin{macrocode}
+ \begingroup
+ \@tempswafalse
+ \scr@ifdvioutput{\@tempswatrue}{%
+ \ifnotundefined{if@dvips}{%
+ \expandafter\let\csname if@tempswa\expandafter\endcsname
+ \csname if@dvips\endcsname
+ }{}%
+ }%
+ \if@tempswa
+ \endgroup
+ \scr@ifundefinedorrelax{AtNextShipout}{%
+ \scr@ifundefinedorrelax{AtBeginShipoutNext}{%
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \scr@updatedvipspagesize}%
+ \reserved@a
+ }{%
+% \end{macrocode}
+% If \cs{AtBeginShipoutNext} is available (mostly because of loading package
+% \Package{atbegshi}) use it so execute the code at least before other code
+% that has been added to \cs{shipout}. Unfortunately this is not reliable. If
+% \cs{AtBeginShipout} is used after \cs{set@dvipspagesize} (this means the
+% recalculation of the typing area and the margins) but before the current
+% page has been shipped out the code of such \cs{AtBeginShipout} will be lost!
+% \begin{macrocode}
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \protect\AtBeginShipoutNext{%
+ \protect\bgroup
+ \protect\global\protect\setbox\AtBeginShipoutBox
+ \protect\vbox{%
+ \scr@updatedvipspagesize
+ \protect\box\AtBeginShipoutBox
+ }%
+ \protect\egroup
+ }}%
+ \reserved@a
+ }%
+ }{%
+% \end{macrocode}
+% If \cs{AtNextShipout} is available (mostly because of loading package
+% \Package{everyshi} use it to execute the code at least before other code
+% that has been added to \cs{shipout}. Unfortunately this is not reliable. If
+% \cs{AtNextShipout} or \cs{EveryShipout} is used after \cs{set@dvipspagesize}
+% (this means the recalculation of the typing area and the margins) but before
+% the current page has been shipped out the code of such \cs{AtNextShipout} or
+% \cs{EveryShipout} will be lost!
+% \begin{macrocode}
+ \begingroup
+ \protected@edef\reserved@a{\endgroup
+ \protect\AtNextShipout{%
+ \protect\bgroup
+ \protect\global\protect\setbox\protect\@cclv\protect\vbox{%
+ \scr@updatedvipspagesize
+ \protect\box\protect\@cclv
+ }%
+ \protect\egroup
+ }}%
+ \reserved@a
+ }%
+ \else
+% \end{macrocode}
+% In this case (neither \textsc{DVI} nor \textsc{PS} output) we only have to
+% finish the group that has been used to keep changes of \cs{if@tempswa}
+% local.
+% \begin{macrocode}
+ \endgroup
+ \fi
+ }%
+ \else
+ \let\set@dvipspagesize=\setnot@dvipspagesize
+ \fi
+ \renewcommand*{\set@dvipdfmxpagesize}{%
+ \scr@ifdvioutput{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ }{}%
+ }%
+}
+% \end{macrocode}
+% And now the definition that is used before |\begin{document}| but executed
+% the first time inside |\begin{document}|.
+% \changes{3.21}{2016/05/27}{two missing backslashs added}
+% \begin{macrocode}
+\newcommand*{\set@pdftexpagesize}{%
+ \scr@ifundefinedorrelax{pdfpagewidth}{%
+ \scr@ifundefinedorrelax{pagewidth}{}{\pagewidth=\paperwidth}%
+ }{\pdfpagewidth=\paperwidth}%
+ \scr@ifundefinedorrelax{pdfpageheight}{%
+ \scr@ifundefinedorrelax{pageheight}{}{\pageheight=\paperheight}%
+ }{\pdfpageheight=\paperheight}%
+}
+\newcommand*{\set@dvipspagesize}{%
+ \begingroup
+ \@tempswafalse
+ \scr@ifdvioutput{\@tempswatrue}{%
+ \ifnotundefined{if@dvips}{%
+ \expandafter\let\csname if@tempswa\expandafter\endcsname
+ \csname if@dvips\endcsname
+ }{}%
+ }{}%
+% \end{macrocode}
+% \changes{v3.22}{2016/08/04}{\textsf{preview} workaround}^^A
+% If package \Package{preview} has been loaded with option \Option{tightpage},
+% which can be recognized by a defined macro \cs{pr@nextbb}, and if the
+% package is active, we do not add \textsc{DVI} specials, because it would
+% disturb Xe\LaTeX.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{pr@nextbb}{}{%
+ \expandafter\ifx\csname ifPreview\expandafter\endcsname
+ \csname iftrue\endcsname
+ \PackageInfo{typearea}{%
+ package `preview' with option `tightpage' detected.\MessageBreak
+ initial page size special deactivated%
+ }%
+ \@tempswafalse
+ \fi
+ }%
+ \if@tempswa
+ \endgroup
+ \AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \if@seascape\special{! TeXDict begin /landplus90{true}store end }\fi
+ }%
+ \expandafter\ifnum\scr@ta@v@is@gt{3.02b}\relax
+ \let\set@dvipspagesize=\@empty
+ \else
+ \let\set@dvipspagesize=\setnot@dvipspagesize
+ \fi
+ \else
+ \endgroup
+ \fi
+}
+\newcommand*{\setnot@dvipspagesize}{%
+ \scr@ifdvioutput{%
+ \PackageWarning{%
+ typearea%
+ }{%
+ With dvi output option `pagesize=auto',\MessageBreak
+ `pagesize=automedia' or `pagesize=dvips'\MessageBreak
+ may be used only once at preamble.\MessageBreak
+ Option ignored%
+ }%
+ }{}%
+}
+\newcommand*{\set@dvipdfmxpagesize}{%
+ \scr@ifdvioutput{%
+ \AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ }%
+ }{}%
+}
+\newcommand*{\set@vtexpagesize}{%
+ \ifnotundefined{mediawith}{\mediawidth=\paperwidth}{}%
+ \ifnotundefined{mediaheight}{\mediaheight=\paperheight}{}%
+}
+\newcommand*{\scr@updatedvipspagesize}{%
+ \scr@ifundefinedorrelax{XeTeXversion}{%
+ \special{ps::\@percentchar\@percentchar
+ PageBoundingBox: 0 0 \the\numexpr\paperwidth/\dimexpr 1bp\relax\relax
+ \space \the\numexpr\paperheight/\dimexpr 1bp\relax\relax^^J%
+ \@percentchar\@percentchar BeginPageSetup^^J%
+ << /PageSize [\the\numexpr\paperwidth/\dimexpr 1bp\relax\relax\space
+ \the\numexpr\paperheight/\dimexpr 1bp\relax\relax]
+ >> setpagedevice^^J%<<
+ 0 0 bop^^J%
+ \@percentchar\@percentchar EndPageSetup}%
+ }{}%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{dvips}
+% \changes{v2.7g}{2001/04/17}{new}^^A
+% \changes{v2.95}{2002/08/27}{new implementation}^^A
+% \changes{v2.98c}{2008/04/09}{replacement changed}^^A
+% \changes{v2.98c}{2008/04/09}{info instead of warning}^^A
+% \changes{v3.01a}{2008/11/21}{it's a standard option not deprecated}^^A
+% This option is a kind of obsolete. It is now implemented using
+% \Option{pagesize}. But because this is a standard option using several other
+% packages we only show a standard option information instead of a deprecated
+% option warning. Note: Usage of \Option{pagesize=automedia} can still result
+% in a warning message!
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@DeclareStandardOption[typearea]{dvips}{%
+ pagesize=automedia%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{pdftex}
+% \changes{v2.7g}{2001/04/17}{new}^^A
+% \changes{v2.95}{2002/08/27}{new implementation}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{it's a standard option not deprecated}^^A
+% This option is a kind of obsolete. It is now implemented using
+% \Option{pagesize}. But because this is a standard option using several other
+% packages we only show a standard option information instead of a deprecated
+% option warning.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@DeclareStandardOption[typearea]{pdftex}{%
+ pagesize=pdftex%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+% \subsection{Influencing left and right margin proportions}
+%
+% Options like \Option{twoside} or \Option{twocolumn} influence the
+% proportions of the left and right margin and indirectly also the top and the
+% bottom margin. They are also very important for the document classes.
+%
+% \begin{option}{oneside}
+% \changes{v2.97e}{2007/11/23}{pass option from class to
+% \Package{typearea}}^^A
+% \changes{v3.01a}{2008/11/21}{it's a standard option not deprecated}^^A
+% \begin{option}{twoside}
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v2.97e}{2007/11/23}{pass option from class to
+% \Package{typearea}}^^A
+% \changes{v3.00}{2008/07/09}{new option \Option{twoside!=semi}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \changes{v3.13a}{2014/04/09}{the class also uses status signaling with
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.17}{2015/03/17}{automatic usage of \cs{flushbottom} and
+% \cs{raggedbottom}}^^A
+% \changes{v3.17}{2015/03/17}{early setting of default}^^A
+% \changes{v3.17}{2015/03/18}{use \cs{cleardoubleoddpage} if available}^^A
+% \begin{macro}{\if@semitwoside}
+% \changes{v3.00}{2008/07/09}{new boolean switch (intern)}^^A
+% \begin{macro}{\if@twoside}
+% \changes{v3.00}{2008/07/09}{switch also sets \cs{if@semitwoside}}^^A
+% Do we have a single sided or double sided layout?
+% \begin{macrocode}
+%<*package&typearea&options>
+\newif\if@semitwoside
+\g@addto@macro\@twosidetrue\@semitwosidefalse
+\g@addto@macro\@twosidefalse\@semitwosidefalse
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+%<*(class|(package&typearea))&options>
+\KOMA@key{twoside}[true]{%
+%<class> \if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
+%<*package>
+ \if@atdocument\if@twoside
+ \scr@ifundefinedorrelax{cleardoubleoddpage}{%
+ \cleardoublepage
+ }{%
+ \cleardoubleoddpage
+ }%
+ \else\clearpage\fi\fi
+%</package>
+ \ifstr{#1}{semi}{%
+ \@twosidetrue
+%<package> \@semitwosidetrue
+ \FamilyKeyStateProcessed
+ }{%
+ \def\FamilyElseValue{, `semi'}%
+ \KOMA@set@ifkey{twoside}{%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/02}{not existing order dependency of
+% \Option{twocolumn} and \Option{twoside} fixed}^^A
+% From v3.17 until 3.19a the classes used a local switch
+% \Macro{if@tempswa}. As a result of this option \Option{twocolumn} was not
+% able to recognize double sided layout. Because of this it was essential to
+% handle option \Option{twocolumn} before option \Option{twoside}. This has
+% been solved using \Macro{if@twoside} in the classes too. Another solution
+% could have been to move the implementation and execution of
+% \Option{twocolumn} before \Option{twoside}. But I don't know whether or not
+% this would have been reliable and the solution here is more simple.
+% \begin{macrocode}
+ @twoside%
+ }{#1}%
+ }%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+%<*class>
+ \expandafter\ifnum\scr@v@is@ge{3.17}%
+%<*!letter>
+ \if@twoside\flushbottom
+ \else\if@twocolumn\flushbottom\else\raggedbottom\fi\fi
+%</!letter>
+%<letter> \raggedbottom
+ \fi
+%</class>
+ \KOMA@kav@xreplacevalue{.%
+%<class> \KOMAClassFileName
+%<package> typearea.\scr@pkgextension
+ }{twoside}{#1}%
+%<*package>
+ \if@twoside
+ \if@semitwoside
+ \@mparswitchfalse
+ \else
+ \@mparswitchtrue
+ \fi
+ \else
+ \@mparswitchfalse
+ \fi%
+ \csname recalctypearea\endcsname
+%</package>
+ \fi
+}
+%<*class>
+%<book>\KOMAExecuteOptions{twoside=true}
+%<!book>\KOMAExecuteOptions{twoside=false}
+%</class>
+%<*package>
+\KOMA@kav@xadd{.typearea.\scr@pkgextension}{twoside}{%
+ \if@twoside true\else false\fi
+}
+%</package>
+\KOMA@DeclareStandardOption%
+%<package> [typearea]%
+ {oneside}{twoside=false}
+%</(class|(package&typearea))&options>
+% \end{macrocode}
+% \end{option}^^A twoside
+% \end{option}^^A oneside
+%
+% \begin{option}{onecolumn}
+% \changes{v2.95}{2002/12/04}{option moved to package \Package{typearea}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v2.97e}{2007/11/23}{the classes pass the option to
+% \Package{typearea}}^^A
+% \changes{v3.01a}{2008/11/21}{standard option but not deprecated}^^A
+% \begin{option}{twocolumn}
+% \changes{v2.95}{2002/12/04}{option moved to package \Package{typearea}}^^A
+% \changes{v2.97e}{2007/11/23}{the classes pass the option to
+% \Package{typearea}}^^A
+% \changes{v2.98a}{2007/01/08}{passing the correct option}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \changes{v3.13a}{2014/04/09}{the class also uses status signaling with
+% \cs{FamilyKeyStateProcessed}}^^A
+% \changes{v3.20}{2016/02/16}{\cs{sloppy}, \cs{raggedbottom} and
+% \cs{flushbottom} delayed}^^A
+% Do we have a single column or two columns layout?
+% \begin{macrocode}
+%<*(class|(package&typearea))&options>
+\KOMA@key{twocolumn}[true]{%
+%<class> \if@atdocument\else\PassOptionsToPackage{twocolumn=#1}{typearea}\fi%
+%<*package>
+ \if@atdocument\clearpage\fi
+%</package>
+ \KOMA@set@ifkey{twocolumn}{@twocolumn}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@replacebool{.%
+%<class> \KOMAClassFileName
+%<package> typearea.\scr@pkgextension
+ }{twocolumn}{@twocolumn}%
+%<package> \csname recalctypearea\endcsname
+%<*class>
+ \if@atdocument\expandafter\@firstofone
+ \else\@ifpackageloaded{typearea}{\expandafter\@firstofone}
+ {\expandafter\AtEndOfClass}\fi
+ {\expandafter\ifnum\scr@v@is@ge{3.17}%
+ \if@twocolumn\twocolumn\sloppy\flushbottom
+ \else\onecolumn\if@twoside\flushbottom\else\raggedbottom\fi\fi
+ \fi}%
+%</class>
+ \fi
+}
+%<*class>
+\AtEndOfClass{%
+ \expandafter\ifnum\scr@v@is@lt{3.17}%
+%<*!letter>
+ \if@twocolumn\twocolumn\sloppy\flushbottom
+ \else\onecolumn\if@twoside\flushbottom\else\raggedbottom\fi\fi
+%</!letter>
+%<letter> \raggedbottom
+ \fi
+}
+\KOMAExecuteOptions{twocolumn=false}
+%</class>
+%<*package>
+\KOMA@kav@xadd{.typearea.\scr@pkgextension}{twocolumn}{%
+ \if@twocolumn true\else false\fi
+}
+%</package>
+\KOMA@DeclareStandardOption%
+%<package> [typearea]%
+ {onecolumn}{twocolumn=false}
+%</(class|(package&typearea))&options>
+% \end{macrocode}
+% \end{option}^^A twocolumn
+% \end{option}^^A onecolumn
+%
+%
+% \subsection{Influencing size of head and foot and margins}
+%
+% We have several options to influence the head hight and the foot height and
+% whether or not these are part of the typing area or the margins. We have also
+% an option to decide whether or not the margin notes are part of the typing
+% area or not.
+%
+% \begin{option}{headlines}
+% \changes{v2.95}{2002/12/06}{new implementation using \textsf{keyval}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \begin{option}{footlines}
+% \changes{v3.12}{2013/03/26}{new}^^A
+% These are two of the recommended options to set the height of the page head
+% and footer. Here we set the height by the number of base lines. The number
+% is a factor to \cs{baselineskip} and therefore a real number.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{headlines}{%
+ \begingroup
+ \setlength{\@tempdima}{#1\baselineskip}%
+ \endgroup
+ \def\ta@hh{#1\baselineskip}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headlines}{#1}%
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headheight}{#1\baselineskip}%
+}
+\KOMA@key{footlines}{%
+ \begingroup
+ \setlength{\@tempdima}{#1\baselineskip}%
+ \endgroup
+ \def\ta@fh{#1\baselineskip}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footlines}{#1}%
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footheight}{#1\baselineskip}%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{headheight}
+% \changes{v2.98c}{2008/04/06}{new}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% \begin{option}{footheight}
+% \changes{v3.12}{2013/03/26}{new}^^A
+% Instead of setting the height of the page head or footer by the number of
+% base lines, we can set it also using a length or length value. Note, via
+% \Macro{documenclass} or \Macro{usepackage} only length values are supported
+% (due to an expansion problem by the \LaTeX{} kernel with both commands).
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{headheight}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}%
+ \endgroup
+ \def\ta@hh{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{headheight}{#1}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{headlines}%
+}
+\KOMA@key{footheight}{%
+ \begingroup
+ \setlength{\@tempdima}{#1}%
+ \endgroup
+ \def\ta@fh{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.typearea.\scr@pkgextension}{footheight}{#1}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{footlines}%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{headinclude}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% This options determines whether or not the head is part of the typing
+% area.
+% \begin{option}{headexclude}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{macro}{\if@hincl}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \changes{v2.97c}{2007/04/19}{direct initialization via \cs{if@hsl},
+% if already defined}^^A
+% \begin{macro}{\@hincltrue}
+% \begin{macro}{\@hinclfalse}
+% We use a boolean switch to store the decision.
+% \begin{macrocode}
+%<*package&typearea&options>
+\newif\if@hincl\@ifundefined{if@hsl}{}{\let\if@hincl\if@hsl}
+\KOMA@ifkey{headinclude}{@hincl}
+\KOMA@DeclareDeprecatedOption[typearea]{headexclude}{headinclude=false}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{headsepline}
+% \changes{v3.20}{2015/12/12}{\Package{typearea} itself reacts on
+% \Option{headsepline}}^^A
+% Until \KOMAScript{} v3.20 \Package{typearea} was not able to handle
+% sequences of options \Option{headsepline} and \Option{headinclude} to get
+% always a correct result. Until v3.18a \Option{headinclude} was prioritized
+% against \Option{headsepline} if used as global options but not if used via
+% \Macro{KOMAoptions}. In v3.18a a bug has been fixed with the result that
+% \Option{headsepline} was prioritized against \Option{headinclude} if used
+% as global options. But intentionally
+% \Option{headinclude=false,}\Option{headsepline} or
+% \Option{headinclude=true,}\Option{headsepline=false} always should use the
+% setting of option \Option{headsepline} independent of setting this as
+% global options or using \Macro{KOMAoptions}. Similar with
+% \Option{headsepline,}\Option{headinclude=false} or
+% \Option{headsepline=false,},\Option{headinclude} the setting of
+% \Option{headinclude} should be used. To achieve this \Package{typearea}
+% itself has to interpret not only \Option{headinclude} but also
+% \Option{headsepline} (as an alias of \Option{headinclude}).
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{headsepline}[true]{%
+ \KOMA@set@ifkey{headinclude}{@hincl}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@replacebool{.typearea.\scr@pkgextension}{headinclude}{@hincl}%
+ \fi
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}^^A headsepline
+%
+% \begin{option}{footinclude}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \begin{option}{footexclude}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% This options determines whether or not the page footer is part of the typing
+% area.
+% \begin{macro}{\if@fincl}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \changes{v2.97c}{2007/04/19}{direct initialization via \cs{if@fsl},
+% if already defined}^^A
+% \begin{macro}{\@fincltrue}
+% \begin{macro}{\@finclfalse}
+% We use a boolean switch to store the decision.
+% \begin{macrocode}
+%<*package&typearea&options>
+\newif\if@fincl\@ifundefined{if@fsl}{}{\let\if@fincl\if@fsl}
+\KOMA@ifkey{footinclude}{@fincl}
+\KOMA@DeclareDeprecatedOption[typearea]{footexclude}{footinclude=false}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{footsepline}
+% \changes{v3.23}{2017/03/03}{has to set \cs{if@fincl} instead of
+% \cs{if@hincl}}^^A
+% \changes{v3.20}{2015/12/12}{\Package{typearea} itself reacts on
+% \Option{footsepline}}^^A
+% Until \KOMAScript{} v3.20 \Package{typearea} was not able to handle
+% sequences of options \Option{footsepline} and \Option{footinclude} to get
+% always a correct result. Until v3.18a \Option{footinclude} was prioritized
+% against \Option{footsepline} if used as global options but not if used via
+% \Macro{KOMAoptions}. In v3.18a a bug has been fixed with the result that
+% \Option{footsepline} was prioritized against \Option{footinclude} if used
+% as global options. But intentionally
+% \Option{footinclude=false,}\Option{footsepline} or
+% \Option{footinclude=true,}\Option{footsepline=false} always should use the
+% setting of option \Option{footsepline} independent of setting this as
+% global options or using \Macro{KOMAoptions}. Similar with
+% \Option{footsepline,}\Option{footinclude=false} or
+% \Option{footsepline=false,},\Option{footinclude} the setting of
+% \Option{footinclude} should be used. To achieve this \Package{typearea}
+% itself has to interpret not only \Option{footinclude} but also
+% \Option{footsepline} (as an alias of \Option{footinclude}).
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{footsepline}[true]{%
+ \KOMA@set@ifkey{footinclude}{@fincl}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@replacebool{.typearea.\scr@pkgextension}{footinclude}{@fincl}%
+ \fi
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}^^A footsepline
+%
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{new}^^A
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{new}^^A
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% Some documents have a lot of large margin notes. Optical these margin notes
+% are more part of the typing area than the margin. This options determines
+% whether or not margin notes should be part of the typing area.
+% \begin{macro}{\if@mincl}
+% \changes{v2.95}{2002/07/08}{new implementation using \textsf{keyval}}^^A
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% We use a boolean switch to store the decision. Note, if the margin notes are
+% part of the typing area, you should increase the divisor.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@ifkey{mpinclude}{@mincl}
+\KOMA@DeclareDeprecatedOption[typearea]{mpexclude}{mpinclude=false}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+%
+% \subsection{Typing area for the emulation of the standard classes}
+%
+% For the emulation of the standard classes we need a dedicated size of the
+% typing area, if and only if no explicit \Option{DIV} has been given by
+% option. The emulation of the standard classes is a class feature. We could
+% do it before \Package{typearea} and then deactivate initial setting of
+% margins and typing area. But it is more easy to use \cs{areaset} after
+% loading \Package{typearea}. The standard letter class cannot be emulated.
+% \begin{macrocode}
+%<*class&body&!letter>
+\if@scr@emulatestandardclasses
+ \ifnum\@lastdiv=\z@
+ \setlength{\textwidth}{\dimexpr \paperwidth-2in\relax}
+ \ifdim \f@size\p@<10.5\p@
+ \setlength{\@tempdimb}{345\p@}
+ \else\ifdim \f@size\p@<11.5\p@
+ \setlength{\@tempdimb}{360\p@}
+ \else
+ \setlength{\@tempdimb}{390\p@}
+ \fi
+ \fi
+ \if@twocolumn
+ \ifdim\@textwidth>2\@tempdimb\relax
+ \setlength{\textwidth}{2\@tempdimb}
+ \fi
+ \else
+ \ifdim\textwidth>\@tempdimb
+ \setlength{\textwidth}{\@tempdimb}
+ \fi
+ \fi
+ \@settopoint\textwidth
+ \setlength{\@tempdima}{\dimexpr \paperheight-3.5in\relax}
+ \divide\@tempdima\baselineskip
+ \@tempcnta=\@tempdima
+ \setlength{\textheight}{\@tempcnta\baselineskip}
+ \addtolength{\textheight}{\topskip}
+ \edef\reserved@a{%
+ \noexpand\@areasetadvancedtrue
+ \noexpand\areaset[current]{\noexpand\textwidth}{\noexpand\textheight}%
+ \if@areasetadvanced\else\noexpand\@areasetadvancedfalse\fi
+ }\reserved@a
+ \fi
+\fi
+%</class&body&!letter>
+% \end{macrocode}
+%
+% \subsection{Using a predefined divisor depending on the font size}
+%
+% Some years ago \Package{typearea} provides the feature to use a hard coded
+% or user defined divisor depending on the document font size. The feature to
+% define such predefined divisors is deprecated, because it can be used only
+% for integer font sizes in pt. Nevertheless, for compatibility reasons it is
+% still implemented.
+%
+% \begin{macro}{\ta@divlist}
+% \changes{v2.0e}{1994/10/28}{new (internal)}^^A
+% \changes{v2.6}{2000/01/04}{the list provides values from font size
+% 1\,pt}^^A
+% \begin{macro}{\ta@divlistelse}
+% \changes{v2.6}{2000/01/04}{neu (internal)}^^A
+% We need a default settings for 10\,pt, 11\,pt and 12\,pt. But we define it
+% only if they has not been defined before. So classes could define other
+% defaults before loading \Package{typearea}.
+% \begin{macrocode}
+%<*package&typearea&init>
+\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}}
+% \end{macrocode}
+% \end{macro}
+% If a font size does not have a predefined divisor, the following default
+% will be used:
+% \begin{macrocode}
+\providecommand\ta@divlistelse{1}
+%</package&typearea&init>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@divfor}
+% We also need a macro to get one of the values stored at \cs{ta@divlist}
+% depending on the font size given by the real number argument. The real
+% number will be rounded to the nearest integer.
+% \changes{v2.4g}{1996/11/04}{usage of the default value list}
+% \changes{v2.6}{2000/01/04}{usage of the extended list}^^A
+% \changes{v2.8q}{2002/03/28}{respect option \Option{mpinclude}}^^A
+% \changes{v2.96}{2006/08/11}{font size does not need to be an integer}^^A
+% \changes{v3.25}{2018/03/05}{paper size test added}^^A
+% \begin{macrocode}
+%<*package&typearea&body>
+\newcommand*{\ta@divfor}[1]{%
+ \ta@div=\z@
+ \expandafter\ifnum\scr@ta@v@is@ge{3.25}\relax
+ \ifnum \z@=\ifdim \paperwidth<207mm \z@\else\ifdim \paperwidth>213mm \z@
+ \else\ifdim \paperheight<294mm \z@\else
+ \ifdim \paperheight>300mm \z@\else \@ne\fi\fi\fi\fi
+ \PackageInfoNoLine{typearea}{%
+ With paper sizes other than (almost) `A4' predefined\MessageBreak
+ DIV values do not exist. Using DIV calculation for good\MessageBreak
+ line width (unless using `version=3.24` or prior)%
+ }%
+ \ta@div=\tw@
+ \fi
+ \fi
+ \if@mincl
+ \PackageInfo{typearea}{%
+ With option `mpinclude' there are no predefined\MessageBreak
+ DIV values. Using DIV calculation for good line\MessageBreak
+ width%
+ }%
+ \ta@div=\tw@
+ \fi
+ \ifnum \ta@div=\z@
+ \xdef\@tempa{\ta@divlist{}}%
+ \@tempdima=#1pt
+ \addtolength{\@tempdima}{.5\p@}%
+ \divide\@tempdima by\p@
+ \setlength{\@tempdimb}{\@tempdima}%
+ \multiply\@tempdimb by\p@
+ \ifdim \@tempdimb=#1pt
+ \ta@div=#1\relax
+ \@whilenum \ta@div >-9 \do {%
+ \ifx\@tempa\empty
+ \else \xdef\@tempa{\expandafter\@cdr\@tempa\@nil}\fi
+ \advance\ta@div by-1
+ }%
+ \else
+ \let\@tempa\empty
+ \fi
+ \ifx\@tempa\empty
+% \end{macrocode}
+% If there is not default in the list we use the general default.
+% \begin{macrocode}
+ \setlength{\@tempdima}{#1\p@}%
+ \addtolength{\@tempdima}{10\p@}%
+ \PackageWarningNoLine{typearea}{%
+ DIV for \the\@tempdima\space and used papersize\MessageBreak
+ not defined!\MessageBreak
+ Using DIV=\ifnum\number\ta@divlistelse>\m@ne
+ \ifcase \ta@divlistelse default%
+ \or calc%
+ \or calc%
+ \or classic%
+ \else\ta@divlistelse\fi\else\ta@divlistelse\fi
+ }%
+ \ta@div=\ta@divlistelse\relax
+ \else
+% \end{macrocode}
+% Otherwise we use the default of the list.
+% \begin{macrocode}
+ \xdef\@tempa{\expandafter\@car\@tempa\@nil}%
+ \ifx\@tempa\empty
+ \ta@div=\ta@divlistelse\relax
+ \else
+ \ta@div=\@tempa\relax
+ \fi
+ \fi
+ \fi
+}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{macro}
+%
+% The documentation of the deprecated part of the feature is still in German.
+% \selectlanguage{ngerman}
+%
+% \begin{macro}{\SetDIVList}
+% \changes{v2.1a}{1994/10/28}{neu}^^A
+% \changes{v2.6}{2000/01/04}{\cs{ta@divlist} enthält Werte für
+% Schriftgrößen ab 1pt}^^A
+% \changes{v3.24}{2017/07/23}{deprecated command}^^A
+% Der Befehl \cs{SetDIVList} tut nichts weiter als die innere Variable
+% für die schriftgrößenabhängige \emph{DIV}-Liste \cs{ta@divlist} neu
+% zu definieren. Dabei können \emph{DIV}-Werte für Größen ab 10\,pt
+% gesetzt werden.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newcommand*\SetDIVList[1]{%
+ \PackageWarning{typearea}{\string\SetDIVList\space is
+ deprecated!\MessageBreak
+ This command supports only integer font sizes\MessageBreak
+ in pt equal or greater than 10pt.\MessageBreak
+ Since version 2.6 the command is implemented\MessageBreak
+ for compatibility only. You should not use it\MessageBreak
+ any longer}%
+ \def\ta@divlist{{}{}{}{}{}{}{}{}{}#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SetXDIVList}
+% \changes{v2.6}{2000/01/04}{neu}^^A
+% \changes{v3.24}{2017/07/23}{deprecated command}^^A
+% Da mit \cs{SetDIVList} aus Kompatibilitätsgründen nur Werte für
+% Größen ab 10\,pt gesetzt werden können, wird für Werte ab 1\,pt
+% ein neuer Befehl benötigt.
+% \begin{macrocode}
+\newcommand*\SetXDIVList[1]{%
+ \PackageWarning{typearea}{\string\SetXDIVList\space is
+ deprecated!\MessageBreak
+ This command supports only integer font sizes\MessageBreak
+ in pt equal or greater than 10pt.\MessageBreak
+ Since version 3.0 the command is implemented\MessageBreak
+ for compatibility only. You should not use it\MessageBreak
+ any longer}%
+ \def\ta@divlist{#1}}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{macro}
+%
+% \selectlanguage{english}
+%
+% \subsection{Calculation of typing area and margins}
+%
+% The main purpose of the package is the calculation of the size of the
+% typeing area and the margins depending on a divisor. As an addition a
+% binding correction is included.
+%
+% The parameters and the calculation is needed before the options can be
+% processed.
+%
+% \begin{Length}{\ta@bcor}
+% \changes{v2.2a}{1995/01/25}{definition of the dimension before option
+% \Option{BCOR}}^^A
+% \changes{v2.7g}{2001/04/17}{definition using \cs{newlength} instead of
+% \cs{newdimen}}^^A
+% We need a length to store the binding correction. It is initializes to 0\,pt
+% implicitly by \Macro{newlength}.
+% \begin{macrocode}
+%<*package&typearea&options>
+\newlength{\ta@bcor}
+% \end{macrocode}
+% \end{Length}
+%
+% \begin{macro}{\ta@div}
+% \changes{v2.2a}{1995/01/25}{definition of the dimension before option
+% \Option{BCOR}}^^A
+% We need a counter for the divisor (aka \emph{DIV}). It is initializes to
+% 0\,pt implicitly by \Macro{newcount}.
+% \begin{macrocode}
+\newcount\ta@div
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{Length}{\ta@hblk}
+% \begin{Length}{\ta@vblk}
+% Width of one horizontal resp. height of one vertical block.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newlength{\ta@hblk}
+\newlength{\ta@vblk}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+%
+% \begin{Length}{\ta@temp}
+% Used several times instead of \cs{@tempdima}, \cs{@tempdimb} or another
+% temporary dimension or glue of the LaTeX{} kernel. Nevertheless I should
+% think about not using this temporary length any longer.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newlength{\ta@temp}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{Length}
+%
+% \begin{option}{BCOR}
+% \changes{v2.2a}{1995/01/25}{new}^^A
+% \changes{v2.95}{2002/12/04}{new implementation using \textsf{keyval}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% The value is written into the length \cs{ta@bcor}. Several symbolic values
+% are supported that have to be converted into a length. Note, while loading
+% the package symbolic values are nonsense.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{BCOR}{%
+ \ifstr{#1}{current}{}{%
+ \setlength{\ta@bcor}{#1}%
+ }%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{BCOR}{#1}%
+}
+% \end{macrocode}
+% After loading the package we have to do a little bit more, because we need
+% to recalculate the areas.
+% \changes{v3.13}{2014/06/30}{\cs{FamilyKeyStateProcessed} added}^^A
+% \changes{v3.24}{2017/07/23}{\cs{KOMA@kav@xreplacevalue} added}^^A
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \KOMA@key{BCOR}{%
+ \typearea[{#1}]{last}
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{BCOR}{#1}%
+ }%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{DIV}
+% \changes{v2.2a}{1995/01/25}{neue Option}^^A
+% \changes{v2.95}{2002/12/04}{new implementation using \textsf{keyval}}^^A
+% \changes{v3.12}{2013/03/05}{status signaling using \cs{FamilyKeyState}}^^A
+% The value is written into the counter \cs{ta@div}. Several symbolic values
+% are supported and have to be converted into a counter. Note, while loading
+% the package symbolic values are nonsense.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@key{DIV}[calc]{%
+ \edef\@tempa{#1}%
+ \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv\fi
+ \def\@tempb{current}\ifx\@tempa\@tempb\else
+ \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else
+ \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else
+ \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else
+ \ta@div=\@tempa
+ \fi
+ \fi
+ \fi
+ \fi
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{DIV}{#1}%
+}
+% \end{macrocode}
+% After loading the package we have to do a little bit more, because we need
+% to recalculate the areas.
+% \changes{v3.13}{2014/06/30}{\cs{FamilyKeyStateProcessed} added}^^A
+% \changes{v3.24}{2017/07/23}{\cs{KOMA@kav@xreplacevalue} added}^^A
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \KOMA@key{DIV}{%
+ \typearea[current]{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@xreplacevalue{.typearea.\scr@pkgextension}{DIV}{#1}%
+ }%
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\typearea}
+% This is the real reason for the package: calculation of typing area and
+% margins providing an optional binding correction and depending on a
+% divisor.
+% \begin{macro}{\@typearea}
+% \changes{v2.4n}{1997/05/28}{moved main calculation into \cs{@typearea}}^^A
+% \changes{v2.95}{2002/08/20}{\cs{selectfont} added}^^A
+% The calculation itself is done in \cs{@typearea}. This command does not need
+% any parameters because it uses \cs{ta@div} and \cs{ta@bcor}.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newcommand*\@typearea{%
+% \end{macrocode}
+% First of all we have to take care to select the correct font. Because
+% otherwise we cannot depend on, e.g., \cs{baselineskip}.
+% \begin{macrocode}
+ \selectfont
+% \end{macrocode}
+% First calculation is about the horizontal block element size:
+% \begin{macrocode}
+ \ta@hblk=\paperwidth
+ \advance \ta@hblk by-\ta@bcor
+ \divide\ta@hblk by\ta@div
+% \end{macrocode}
+% The with of the margin note column depends in the horizontal block size,
+% whether or not is should be part of the typing area and whether of not we
+% have a double sided document.
+% \changes{v2.8q}{2002/03/28}{\cs{marginparwidth} depends on
+% \Option{mpinclude}}^^A
+% \begin{macrocode}
+ \if@mincl
+ \marginparwidth=\ta@hblk
+ \advance\marginparwidth by-\marginparsep
+ \else
+ \if@twoside
+ \if@semitwoside
+ \marginparwidth=\ta@hblk
+ \else
+ \marginparwidth=1.5\ta@hblk
+ \fi
+ \else
+ \marginparwidth=\ta@hblk
+ \fi
+ \fi
+% \end{macrocode}
+% The left and right margin resp. the left margin of odd and even pages
+% depends also on the horizontal block width. The relation depends on whether
+% or not the document is double sided.
+% \begin{macrocode}
+ \oddsidemargin=-1in
+ \evensidemargin=-1in
+ \if@twoside
+ \if@semitwoside
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+% \end{macrocode}
+% \changes{v3.12}{2013/10/15}{use alternating \texttt{BCOR} with
+% \texttt{twoside!=semi}}
+% From v3.12 the binding correction is part of the inner margin also for
+% \Option{twoside=semi}. If compatibility to earlier release is selected the
+% binding correction with \Option{twoside=semi} is always added to the left
+% margin.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@ta@v@is@lt{3.12}\relax
+ \evensidemargin=\oddsidemargin
+ \else
+ \advance\evensidemargin by1.5\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \advance\evensidemargin by2\ta@hblk
+ \if@mincl
+ \advance\evensidemargin by\marginparwidth
+ \advance\evensidemargin by\marginparsep
+ \fi
+ \fi
+ \else
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \evensidemargin=\oddsidemargin
+ \fi
+% \end{macrocode}
+% The width of the typing area is the paper width without the three blocks
+% used for the margins and without the binding correction.
+% \begin{macrocode}
+ \textwidth=\paperwidth
+ \advance\textwidth by-\ta@bcor
+ \advance\textwidth by-3\ta@hblk
+% \end{macrocode}
+% But, if the margin note column should be part of the typing area, it's width
+% has to be subtracted from the width of the typing area. We assume to place
+% the margin notes at the outer margin. But if the typing area is to narrow
+% for the margin note column, the width of margin note column will be
+% reduced. This can be done easily be swapping the two lengths.
+% \begin{macrocode}
+ \if@mincl
+ \advance\textwidth by-\marginparwidth
+ \advance\textwidth by-\marginparsep
+ \ifdim\textwidth <\marginparwidth
+ \PackageWarningNoLine{typearea}{%
+ Width of text (\the\textwidth) less than width of\MessageBreak
+ marginpar (\the\marginparwidth) while using option\MessageBreak
+ `mpinclude'.\MessageBreak
+ Because of this, I'm exchanging the values.\MessageBreak
+ You should increase DIV to avoid such problems.\MessageBreak
+ }%
+ \@tempskipa=\marginparwidth
+ \marginparwidth=\textwidth
+ \textwidth=\@tempskipa
+ \fi
+ \fi
+% \end{macrocode}
+% Next the vertical size of a block.
+% \begin{macrocode}
+ \ta@vblk=\paperheight
+ \divide\ta@vblk by\ta@div
+% \end{macrocode}
+% The top margin depends on this vertical block size. But note, \TeX{} will
+% increase it by 1\,in.
+% \begin{macrocode}
+ \topmargin=-1in
+ \advance\topmargin by\ta@vblk
+% \end{macrocode}
+% And if head is not part of the typing area, the top margin has to be reduced
+% by the head size.
+% \begin{macrocode}
+ \if@hincl \else
+ \advance\topmargin by-\headheight
+ \advance\topmargin by-\headsep
+ \fi
+% \end{macrocode}
+% For the height of the typing area we use the paper size without the height
+% of head and footer. The head and footer may be part of the typing area or
+% not. If they are part of the typing area they reduce the height of it.
+% \begin{macrocode}
+ \ta@temp=\paperheight
+ \advance\ta@temp by-3\ta@vblk
+ \if@hincl
+ \advance\ta@temp by-\headheight
+ \advance\ta@temp by-\headsep
+ \fi
+ \if@fincl
+ \advance\ta@temp by-\footskip
+ \fi
+% \end{macrocode}
+% Last but not least we have take care that the typing area consists of an
+% integer number of text lines.
+% \changes{v2.96}{2006/09/12}{setting \cs{topskip}}
+% \changes{v2.97c}{2007/07/04}{setting \cs{maxdepth}}
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{@ptsize}{%
+ \topskip=\f@size\p@
+ }{%
+ \topskip=\@ptsize\p@
+ \advance\topskip by 10\p@
+ }%
+ \maxdepth=.5\topskip
+ \textheight=\topskip
+ \@whiledim\textheight <\ta@temp
+ \do{\advance\textheight by\baselineskip}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@typearea
+%
+% \begin{macro}{\ta@modiv}
+% Needed by \cs{typearea}. The first parameter will be divided by the second
+% one. \cs{ta@div} is set to the rounded result. Internally \cs{@tempdima} and
+% \cs{@tempdimb} are used.
+% \begin{macrocode}
+\newcommand*\ta@modiv[2]{
+ \setlength{\@tempdima}{#1}
+ \divide\@tempdima by#2
+ \ta@div\@tempdima
+ \ifnum \ta@div<4
+ \ta@div=4
+ \else
+ \setlength{\@tempdimb}{#1}%
+ \divide\@tempdimb by\ta@div
+ \addtolength{\@tempdima}{\@tempdima}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \advance\ta@div by\@ne
+ \setlength{\@tempdimb}{#1}%
+ \divide\@tempdimb by\ta@div
+% \end{macrocode}
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} instead of \cs{ifnum}}
+% \begin{macrocode}
+ \ifdim \@tempdima<\@tempdimb
+ \advance\ta@div by\m@ne
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ta@temp@goodwidth}
+% Sets \cs{ta@temp} to the heuristic optimal line width depending on the
+% current font. An optimal line width has 66 up to 72 characters. Here we use
+% a value of 69 characters. We assume that such a line consists of 66 lower
+% case letters (minors) and three upper case letters (majors). Normally the
+% weight of a letter depends on the language but we use same weight for each
+% letter.
+% \changes{v2.7i}{2001/05/17}{avoid overflows if a very large font is
+% used}^^A
+% \changes{v2.8q}{2002/03/06}{\cs{normalfont} \cs{normalsize} added}^^A
+% \changes{v2.95a}{2006/07/20}{fix of large font calculation}^^A
+% \begin{macrocode}
+\newcommand*\ta@temp@goodwidth{%
+ \settowidth{\ta@temp}{\normalfont\normalsize
+ abcdefghijklmnopqrstuvwxyz}%
+ \ifdim\ta@temp >200\p@
+ \setlength{\ta@temp}{2.53846\ta@temp}%
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+ \setlength{\@tempdima}{.11538\@tempdima}%
+ \addtolength{\ta@temp}{\@tempdima}%
+ \else
+ \multiply\ta@temp by66
+ \settowidth{\@tempdima}{\normalfont\normalsize
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
+ \multiply\@tempdima by3
+ \addtolength{\ta@temp}{\@tempdima}%
+ \divide\ta@temp by26
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterCalculatingTypearea}
+% \changes{v2.96a}{2006/11/29}{new}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by
+% \cs{kernel@ifstar}}^^A
+% Users can influence the behaviour of \cs{typearea} by a hook. The star
+% variation adds the code locally the non-star variation globally.
+% \begin{macrocode}
+\newcommand*{\AfterCalculatingTypearea}{%
+ \kernel@ifstar \l@addto@macro \g@addto@macro \@typearea@end
+}
+% \end{macrocode}
+% \begin{macro}{\@typearea@end}
+% \changes{v2.96a}{2006/11/29}{defined again but completely different}^^A
+% Macro \cs{@typearea@end} is a hook that is executed at the end of
+% \cs{typearea} but before the activation of the new settings. So you can
+% change the result of \cs{typearea}.
+% \begin{macrocode}
+\newcommand*{\@typearea@end}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\activateareas}
+% \changes{v2.96a}{2006/11/29}{new name for old macro}^^A
+% \changes{v3.17}{2015/02/07}{respect option \texttt{usegeometry}}^^A
+% This macro is used to activate the new typing area and margin settings
+% inside the document body. It is a hack, because is uses internal \LaTeX{}
+% kernel code.
+% \begin{macrocode}
+\newcommand*{\activateareas}{%
+% \end{macrocode}
+% First of all test, whether or not we are inside the document body. If not do
+% nothing.
+% \begin{macrocode}
+ \if@atdocument
+% \end{macrocode}
+% \changes{v3.23}{2017/04/03}{info instead of warning if used inside the
+% document body}^^A
+% But if, we show an info, because it is a hack. It depends in the \LaTeX{}
+% release. Nevertheless, it seems to be stable from the very first \LaTeXe{}
+% release. So we use an info only. Before v3.23 we have used a warning.
+% \begin{macrocode}
+ \PackageInfo{typearea}{%
+ Using dirty hack to recalculate internal output\MessageBreak
+ dimensions of LaTeX%
+ }%
+% \end{macrocode}
+% Now, set several internal and none internal \LaTeX{}lengths to the new
+% dimensions.
+% \begin{macrocode}
+ \@colht=\textheight
+ \@colroom=\textheight
+ \vsize=\textheight
+ \columnwidth=\textwidth
+ \if@twocolumn
+ \advance\columnwidth by-\columnsep
+ \divide\columnwidth by\tw@
+ \hsize=\columnwidth
+ \@firstcolumntrue
+ \fi
+ \hsize=\columnwidth
+ \linewidth\hsize
+ \scr@ifundefinedorrelax{@pagesizelast}{}{%
+ \KOMAoptions{pagesize=\@pagesizelast}%
+ }%
+% \end{macrocode}
+% \changes{v3.17}{2015/03/18}{adapt the \Option{parskip} settings}^^A
+% From v3.17 changes of the typing area can immediately change some of the
+% \Option{parskip} settings. Before |\begin{document}| the change will be done
+% automatically at |\begin{document}| and therefore adding it here is correct.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@ta@v@is@ge{3.17}%
+ \csname par@updaterelative\endcsname
+ \fi
+ \fi
+% \end{macrocode}
+% \changes{v3.17}{2015/02/07}{new code for option \Option{usegeometry}}
+% If option \Option{usegeometry} is active we need to setup several options of
+% package \Package{geometry}. We use \cs{scr@geometryargs} to store them. And
+% we either have to pass these options to \Package{geometry} or define a new
+% geometry. In the second case we also need some hacks to make the new paper
+% size available for \Package{geometry}.
+% \begin{macrocode}
+ \edef\scr@geometryargs{%
+ bindingoffset=\the\ta@bcor,
+ lmargin=\the\dimexpr 1in+\oddsidemargin-\ta@bcor\relax,
+ textwidth=\the\textwidth,
+ \if@hincl
+ includehead,%
+ top=\the\dimexpr 1in+\topmargin\relax,
+ \else
+ includehead=false,%
+ top=\the\dimexpr 1in+\topmargin+\headheight+\headsep\relax,
+ \fi
+ headheight=\the\headheight,
+ headsep=\the\headsep,
+ textheight=\the\textheight,
+ \if@fincl
+ includefoot,
+ \else
+ includefoot=false,
+ \fi
+ footskip=\the\footskip,
+ \if@mincl
+ includemp,
+ \else
+ includemp=false,
+ \fi
+ marginparwidth=\the\marginparwidth,
+ marginparsep=\the\marginparsep
+ }%
+ \if@ta@usegeometry
+ \@ifundefined{Gm@save}{%
+ \if@atdocument\else
+ \edef\scr@geometryargs{%
+ paperwidth=\the\paperwidth,paperheight=\the\paperheight,%
+ \scr@geometryargs
+ }%
+ \PassOptionsToPackage{\scr@geometryargs}{geometry}%
+ \fi
+ }{%
+ \edef\Gm@restore@org{\Gm@restore}%
+ \if@atdocument
+ \expandafter\newgeometry\expandafter{\scr@geometryargs}%
+ \else
+ \edef\scr@geometryargs{%
+ paperwidth=\the\paperwidth,paperheight=\the\paperheight,%
+ \scr@geometryargs
+ }%
+ \expandafter\geometry\expandafter{\scr@geometryargs}%
+ \fi
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{scr@geometryargs}
+% \changes{v3.16}{2015/02/07}{neu (intern)}^^A
+% The initialization of the \Package{geometry} options is empty. It will be
+% filled automatically by \cs{activateareas}.
+% \begin{macrocode}
+\newcommand*{\scr@geometryargs}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v2.4g}{1996/11/04}{waste comments removed}^^A
+% \changes{v2.7g}{2001/04/17}{new symbolic values \texttt{current},
+% \texttt{default}, \texttt{calc}, \texttt{classic}}^^A
+% \changes{v2.8q}{2001/11/06}{new symbolic value \texttt{last}}^^A
+% \changes{v2.96}{2006/08/21}{warn if \cs{typearea} is used inside a
+% group}^^A
+% \changes{v3.10}{2011/09/13}{using \cs{scr@grouplevel@test}}
+% \changes{v3.12}{2013/03/26}{page footer height configurable}^^A
+%
+% The symbolic values of the obligatory argument of \cs{typearea}:
+% \begin{center}\begin{tabular}{lll}
+% Symbol & Value & Meaning \\\hline\\[-2ex]
+% \texttt{calc} & 2 & calculate a good value \\
+% \texttt{classic} & 3 & \emph{mittelalterlicher Buchseitenkanon} \\
+% \texttt{current} & --- & use the current value \\
+% \texttt{default} & 0 & use a value from the list \\
+% \texttt{last} & --- & use the value from the last usage of
+% \cs{typearea} \\
+% \texttt{areaset} & --- & replace the current typing area \\
+% \end{tabular}\end{center}
+%
+% There is only one symbolic value that can be used as the optional argument:
+% \texttt{current}.
+% \begin{macrocode}
+\newcommand*\typearea[2][\z@]{%
+ \scr@grouplevel@test\typearea
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}%
+ \fi
+ \edef\@tempa{#2}%
+ \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv
+ \ifx\csname @tempa\endcsname\relax
+ \def\@tempa{current}%
+ \fi
+ \fi
+ \def\@tempb{areaset}\ifx\@tempa\@tempb
+ \areaset[current]{\textwidth}{\textheight}%
+ \else
+ \def\@tempb{current}\ifx\@tempa\@tempb\else
+ \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=\z@ \else
+ \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=\tw@ \else
+ \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=\thr@@ \else
+ \ta@div=\@tempa
+ \fi
+ \fi
+ \fi
+ \fi
+ \edef\@lastdiv{\the\ta@div}%
+% \end{macrocode}
+% Before we do the calculation we need to start a new page if we are inside
+% the document's body. And we need to select the document font size.
+% \changes{v2.95a}{2006/07/20}{select document font size}^^A
+% \begin{macrocode}
+ \if@atdocument\newpage\fi
+ \normalsize
+% \end{macrocode}
+% Is the height of the page head already given or do we need to calculate
+% it. If we need to calculate it we use 1.25 of the base lines distance. This
+% gives enough room for optional separation lines (which are set outside if
+% use \Package{scrlayer-scrpage}).
+% \changes{v2.4n}{1997/05/28}{page head height depends on base line
+% distance}^^A
+% \begin{macrocode}
+ \@ifundefined{ta@hh}{%
+ \headheight=1.25\baselineskip
+ }{%
+ \headheight=\ta@hh
+ }%
+% \end{macrocode}
+% The distance between the head and the text is always the same. Different
+% typographers recommend different values. A good value would result in a grid
+% that would be used for all lines of the page. But the distance should not to
+% large. Supposedly a good value would be the height of one text line. But
+% with head separation rule this wouldn't be a good value. So we use a
+% compromise.
+% \begin{macrocode}
+ \headsep=1.5\baselineskip
+% \end{macrocode}
+% The foot is a similar problem. But we have to setup also \cs{footskip} not
+% only \cs{footheight}.
+% \begin{macrocode}
+ \@ifundefined{footheight}{%
+ \newlength\footheight
+ }{}%
+ \@ifundefined{ta@fh}{%
+ \footheight=1.25\baselineskip
+ }{%
+ \footheight=\ta@fh
+ }%
+ \footskip=\dimexpr\footheight+2.25\baselineskip
+% \end{macrocode}
+% Some values also independent from the divisor and the binding correction.
+% \begin{macrocode}
+ \marginparsep=1cc
+ \marginparpush=0.45\baselineskip
+% \end{macrocode}
+% \changes{v2.4g}{1996/11/04}{\textit{DIV}=0 tries to use a value from the
+% default list}
+% Before we do the calculation we test, whether the resulting divisor is
+% 0. Values from 0 up to 3 are not possible because we use three parts for the
+% margins. So we can use 0 to get a value from the default value list if
+% available.
+% \changes{v2.5h}{1999/12/29}{warning message changed}^^A
+% \begin{macrocode}
+ \ifnum\ta@div=\z@
+ \@ifundefined{@ptsize}{%
+ \@tempdima=\f@size\p@
+ \advance\@tempdima by.5pt
+ \ta@div=\@tempdima
+ \divide\ta@div by65536
+ \advance\ta@div by-10
+ \xdef\@ptsize{\the\ta@div}%
+ \PackageWarningNoLine{typearea}{%
+ \string\@ptsize\space not defined!\MessageBreak
+ Fontsize is \f@size pt.\MessageBreak
+ Defining \string\@ptsize\space to \@ptsize%
+ }%
+ }{}%
+ \ta@divfor{\@ptsize}%
+ \fi
+% \end{macrocode}
+% \changes{v2.4n}{1997/05/28}{optional \emph{klassischer
+% Buchseitenkanon}}^^A
+% Another special case is if the divisor is 3. In this case we calculate a
+% divisor near to the \emph{klassischer Buchseitenkanon}. This means we try to
+% have the height of the typing area is as near as possible the width of the
+% paper. For classic paper size this should be a harmonious result.
+% \begin{macrocode}
+ \ifnum\ta@div=3
+ \typeout{DIV calculation for classic typearea.}%
+ \setlength{\ta@temp}{\paperwidth}%
+ \addtolength{\ta@temp}{-\ta@bcor}%
+% \end{macrocode}
+% Here we also need to take care for whether the head is part of the typing
+% area or the margin.
+% \begin{macrocode}
+ \if@hincl\else
+ \addtolength{\ta@temp}{\headheight}%
+ \addtolength{\ta@temp}{\headsep}%
+ \fi
+ \if@fincl\else
+ \addtolength{\ta@temp}{\footskip}%
+ \fi
+% \end{macrocode}
+% Sometimes we need more vertical space than available. In this case we use
+% another calculation. This will be defined later.
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} instead of \cs{ifnum}}
+% \begin{macrocode}
+ \ifdim \ta@temp >\paperheight
+ \PackageWarningNoLine{typearea}{%
+ No classic typearea with this papersize!\MessageBreak
+ Using calculated DIV%
+ }%
+ \ta@div=\@ne
+% \end{macrocode}
+% Otherwise we can calculate the height of all vertical margins by the height
+% of the paper width (without binding correction)
+% \begin{macrocode}
+ \else
+ \setlength{\ta@temp}{\paperheight}%
+ \addtolength{\ta@temp}{-\paperwidth}%
+ \addtolength{\ta@temp}{\ta@bcor}%
+% \end{macrocode}
+% and from this the height of one block
+% \begin{macrocode}
+ \divide\ta@temp by3
+% \end{macrocode}
+% and this will result in a divisor.
+% \begin{macrocode}
+ \ta@modiv{\paperheight}{\ta@temp}%
+ \fi
+% \end{macrocode}
+% Here we do not need to respect \Option{mpinclude} because we do not use the
+% width of the typing area but the height of the paper.
+% \begin{macrocode}
+ \fi
+% \end{macrocode}
+% If we did not found a good value until this point, we try to calculate the
+% optimal divisor.
+% \changes{v2.4n}{1997/05/28}{improved optimal divisor calculation}^^A
+% \begin{macrocode}
+ \ifnum\ta@div <4
+ \typeout{DIV calculation for typearea with good linewidth.}%
+% \end{macrocode}
+% The width of the typing area could at most be the width of the paper without
+% the binding correction.
+% \begin{macrocode}
+ \setlength{\textwidth}{\paperwidth}%
+ \addtolength{\textwidth}{-\ta@bcor}%
+% \end{macrocode}
+% The optimal width would be the optimal line width.
+% \begin{macrocode}
+ \ta@temp@goodwidth
+% \end{macrocode}
+% In two column mode each text line has two such columns plus the column
+% separation width.
+% \changes{v2.8q}{2001/12/13}{\texttt{DIVcalc} uses wider columns in two
+% column mode}^^A
+% \begin{macrocode}
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}%
+ \addtolength{\ta@temp}{\columnsep}%
+ \fi
+% \end{macrocode}
+% Former releases used an iterative approach to get the best
+% divisor. Depending on the \TeX{} implementation and the paper size this
+% could be more or less slow. So we do a direct calculation starting with the
+% width of the left and right margin.
+% \begin{macrocode}
+ \setlength{\ta@hblk}{\paperwidth}%
+ \addtolength{\ta@hblk}{-\ta@temp}%
+% \end{macrocode}
+% This can be used to calculate the width of a block.
+% \begin{macrocode}
+ \divide\ta@hblk by3
+% \end{macrocode}
+% If this width is negative, we use a minimum width of 5\,mm.
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} instead of \cs{ifnum}.}
+% \begin{macrocode}
+ \ifdim \ta@hblk <\z@
+ \setlength{\ta@hblk}{5mm}%
+ \fi
+% \end{macrocode}
+% The width of block and the width of the paper can be used to calculate the
+% divisor.
+% \changes{v2.8q}{2002/03/28}{respect \Option{mpinclude} at the calculation
+% of the best divisor}^^A
+% If option \Option{mpinclude} is active, we have to multiply the divisor with
+% $\frac{3}{3+m}$. $m$ is the number of blocks used for the margin notes. If
+% $m=1$ we have an factor of $\frac{3}{4}=0.75$. More difficult would be not
+% to use a number of blocks for the margin note column but a dedicated value
+% for the width of the margin note column.
+% \begin{macrocode}
+ \if@mincl
+ \setlength{\ta@temp}{.75\ta@hblk}%
+ \else
+ \setlength{\ta@temp}{\ta@hblk}%
+ \fi
+ \ta@modiv{\paperwidth}{\ta@temp}%
+% \end{macrocode}
+% Another difficulty would be, if the divisor now is optimal for the width but
+% result in a to large height. To find this out, we first calculate the typing
+% area and margins with the found divisor.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% Now, we test the vertical sizes. Again a minimum block size is of 5\,mm will
+% be used. But we have to take care the 1\,in of \TeX!
+% \changes{v2.5a}{1997/06/22}{\cs{ifdim} instead of \cs{ifnum}}
+% \begin{macrocode}
+ \setlength{\ta@temp}{-1in}%
+ \addtolength{\ta@temp}{5mm}%
+ \ifdim\topmargin <\ta@temp
+% \end{macrocode}
+% This would be the minimum top margin. If the margin is less, we need another
+% divisor. In this case we also have to recognize whether the page head and
+% footer are part of the margins or the typing area.
+% \changes{v2.5b}{1997/06/29}{take care for \Option{headinclude} and
+% \Option{footinclude} while calculating the divisor for minimum top
+% margin}^^A
+% \begin{macrocode}
+ \setlength{\ta@temp}{15mm}%
+ \if@hincl\else
+ \addtolength{\ta@temp}{\headheight}%
+ \addtolength{\ta@temp}{\headsep}%
+ \fi
+ \if@fincl\else
+ \addtolength{\ta@temp}{\footskip}%
+ \fi
+ \divide\ta@temp by3
+ \ta@modiv{\paperheight}{\ta@temp}%
+ \fi
+% \end{macrocode}
+% A solution for this difficulty has been found.
+% \begin{macrocode}
+ \fi
+% \end{macrocode}
+% So now we have the final divisor and can do the final calculation.
+% \begin{macrocode}
+ \@typearea
+% \end{macrocode}
+% \changes{v2.0e}{1994/10/28}{write layout values to the \File{log} file}^^A
+% \changes{v2.4i}{1996/11/11}{write to the \File{log} file later}^^A
+% \changes{v2.4i}{1996/11/11}{execute \cs{@typearea@end} at the end of
+% \cs{typearea}}^^A
+% \changes{v2.4j}{1996/12/04}{\File{log} output with only one
+% \cs{textheight} but additional \cs{baselineskip}}^^A
+% \changes{v2.5}{1997/06/17}{"`arithmetic overflow"' with \Option{landscape}
+% fixed}^^A
+% \changes{v2.95}{2004/01/30}{warning in two column mode fixed}^^A
+% \changes{v3.00}{2008/10/08}{use \cs{ta@layoutinfo} to write the layout
+% values into the \File{log} file}^^A
+% \changes{v3.01b}{2008/12/09}{warning for sub-optimal settings changed}^^A
+% \changes{v3.26}{2018/07/16}{warning about long lines changed}^^A
+% \changes{v3.26}{2018/07/16}{warning about small lines changed and
+% replaced by an info}^^A
+% Last but not least we write some layout values into the \File{log} file. For
+% some of the information we need additional calculations, e.g., of a good
+% line width.
+% \begin{macrocode}
+ \ta@temp@goodwidth
+ \if@twocolumn
+ \addtolength{\ta@temp}{\ta@temp}%
+ \addtolength{\ta@temp}{\columnsep}%
+ \fi
+ \setlength{\@tempdima}{\ta@temp}%
+ \addtolength{\ta@temp}{-\textwidth}%
+ \divide\@tempdima by100
+ \divide\ta@temp by\@tempdima
+ \@tempcnta=\ta@temp
+ \ifnum\@tempcnta <5
+ \ifnum\@tempcnta >-5
+ \@tempcnta=0
+ \else
+ \advance\@tempcnta by4
+ \fi
+ \else
+ \advance\@tempcnta by-4
+ \fi
+ \ifnum\@tempcnta <-15
+ \@tempcnta=-\@tempcnta
+ \PackageWarningNoLine{typearea}{%
+ Bad type area settings!\MessageBreak
+ The detected line width is about
+ \the\@tempcnta\@percentchar\MessageBreak
+ larger than the heuristically estimated maximum\MessageBreak
+ limit of typographical good line width.\MessageBreak
+ You should e.g.
+ \ifnum\ta@div >6 decrease DIV, \fi
+ \ifdim\f@size\p@<\@xiipt\p@ increase fontsize\else
+ (increase fontsize)\fi\MessageBreak
+ or change papersize%
+ }%
+ \@tempcnta=-\@tempcnta
+ \else
+ \ifnum\@tempcnta>15
+ \PackageInfoNoLine{typearea}{%
+ Maybe no optimal type area settings!\MessageBreak
+ The detected line width is about
+ \the\@tempcnta\@percentchar\MessageBreak
+ smaller than the heuristically estimated maximum\MessageBreak
+ limit of typographical good line width.\MessageBreak
+ You could e.g. increase DIV%
+ \ifdim\f@size\p@>\@xpt\p@, decrease fontsize\fi\MessageBreak
+ or change the papersize%
+ }%
+ \fi\fi
+ \ifnum\ta@div <6
+ \PackageWarningNoLine{typearea}{%
+ Very low DIV value!\MessageBreak
+ DIV values less than 6 result in textwidth/-height\MessageBreak
+ smaller than total marginwidth/-height.\MessageBreak
+ You should e.g. increase DIV, increase fontsize or\MessageBreak
+ change papersize%
+ }
+ \fi
+ \ta@layoutinfo{\number\ta@div}{\the\@tempcnta}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{DIV}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{DIV}{\@lastdiv}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{BCOR}%
+ \KOMA@kav@xadd{.typearea.\scr@pkgextension}{BCOR}{\the\ta@bcor}%
+ \@typearea@end
+ \activateareas
+ \ifdim \dimexpr 1in+\topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip+\dp\strutbox\relax
+ >\paperheight
+ \PackageWarningNoLine{typearea}{%
+ page content and margins higher than paper.\MessageBreak
+ This may result in page footer out of paper.\MessageBreak
+ You should decrease DIV, decrease foot height,\MessageBreak
+ or include footer into type area%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ta@layoutinfo}
+% \changes{v3.00}{2008/10/08}{new (internal)}^^A
+% Write several layout information into the \File{log} file. The first
+% argument is the current divisor and the second the discrepancy from the
+% optimal divisor or empty or \cs{relax}.
+% \begin{macrocode}
+\newcommand*{\ta@layoutinfo}[2]{%
+ \PackageInfo{typearea}{%
+ These are the values describing the layout:\MessageBreak
+ DIV\space\space=\space#1\MessageBreak
+ BCOR\space=\space\the\ta@bcor\MessageBreak
+ \string\paperwidth\space\space\space\space\space\space=%
+ \space\the\paperwidth\MessageBreak
+ \space\string\textwidth\space\space\space\space\space\space=%
+ \space\the\textwidth\MessageBreak
+ \ifx\relax#2\relax\else
+ \space DIV departure\space\space\space=%
+ \space#2\@percentchar\MessageBreak
+ \fi
+ \space\string\evensidemargin\space=%
+ \space\the\evensidemargin\MessageBreak
+ \space\string\oddsidemargin\space\space=%
+ \space\the\oddsidemargin\MessageBreak
+ \string\paperheight\space\space\space\space\space=%
+ \space\the\paperheight\MessageBreak
+ \space\string\textheight\space\space\space\space\space=%
+ \space\the\textheight\MessageBreak
+ \space\string\topmargin\space\space\space\space\space\space=%
+ \space\the\topmargin\MessageBreak
+ \space\string\headheight\space\space\space\space\space=%
+ \space\the\headheight\MessageBreak
+ \space\string\headsep\space\space\space\space\space\space\space\space=%
+ \space\the\headsep\MessageBreak
+ \space\string\topskip\space\space\space\space\space\space\space\space=%
+ \space\the\topskip\MessageBreak
+ \space\string\footskip\space\space\space\space\space\space\space=%
+ \space\the\footskip\MessageBreak
+ \space\string\baselineskip\space\space\space=%
+ \space\the\baselineskip\MessageBreak
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\recalctypearea}
+% \changes{v2.95}{2002/12/04}{new}^^A
+% This command can be used to recalculate the typing area and the margins with
+% the divisor and the binding correction that has been used last. The command
+% is available only after loading the package. So it is an indicator if we
+% are in the load or the run-time phase of the package.
+% \begin{macrocode}
+\AtEndOfPackage{\newcommand*{\recalctypearea}{\typearea[current]{last}}}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{macro}
+%
+% Initially \cs{ta@bcor} and \cs{ta@div} are zero if is has not been set using
+% one of the options. The 0 divisor stands for using a value from the default
+% list. So the final initialization of the typing area and margins is very
+% easy.
+% \changes{v2.8q}{2001/11/06}{initialization using symbolic values
+% \texttt{current}}^^A
+% \begin{macrocode}
+%<*package&typearea&final>
+\typearea[current]{current}
+%</package&typearea&final>
+% \end{macrocode}
+%
+% \subsection{Storage and reactivation of typing area and margin settings}
+%
+% \begin{macro}{\storeareas}
+% \changes{v3.10}{2011/09/13}{new}^^A
+% \changes{v3.18}{2015/05/20}{Hooks at the beginning and end of the defined
+% macro}^^A
+% You can store the current settings of the typing area and the margins in a
+% macro. If you use the macro later the stored settings will be restored.
+% \begin{macro}{\scr@grouplevel@test}
+% \changes{v3.10}{2011/09/13}{new (internal)}^^A
+% Warn if restoring the settings is used inside a group.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newcommand*{\scr@grouplevel@test}[1]{%
+ \ifcase\currentgrouptype\else
+ \PackageWarning{typearea}{%
+ \string#1\space used at group level
+ \the\currentgrouplevel.\MessageBreak
+ Using \string#1\space inside any group, e.g.\MessageBreak
+ environments, math mode, boxes, etc. may result in\MessageBreak
+ many type setting problems.\MessageBreak
+ You should move the command \string#1\MessageBreak
+ outside all groups%
+ }%
+ \fi
+}
+\newcommand*{\storeareas}[1]{%
+ \edef\reserved@a{%
+ \noexpand\newcommand*{\unexpanded{#1}}{%
+ \noexpand\scr@grouplevel@test\unexpanded{#1}%
+ \noexpand\csname scr@storeareas@before@hook\noexpand\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@storeareas@before@current@hook\endcsname}%
+ \noexpand\paperheight=\the\paperheight\space
+ \noexpand\paperwidth=\the\paperwidth\space
+ \noexpand\topmargin=\the\topmargin\space
+ \noexpand\headheight=\the\headheight\space
+ \noexpand\headsep=\the\headsep\space
+ \noexpand\textheight=\the\textheight\space
+ \noexpand\vsize=\the\vsize\space
+ \noexpand\footskip=\the\footskip\space
+ \noexpand\@colht=\the\@colht\space
+ \noexpand\@colroom=\the\@colroom\space
+ \noexpand\textwidth=\the\textwidth\space
+ \noexpand\columnwidth=\the\columnwidth\space
+ \noexpand\hsize=\the\hsize\space
+ \noexpand\oddsidemargin=\the\oddsidemargin\space
+ \noexpand\evensidemargin=\if@twoside
+ \the\evensidemargin
+ \else
+ \the\oddsidemargin
+ \fi\space
+ \noexpand\linewidth=\the\linewidth\space
+ \noexpand\maxdepth=\the\maxdepth\space
+ \scr@ifundefinedorrelax{@pagesizelast}{}{%
+ \noexpand\KOMAoptions{pagesize=\@pagesizelast}}%
+ \noexpand\ta@div=\the\ta@div\space
+ \noexpand\ta@bcor=\the\ta@bcor\space
+ \noexpand\def\noexpand\@lastdiv{\@lastdiv}%
+ \noexpand\marginparsep=\the\marginparsep\space
+ \noexpand\marginparwidth=\the\marginparwidth\space
+ \noexpand\def
+ \expandafter\noexpand\csname scr@kav@KOMA.typearea.\scr@pkgextension\endcsname{%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@kav@KOMA.typearea.\scr@pkgextension\endcsname}%
+ }%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@storeareas@after@current@hook\endcsname}%
+ \noexpand\csname scr@storeareas@after@hook\noexpand\endcsname
+ }%
+ }%
+ \reserved@a
+}
+% \end{macrocode}
+% \begin{macro}{\BeforeRestoreareas}
+% \changes{v3.18}{2015/05/20}{new}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by
+% \cs{kernel@ifstar}}^^A
+% \begin{macro}{\AfterRestoreareas}
+% \changes{v3.18}{2015/05/20}{new}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} replaced by
+% \cs{kernel@ifstar}}^^A
+% \begin{macro}{\scr@storeareashook}
+% \changes{v3.18}{2015/05/20}{new (internal)}^^A
+% \begin{macro}{\scr@storeareas@before@hook}
+% \changes{v3.18}{2015/05/20}{new (internal)}^^A
+% \begin{macro}{\scr@storeareas@before@current@hook}
+% \changes{v3.18}{2015/05/20}{new (internal)}^^A
+% \begin{macro}{\scr@storeareas@after@hook}
+% \changes{v3.18}{2015/05/20}{new (internal)}^^A
+% \begin{macro}{\scr@storeareas@after@current@hook}
+% \changes{v3.18}{2015/05/20}{new (internal)}^^A
+% Adds code to one of the hooks of the macros defined by \cs{storeareas}.
+% The star variants adds code only to not yet defined macros. The non-star
+% variant also changes already defined macros.
+% \begin{macrocode}
+\newcommand*{\BeforeRestoreareas}{%
+ \kernel@ifstar{\scr@storeareashook{before@current}}%
+ {\scr@storeareashook{before}}%
+}
+\newcommand*{\AfterRestoreareas}{%
+ \kernel@ifstar{\scr@storeareashook{after@current}}%
+ {\scr@storeareashook{after}}%
+}
+\newcommand*{\scr@storeareashook}[2]{%
+ \expandafter\l@addto@macro\csname scr@storeareas@#1@hook\endcsname{#2}%
+}
+\newcommand*{\scr@storeareas@before@hook}{}
+\newcommand*{\scr@storeareas@before@current@hook}{}
+\newcommand*{\scr@storeareas@after@hook}{}
+\newcommand*{\scr@storeareas@after@current@hook}{}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{macro}^^A \scr@storeareas@after@current@hook
+% \end{macro}^^A \scr@storeareas@after@hook
+% \end{macro}^^A \scr@storeareas@before@current@hook
+% \end{macro}^^A \scr@storeareas@before@hook
+% \end{macro}^^A \scr@storeareashook
+% \end{macro}^^A \AfterRestoreareas
+% \end{macro}^^A \BeforeRestoreareas
+% \end{macro}^^A \scr@grouplevel@test
+% \end{macro}^^A \storeareas
+%
+% \subsection{Calculation of margins for a given typing area}
+%
+% Beside the calculation of the typing area and the margins by a divisor
+% \Package{typearea} also provides the calculation of margins for a given
+% typing area.
+%
+% \begin{option}{areasetadvanced}
+% \changes{v3.11}{2012/04/17}{new}^^A
+% Switch to advanced version of \cs{areaset}. This does calculate margins
+% more like \cs{typearea}. Nevertheless, there's still a difference at the top
+% margin, because \cs{typerea} doesn't balance differences in calculated
+% height of margins and resulting height of margins but reduces only the
+% bottom margin.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@ifkey{areasetadvanced}{@areasetadvanced}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\areaset}
+% \changes{v2.1b}{1994/12/31}{\cs{headheight} depends on \cs{@ptsize}}^^A
+% \changes{v2.6}{2000/01/04}{\cs{headheight} depends on \cs{f@size} instead
+% of \cs{@ptsize}}^^A
+% \changes{v2.7g}{2001/04/17}{symbolic value \texttt{current} for the
+% optional argument}^^A
+% \changes{v2.95}{2002/12/05}{execute \cs{@typearea@end} at the end of
+% \cs{areaset}}^^A
+% If we have given width and height of the typing area we still can calculate
+% the margins. Again we want to use this not only in the document preamble but
+% also in the document body.
+% \begin{macrocode}
+%<*package&typearea&body>
+\newcommand*\areaset[3][\z@]{%
+ \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else
+ \setlength{\ta@bcor}{#1}%
+ \fi
+% \end{macrocode}
+% We have to start a new page if we are inside the document body.
+% \begin{macrocode}
+ \if@atdocument\newpage\fi
+% \end{macrocode}
+% Then we do the calculation.
+% \changes{v2.96}{2006/09/12}{set \cs{topskip}}
+% \changes{v3.00}{2008/10/08}{use \cs{ta@layoutinfo} to write layout
+% information into the \File{log} file}^^A
+% \begin{macrocode}
+ \setlength{\textwidth}{#2}%
+ \setlength{\textheight}{#3}%
+ \def\@lastdiv{areaset}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{DIV}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{DIV}{areaset}%
+ \KOMA@kav@removekey{.typearea.\scr@pkgextension}{BCOR}%
+ \KOMA@kav@add{.typearea.\scr@pkgextension}{BCOR}{\the\ta@bcor}%
+ \ta@hblk=\paperwidth
+ \advance\ta@hblk by-\ta@bcor
+ \advance\ta@hblk by-\textwidth
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different margin widths}%
+% With v3.11 we will have an advanced version of \cs{areaset}. This
+% version takes care to option \texttt{mpinclude}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \if@mincl
+ \divide\ta@hblk by4
+ \else
+ \divide\ta@hblk by3
+ \fi
+ \else
+ \divide\ta@hblk by3
+ \fi
+ \oddsidemargin=-1in
+ \evensidemargin=-1in
+ \if@twoside
+ \if@semitwoside
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+% \end{macrocode}
+% \changes{v3.12}{2013/10/15}{use alternating \texttt{BCOR} with
+% \texttt{twoside!=semi}}
+% If \Option{twoside=semi} is used, form v3.12 we add the binding correction
+% to the inner margin. If compatibility to version less than 3.12 has been
+% selected the binding correction will be added to the left margin.
+% \begin{macrocode}
+ \expandafter\ifnum\scr@ta@v@is@lt{3.12}\relax
+ \evensidemargin=\oddsidemargin
+ \else
+ \advance\evensidemargin by1.5\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \advance\evensidemargin by2\ta@hblk
+ \fi
+ \else
+ \advance\oddsidemargin by1.5\ta@hblk
+ \advance\oddsidemargin by\ta@bcor
+ \evensidemargin\oddsidemargin
+ \fi
+ \scr@ifundefinedorrelax{@ptsize}{%
+ \topskip=\f@size\p@
+ }{%
+ \topskip=\@ptsize\p@
+ \advance\topskip by 10\p@
+ }%
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different margin widths}%
+% With v3.11 we will have an advanced version of \cs{areaset}. This
+% version uses the head height algorithm of \cs{typearea}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \normalsize
+ \@ifundefined{ta@hh}{%
+ \headheight=1.25\baselineskip
+ }{%
+ \headheight=\ta@hh
+ }%
+ \else
+ \headheight=15\p@
+ \advance\headheight by\f@size\p@
+ \advance\headheight by-10\p@
+ \fi
+ \headsep=1.5\baselineskip
+% \end{macrocode}
+% \changes{v3.12}{2013/03/26}{changes for height of foot}^^A
+% \begin{macrocode}
+ \@ifundefined{footheight}{\newlength\footheight}{}
+ \if@areasetadvanced
+ \@ifundefined{ta@fh}{%
+ \footheight=1.25\baselineskip
+ \footskip=3.5\baselineskip
+ }{%
+ \footheight=\ta@fh
+ \footskip=\dimexpr \footheight+2.25\baselineskip\relax
+ }%
+ \else
+ \footheight=1.25\baselineskip
+ \footskip=3.5\baselineskip
+ \fi
+ \ta@vblk=\paperheight
+ \advance\ta@vblk by-\textheight
+ \divide\ta@vblk by3
+ \if@hincl
+ \advance\textheight by-\headheight
+ \advance\textheight by-\headsep
+ \fi
+ \if@fincl
+ \advance\textheight by-\footskip
+ \fi
+ \topmargin=-1in
+ \advance\topmargin by\ta@vblk
+ \if@hincl \else
+ \advance\topmargin by-\headheight
+ \advance\topmargin by-\headsep
+ \fi
+ \if@twoside
+ \if@semitwoside
+ \marginparwidth=\ta@hblk
+ \else
+ \marginparwidth=1.5\ta@hblk
+ \fi
+ \else
+ \marginparwidth=\ta@hblk
+ \fi
+ \marginparsep=1cc
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{advanced version with different
+% \cs{marginparwidth} and unchanged \cs{marginparsep}}%
+% With version 3.11 we will have an advanced version of \cs{areaset}. This
+% version supports \texttt{mpinclude} option like \cs{typearea}.
+% \begin{macrocode}
+ \if@areasetadvanced
+ \if@mincl
+ \marginparwidth=\ta@hblk
+ \if@twoside\if@semitwoside\else
+ \advance\evensidemargin by\marginparwidth
+ \fi\fi
+ \advance\marginparwidth by-\marginparsep
+ \fi
+ \fi
+ \marginparpush=0.45\baselineskip
+ \ta@layoutinfo{areaset}{}%
+% \end{macrocode}
+% \changes{v3.11}{2012/04/17}{using \cs{@areaset@end}}^^A
+% \changes{v3.16a}{2015/02/11}{using \cs{footheight} for calculation of
+% page usage}^^A
+% Since v3.11 we also support \cs{AfterSettingArea} analogous to
+% \cs{AfterCalculatingTypearea}:
+% \begin{macrocode}
+ \@areaset@end
+ \activateareas
+ \ifdim \dimexpr 1in+\topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip+\footheight-\ht\strutbox\relax
+ >\paperheight
+ \PackageWarningNoLine{typearea}{%
+ page content and margins higher than paper.\MessageBreak
+ This may result in page footer out of paper.\MessageBreak
+ You should decrease DIV, decrease foot height,\MessageBreak
+ or decreate height of text area%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AfterSettingArea}
+% \changes{v3.11}{2012/04/17}{new}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% The user may influence the result of \cs{areaset}. The star version works
+% local while the non-star version is global.
+% \begin{macrocode}
+\newcommand*{\AfterSettingArea}{%
+ \kernel@ifstar \l@addto@macro \g@addto@macro \@areaset@end
+}
+% \end{macrocode}
+% \begin{macro}{\@areaset@end}
+% \changes{v3.11}{2012/04/17}{new}^^A
+% Macro \cs{@areaset@end} is a hook to make it possible to add some
+% instructions to the end of the \cs{areaset} command. This will be executed
+% before the activation of the settings inside a document.
+% \begin{macrocode}
+\newcommand*{\@areaset@end}{}
+%</package&typearea&body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Deprecated options}
+%
+% Former versions of \KOMAScript{} had some options that are completely
+% deprecated since \KOMAScript{} 3.00. Most of them but not all are pattern
+% matching options.
+%
+% \begin{option}{DIVcalc}
+% \changes{v2.4g}{1996/11/04}{new}^^A
+% \changes{v2.95}{2002/12/04}{implemented using option \Option{DIV}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% \begin{option}{DIVclassic}
+% \changes{v2.4n}{1997/05/28}{new}^^A
+% \changes{v2.95}{2002/12/04}{implemented using option \Option{DIV}}^^A
+% \changes{v2.97d}{2007/10/03}{\cs{PackageInfo} replaced by
+% \cs{PackageInfoNoLine}}^^A
+% \changes{v3.01a}{2008/11/21}{deprecated}^^A
+% The former form of \Option{DIV=}\Option{calc} and
+% \Option{DIV=}\Option{classic}.
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMA@DeclareDeprecatedOption[typearea]{DIVcalc}{DIV=calc}
+\KOMA@DeclareDeprecatedOption[typearea]{DIVclassic}{DIV=classic}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{option}^^A DIVclassic
+% \end{option}^^A DIVcalc
+%
+% \begin{option}{a\meta{integer}paper}
+% \begin{option}{b\meta{integer}paper}
+% \begin{option}{c\meta{integer}paper}
+% \begin{option}{d\meta{integer}paper}
+% Formerly \Option{a}\meta{integer}\Option{paper},
+% \Option{b}\meta{integer}\Option{paper},
+% \Option{c}\meta{integer}\Option{paper},
+% \Option{d}\meta{integer}\Option{paper} has been documented. Since
+% \KOMAScript{} v3.00 most of them are deprecated and has been replaced by
+% option \Option{paper}. Nevertheless, for compatibility these options and the
+% commands needed to recognize and handle them are still implemented.
+%
+% The documentation of the deprecated part of the feature is still in German.
+% \selectlanguage{ngerman}
+%
+% \begin{macro}{\x@paper}
+% \begin{macro}{\x@@paper}
+% \changes{v2.5}{1997/06/17}{neue Mustererkennung für die
+% Papiergröße}^^A
+% Diese Makros werden ebenfalls später benötigt, wenn die Papiergröße
+% festgelegt wird.
+% \begin{macro}{\isopaper}
+% \changes{v2.5}{1997/06/17}{neu}^^A
+% \changes{v2.95}{2002/12/03}{es sind auch Großbuchstaben erlaubt}^^A
+% \changes{v3.23}{2017/02/22}{verwendet \cs{ISO@PaperNameToSize}}^^A
+% Da das Makro \cs{isopaper} zur Berechnung unterschiedlicher
+% ISO/DIN-Papierformate in der Mustererkennung für die Papiergröße
+% benötigt wird, wurde dieses Makro ebenfalls vorgezogen.
+% \begin{macrocode}
+%<*package&typearea&options>
+\newcommand\isopaper[2][a]{%
+% \end{macrocode}
+% Das Makro kennt zwei Parameter, von denen der erste und optionale
+% die Grundgröße angibt. Die Angabe erfolgt über einen
+% Buchstaben. Möglich sind
+% \begin{description}
+% \item[a] -- ISO/DIN-A-Format
+% \item[b] -- ISO/DIN-B-Format
+% \item[c] -- ISO/DIN-C-Format
+% \item[d] -- ISO/DIN-D-Format
+% \end{description}
+% Der zweite Paremeter gibt dann die Skalierung an.
+% \begin{macrocode}
+ \ISO@PaperNameToSize[typearea]#1#2\@nil
+% \end{macrocode}
+% Jetzt noch die gewünschte Ausrichtung beachten.
+% \changes{v2.97e}{2007/10/23}{gewünschte Papierausrichtung wird
+% beachtet}^^A
+% \changes{v3.22}{2016/07/29}{Papierausrichtung entsprechend dem
+% tatsächlichen Format}^^A
+% \begin{macrocode}
+ \expandafter\ifnum\scr@ta@v@is@ge{3.22}\relax
+ \scr@setpaperorientation
+ \else
+ \if@landscape\scr@switchpapersizes\fi
+ \fi
+}
+% \end{macrocode}
+% \textsf{typearea} verwendet eine eigene Fehlerausgabe.
+% \begin{macro}{\scr@UnknownPaperSize@typearea}
+% \changes{v3.23}{2017/02/22}{neu (intern)}
+% \begin{macrocode}
+\ProvideUnknownPaperSizeError{typearea}{%
+ \PackageError{typearea}{%
+ Unknown ISO/DIN-papersize-letter #1%
+ }{%
+ There are only four defined paper scalings:\MessageBreak
+ a = ISO/DIN-A, b = ISO/DIN-B, c = ISO/DIN-C,
+ d = ISO/DIN-D\MessageBreak
+ Read KOMA-Script-documentation for further information.%
+ }%
+ \setlength{\paperwidth}{841sp}%
+ \setlength{\paperheight}{1189sp}%
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@UnknownPaperSize@typearea
+% \end{macro}^^A \isopaper
+% \begin{macro}{\scr@setpaperorientation}
+% \changes{v3.22}{2016/07/29}{neu (intern)}
+% Stellt die Papierausrichtung entsprechend \cs{if@landscape} ein.
+% \begin{macrocode}
+\newcommand*\scr@setpaperorientation{%
+ \ifdim\paperheight>\paperwidth
+ \if@landscape\scr@switchpapersizes\fi
+ \else
+ \if@landscape\else\scr@switchpapersizes\fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@switchpapersizes}
+% \changes{v3.22}{2016/07/29}{neu (intern)}
+% Vertauscht zwei Längen.
+% \begin{macrocode}
+\newcommand*\scr@switchpapersizes{%
+ \@tempdima\paperwidth\paperwidth\paperheight\paperheight\@tempdima
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@switchlength
+% \end{macro}^^A \scr@setpaperorientation
+% \begin{macro}{\iso@paper}
+% \changes{v2.95}{2002/12/03}{neu (intern)}^^A
+% Ein ganz ähnlicher interner Befehl erhält den gesamten Namen des
+% ISO-Papierformats als einziges Argument.
+% \begin{macro}{\iso@@paper}
+% \changes{v2.95}{2002/12/03}{neu (intern)}^^A
+% Dieses Argument wird dann über einen weiteren internen Befehl per
+% Mustererkennung in den Kennbuchstaben und eine Zahl zerlegt.
+% \begin{macrocode}
+\newcommand*{\iso@paper}[1]{\expandafter\iso@@paper#1\@nil}
+\newcommand*{\iso@@paper}{}
+\def\iso@@paper#1#2\@nil{%
+ \@tempswafalse
+ \if #1a\@tempswatrue
+ \else\if #1A\@tempswatrue
+ \else\if #1b\@tempswatrue
+ \else\if #1B\@tempswatrue
+ \else\if #1c\@tempswatrue
+ \else\if #1C\@tempswatrue
+ \else\if #1d\@tempswatrue
+ \else\if #1D\@tempswatrue
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \if@tempswa
+ \ifnumber{#2}{\isopaper[#1]{#2}}{\@tempswafalse}%
+ \fi
+}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}^^A \iso@@paper
+% \end{macro}^^A \iso@paper
+% \selectlanguage{english}
+%
+% \begin{option}{DIV\meta{integer}}
+% \begin{option}{BCOR\meta{length}}
+% Formerly \Option{DIV}\meta{integer}, \Option{BCOR}\meta{length},
+% \Option{headlines}\meta{real} has been documented as options. Since
+% \KOMAScript{} 3.00 these have been replaced by \Option{DIV=}\meta{integer},
+% \Option{BCOR=}\meta{length} and
+% \Option{headlines=}\meta{real}. Nevertheless, for compatibility the
+% deprecated options are still handled by \Macro{DeclareOption*} and so we
+% need several helper macros to recognize them.
+%
+% The documentation of the deprecated part of the feature is still in German.
+% \selectlanguage{ngerman}
+%
+% \begin{macro}{\@BCOR}
+% \begin{macro}{\@@BCOR}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch
+% Mustererkennung ersetzt}^^A
+% Das Makro \cs{@BCOR} wird später benötigt, um die Option
+% \texttt{BCOR\emph{BCOR}} zu erkennen. Die Option wird über ihr
+% Muster erkannt.
+% \begin{macrocode}
+%<*(class|(package&typearea))&options>
+\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR}
+\newcommand*{\@@BCOR}{}
+\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{%
+% \end{macrocode}
+% Handelt es sich um die Option \texttt{BCOR}, so ist der erste
+% Parameter leer.
+% \begin{macrocode}
+ \ifstr{#1}{}{%
+% \end{macrocode}
+% Außerdem ist der dritte Parameter dann \texttt{BCOR}.
+% \begin{macrocode}
+ \ifstr{#3}{BCOR}{%
+% \end{macrocode}
+% Der zweite Parameter sollte dann die Größe enthalten. Ist dies
+% nicht der Fall, wird ein Fehler gemeldet (Fehlerzeile ist dann
+% \cs{ProcessOptions}).
+% \changes{v3.22}{2016/07/29}{missing deprecated option warning added}^^A
+% \begin{macrocode}
+%<class> \PassOptionsToPackage{BCOR#2}{typearea}%
+%<*package>
+ \ifdimen{#2}{%
+ \KOMA@UseDeprecatedOption{%
+ \PackageWarningNoLine{typearea}}{BCOR#2}{BCOR=#2}%
+ }{\scr@pti@nerr@r}%
+%</package>
+% \end{macrocode}
+% In allen anderen Fällen ist es nicht diese Option, dann wird ein
+% Fehler ausgegeben. Stattdessen könnte hier auch auf weitere Optionen
+% getestet werden.
+% \begin{macrocode}
+ }{\scr@pti@nerr@r}%
+ }{\scr@pti@nerr@r}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@DIV}
+% \begin{macro}{\@@DIV}
+% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch
+% Mustererkennung ersetzt}^^A
+% \changes{v3.22}{2016/07/29}{missing deprecated option warning added}^^A
+% Die grundsätzliche Funktion ist die gleiche wie bei \cs{@BCOR},
+% \cs{@@BCOR}.
+% \begin{macrocode}
+\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV}
+\newcommand*{\@@DIV}{}
+\def\@@DIV #1DIV#2DIV#3\@@DIV{%
+ \edef\@tempa{#1}\ifx\@tempa\@empty
+ \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb
+%<class> \PassOptionsToPackage{DIV#2}{typearea}%
+%<*package>
+ \ifnumber{#2}{%
+ \KOMA@UseDeprecatedOption{%
+ \PackageWarningNoLine{typearea}}{DIV#2}{DIV=#2}%
+ }{\scr@pti@nerr@r}%
+%</package>
+ \else\scr@pti@nerr@r\fi
+% \end{macrocode}
+% Der Unterschied liegt darin, dass bei einem Fehlschlag der
+% Mustererkennung kein Fehler vorliegt, sondern u.\,U. noch auf
+% \texttt{BCOR} getestet werden muss.
+% \begin{macrocode}
+ \else\@BCOR\fi
+}
+% \end{macrocode}
+% \end{macro}^^A \@@DIV
+% \end{macro}^^A \@DIV
+%
+% \begin{option}{headlines\meta{integer}}
+% \begin{macro}{\@headlines}
+% \begin{macro}{\@@headlines}
+% \changes{v2.7g}{2001/04/17}{neue Mustererkennung für die Anzahl
+% der Kopfzeilen}^^A
+% Das Macro \cs{@headlines} wird benötigt, um die Option
+% \texttt{headlines} zu erkennen.
+% \begin{macrocode}
+\newcommand{\@headlines}{%
+ \expandafter\@@headlines\CurrentOption headlines\@@headlines%
+}
+\newcommand*{\@@headlines}{}
+\def\@@headlines #1headlines#2\@@headlines{
+ \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb
+%<class> \PassOptionsToPackage{#1headlines}{typearea}
+%<package> \setlength{\@tempdima}{#1\baselineskip}%
+%<package> \def\ta@hh{#1\baselineskip}%
+ \else\@DIV\fi
+}
+%</(class|(package&typearea))&options>
+% \end{macrocode}
+% \end{macro}^^A \@headlines
+% \end{macro}^^A \@@headlines
+%
+% \selectlanguage{english}
+% Starting point for all the deprecated pattern matching options is
+% \Macro{DeclareOption*} for command \Macro{x@paper} that uses pattern
+% matching with \Macro{x@@paper} to recognize the deprecated options. These
+% are needed not only for package \Package{typearea} but also for the classes.
+%
+% The documentation of the deprecated part of the feature is still in German.
+% \selectlanguage{ngerman}
+% Zurück zur Mustererkennung. Diese ist tatsächlich etwas einfacher
+% als die in den beiden Fällen zuvor.
+% \changes{v2.97e}{2007/10/23}{Optionen werden nach der neuen Syntax an
+% typearea weitergeleitet}^^A
+% \begin{macrocode}
+%<*(class|(package&typearea))&options>
+\newcommand*{\x@paper}{%
+ \expandafter\x@@paper\CurrentOption paper\x@@paper%
+}
+\newcommand*{\x@@paper}{}
+\def\x@@paper #1#2paper#3\x@@paper{%
+ \ifstr{#3}{paper}{%
+ \ifnumber{#2}{%
+ \ifstr{#1}{a}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[a]{#2}%
+ }{%
+ \ifstr{#1}{b}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[b]{#2}%
+ }{%
+ \ifstr{#1}{c}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[c]{#2}%
+ }{%
+ \ifstr{#1}{d}{%
+%<class> \PassOptionsToPackage{#3=#1#2}{typearea}%
+%<package> \isopaper[d]{#2}%
+ }{\scr@pti@nerr@r}%
+ }%
+ }%
+ }%
+ }{\scr@pti@nerr@r}%
+ }{%
+%<class> \@pt@scan
+%<package> \@headlines
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\scr@pti@nerr@r}
+% \changes{v2.95}{2002/06/20}{\cs{OptionNotUsed} statt
+% \cs{PackageError}}
+% Falls die zuätzliche Option nicht \texttt{BCOR}, \texttt{DIV},
+% \texttt{headlines} oder eine bekannte Papiergröße ist, ist die
+% Option nicht verwendet.
+% \begin{macrocode}
+\newcommand*{\scr@pti@nerr@r}{
+%<class> \OptionNotUsed
+%<package> \@unknownoptionerror
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.97c}{2007/09/12}{\cs{lco@test} bei den geparsten Optionen
+% eingefügt}
+% \begin{macrocode}
+\DeclareOption*{%
+%<letter> \lco@test
+ \x@paper}
+%</(class|(package&typearea))&options>
+% \end{macrocode}
+% \end{option}^^A headline...
+% \end{option}^^A DIV...
+% \end{option}^^A BCOR...
+% \end{macro}^^A \x@paper
+% \end{macro}^^A \x@@paper
+% \end{option}^^A d...paper
+% \end{option}^^A c...paper
+% \end{option}^^A b...paper
+% \end{option}^^A a...paper
+%
+% \selectlanguage{english}
+%
+% ^^A This part should stay at the end of the source file!
+% \subsection{Configuration file}
+%
+% At the very ending of the option section just before executing and
+% processing the options you can add additional options the
+% \Package{typearea}. This is a very seldom used feature and I recommend to
+% not use it any longer. If you need additional options use
+% |\BeforeFamilyProcessOptions[.typearea.sty]{KOMA}{...}|.
+%
+% \changes{v2.0e}{1994/10/28}{configuration file \File{typearea.cfg}}^^A
+% \begin{macrocode}
+%<*package&typearea&options>
+\InputIfFileExists{typearea.cfg}{%
+ \typeout{%
+ ***************************************^^J%
+ * Local config file typearea.cfg used^^J%
+ ***************************************%
+ }
+}{}
+%</package&typearea&options>
+% \end{macrocode}
+%
+% \subsection{Option execution}
+%
+% The paper size and telling the back-end driver information about the paper
+% size are default. The default for the default paper size will be \Option{A4}
+% if nothing else was defined by a class. Execution of option \Option{twoside}
+% depends already on the setting of \cs{if@twoside} and
+% \cs{if@semitwoside}. This may be surprising but nevertheless is correct.
+% \changes{v2.3h}{1995/01/19}{\cs{relax} after \cs{ProcessOptions} added}^^A
+% \changes{v2.96}{2006/08/18}{processing options in order of usage instead of
+% order of declaration}^^A
+% \changes{v2.97c}{2007/04/19}{Usage of \cs{KOMAExecuteOptions} instead of
+% \cs{KOMAoptions}}^^A
+% \changes{v2.97c}{2007/04/19}{Usage of \cs{KOMAProcessOptions} instead of
+% \cs{ProcessOptions}}^^A
+% \changes{v2.97c}{2007/04/19}{set only options that are not an implicit
+% default}^^A
+% \changes{v2.97c}{2007/07/18}{explicit setting of a valid value to
+% \texttt{twoside}}^^A
+% \changes{v3.12}{2013/11/11}{the default paper size is given by
+% \cs{defaultpagesize}}^^A
+% \changes{v3.17}{2015/03/02}{\Option{pagesize} is default}^^A
+% \begin{macro}{\defaultpapersize}
+% \changes{v3.12}{2013/11/11}{new}^^A
+% The default paper size. Defined using \cs{providecommand} so it can be
+% changed by a class or wrapper package or \File{typearea.cfg} or somewhere
+% else before loading \Package{typearea}.
+% \begin{macrocode}
+%<*package&typearea&options>
+\providecommand*{\defaultpapersize}{A4}
+%</package&typearea&options>
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%<*package&typearea&options>
+\KOMAExecuteOptions{paper=\defaultpapersize,pagesize}
+\if@twoside
+ \if@semitwoside
+ \KOMAExecuteOptions{twoside=semi}
+ \else
+ \KOMAExecuteOptions{twoside}
+ \fi
+\else
+ \KOMAExecuteOptions{twoside=false}
+\fi
+\KOMAProcessOptions\relax
+%</package&typearea&options>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-typearea.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx b/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx
new file mode 100644
index 0000000000..909be6f30c
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-variables.dtx
@@ -0,0 +1,399 @@
+% \CheckSum{160}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-variables.dtx
+% Copyright (c) Markus Kohm, 2008-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.
+% ----------------------------------------------------------------------
+% scrkernel-variables.dtx
+% Copyright (c) Markus Kohm, 2008-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-variables.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\def\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\def\filerevision{r#2}}
+ \filerevision$Revision: 1638 $
+ \xdef\fileinfo{\filedate\space\filerevision\space}
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-variables.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source(koma variables)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-variables.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2006/03/20}{%
+% erste Version aus der Aufteilung von \textsf{scrclass.dtx}}
+%
+% \section{\KOMAScript{}-Variablen}
+%
+% Bei Briefen gibt es eine ganze Reihe von speziellen Variablen. An dieser
+% Stelle sei als Beispiel nur das Feld "`Ihr Zeichen"' genannt. Es ist nahezu
+% unmöglich alle diese Felder vorherzusehen. Daher wurde in der neuen
+% Briefklasse ein neuer Mechanismus zur Definition solcher Felder geschaffen.
+%
+% \iffalse
+%<*letter>
+% \fi
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \subsection{Option}
+% Der Mechanismus ist unabhängig von Optionen.
+%
+%
+% \iffalse
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Anweisungen zum Anlegen und Verwenden von Variablen}
+%
+% \begin{macro}{\newkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Es wird zwischen zwei Arten von Feldern unterschieden:
+% \begin{itemize}
+% \item Felder für die Geschäftszeile
+% \item Felder für sonstige Verwendung
+% \end{itemize}
+% Felder können aber auch nachträglich zur Geschäftszeile
+% hinzugefügt werden. Die Sternvariante von \cs{newkomavar} führt
+% dies jedoch automatisch durch.
+% \begin{macro}{\@newkomavar}
+% Da mit einer Sternvariante gearbeitet wird, wird ein Hilfsmakro
+% benötigt. Das Makro erhält ein optionales und
+% ein obligatorisches Argument. Das optionale Argument ist dabei die
+% Voreinstellung für den \emph{Ausgabenamen} des Feldes, der
+% ggf. ausgegeben werden soll. Das obligatorische Argument ist
+% \emph{Name} des Feldes, über den das Feld angesprochen wird.
+% Das Makro definiert zwei weitere Makros: \cs{\emph{scr@Name}@var} und
+% \cs{scr@\emph{Name}@name}.
+% \begin{macrocode}
+\newcommand*{\newkomavar}{%
+ \kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}}
+\newcommand*{\@newkomavar}[2][\relax]{%
+ \@ifundefined{scr@#2@name}{%
+ \@ifundefined{scr@#2@var}{%
+ \begingroup
+ \def\@tempa{#1}\def\@tempb{\relax}%
+ \ifx\@tempa\@tempb\endgroup\else
+ \endgroup\@namedef{scr@#2@name}{#1}%
+ \fi%
+ \expandafter\let\csname scr@#2@var\endcsname=\@empty
+ \if@tempswa\addtoreffields{#2}\fi
+ }{%
+%<class> \ClassError{scrlttr2%
+%<package> \PackageError{scrletter%
+ }{%
+ This should never happen%
+ }{%
+ The contents of the KOMA-Script variable `#2'\MessageBreak
+ is undefined, but the name of the variable is
+ defined.\MessageBreak
+ This should never happen. So someone crashs me!%
+ }%
+ }%
+ }{%
+%<class> \ClassError{scrlttr2%
+%<package> \PackageError{scrletter%
+ }{%
+ Variable `#2' already defined%
+ }{%
+ I'll ignore this command, if you'll continue.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v3.08}{2010/10/28}{\cs{scr@\emph{Name}@postsetname}
+% und \cs{scr@\emph{Name}@postsetvar}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Natürlich wird auch ein Befehl benötigt, um die Feldvariablen
+% zu setzen und ihnen ggf. einen neuen Namen für die Ausgabe zu
+% geben. Der \emph{Name} der Feldvariable wird als obligatorisches
+% erstes Argument übergeben. Zusätzlich zum Setzen von Ausgabename oder Wert
+% werden ggf. auch die Hooks \cs{scr@\emph{Name}@postsetname}
+% bzw. \cs{scr@\emph{Name}@postsetvar} ausgeführt.
+% \begin{macro}{\@setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Da dann zwischen einer Sternvariante und einer normalen
+% unterschieden werden soll wird ein Hilfsmakro benötigt.
+% \begin{macro}{\@setkomaname}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Die Sternvariante definiert nur den Ausgabename neu.
+% \begin{macro}{\@@setkomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Da in der normalen Variante nach dem Stern ein optionales Argument
+% folgen kann, wird mit einem weiteren Hilfsmakro gearbeitet. Der
+% \emph{Ausgabename} wird dabei als optionales, zweites Argument
+% übergeben. Der \emph{Inhalt} wird als obligatorisches, drittes
+% Argument übergeben.
+% \begin{macrocode}
+\newcommand*{\setkomavar}{%
+ \kernel@ifstar {\@setkomaname}{\@setkomavar}}
+\newcommand*{\@setkomavar}[1]{%
+ \kernel@ifnextchar [%]
+ {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}}
+\newcommand*{\@setkomaname}[2]{%
+ \@ifundefined{scr@#1@var}{%
+ \@komavar@err{set}{#1}%
+ }{%
+ \@namedef{scr@#1@name}{#2}%
+ \csname scr@#1@postsetname\endcsname
+ }%
+}
+\newcommand*{\@@setkomavar}{}
+\long\def\@@setkomavar#1[#2]#3{%
+ \@ifundefined{scr@#1@var}{%
+ \@komavar@err{set}{#1}%
+ }{%
+ \@namedef{scr@#1@var}{#3}%
+ \csname scr@#1@postsetvar\endcsname
+ \begingroup
+ \def\@tempa{#2}\def\@tempb{\relax}%
+ \ifx\@tempa\@tempb\endgroup\else
+ \endgroup\@namedef{scr@#1@name}{#2}%
+ \csname scr@#1@postsetname\endcsname
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@komavar@err}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% Dieses Makro wird intern in den Makros \cs{setkomavar} und
+% \cs{usekomavar} verwendet.
+% \begin{macrocode}
+\newcommand*{\@komavar@err}[2]{%
+%<class> \ClassError{scrlttr2%
+%<package> \PackageError{scrletter%
+ }{%
+ KOMA-Script variable not defined%
+ }{%
+ You've tried to #1 the not defined KOMA-Script variable
+ `#2'.\MessageBreak
+ You have to define the variable using \string\newkomavar\space
+ before\MessageBreak
+ you do this.%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usekomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.9i}{2002/09/04}{robust}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Selbstverständlich wird auch ein Makro benötigt, um auf den
+% Inhalt oder den Ausgabename einer Variablen zugreifen zu
+% können. Mit der normalen Variante wird dabei der Inhalt, mit der
+% Sternvariante der Name ausgegeben.
+% \begin{macro}{\@usekomavar}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.9i}{2002/09/04}{optionales Argument}^^A
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
+% \begin{macro}{\@usekomaname}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.9i}{2002/09/04}{optionales Argument}^^A
+% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument
+% eingefügt}
+% Da mir einer Sternvariante gearbeitet wird, werden zwei Hilfsmakros
+% benötigt.
+% \begin{macrocode}
+\DeclareRobustCommand*{\usekomavar}{%
+ \kernel@ifstar {\@usekomaname}{\@usekomavar}}
+\newcommand*{\@usekomavar}[2][\@firstofone]{%
+ \@ifundefined{scr@#2@var}{%
+ \@komavar@err{use}{#2}%
+ }{%
+ #1{\@nameuse{scr@#2@var}}%
+ }%
+}
+\newcommand*{\@usekomaname}[2][\@firstofone]{%
+ \@ifundefined{scr@#2@var}{%
+ \@komavar@err{use}{#2}%
+ }{%
+ #1{\@nameuse{scr@#2@name}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifkomavar}
+% \changes{v3.03}{2009/03/04}{Neu}^^A
+% Feststellen, ob eine \KOMAScript-Variable überhaupt definiert ist.
+% \begin{macrocode}
+\DeclareRobustCommand*{\ifkomavar}[1]{%
+ \scr@ifundefinedorrelax{scr@#1@var}{%
+ \expandafter\@secondoftwo
+ }{%
+ \expandafter\@firstoftwo
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifkomavarempty}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen}^^A
+% \changes{v2.9i}{2002/09/04}{robust}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% Es gibt auch noch ein Makro, um zu testen, ob eine \KOMAScript{}
+% Variable oder deren Name leer ist. Die Sternvariante ist wieder für
+% den Namen zuständig.
+% \begin{macro}{\if@komavarempty}
+% \changes{v2.8q}{2002/01/14}{Neu}^^A
+% \changes{v3.03}{2009/03/04}{die neue Anweisung \cs{ifkomavar} wird
+% verwendet}
+% \changes{v3.03}{2009/03/04}{die Argumente werden nicht mehr direkt gelesen}^^A
+% Da mit einer Sternvariante gearbeitet wird, wird wieder ein
+% Hilfsmakro verwendet.
+% \begin{macrocode}
+\DeclareRobustCommand*{\ifkomavarempty}{%
+ \begingroup
+ \kernel@ifstar {\@tempswatrue\@ifkomavarempty}%
+ {\@tempswafalse\@ifkomavarempty}%
+}
+\newcommand{\@ifkomavarempty}[1]{%
+ \ifkomavar{#1}{%
+ \if@tempswa
+ \@ifundefined{scr@#1@name}{%
+ \aftergroup\@firstoftwo
+ }{%
+ \expandafter\ifx\csname scr@#1@name\endcsname\@empty
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ }%
+ \else
+ \expandafter\ifx\csname scr@#1@var\endcsname\@empty
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \fi
+ }{%
+ \@komavar@err{use}{#1}%
+ \aftergroup\@gobbletwo
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \iffalse
+%</body>
+% \fi
+%
+% \iffalse
+%</letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-variables.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrkernel-version.dtx b/macros/latex/contrib/koma-script/source/scrkernel-version.dtx
new file mode 100644
index 0000000000..19762fed84
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrkernel-version.dtx
@@ -0,0 +1,236 @@
+% \CheckSum{73}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-version.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrkernel-version.dtx
+% Copyright (c) Markus Kohm, 2002-2019
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-version.dtx 3063 2019-02-01 07:39:11Z kohm $
+% \fi
+%
+% \iffalse
+% Nicht verwirren lassen! In dieser Datei steht die Dokumentation und
+% der Code vor dem Treiber. Das ist notwendig, weil der Code bereits
+% am Anfang des Treibers selbst benötigt wird.
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.0e}{1994/07/07}{erste Version von \textsf{scrartcl},
+% \textsf{scrreprt} und \textsf{scrbook}}
+% \changes{v2.95}{2002/06/25}{erste Version aus der Aufteilung von
+% \texttt{scrclass.dtx}}
+%
+% \section{Version des \KOMAScript-Kerns}
+%
+% Dies ist die erste Datei in allen Dateien, Klassen und Paketen, die
+% zum \KOMAScript-Kern gehören (Ausnahme: \texttt{scrlfile}).
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \begin{macro}{\KOMAScriptVersion}
+% \changes{v2.95}{2002/06/25}{neu}^^A
+% Dieses Makro gibt an, zu welcher \KOMAScript-Version die Datei
+% gehört. Die Klassen und Pakete des \KOMAScript-Kerns verwenden
+% dieses Makro außerdem als eigene Versionsangabe.
+% \begin{macro}{\@CheckKOMAScriptVersion}
+% \changes{v2.95}{2002/06/25}{neu (intern)}^^A
+% Je nachdem, ob \cs{KOMAScriptVersion} bereits definiert ist nicht,
+% wird die Definition überprüft oder eine globale Definition
+% vorgenommen. Da das ganze auch bei der Erstellung der Doku
+% geschieht, wird mit \cs{makeatletter} innerhalb einer Gruppe
+% gearbeitet.
+% \begin{macrocode}
+\begingroup
+ \catcode`\@11\relax
+%<*ignorethis>
+ \ifx\newcommand\undefined
+ \gdef\@CheckKOMAScriptVersion#1{%
+ \global\KOMAdefVariable{KOMAScriptVersion}{\space\space#1}%
+ \aftergroup\endinput
+ }%
+ \else
+%</ignorethis>
+ \ifx\KOMAScriptVersion\undefined
+ \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ \gdef\KOMAScriptVersion{#1}%
+ }%
+ \else
+ \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ \def\@tempa{#1}%
+ \ifx\KOMAScriptVersion\@tempa\else
+ \@latex@warning@no@line{%
+ \noexpand\KOMAScriptVersion\space is
+ `\KOMAScriptVersion',\MessageBreak
+ but `#1' was expected!\MessageBreak
+ You should not use classes, packages or files
+ from\MessageBreak
+ different KOMA-Script versions%
+ }%
+ \fi
+ }
+%<*ignorethis>
+ \fi
+%</ignorethis>
+ \fi
+ \@CheckKOMAScriptVersion{2019/02/01 v3.26b KOMA-Script}%
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%<*dtx>
+% \fi
+\ProvidesFile{scrkernel-version.dtx}[\KOMAScriptVersion (versions)]
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-version.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \begin{macro}{\scr@pkgextension}
+% \changes{v3.17}{2015/03/17}{Neu (intern)}^^A
+% \begin{macro}{\scr@clsextension}
+% \changes{v3.17}{2015/03/17}{Neu (intern)}^^A
+% \changes{v3.18}{2015/06/17}{fixed}^^A
+% Die beiden sind prinzipiell das gleiche wie \cs{@pkgextension} und
+% \cs{@clsextension} aber auch noch nach \cs{begin{document}}.
+% \begin{macrocode}
+%<*class|package>
+%<package>\providecommand*{\scr@pkgextension}{\@pkgextension}
+%<class>\providecommand*{\scr@clsextension}{\@clsextension}
+\AtBeginDocument{%
+%<package> \let\scr@pkgextension\@pkgextension
+%<class> \let\scr@clsextension\@clsextension
+}
+%</class|package>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse
+%<*class>
+% \fi
+% \begin{macro}{\KOMAClassFileName}
+% \changes{v3.17}{2014/03/12}{Neu}^^A
+% \begin{macro}{\KOMAClassName}
+% \changes{v2.95}{2004/11/04}{Neu}^^A
+% \begin{macro}{\ClassName}
+% \changes{v2.95}{2004/11/04}{Neu}^^A
+% Für \KOMAScript-Klassen wird hier einmalig der Name der Klasse definiert und
+% und die Klasse der Klasse angegeben.
+% \begin{macrocode}
+\newcommand*{\KOMAClassName}{%
+%<article> scrartcl%
+%<report> scrreprt%
+%<book> scrbook%
+%<letter> scrlttr2%
+}
+\newcommand*{\ClassName}{%
+%<article> article%
+%<report> report%
+%<book> book%
+%<letter> letter%
+}
+\newcommand*{\KOMAClassFileName}{\KOMAClassName.\@clsextension}
+\edef\KOMAClassFileName{\KOMAClassFileName}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\ProvidesClass{\KOMAClassName}[%
+%!KOMAScriptVersion
+ document class (\ClassName)%
+]
+% \end{macrocode}
+% \iffalse
+%</class>
+% \fi
+%
+% \iffalse
+%<*package&letter>
+% \fi
+% \begin{macrocode}
+\ProvidesPackage{scrletter}[%
+%!KOMAScriptVersion
+ letter package extending any KOMA-Script class%
+]
+% \end{macrocode}
+% \iffalse
+%</package&letter>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-version.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlayer-fancyhdr.dtx b/macros/latex/contrib/koma-script/source/scrlayer-fancyhdr.dtx
new file mode 100644
index 0000000000..7e2d0be1f9
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlayer-fancyhdr.dtx
@@ -0,0 +1,549 @@
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlayer-fancyhdr.dtx
+% Copyright (c) Markus Kohm, 2018
+%
+% 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 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 and
+% `scrlayer-fancyhdr.dtx'.
+% ----------------------------------------------------------------------
+% scrlayer-fancyhdr.dtx
+% Copyright (c) Markus Kohm, 2018
+%
+% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
+%
+% 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 in manifest.txt aufgefuehrten Dateien
+% sowie `scrlayer-fancyhdr.dtx'.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse^^A meta-comment
+%%% From File: $Id: scrlayer-fancyhdr.dtx ALPHA (see date below) kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<options>%%% (run: options)
+%<body>%%% (run: body)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+% TODO: Replace \thisfiledate and \thisfilerevision by \filedate and
+% \filerevision
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\thisfiledate{#2/#3/#4}}
+ \filedate$Date: 2018-09-10 08:00:00 $
+ \def\filerevision$#1: #2 ${\gdef\thisfilerevision{r#2 ALPHA}}
+ \filerevision$Revision: 0 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlayer-fancyhdr.dtx}%
+ [\thisfiledate\space\thisfilerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*identify>
+%<interface>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<interface>\ProvidesPackage{scrlayer-fancyhdr}[%
+% Sometimes following will be replaced by !KOMAScriptVersion:
+%!SCRLAYERFANCYHDRVERSION
+%<interface> package
+%</identify>
+%<*dtx|identify>
+ (end user interface for scrlayer)]
+%</dtx|identify>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2018}
+ \KOMAdefVariable{SCRLAYERFANCYHDRVERSION}{%
+ \space\space\thisfiledate\space\thisfilerevision\space KOMA-Script
+ }%
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlayer-fancyhdr.sty}{%
+ \from{scrlayer-fancyhdr.dtx}{interface,trace,fancyhdr,identify}%
+ \from{scrlayer.dtx}{interface,trace,fancyhdr,init}%
+ \from{scrlayer-fancyhdr.dtx}{interface,trace,fancyhdr,init}%
+ \from{scrlayer.dtx}{interface,trace,fancyhdr,options}%
+ \from{scrlayer-fancyhdr.dtx}{interface,trace,fancyhdr,options}%
+ \from{scrlayer.dtx}{interface,trace,fancyhdr,body}%
+ \from{scrlayer-fancyhdr.dtx}{interface,trace,fancyhdr,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+ \documentclass{scrdoc}
+ \addtolength{\textwidth}{-1em}
+ \addtolength{\marginparwidth}{2em}
+ \addtolength{\oddsidemargin}{2em}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{url,babelbib}\bibliographystyle{babalpha-fl}
+ \usepackage{listings}
+ \usepackage{scrhack}
+ \usepackage{etoolbox}
+ \pretocmd\DescribeMacro{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeEnv{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeOption{\ifhmode\else\bigskip\noindent\fi}{}{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrlayer-fancyhdr.dtx}
+ \title{The \texttt{scrlayer} interface \texttt{scrlayer-fancyhdr}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \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}%
+ }
+ \providecommand*{\IndexCmd}[2][]{}
+ \providecommand*{\textnote}[2][]{}
+ \providecommand*\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
+ \providecommand*\NTS{%
+ \leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}%
+ \kern-0.2emS$}}
+
+ \lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}
+ \makeatother
+ \sloppy% YOU SHOULD NOT DO THIS!!!
+
+ \begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+ \PrintChanges
+ \PrintIndex
+ \end{document}
+% \fi^^A meta-comment
+%
+% \selectlanguage{english}
+%
+% \changes{v0.0}{2018/09/01}{start of interface}
+% \let\restorechapter\chapter
+% \let\chapter\section
+% \let\section\subsection
+% \let\subsection\subsubsection
+%
+% \changes{v0.0}{2018/09/05}{some user documentation}
+% \chapter{The Purpose of this Package}
+% This package has been made to give users a chance to combine the features of
+% Piet van Oostrum's \Package{fancyhdr} \cite{pkg:fancyhdr} with the features
+% of \Package{scrlayer} \cite{pkg:komascript}. In other words: It has been
+% made to combine the page layers of \Package{scrlayer} with the page styles
+% of \Package{fancyhdr}.
+%
+% In this combination compatibility with \Package{fancyhdr} is the first
+% aim! Usability and the freedom provided by \Package{scrlayer} is only the
+% second one. Compatibility with other parts of \KOMAScript{} is not a primary
+% aim. Perhaps it will become an optional feature in future. Abolishing any
+% real or virtual limitations of \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 \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
+% \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
+% \Package{fancyhdr}.
+%
+%
+% \chapter{How it works}
+% To combine \Package{fancyhdr} and \Package{scrlayer},
+% \Package{scrlayer-scrpage} loads both packages. After loading
+% \Package{fancyhdr} it redefines page style \Pagestyle{@fancy} to make it a
+% layer page style of \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 \Package{fancyhdr}'s page styles (or
+% other usual page styles). The \texttt{\dots foot\dots} layers are foreground
+% layers like the page footer of \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@fancyplain
+% \DescribeMacro\ps@plain@fancy
+% Note: Page style \Pagestyle{@fancy} is an internal basic page style of
+% package \Package{fancyhdr}. It is used for the user page style
+% \Pagestyle{fancy}. The user page style \Pagestyle{fancy} is also used for
+% \Package{fancyhdr}'s undocumented page style \Pagestyle{fancyplain}, that
+% also redefines page style \Pagestyle{plain} to be \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 also an undocumented command
+% \Macro{fancyplain}\Parameter{plain code}\Parameter{fancy code}, that uses
+% the \meta{plain code} if \Macro{if@fancyplain} is \Macro{iftrue} and
+% \meta{fancy code} if \Macro{if@fancyplain} is \Macro{iffalse}.
+%
+% Note: Page styles defined using \Package{fancyhdr}'s command
+% \Macro{fancypagestyle} also always use page style \Pagestyle{fancy} and so
+% the internal basic page style \Pagestyle{@fancy}.
+%
+% As a result of the two notes above, every page style of \Package{fancyhdr}
+% always uses page style \Pagestyle{fancy} and the same internal basic page
+% style \Pagestyle{@fancy}. As a result of redefining page style
+% \Pagestyle{@fancy} to be a layer page style, users can add layers to or
+% remove layers from all \Package{fancyhdr} page styles by adding layers to or
+% remove layers from page style \Pagestyle{@fancy}. You cannot add layers to
+% or remove layers from \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 \Package{fancyhdr} page styles is activated. So
+% this is a move from the \Package{scrlayer} interface of adding or removing
+% layers to single page styles to the \Package{fancyhdr} interface of defining
+% modifications of page style \Pagestyle{fancy}.
+%
+% Another such movement from an \Package{scrlayer} user interface to a
+% \Package{fancyhdr} user interface it the decision whether or not automatic
+% running heads are used. \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} also using page style \Pagestyle{@fancy} 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 \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 \Package{scrlayer} nor \Package{fancyhdr} nor
+% \Package{scrlayer-fancyhdr} do redefine page styles \Pagestyle{headings} or
+% \Pagestyle{myheadings}. And neither \Package{scrlayer} nor
+% \Package{fancyhdr} nor \Package{scrlayer-fancyhdr} do redefine page style
+% \Pagestyle{plain} unless you are activating the undocumented
+% \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
+% \Package{fancyhdr}'s undocumented page style \Pagestyle{fancyplain} or
+% redefine page style \Pagestyle{plain} either using \Macro{fancypagestyle} as
+% documented in the \Package{fancyhdr} manual or using
+% \Macro{DeclareNewPageStyleByLayers}, documented in the \KOMAScript{} manual.
+%
+% \DescribeMacro\ps@empty
+% \DescribeMacro\ps@@empty
+% Note: Pagestyle \Pagestyle{empty} is somehow special. \Package{scrlayer}
+% redefines it to be a layer page style. And \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
+% \Package{scrlayer}. Moreover, if \Package{fancyhdr} is loaded before
+% \Package{scrlayer-scrpage}, \Package{fancyhdr}'s internal page style
+% \Pagestyle{@empty} is not a copy of \Package{scrlayer}'s layer page style
+% \Pagestyle{empty} but the original standard page style
+% \Pagestyle{empty}. However, with \Package{scrlayer-fancyhdr} package
+% \Package{fancyhdr} does not longer use the internal page style
+% \Pagestyle{@empty}. So you would not need to know this.
+%
+% \chapter{How to use the Package}
+%
+%^^A TODO: Remove the following alpha note.
+% First of all, this package is experimental and should not be used for
+% anything else but testing whether or not it works as documented! This
+% package even is not an official part of \KOMAScript!
+%
+% To use the package you have to load it, e.\,g., using:
+%\begin{verbatim}
+% \usepackage{scrlayer-fancyhdr}
+%\end{verbatim}
+% instead of loading \Package{scrlayer} and \Package{fancyhdr} or before or
+% after loading one of these packages. However it is recommended to replace
+% loading \Package{scrlayer} and \Package{fancyhdr} by loading
+% \Package{scrlayer-fancyhdr} because this avoids option
+% clashes. \Package{scrlayer-fancyhdr} provides all options of
+% \Package{scrlayer} and passes them to \Package{scrlayer}. Nevertheless
+% sometimes it may be useful to be able to additionally load
+% \Package{scrlayer} or \Package{fancyhdr}.
+%
+% \DescribeMacro\ps@@fancy
+% \DescribeMacro\ps@fancy
+% \DescribeMacro\ps@fancyplain
+% \DescribeMacro\ps@plain@fancy
+% \DescribeMacro\fancypagestyle
+% After this you should be able to use the page styles and commands of
+% \Package{fancyhdr} and to add layers to or remove layers from the
+% \Package{fancyhdr}'s internal basic page style \Package{@fancy}. Note, you
+% are not able to add layers to or remove layers from \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} 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!
+%
+% \chapter{Known 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@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}. This is intended as explained in this manual.
+% \item
+% \DescribeMacro\ps@@empty
+% Using \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
+% The vertical position of the page header does differ a little bit, if
+% \Package{scrlayer-fancyhdr} is used instead of \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}
+%
+%\iffalse
+%</dtx>
+%\fi
+%
+% \StopEventually{}
+%
+% \chapter{Implementation of \Package{scrlayer-fancyhdr}}
+% \label{sec:scrlayer-fancyhdr}
+%
+% This section if for developers only.
+%
+% \iffalse
+% TODO: Remove this alpha warning (but not the markers)!
+%<*interface>
+%<*identify>
+\PackageWarningNoLine{scrlayer-fancyhdr}{%
+ THIS IS AN ALPHA VERSION OF AN\MessageBreak
+ EXPERIMENTAL PACKAGE!\MessageBreak
+ YOU SHOULD NOT USE THIS PACKAGE FOR\MessageBreak
+ ANYTHING ELSE BUT TESTING%
+}
+%</identify>
+%\fi
+%
+% Note: The main problem of this interface is, that it tries to implement the
+% user interface of package \Package{fancyhdr} by Piet van Oostrum, that is
+% completely different from \Package{scrlayer} and not really compatible with
+% \Package{scrlayer}, using \Package{scrlayer}. This means, that
+% \Package{scrlayer-fancyhdr} never can be a drop-in replacement of
+% \Package{fancyhdr}. Nevertheless it can help to let \Package{scrlayer} and
+% \Package{fancyhdr} coexist. To do so
+% \begin{itemize}
+% \item the lowest level of \Package{fancyhdr} should not be the page style
+% but a layer
+% \item the page styles of \Package{fancyhdr} should be layer page styles
+% \item init code of the page styles of \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 \Package{fancyhdr} and to only modify some things. First
+% I'll try the second method and therefore:
+% \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@@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}.
+% \begin{macrocode}
+\DeclarePageStyleByLayers[
+% \end{macrocode}
+% \Package{fancyhdr} does some initialization at the very first call
+% of \cs{pagestyle{fancy}}. To do so \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, \Package{fancyhdr} redefines \cs{@mkboth} at every selection
+% of the internal page style \Pagestyle{@fancy}. This can be adapted using the
+% \Option{onselect} feature of the new layer page style \Pagestyle{@fancy}. 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, \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 \Package{fancyhdr} definition and copying
+% this is more compatible with \Package{fancyhdr}.
+% \begin{macrocode}
+ 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} 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 \Package{scrlayer} with features of \Package{fancyhdr} and you
+% can, e.g., use \Package{scrlayer-notecolumn} with
+% \Package{scrlayer-fancyhdr}.
+% \end{macro}^^A \@mkboth
+% \end{macro}^^A \ps@@fancy
+%
+% 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
+%</interface>
+% \fi
+%
+% \begin{thebibliography}{99}
+% \raggedright
+% \bibitem[1]{pkg:fancyhdr} Piet van Oostrum: \emph{Page layout in \LaTeX},
+% release 3.9a 2017-06-30,
+% \url{https://ctan.org/tex-archive/macros/latex/contrib/fancyhdr},
+% last visited: 2018-09-06.
+% \bibitem[2]{pkg:komascript} Markus Kohm: \emph{\KOMAScript},
+% release 3.25 2018-03-30,
+% \url{https://ctan.org/tex-archive/macros/latex/contrib/koma-script},
+% last visited: 2018-09-06.
+% \end{thebibliography}
+%
+% \Finale
+% \let\subsection\section
+% \let\section\chapter
+% \let\chapter\restorechapter
+%
+\endinput
+%
+% End of file `scrlayer-fancyhdr.dtx'.
+%
+
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% ispell-local-dictionary: "en_GB"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx b/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx
new file mode 100644
index 0000000000..324a5e8330
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlayer-notecolumn.dtx
@@ -0,0 +1,1787 @@
+% \CheckSum{1747}
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlayer-notecolumn.dtx
+% Copyright (c) Markus Kohm, 2013-2018
+%
+% 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 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.
+% ----------------------------------------------------------------------
+% scrlayer-notecolumn.dtx
+% Copyright (c) Markus Kohm, 2013-2018
+%
+% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
+%
+% 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 in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse^^A meta-comment
+%%% From File: $Id: scrlayer-notecolumn.dtx 3011 2018-08-29 07:35:17Z kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<options>%%% (run: options)
+%<body>%%% (run: body)
+%<final>%%% (run: final)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{v0.1.#2}}
+ \filerevision$Revision: 3011 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlayer-notecolumn.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*identify|doc>
+%<interface>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<interface>\ProvidesPackage{scrlayer-notecolumn}[%
+%<doc>\ProvidesFile{scrlayer-notecolumn.tex}[%
+% Sometimes following will be replaced by !KOMASCRIPTVERSION:
+%!SCRLAYERVERSION
+%<interface> package
+%</identify|doc>
+%<*dtx|identify|doc>
+ (end user interface for scrlayer)]
+%</dtx|identify|doc>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2013}
+ \KOMAdefVariable{SCRLAYERVERSION}{%
+ \space\space\filedate\space\filerevision\space KOMA-Script
+ }%
+ \expandafter\let\csname ifbetawas\expandafter\endcsname
+ \csname ifbeta\endcsname
+ \expandafter\let\csname ifbeta\expandafter\endcsname
+ \csname iftrue\endcsname
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlayer-notecolumn.sty}{%
+ \from{scrlayer-notecolumn.dtx}{interface,trace,notecolumn,identify}%
+ \from{scrlayer.dtx}{interface,trace,notecolumn,init}%
+ \from{scrlayer-notecolumn.dtx}{interface,trace,notecolumn,init}%
+ \from{scrlayer.dtx}{interface,trace,notecolumn,options}%
+ \from{scrlayer-notecolumn.dtx}{interface,trace,notecolumn,options}%
+ \from{scrlayer.dtx}{interface,trace,notecolumn,body}%
+ \from{scrlayer-notecolumn.dtx}{interface,trace,notecolumn,body}%
+ \from{scrlayer-notecolumn.dtx}{interface,trace,notecolumn,final}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \expandafter\let\csname ifbeta\expandafter\endcsname
+ \csname ifbetawas\endcsname
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+ \documentclass{scrdoc}
+ \addtolength{\textwidth}{-1em}
+ \addtolength{\marginparwidth}{2em}
+ \addtolength{\oddsidemargin}{2em}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{url,babelbib}\bibliographystyle{babalpha-fl}
+ \usepackage{listings}
+ \usepackage{scrhack}
+ \usepackage{etoolbox}
+ \pretocmd\DescribeMacro{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeEnv{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeOption{\ifhmode\else\bigskip\noindent\fi}{}{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrlayer-notecolumn.dtx}
+ \title{The \texttt{scrlayer} interface \texttt{scrlayer-notecolumn}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \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}%
+ }
+ \providecommand*{\IndexCmd}[2][]{}
+ \providecommand*{\textnote}[2][]{}
+ \providecommand*\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
+ \providecommand*\NTS{%
+ \leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}%
+ \kern-0.2emS$}}
+
+ \lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}
+ \makeatother
+ \sloppy% YOU SHOULD NOT DO THIS!!!
+
+ \begin{document}
+ \maketitle
+ \begin{abstract}
+ This is only the implementation documentation of package
+ \Package{scrlayer-notecolumn}. See the English or German \KOMAScript{}
+ manual for more information about usage of the package!
+ \end{abstract}
+ \tableofcontents
+ \DocInput{\filename}
+ \PrintChanges
+ \PrintIndex
+ \end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \selectlanguage{english}
+%
+% \changes{v0.0}{2013/04/26}{start of interface}
+%
+% \StopEventually{}
+%
+%
+% \iffalse
+%<*interface>
+%<*identify>
+% \fi
+%
+%\iffalse
+%</identify>
+%\fi
+%
+%
+% \section{Initialising some Values before the Options}
+%
+% \iffalse^^A meta-comment
+%<*init>
+% \fi^^A meta-comment
+%
+% Initialisation before all options (even the options from
+% \File{scrlayer.dtx}).
+%
+% Here we test the used pdf\TeX{} primitives.
+% \changes{v0.1}{2015/10/07}{ready for renaming \cs{pdfsavepos} and
+% \cs{pdflastypos} in luaTeX}^^A
+% \changes{v0.1.2483}{2016/06/28}{grouping fixed}^^A
+% \begin{macrocode}
+\@tempswatrue
+\scr@ifundefinedorrelax{pdfsavepos}{%
+ \scr@ifundefinedorrelax{savepos}{%
+ \expandafter\@tempswafalse
+ }{%
+ \let\scr@savepos\savepos
+ }%
+}{%
+ \let\scr@savepos\pdfsavepos
+}
+\scr@ifundefinedorrelax{pdflastypos}{%
+ \scr@ifundefinedorrelax{lastypos}{%
+ \expandafter\@tempswafalse
+ }{%
+ \let\scr@lastypos\lastypos
+ }%
+}{%
+ \let\scr@lastypos\pdflastypos
+}%
+\if@tempswa\else
+ \PackageError{scrlayer-notecolumn}{missing pdfTeX/luaTeX features}{%
+ This package needs \string\pdfsavepos\space or \string\savepos\space
+ and\MessageBreak
+ \string\pdflastypos\space or \string\lastypos.\MessageBreak
+ This error is fatal, because usage of the package without these
+ features\MessageBreak
+ cannot work!\MessageBreak
+ You shouldn't continue, but if you'd try, I'll try to abort the LaTeX run
+ }%
+ \batchmode\csname @@end\endcsname\end
+\fi
+% \end{macrocode}
+%
+% \iffalse^^A meta-comment
+%</init>
+% \fi^^A meta-comment
+%
+% \section{Making a Note Column}
+%
+% The package supports a various number of note columns. Each is referenced by
+% a unique name.
+%
+% \begin{macro}{\DeclareNoteColumn}
+% \begin{description}
+% \item[\OParameter{option list}:] a comma-separated list of
+% \texttt{\meta{key}=\meta{value}} pairs.
+% \item[\Parameter{string}:] the name of the note column (must be fully
+% expandable and expand to a string only).
+% \end{description}
+% That's the primary command for note columns. It defines everything, the note
+% column needs.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\DeclareNoteColumn{%
+ \newcommand*{\DeclareNoteColumn}[2][]{%
+% \end{macrocode}
+% First of all we need a box register. The contents of the note column will be
+% build inside of this register. Since \eTeX{} registers shouldn't be a
+% problem. User should use package \Package{etex}, if he or she runs out of
+% registers. Note, that the registers will stay allocated, if the interface
+% will be removed! Nevertheless, the name will be destroyed!
+% \begin{macrocode}
+ \@ifundefined{slnc@#2@box}{%
+ \expandafter\newsavebox\csname slnc@#2@box\endcsname
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname slnc@#2@box\endcsname\relax
+ }%
+ }{}%
+% \end{macrocode}
+% There's also a kind of item stack of unprocessed notes for each note column.
+% \begin{macrocode}
+ \@ifundefined{slnc@#2@unprocessed}{%
+ \@namedef{slnc@#2@unprocessed}{}%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname slnc@#2@unprocessed\endcsname\relax
+ }%
+ }{}%
+% \end{macrocode}
+% Next we need a horizontal positions and a width for the note column. Neither
+% the horizontal position nor the width are stretchable or shrinkable. The
+% position should be variable depending on the page. So it's better to use a
+% macro instead of a length. The width isn't more variable than, e.g., the
+% text width. So we can use a macro too. Both will be initialised to the
+% normal marginal note column.
+% \begin{macrocode}
+ \@ifundefined{slnc@#2@pos}{%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname slnc@#2@pos\endcsname\relax
+ }%
+ }{}%
+ \@ifundefined{slnc@#2@width}{%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname slnc@#2@width\endcsname\relax
+ }%
+ }{}%
+% \end{macrocode}
+% If there isn't a font element for the (new) note column, we define a new one
+% and add it to the auto-remove code:
+% \begin{macrocode}
+ \@ifundefined{scr@fnt@notecolumn.#2}{%
+ \@ifundefined{@notecolumn.#2font}{%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname @notecolumn.#2font\endcsname\relax
+ }%
+ }{%
+ \PackageInfo{scrlayer-notecolumn}{using already defined
+ macro\MessageBreak
+ `\expandafter\string\csname @notecolumn.#2font\endcsname' for font
+ element\MessageBreak
+ `notecolumn.#2'%
+ }%
+ }%
+ \newkomafont{notecolumn.#2}{}%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \expandafter\let\csname scr@fnt@notecolumn.#2\endcsname\relax
+ }%
+ }{%
+ \PackageInfo{scrlayer-notecolumn}{using already defined font
+ element\MessageBreak
+ `notecolumn.#2'%
+ }%
+ }%
+% \end{macrocode}
+% After the initialisation we process the options, that may change the initial
+% values.
+% \begin{macrocode}
+ \newcommand*{\slnc@name}{}%
+ \edef\slnc@name{#2}%
+ \FamilyExecuteOptions[.definenotecolumn]{KOMAarg}{marginpar,#1}%
+ \let\slnc@name\relax
+% \end{macrocode}
+% The values are set up, so they may be used to declare a layer.
+% \begin{macrocode}
+ \DeclareLayer[%
+ foreground,%
+ align=tl,%
+ voffset=1in+\topmargin+\headheight+\headsep,%
+ height=\dimexpr\textheight+\topskip\relax,%
+ hoffset=\csname slnc@#2@pos\endcsname,%
+ width=\csname slnc@#2@width\endcsname,%
+ contents=\slnc@processnotes{#2}%
+ ]{notecolumn.#2}
+% \end{macrocode}
+% We need to add the layer to every page style. The easiest way to do this is
+% to add it to the pseudo layer page style \Pagestyle{@everystyle@}.
+% \changes{v0.1.1681}{2014/02/05}{add the layer only once}
+% \begin{macrocode}
+ \IfLayerAtPageStyle{@everystyle@}{notecolumn.#2}{}{%
+ \AddLayersToPageStyle{@everystyle@}{notecolumn.#2}%
+% \end{macrocode}
+% On auto-removing the interface, the layer should be removed from
+% \Pagestyle{@everystyle@} and should be destroyed.
+% \begin{macrocode}
+ }%
+ \scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
+ \RemoveLayersFromPageStyle{@everystyle@}{notecolumn.#2}%
+ \DestroyLayer{notecolumn.#2}%
+ }%
+% \end{macrocode}
+% Last but not least, we add the new note column to the note column procession
+% list.
+% \begin{macrocode}
+ \@cons\slnc@processnotecolumns{{#2}}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\slnc@processnotecolumns}
+% This is a list of all declared note columns in \LaTeX{} syntax (using
+% \Macro{@cons} and \Macro{@elt} etc.).
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@processnotecolumns{%
+ \newcommand*{\slnc@processnotecolumns}{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \slnc@processnotecolumns
+% \begin{macrocode}
+%</body>
+% \end{macrocode}
+% One note column will be declared by default:
+% \begin{macrocode}
+%<*final>
+\DeclareNoteColumn{marginpar}
+%</final>
+%<*body>
+% \end{macrocode}
+% \begin{macro}{\slnc@testforpagestylewarning}
+% Not all page styles are layer page styles, but only layer page styles can be
+% extended by the note column layers. So we warn, if another page style has
+% been selected.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@testforpagestylewarning{%
+ \newcommand*{\slnc@testforpagestylewarning}{%
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ output of note columns delayed,\MessageBreak
+ because with `\currentpagestyle'\MessageBreak
+ a page style has been selected, that\MessageBreak
+ isn't a layer page style,%
+ }%
+ }%
+ }%
+}
+\AfterSelectAnyPageStyle{\slnc@testforpagestylewarning}
+% \end{macrocode}
+% \end{macro}%^^A \slnc@testforpagestylewarning
+% \begin{option}{position}
+% \begin{option}{width}
+% \begin{option}{font}
+% \begin{option}{marginpar}
+% \begin{option}{normalmarginpar}
+% \begin{option}{reversemarginpar}
+% Last but not least we have to define the options for the \PName{option
+% list}.
+% \begin{macrocode}
+\DefineFamilyMember[.definenotecolumn]{KOMAarg}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{position}{%
+ \@namedef{slnc@\slnc@name @pos}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position@default}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{width}{%
+ \@namedef{slnc@\slnc@name @width}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width@default}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{font}{%
+ \setkomafont{notecolumn.\slnc@name}{#1}%
+ \FamilyKeyStateProcessed
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font@default}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{marginpar}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{marginpar}{#1}%
+ \edef\reserved@a{\noexpand\slnc@defpos{\slnc@name}}\reserved@a
+ \@namedef{slnc@\slnc@name @width}{\marginparwidth}%
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar@default}
+% \end{macrocode}
+% \begin{macro}{\slnc@defpos}
+% Little helper for option \Option{marginpar}. The argument is the expanded
+% name of the note column.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@defpos{%
+ \newcommand*\slnc@defpos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
+ \if@reversemargin
+% \end{macrocode}
+% The reverse marginal note column on odd pages is at the left margin.
+% \begin{macrocode}
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+% \end{macrocode}
+% The normal marginal note column on odd pages is the right margin.
+% \begin{macrocode}
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \fi
+ \else
+ \if@twoside
+ \if@reversemargin
+% \end{macrocode}
+% The reverse marginal note column on even pages is the right margin.
+% \begin{macrocode}
+ \dimexpr \evensidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
+% \end{macrocode}
+% The normal marginal note column on even pages is at the left margin.
+% \begin{macrocode}
+ \dimexpr \evensidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \fi
+ \else
+% \end{macrocode}
+% \begin{macrocode}
+% If not in two-side mode, do the same already done for odd pages.
+ \if@reversemargin
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}%^^A \slnc@defpos
+% \begin{macrocode}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{normalmarginpar}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{normalmarginpar}{#1}%
+ \edef\reserved@a{\noexpand\slnc@defnormalpos{\slnc@name}}\reserved@a
+ \@namedef{slnc@\slnc@name @width}{\marginparwidth}%
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar@default}
+% \end{macrocode}
+% \begin{macro}{\slnc@defnormalpos}
+% Little helper for option \Option{normalmarginpar}. The argument is the
+% expanded name of the note column.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@defnormalpos{%
+ \newcommand*\slnc@defnormalpos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
+% \end{macrocode}
+% The normal marginal note column on odd pages is the right margin.
+% \begin{macrocode}
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
+ \if@twoside
+% \end{macrocode}
+% The normal marginal note column on even pages is at the left margin.
+% \begin{macrocode}
+ \dimexpr \evensidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+% \end{macrocode}
+% \begin{macrocode}
+% If not in two-side mode, do the same already done for odd pages.
+ \dimexpr \oddsidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \fi
+ \fi
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}%^^A \slnc@defnormalpos
+% \begin{macrocode}
+\DefineFamilyKey[.definenotecolumn]{KOMAarg}{reversemarginpar}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{reversemarginpar}{#1}%
+ \edef\reserved@a{\noexpand\slnc@defreversepos{\slnc@name}}\reserved@a
+ \@namedef{slnc@\slnc@name @width}{\marginparwidth}%
+}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar}
+\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar@default}
+% \end{macrocode}
+% \begin{macro}{\slnc@defreversepos}
+% Little helper for option \Option{reversemarginpar}. The argument is the
+% expanded name of the note column.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@defreversepos{%
+ \newcommand*\slnc@defreversepos[1]{%
+ \@namedef{slnc@#1@pos}{%
+ \ifodd\value{page}
+% \end{macrocode}
+% The reverse marginal note column on odd pages is at the left margin.
+% \begin{macrocode}
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \else
+ \if@twoside
+% \end{macrocode}
+% The reverse marginal note column on even pages is the right margin.
+% \begin{macrocode}
+ \dimexpr \evensidemargin+1in
+ +\textwidth+\marginparsep\relax
+ \else
+% \end{macrocode}
+% \begin{macrocode}
+% If not in two-side mode, do the same already done for odd pages.
+ \dimexpr \oddsidemargin+1in
+ -\marginparsep-\csname slnc@#1@width\endcsname\relax
+ \fi
+ \fi
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}%^^A \slnc@defreversepos
+% \begin{macrocode}
+%</body>
+% \end{macrocode}
+% \end{option}%^^A reversemarginpar
+% \end{option}%^^A normalmarginpar
+% \end{option}%^^A marginpar
+% \end{option}%^^A font
+% \end{option}%^^A width
+% \end{option}%^^A position
+% \end{macro}%^^A \DeclareNoteColumn
+%
+% \begin{macro}{\DeclareNewNoteColumn}
+% \begin{macro}{\ProvideNoteColumn}
+% \begin{macro}{\RedeclareNoteColumn}
+% Like \Macro{DeclareNoteColumn} but with restrictions, if the note column has
+% (not) been declared already.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\DeclareNewNoteColumn{%
+ \newcommand*{\DeclareNewNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{}{%
+ \PackageError{scrlayer-notecolumn}{note column `#2' already defined}{%
+ You may declare only note columns, that haven't been declared
+ previously using\MessageBreak
+ \string\DeclareNewNoteColumn. See also the alternatives
+ \string\RedeclareNoteColumn,\MessageBreak
+ \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.%
+ }%
+ }%
+ \DeclareNoteColumn[{#1}]{#2}%
+ }%
+}
+\scrlayerAddToInterface\ProvideNoteColumn{%
+ \newcommand*{\ProvideNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{}{%
+ \PackageInfo{scrlayer-notecolumn}{\string\ProvideNoteColumn{#2}
+ ignored,\MessageBreak
+ because of already defined\MessageBreak
+ not column}%
+ }{%
+ \DeclareNoteColumn[{#1}]{#2}%
+ }%
+ }%
+}
+\scrlayerAddToInterface\RedeclareNoteColumn{%
+ \newcommand*{\RedeclareNoteColumn}[2][]{%
+ \scr@ifundefinedorrelax{slnc@#2@box}{%
+ \PackageError{scrlayer-notecolumn}{note column `#2' undefined}{%
+ You may declare only note columns, that have been declared
+ previously using\MessageBreak
+ \string\RedeclareNoteColumn. See also the alternatives
+ \string\DeclareNewNoteColumn,\MessageBreak
+ \string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.%
+ }%
+ }{}%
+ \DeclareNoteColumn[{#1}]{#2}%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Setting a Note Column}
+%
+% We already have commands to declare note columns. But we also need a command
+% to put contents into the note columns and to output the note columns.
+%
+% \begin{macro}{\tf@slnc}
+% \changes{v0.1.2395}{2016/03/25}{write to \texttt{aux}-file with
+% \cs{if@filesw}}^^A
+% \begin{macro}{\slnc@initwrite}
+% \begin{macro}{\slnc@openwrite}
+% \changes{v0.1.2928}{2018/02/02}{use \cs{closein} instead of \cs{closeout}
+% to close \cs{slnc@file}}^^A
+% First of all we need a file to write the notes to. We use the
+% \File{aux}-file to write into the file, because we need to read the file
+% while the document will be typeset and the same time we need to write into
+% the file. Note, that the file will be still reserved on auto-removing the
+% interface!
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\tf@slnc{%
+ \newwrite\tf@slnc
+ \AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \noexpand\csname slnc@initwrite\noexpand\endcsname
+ }%
+ \fi
+ }%
+ \AtEndDocument{\let\slnc@initwrite\slnc@openwrite}%
+}
+\scrlayerAddToInterface\slnc@initwrite{}%
+\scrlayerAddToInterface\slnc@openwrite{%
+ \newcommand*{\slnc@openwrite}{%
+ \immediate\closein\slnc@file
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ Opening `\jobname.slnc'\MessageBreak
+ for writing}%
+%</trace>
+ \immediate\openout\tf@slnc\jobname.slnc
+ }%
+}
+% \end{macrocode}
+% After reading the main \File{aux}-file at |\end{document}|, we again
+% calculate the md5 checksum of the \File{slnc}-file. If it has been changed
+% we set |\if@tempswa| to |\iftrue| to provocate a rerun message.
+% \changes{v0.1.2872}{2018/01/17}{usage of Lua function
+% \texttt{slncmdfivesum}}^^A
+% \changes{v0.1.2972}{2018/04/01}{usage of not yet documented Xe\TeX{}
+% primitive \cs{mdfivesum}}^^A
+% \begin{macrocode}
+\AfterReadingMainAux{%
+ \immediate\closeout\tf@slnc
+ \begingroup
+ \scr@ifundefinedorrelax{pdfmdfivesum}{%
+ \scr@ifundefinedorrelax{mdfivesum}{%
+ \ifdefined\directlua
+ \edef\reserved@a{\directlua{slncmdfivesum("\jobname.slnc")}}%
+ \else
+ \let\reserved@a\relax
+ \fi
+ }{%
+ \edef\reserved@a{\mdfivesum file {\jobname.slnc}}%
+ }%
+ }{%
+ \edef\reserved@a{\pdfmdfivesum file {\jobname.slnc}}%
+ }%
+ \ifx\reserved@a\relax
+ \PackageWarningNoLine{scrlayer-notecolumn}{%
+ \string\pdfmdfivesum\space unavailable.\MessageBreak
+ The package needs \string\pdfmdfivesum,\MessageBreak
+ \string\mdfivesum, or LuaTeX to test whether\MessageBreak
+ or not one more LaTeX run is needed to place the\MessageBreak
+ note columns correctly. If these are unavailable\MessageBreak
+ you have to do the decision without the help\MessageBreak
+ of the package%
+ }%
+ \else
+ \ifx \slnc@mdfivesum\reserved@a
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ MD5 of current `\jobname.slnc':\MessageBreak
+ \reserved@a}%
+%</trace>
+ \else
+%<*trace>
+ \PackageWarningNoLine{scrlayer-notecolumn}{%
+ MD5 of slnc-file changed.\MessageBreak
+ Last: \slnc@mdfivesum\MessageBreak
+ New: \space \reserved@a\MessageBreak
+ At least one more LaTeX rerun needed to\MessageBreak
+ make note columns right%
+ }%
+%</trace>
+ \aftergroup\@tempswatrue
+ \fi
+ \fi
+ \endgroup
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \slnc@openwrite
+% \end{macro}^^A \slnc@initwrite
+% \end{macro}^^A \tf@slnc
+%
+% \begin{macro}{\makenote}
+% \begin{description}
+% \item[\OParameter{string}:] the name of the note column the note should be
+% added to (must be fully expandable and expand to a string only). The
+% default value is \PValue{marginpar}.
+% \item[\Parameter{code}:] the code, that should become par of the note
+% column. Note, that this will be written protected to a file. So you have
+% to use \Macro{protect} if a macro shouldn't be expanded while writing or
+% may break while writing.
+% \end{description}
+% There is a star variant with the same parameters, that writes the
+% \meta{code} un-expanded. To do so, we need some internal commands.
+% \begin{macro}{\slnc@unexpanded}
+% \changes{0.1.2583}{2017/02/08}{new (internal)}^^A
+% \begin{macro}{\slnc@makenote}
+% \changes{0.1.2583}{2017/02/08}{new (internal)}^^A
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\slnc@unexpanded{%
+ \let\slnc@unexpanded\detokenize
+}
+\scrlayerAddToInterface\makenote{%
+ \newcommand*{\makenote}{%
+ \kernel@ifstar{\let\slnc@unexpanded\detokenize\slnc@makenote}%
+ {\let\slnc@unexpanded\@firstofone\slnc@makenote}%
+ }%
+}
+\scrlayerAddToInterface\slnc@makenote{%
+ \newcommand{\slnc@makenote}[2][marginpar]{%
+ \@bsphack
+ \scr@savepos
+ \addtocontents{slnc}{%
+ \string\slnc@note{#1}%
+ {\noexpand\number\value{slncpage}}%
+ {\noexpand\number\scr@lastypos}%
+ {\slnc@unexpanded{#2}}%
+ }%
+ \@esphack
+ }%
+}
+% \end{macrocode}
+%^^A \begin{counter}{slncpage}
+% This counter should be increased once per page with note column. This may
+% be done simply at a once per page executed hook of
+% \Pagestyle{@everystyle@}. You should note, that auto-remove wouldn't
+% remove the counter.
+% \begin{macrocode}
+\@ifundefined{c@slncpage}{%
+ \newcounter{slncpage}%
+ \AddToLayerPageStyleOptions{@everystyle@}{%
+ onbackground=\stepcounter{slncpage}%
+ }%
+}{}
+%</body>
+% \end{macrocode}
+%^^A \end{counter}^^A slncpage
+% \end{macro}^^A \slnc@unexpanded
+% \end{macro}^^A \slnc@makenote
+% \end{macro}^^A \makenote
+%
+% \begin{macro}{\slnc@processnotes}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the note column (must be fully
+% expandable an expand to a string only).
+% \end{description}
+% Each note column typesets the notes with this command. It works in following
+% steps:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\slnc@processnotes{%
+ \newcommand*{\slnc@processnotes}[1]{%
+% \end{macrocode}
+% Read as long notes from the notes file until the number at \#2 of
+% \Macro{slnc@note} in the file is greater than \Counter{slncpage}. Put all
+% these to the corresponding unprocessed list.
+% \begin{macrocode}
+ \begingroup
+ \slnc@readnotes{\value{slncpage}}%
+% \end{macrocode}
+% Process the unprocessed list of the current note column
+% \begin{macrocode}
+ \expandafter\let\expandafter\reserved@a
+ \csname slnc@#1@unprocessed\endcsname
+ \expandafter\global
+ \expandafter\let\csname slnc@#1@unprocessed\endcsname\@empty
+ \def\slnc@notesyncfonttest##1{%
+ \ifhmode
+ \PackageError{scrlayer-notecolumn}{%
+ illegal font setting for `notecolumn.##1'%
+ }{%
+ Current setting of font for `notecolumn.##1' switches
+ from\MessageBreak
+ vertical mode to horizontal mode. This is
+ illegal!\MessageBreak
+ You have to change the font setting to fix
+ this.\MessageBreak
+ If you'll continue vertical alignment of notes may fail%
+ }%
+ \par\vskip-\dimexpr \baselineskip+\parskip\relax
+ \fi
+ }%
+ \long\def\slnc@note##1##2##3##4{%
+ \let\PackageInfo\PackageWarning
+%<trace> \typeout{TRACE (slnc): ##2<=\theslncpage?}%
+ \ifnum ##2>\value{slncpage}\relax
+%<trace> \typeout{TRACE (slnc): no: unprocess note}%
+ \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
+ \slnc@note{##1}{##2}{##3}{##4}%
+ }%
+ \else
+ \ifnum ##2<\value{slncpage}\relax
+ \PackageWarning{scrlayer-notecolumn}{note of type `#1' delayed}%
+ \fi
+ \boxmaxdepth\maxdepth
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \expandafter\hsize\csname slnc@#1@width\endcsname
+ \normalfont\normalsize
+ {%
+% \end{macrocode}
+% Question: Why is it not allowed to set a colour here?
+% \begin{macrocode}
+ \let\color\@gobble
+ \usekomafont{notecolumn.#1}{%
+ \slnc@notesyncfonttest{#1}%
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \kern\dimexpr\topskip-\baselineskip\relax
+ }%
+ \fi
+% \end{macrocode}
+% \changes{v0.1}{2015/10/07}{ready for renaming \cs{pdfpageheight} in
+% luaTeX}^^A
+% From lua\TeX~0.80.1 \cs{pdfpageheight} will be renamed into
+% \cs{pageheight}. So we have to do an extra test for the new primitive.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{pdfpageheight}{%
+ \scr@ifundefinedorrelax{pageheight}{%
+ \@tempdima=\paperheight
+ }{%
+ \@tempdima=\pageheight
+ }%
+ }{%
+ \@tempdima=\pdfpageheight
+ }%
+ \@tempdima=\dimexpr \@tempdima-##3sp
+ -1in-\topmargin
+ -\headheight-\headsep
+ -\baselineskip
+ \relax
+ \@tempdimb=\dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
+ +\expandafter\dp\csname slnc@#1@box\endcsname
+ \relax
+ \typeout{Soll: \the\@tempdima^^JIst: \space\the\@tempdimb}%
+ \ifdim\@tempdima<\@tempdimb
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ Note moved down from\MessageBreak
+ \the\@tempdima\space to \the\@tempdimb\MessageBreak
+ at note box `#1'
+ }%
+%</trace>
+ \else
+ \ifdim\@tempdima>\@tempdimb
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ Adding vertical white space from\MessageBreak
+ \the\@tempdimb\space to \the\@tempdima\MessageBreak
+ into note box `#1'
+ }%
+%</trace>
+ \expandafter\setbox\csname slnc@#1@box\endcsname
+ \vbox {%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \kern\dimexpr\@tempdima-\@tempdimb\relax
+ }%
+ \fi
+ \fi
+ \expandafter\ifvoid\expandafter\csname slnc@#1@box\endcsname
+ \else
+ \@tempdima\dimexpr
+ \dp\strutbox
+ -\dp\csname slnc@#1@box\endcsname
+ \relax
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \ifdim\@tempdima>\z@ \kern\@tempdima\fi
+ \fi
+% \end{macrocode}
+% \changes{v0.1.2582}{2017/02/08}{restore several commands}^^A
+% Some commands have to be restored when processing the note.
+% \begin{macrocode}
+ \slnc@restoreinnote
+ \strut\ignorespaces ##4\par
+ }%
+ }%
+ }%
+ \fi
+ }%
+ \def\slnc@sync##1##2##3##4{%
+ \ifnum ##2>\value{slncpage}\relax
+ \expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
+ \slnc@sync{##1}{##2}{##3}{}%
+ }%
+ \else
+ \if@filesw
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ \scr@savepos
+ \protected@write\@auxout{}{%
+ \string\newlabel{notecolumn.##1.##3.syncnote.label}{%
+ {%
+ \noexpand\number\scr@lastypos
+ }{\thepage}%
+ }%
+ }%
+ }%
+ \fi
+ \fi
+ }%
+ \reserved@a
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{Note box `#1' empty}%
+%</trace>
+ \else
+ \ifdim \dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
+ +\expandafter\dp\csname slnc@#1@box\endcsname
+ \relax >\textheight\relax
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{Split note box `#1'}%
+%</trace>
+ \splittopskip\topskip
+ \splitmaxdepth\baselineskip
+% \end{macrocode}
+% Bring back the colours:
+% \begin{macrocode}
+ \usekomafont{notecolumn.#1}{%
+ \expandafter\vsplit\csname slnc@#1@box\endcsname to
+ \textheight\relax
+ }%
+ \expandafter\ifvoid\csname slnc@#1@box\endcsname
+ \else
+ \expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
+ \expandafter\unvbox\csname slnc@#1@box\endcsname
+ }%
+ \fi
+ \else
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{Flush note box `#1'}%
+%</trace>
+% \end{macrocode}
+% Bring back the colours:
+% \begin{macrocode}
+ \usekomafont{notecolumn.#1}{%
+ \expandafter\box\csname slnc@#1@box\endcsname%
+ }%
+ \fi
+ \fi
+ \expandafter\global
+ \expandafter\setbox\csname slnc@#1@box\expandafter\endcsname
+ \expandafter\box\csname slnc@#1@box\endcsname
+ \endgroup
+ }
+}
+% \end{macrocode}
+% \begin{macro}{\restoreinnote}
+% \changes{0.1.2582}{2017/02/08}{new command}^^A
+% \begin{macro}{\slnc@restoreinnote}
+% \changes{0.1.2582}{2017/02/08}{new (internal)}^^A
+% Some commands have to be restored while processing the notes. By default
+% these are \cs{label}, \cs{index}, \cs{glossary}. More can be added using
+% \cs{restoreinnote}. The storage is \cs{slnc@restoreinnote}.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@restoreinnote{%
+ \let\slnc@restoreinnote\@empty
+}
+\scrlayerAddToInterface\restoreinnote{%
+ \newcommand*\restoreinnote[1]{%
+ \AtBeginDocument{%
+ \expandafter\scrlayerAddCsToInterface[scrlayer-notecolumn.sty]{slnc\string#1}{%
+ \expandafter\let\csname slnc\string#1\endcsname#1%
+ \g@addto@macro\slnc@restoreinnote{%
+ \expandafter\let\expandafter#1\csname slnc\string#1\endcsname
+ }%
+ }%
+ }%
+ }%
+ \@onlypreamble\restoreinnote
+ \restoreinnote\label
+ \restoreinnote\index
+ \restoreinnote\glossary
+}
+% \end{macrocode}
+% \end{macro}^^A \slnc@restoreinnote
+% \end{macro}^^A \restoreinnote
+% \begin{macro}{\slnc@readnotes}
+% Read as long notes from the notes file until the number at \#2 of
+% \Macro{slnc@note} or \Macro{slnc@sync} in the file is greater than
+% \Counter{slncpage}. Put all these to the corresponding unprocessed list.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@readnotes{%
+ \newcommand*\slnc@readnotes[1]{%
+ \ifeof\slnc@file\else
+ \ifnum \number #1<\slnc@unprocessed\relax
+ \@tempswafalse
+ \else
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+ \edef\reserved@a{%
+ \noexpand\makeatletter
+ \endlinechar\m@ne
+ \read\noexpand\slnc@file to\noexpand\reserved@a
+ \endlinechar\the\endlinechar\relax
+ \catcode`\noexpand\@=\the\catcode`\@\relax
+ }%
+ \reserved@a
+ \expandafter\slnc@iofv\expandafter\reserved@b\reserved@a
+ \@empty\@empty\@empty\@empty\@empty
+ \@tempswafalse
+ \@for\reserved@c :={\slnc@note },{\slnc@sync }\do{%
+ \ifx\reserved@b\reserved@c \@tempswatrue\fi
+ }%
+ \if@tempswa
+ \@tempswafalse
+ \expandafter\slnc@iiiofv\expandafter\reserved@b\reserved@a
+ \@empty\@empty\@empty\@empty\@empty
+ \ifx\reserved@b\@empty
+ \PackageError{scrlayer-notecolumn}{internal syntax error}{%
+ Unexpected syntax of file `\jobname.slnc'.\MessageBreak
+ Second argument should be a number.\MessageBreak
+ I don't know what to do with\MessageBreak
+ \expandafter\detokenize\expandafter{\reserved@a}%
+ }%
+ \@tempswatrue
+ \else
+ \global\let\slnc@unprocessed\reserved@b
+ \expandafter\slnc@iiofv\expandafter\reserved@b\reserved@a
+ \@empty\@empty\@empty\@empty\@empty
+ \@ifundefined{slnc@\reserved@b @unprocessed}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ column `\reserved@b' undefined.\MessageBreak
+ You should declare the column before the usage.\MessageBreak
+ Notes will be lost%
+ }%
+ }{%
+ \expandafter\g@addto@macro
+ \csname slnc@\reserved@b @unprocessed\expandafter\endcsname
+ \expandafter{%
+ \reserved@a
+ }%
+ }%
+ \ifnum \number #1<\slnc@unprocessed\relax
+ \@tempswafalse
+ \else
+ \@tempswatrue
+ \fi
+ \fi
+ \else
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ Ignoring `\expandafter\detokenize\expandafter{\reserved@a}'}%
+%</trace>
+ \@tempswatrue
+ \fi
+ \ifeof\slnc@file\@tempswafalse\fi
+ }%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \slnc@readnotes
+% \begin{macro}{\slnc@iofv}
+% \begin{macro}{\slnc@iiofv}
+% \begin{macro}{\slnc@iiiofv}
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@iofv{%
+ \newcommand\slnc@iofv[6]{\def#1{#2}}%
+}
+\scrlayerAddToInterface\slnc@iiofiv{%
+ \newcommand\slnc@iiofv[6]{\def#1{#3}}%
+}
+\scrlayerAddToInterface\slnc@iiiofiv{%
+ \newcommand\slnc@iiiofv[6]{\def#1{#4}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \slnc@iiiofv
+% \end{macro}^^A \slnc@iiofv
+% \end{macro}^^A \slnc@iofv
+% \begin{macro}{\slnc@unprocessed}
+% The \#2 of the last read note column from notes file.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@unprocessed{%
+ \newcommand*{\slnc@unprocessed}{0}%
+}
+%</body>
+% \end{macrocode}
+% \begin{macro}{\slnc@file}
+% The input file with the unprocessed notes.
+% \changes{v0.1.2928}{2018/02/02}{use \cs{closein} instead of \cs{closeout}
+% to close \cs{slnc@file}}^^A
+% \begin{macro}{\slnc@mdfivesum}
+% \changes{v0.1.2872}{2018/01/17}{definition and usage of Lua function
+% \texttt{slncmdfivesum}}^^A
+% \changes{v0.1.2972}{2018/04/01}{usage of not yet documented Xe\TeX{}
+% primitive \cs{mdfivesum}}^^A
+% The MD5 sum of the file before opening it for reading.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\slnc@mdfivesum{%
+ \let\slnc@mdfivesum\@empty
+}
+\scrlayerAddToInterface\slnc@file{%
+ \scr@ifundefinedorrelax{pdfmdfivesum}{%
+ \scr@ifundefinedorrelax{mdfivesum}{%
+ \ifdefined\directlua
+ \directlua{%
+ function slncmdfivesum(filename)
+ local fh = io.open(filename,"rb")
+ if fh then
+ local sum=md5.sumhexa(fh:read("*a"))
+ tex.sprint(sum)
+ fh:close()
+ end
+ end
+ }%
+ \xdef\slnc@mdfivesum{\directlua{slncmdfivesum("\jobname.slnc")}}%
+ \fi
+ }{%
+ \xdef\slnc@mdfivesum{\mdfivesum file {\jobname.slnc}}%
+ }%
+ }{%
+ \xdef\slnc@mdfivesum{\pdfmdfivesum file {\jobname.slnc}}%
+ }%
+%<*trace>
+ \scr@ifundefinedorrelax{slnc@mdfivesum}{}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ MD5 of last `\jobname.slnc':\MessageBreak
+ \slnc@mdfivesum}%
+ }%
+%</trace>
+ \newread\slnc@file
+ \immediate\openin\slnc@file \jobname.slnc
+ \scrlayerOnAutoRemoveInterface{\immediate\closein\slnc@file}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \slnc@mdfivesum
+% \end{macro}^^A \slnc@file
+% \end{macro}^^A \slnc@unprocessed
+% \end{macro}^^A \slnc@processnotes
+%
+% \begin{option}{autoclearnotecolumns}
+% \begin{macrocode}
+%<*options>
+\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns}\slnc@autoclearnotecolumnstrue
+\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns}
+\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns@default}
+%</options>
+%<*final>
+\let\reserved@a\clearpage
+\def\clearpage{%
+ \ifslnc@autoclearnotecolumns\clearnotecolumns\relax\fi
+}%
+\expandafter\g@addto@macro\expandafter\clearpage\expandafter{\reserved@a}
+%</final>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\clearnotecolumn}
+% \begin{description}
+% \item[\OParameter{string}:] the name of the note column (must be fully
+% expandable and expand to a string only). Default is \PValue{marginpar}.
+% \end{description}
+% Output as many (empty) pages as needed to output all unprocessed notes of
+% one note column. Note, that the output of the first page may result in more
+% unprocessed notes. But the output of the following (empty) pages shouldn't.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\c@slnc@clearnote@label{%
+ \newcounter{slnc@clearnote@label}%
+}
+\scrlayerAddToInterface\clearnotecolumn{%
+ \newcommand*\clearnotecolumn[1][marginpar]{%
+ \begingroup
+ \slnc@autoclearnotecolumnsfalse
+% \end{macrocode}
+% First of all we need to know the note column page of this page.
+% \begin{macrocode}
+ \stepcounter{slnc@clearnote@label}%
+ \if@filesw
+ \protected@write\@auxout{%
+ \let\theslncpage\relax
+ \let\slnc@voidtest\relax
+ }{%
+ \string\newlabel{notecolumn.\theslnc@clearnote@label}%
+ {{\theslncpage}{\slnc@voidtest{#1}}}%
+ }%
+ \fi
+ \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Using estimated to low value for clearing\MessageBreak
+ note colum `#1'%
+ }
+ \edef\slnc@cmp@value{\the\value{slncpage}}%
+ \let\reserved@a\z@
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
+ }%
+ \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ }%
+%<*trace>
+ \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
+ abspage=\the\value{slncpage}, until page=\slnc@cmp@value,
+ process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
+%</trace>
+ \ifvmode\ifdim \pagetotal<\topskip
+% \end{macrocode}
+% \Macro{clearpage} wouldn't result in a new page, so we do not have to output
+% the notes of this page but only until the previous.
+% \begin{macrocode}
+ \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
+%<trace> \typeout{TRACE (slnc): until page=\slnc@cmp@value}%
+ \fi\fi
+ \ifnum \reserved@a=\z@
+% \end{macrocode}
+% Next we read all notes until the end of the current page, but only
+% if a \Macro{clearpage} wouldn't result in a new page.
+% \begin{macrocode}
+ \ifvmode
+ \ifdim \pagetotal<\topskip
+ \else
+ \slnc@readnotes{\slnc@cmp@value}%
+ \fi
+ \else
+ \slnc@readnotes{\slnc@cmp@value}%
+ \fi
+ \begingroup
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \csname slnc@#1@unprocessed\endcsname
+ \endgroup
+ \else
+ \PackageInfo{scrlayer-notecolumn}{%
+ box of note column `#1'\MessageBreak
+ not empty after page of \string\clearnotecolumn}%
+ \@tempswatrue
+ \fi
+ \if@tempswa
+% \end{macrocode}
+% Yes, we have!
+% \begin{macrocode}
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\clearnotecolumn\space while active non-layer page
+ style.\MessageBreak
+ Activate empty page style until note column\MessageBreak
+ has been cleared%
+ }%
+ \pagestyle{empty}%
+ }%
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
+% \end{macrocode}
+% Yes, we have (maybe again)!
+% \begin{macrocode}
+ \clearpage
+ \expandafter\ifcase \slnc@voidtest{#1}%
+ \begingroup
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \csname slnc@#1@unprocessed\endcsname
+ \endgroup
+ \else
+ \@tempswatrue
+ \fi
+ \if@tempswa
+% \end{macrocode}
+% And we still have: So we have to output one more page.
+% \begin{macrocode}
+ \null
+ \fi
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\slnc@firstof}
+% \begin{macro}{\slnc@secondof}
+% We need these little helpers, because some packages like
+% \Package{hyperref} extend the label mechanism by additional arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface{\slnc@firstof}{%
+ \def\slnc@firstof#1#2\@nil{#1}%
+}
+\scrlayerAddToInterface{slnc@secondof}{%
+ \def\slnc@secondof#1#2#3\@nil{#2}%
+}
+% \end{macrocode}
+% \end{macro}^^A \slnc@firstof
+% \end{macro}^^A \slnc@secondof
+% \begin{macro}{\slnc@voidtest}
+% \begin{description}
+% \item[\Parameter{string}:] the name of a note column (must be fully
+% expandable and expand to a string only).
+% \end{description}
+% If the box of the note column is empty/void it returns \Macro{z@} otherwise
+% \Macro{@ne}.
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@voidtest{%
+ \newcommand*{\slnc@voidtest}[1]{%
+ \expandafter\ifvoid \csname slnc@#1@box\endcsname \z@\else \@ne\fi
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \slnc@voidtest
+% \end{macro}^^A \clearnotecolumn
+%
+% \begin{macro}{\clearnotecolumns}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \changes{v3.26}{2018/08/29}{removed spurious \cs{expandafter}}^^A
+% \begin{description}
+% \item[\OParameter{string list}:] comma separated list of note column names
+% (must be fully expandable and each element must expand to a string only,
+% that is the name of a note column); if omitted or empty all note columns
+% will be used.
+% \end{description}
+% Output as many (empty) pages as needed to output all unprocessed notes of
+% all (given) note columns. Note, that the output of the first page may
+% result in more unprocessed notes. But the output of the following (empty)
+% pages shouldn't.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\clearnotecolumns{%
+ \newcommand*\clearnotecolumns[1][\relax]{%
+ \begingroup
+ \slnc@autoclearnotecolumnsfalse
+ \ifx\relax#1\relax\else
+ \let\slnc@processnotecolumns\@empty
+ \edef\reserved@a{#1}%
+ \@for\reserved@a:=\reserved@a\do {%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
+ \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
+ \fi
+ }%
+ \fi
+% \end{macrocode}
+% First of all we need to know the note column page of this page.
+% \begin{macrocode}
+ \stepcounter{slnc@clearnote@label}%
+ \if@filesw
+ \begingroup
+ \def\@elt##1{+\slnc@voidtest{##1}}%
+ \protected@write\@auxout{%
+ \let\theslncpage\relax
+ \let\slnc@voidtest\relax
+ }{%
+ \string\newlabel{notecolumn.\theslnc@clearnote@label}%
+ {{\theslncpage}{\numexpr \slnc@processnotecolumns\relax}}%
+ }%
+ \endgroup
+ \fi
+ \scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
+ \begingroup
+ \def\@elt##1{, `##1'}%
+ \PackageInfo{scrlayer-notecolumn}{%
+ Using estimated to low value for\MessageBreak
+ clearing note colums\MessageBreak
+ \expandafter\@gobble\slnc@processnotecolumns
+ }%
+ \endgroup
+ \edef\slnc@cmp@value{\the\value{slncpage}}%
+ \let\reserved@a\z@
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
+ }%
+ \edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
+ }%
+%<*trace>
+ \typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
+ abspage=\theslncpage, until page=\slnc@cmp@value,
+ process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
+%</trace>
+ \ifvmode\ifdim \pagetotal<\topskip
+% \end{macrocode}
+% \Macro{clearpage} wouldn't result in a new page, so we do not have to output
+% the notes of this page but only until the previous.
+% \begin{macrocode}
+ \edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
+%<trace> \typeout{TRACE (slnc): until page=\slnc@cmp@value}%
+ \fi\fi
+ \ifnum \reserved@a=\z@
+% \end{macrocode}
+% Next we read all notes until the end of the current page, but only
+% if a \Macro{clearpage} wouldn't result in a new page.
+% \begin{macrocode}
+ \ifvmode
+ \ifdim \pagetotal<\topskip
+ \else
+ \slnc@readnotes{\slnc@cmp@value}%
+ \fi
+ \else
+ \slnc@readnotes{\slnc@cmp@value}%
+ \fi
+ \begingroup
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
+ \slnc@processnotecolumns
+ \endgroup
+ \else
+ \PackageInfo{scrlayer-notecolumn}{%
+ box of at least one note column\MessageBreak
+ not empty after page of \string\clearnotecolumns}%
+ \@tempswatrue
+ \fi
+ \if@tempswa
+% \end{macrocode}
+% Yes, we have!
+% \begin{macrocode}
+ \IfLayerPageStyleExists{\currentpagestyle}{}{%
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\clearnotecolumns\space while active non-layer page
+ style.\MessageBreak
+ Activate empty page style until note column\MessageBreak
+ has been cleared%
+ }%
+ \pagestyle{empty}%
+ }%
+ \@tempswatrue
+ \fi
+ \@whilesw\if@tempswa\fi{%
+%<trace> \typeout{TRACE (slnc): add \string\clearpage}%
+% \end{macrocode}
+% Yes, we have (maybe again)!
+% \begin{macrocode}
+ \clearpage
+ \begingroup
+ \def\@elt##1{+\slnc@voidtest{##1}}%
+ \ifcase \numexpr \slnc@processnotecolumns\relax
+ \aftergroup\@tempswafalse
+ \long\def\slnc@note##1##2##3##4{%
+ \ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
+ }%
+ \let\slnc@sync\slnc@note
+ \def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
+ \slnc@processnotecolumns
+ \else
+ \aftergroup\@tempswatrue
+ \fi
+ \endgroup
+ \if@tempswa
+% \end{macrocode}
+% And we still have: So we have to output one more page.
+% \begin{macrocode}
+ \null
+ \fi
+ }%
+ \endgroup
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \clearnotecolumns
+%
+%
+% \section{Syncronisation of Text and Note}
+% \label{sec:scrlayer-notecolumn.sync}
+%
+% Until yet we have the text and we have note columns. Normally note entries
+% to a note column are in sync with the text position, that makes the
+% note. But if there are collisions the sync may be lost. In this case the
+% note may be later (but never earlier), so we need a mechanism to force
+% synchronisation of the text with the note.
+%
+% \begin{macro}{\syncwithnotecolumn}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \changes{v3.26}{2018/08/29}{removed spurious \cs{expandafter}}^^A
+% \begin{description}
+% \item[\OParameter{string}:] the name of the note column to sync with (this
+% must be fully expandable and expand to the name of a note column). By
+% default sync with note column \PValue{marginpar}.
+% \end{description}
+% Add at the \LaTeX{} run after the next \LaTeX{} run as much space to the
+% text (not the note column!) as needed to reach the next position at the
+% note column. This is not the same like \Macro{clearnotecolumn}, because it
+% doesn't need to go to the next page, but it needs at least three \LaTeX{}
+% runs to terminate.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface{\c@slnc@syncpoint}{%
+ \newcounter{slnc@syncpoint}%
+}
+\scrlayerAddToInterface{\syncwithnotecolumn}{%
+ \newcommand*{\syncwithnotecolumn}[1][marginpar]{%
+ \begingroup
+ \edef\reserved@a{\endgroup\noexpand\syncwithnotecolumns[{#1}]}%
+ \reserved@a
+ }%
+}
+\scrlayerAddToInterface{\syncwithnotecolumns}{%
+ \newcommand*{\syncwithnotecolumns}[1][\relax]{%
+ \begingroup
+ \ifx\relax#1\relax\else
+ \let\slnc@processnotecolumns\@empty
+ \edef\reserved@a{#1}%
+ \@for\reserved@a:=\reserved@a\do {%
+ \scr@trim@spaces\reserved@a
+ \ifx\reserved@a\@empty\else
+ \expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
+ \expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
+ \fi
+ }%
+ \fi
+ \stepcounter{slnc@syncpoint}%
+ \def\@elt##1{%
+ \addtocontents{slnc}{%
+ \string\slnc@sync{##1}%
+ {\noexpand\number\value{slncpage}}%
+ {\theslnc@syncpoint}%
+ {}%
+ }%
+ }%
+ \slnc@processnotecolumns
+ \ifvmode
+ \let\slnc@voffset\@empty%
+ \expandafter\@firstofone
+ \else
+ \PackageWarning{scrlayer-notecolumn}{%
+ \string\syncwithnotecolumn\space in hmode.\MessageBreak
+ Using \string\syncwithnotecolumn\space in horizontal\MessageBreak
+ mode may result in unwanted vertical\MessageBreak
+ space inside paragraphs and may lost\MessageBreak
+ colours of text of notes. \space So perhaps you\MessageBreak
+ should move \string\syncwithnotecolumn\space before\MessageBreak
+ or after the paragraph%
+ }%
+ \let\slnc@voffset\@empty%\def\slnc@voffset{-\number\baselineskip}%
+ \expandafter\slnc@vadjust
+ \fi
+ {%
+ \if@filesw
+ \scr@savepos
+ \protected@write\@auxout{}{%
+ \string\newlabel{notecolumn.\theslnc@syncpoint.synctext.label}{%
+ {%
+ \noexpand\number
+ \numexpr \scr@lastypos\slnc@voffset\relax
+ }{\thepage}%
+ }%
+ }%
+ \fi
+ \@ifundefined{r@notecolumn.\theslnc@syncpoint.synctext.label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ No text label for \string\syncwithnotecolumn.\MessageBreak
+ Need rerun to sync position}%
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.\theslnc@syncpoint.synctext.label}%
+ \@empty\@empty
+ }%
+ \edef\slnc@textpos{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\slnc@textpage{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \let\slnc@notepos\slnc@textpos
+ \let\slnc@notepage\slnc@textpage
+ \def\@elt##1{%
+ \@ifundefined{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}{%
+ \PackageInfo{scrlayer-notecolumn}{%
+ No note label for sync with note column\MessageBreak
+ `##1'.\MessageBreak
+ Need rerun to sync position}%
+ \G@refundefinedtrue
+ }{%
+ \edef\reserved@a{%
+ \@nameuse{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}%
+ \@empty\@empty
+ }%
+ \edef\reserved@b{\expandafter\slnc@firstof\reserved@a\@nil}%
+ \edef\reserved@c{\expandafter\slnc@secondof\reserved@a\@nil}%
+ \ifnum \slnc@notepage<\reserved@c\relax
+ \let\slnc@notepos=\reserved@b
+ \let\slnc@notepage=\reserved@c
+ \else
+ \ifnum \slnc@notepage=\reserved@c\relax
+ \ifnum \slnc@notepos>\reserved@b
+ \let\slnc@notepos=\reserved@b
+ \let\slnc@notepage=\reserved@c
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ \slnc@processnotecolumns
+ \ifnum\slnc@textpage>\slnc@notepage\relax
+ \PackageInfo{scrlayer-notecolumn}{%
+ Last note page before last text page.\MessageBreak
+ Need rerun to sync position}%
+ \else
+ \ifnum\slnc@textpage<\slnc@notepage\relax
+ \@whilenum \slnc@textpage<\slnc@notepage\do {%
+ \newpage\null\vskip-\dimexpr \baselineskip+\parskip\relax
+ \edef\slnc@textpage{\the\numexpr\slnc@textpage+1\relax}%
+ }%
+% \end{macrocode}
+% \changes{v0.1}{2015/10/07}{ready for renaming \cs{pdfpageheight} in
+% luaTeX}^^A
+% From lua\TeX~0.80.1 \cs{pdfpageheight} will be renamed into
+% \cs{pageheight}. So we have to do an extra test for the new primitive.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{pdfpageheight}{%
+ \scr@ifundefinedorrelax{pageheight}{%
+ \@tempdima=\paperheight
+ }{%
+ \@tempdima=\pageheight
+ }%
+ }{%
+ \@tempdima=\pdfpageheight
+ }%
+ \@tempdima=\dimexpr \@tempdima
+ -\topmargin-1in
+ -\headheight-\headsep
+ -\topskip+\baselineskip
+ \relax
+ \edef\slnc@textpos{\number\@tempdima}%
+%<*trace>
+ \PackageInfo{scrlayer-notecolumn}{%
+ Top position is \slnc@textpos%
+ }%
+%</trace>
+ \fi
+ \ifnum\slnc@notepos>\slnc@textpos\relax
+ \PackageInfo{scrlayer-notecolumn}{%
+ Last note position before last text\MessageBreak
+ position.\MessageBreak
+ Need rerun to sync position%
+ }%
+ \else
+ \ifnum\slnc@notepos<\slnc@textpos\relax
+ \@tempdima=\numexpr \slnc@textpos-\slnc@notepos\relax sp
+ \PackageInfo{scrlayer-notecolumn}{%
+ skipping \the\@tempdima\space to sync%
+ }%
+ \vskip\@tempdima
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\slnc@vadjust}
+% \begin{macrocode}
+\scrlayerAddToInterface\slnc@vadjust{%
+ \newcommand{\slnc@vadjust}[1]{%
+ \@bsphack
+ \vadjust{#1}%
+ \@esphack
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \slnc@vadjust
+% \end{macro}^^A \syncwithnotecolumn
+%
+%
+% \iffalse^^A meta-comment
+%</interface>
+% \fi^^A meta-comment
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrlayer-notecolumn.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% ispell-local-dictionary: "en_GB"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx b/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx
new file mode 100644
index 0000000000..3868af7741
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlayer-scrpage.dtx
@@ -0,0 +1,2968 @@
+% \CheckSum{2591}
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlayer-scrpage.dtx
+% Copyright (c) Markus Kohm, 2012-2018
+%
+% 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 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.
+% ----------------------------------------------------------------------
+% scrlayer-scrpage.dtx
+% Copyright (c) Markus Kohm, 2012-2018
+%
+% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
+%
+% 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 in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse^^A meta-comment
+%%% From File: $Id: scrlayer-scrpage.dtx 3017 2018-09-05 06:27:27Z kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<options>%%% (run: options)
+%<body>%%% (run: body)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-09-05 08:27:27 +0200 (Wed, 05 Sep 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3017 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlayer-scrpage.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*identify>
+%<interface>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<interface>\ProvidesPackage{scrlayer-scrpage}[%
+%!KOMAScriptVersion
+%<interface> package
+%</identify>
+%<*dtx|identify>
+ (end user interface for scrlayer)]
+%</dtx|identify>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2012}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlayer-scrpage.sty}{%
+ \from{scrlayer-scrpage.dtx}{interface,trace,scrpage,identify}%
+ \from{scrlayer.dtx}{interface,trace,scrpage,init}%
+ \from{scrlayer-scrpage.dtx}{interface,trace,scrpage,init}%
+ \from{scrlayer.dtx}{interface,trace,scrpage,options}%
+ \from{scrlayer-scrpage.dtx}{interface,trace,scrpage,options}%
+ \from{scrlayer.dtx}{interface,trace,scrpage,body}%
+ \from{scrlayer-scrpage.dtx}{interface,trace,scrpage,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+ \documentclass{scrdoc}
+ \addtolength{\textwidth}{-1em}
+ \addtolength{\marginparwidth}{2em}
+ \addtolength{\oddsidemargin}{2em}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{url,babelbib}\bibliographystyle{babalpha-fl}
+ \usepackage{listings}
+ \usepackage{scrhack}
+ \usepackage{etoolbox}
+ \pretocmd\DescribeMacro{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeEnv{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeOption{\ifhmode\else\bigskip\noindent\fi}{}{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrlayer-scrpage.dtx}
+ \title{The \texttt{scrlayer} interface \texttt{scrlayer-scrpage}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \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}%
+ }
+ \providecommand*{\IndexCmd}[2][]{}
+ \providecommand*{\textnote}[2][]{}
+ \providecommand*\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
+ \providecommand*\NTS{%
+ \leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}%
+ \kern-0.2emS$}}
+
+ \lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}
+ \makeatother
+ \sloppy% YOU SHOULD NOT DO THIS!!!
+
+ \begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+ \PrintChanges
+ \PrintIndex
+ \end{document}
+% \fi^^A meta-comment
+%
+% \selectlanguage{english}
+%
+% \changes{v0.0}{2012/01/01}{start of interface}
+% \let\restorechapter\chapter
+% \let\chapter\section
+% \let\section\subsection
+% \let\subsection\subsubsection
+%
+%\iffalse
+%</dtx>
+%\fi
+%
+% \StopEventually{}
+%
+% \chapter{Implementation of \Package{scrlayer-scrpage}}
+% \label{sec:scrlayer-scrpage}
+%
+% This section if for developers only.
+%
+% \iffalse
+%<*interface>
+%<*identify>
+% \fi
+%
+%\iffalse
+%</identify>
+%\fi
+%
+%
+% \section{Initialising some Values before the Options}
+%
+% \iffalse^^A meta-comment
+%<*init>
+% \fi^^A meta-comment
+%
+% Initialisation before all options (even the options from
+% \File{scrlayer.dtx}).
+%
+% Currently nothing.
+%
+% \iffalse^^A meta-comment
+%</init>
+% \fi^^A meta-comment
+%
+% \section{Options}
+%
+% \iffalse^^A meta-comment
+%<*options>
+% \fi
+%
+% Package \Package{scrpage2} doesn't support \KOMAScript{} options but only
+% regular \LaTeX{} package options. The interface will also support those
+% options, but uses \KOMAScript{} options for the implementation. This
+% results in additional features of the interface.
+%
+% Note, that some options are already defined before this by the common option
+% parts of \File{scrlayer.dtx}. All others will follow step by step in the
+% main part.
+%
+% Options \Option{headinclude}, \Option{headexclude}, \Option{footinclude} and
+% \Option{footexclude} of package \Package{scrpage2} are deprecated since
+% package version 2.3, 2008-12-08. They won't be supported by the
+% \Package{scrlayer-scrpage} interface.
+%
+% Additional initialisation may be done here, but currently this isn't
+% needed.
+%
+% \iffalse^^A meta-comment
+%</options>
+% \fi^^A meta-comment
+%
+%
+% \section{Width of Header and Footer}
+%
+% \Package{scrpage2} provides to set the width of the page head or footer
+% different from the width of the text area of the page using
+% \Macro{setheadwidth} and \Macro{setfootwidth}. Optionally those commands
+% allow to setup an horizontal offset for the head or footer. This interface
+% provides the same feature but also allows to set up the widths and offsets
+% with \KOMAScript{} options. Those options will become the primary interface.
+%
+% \begin{option}{headwidth}
+% \changes{v0.9.1757}{2014/04/09}{new: two offsets available}^^A
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{footwidth}
+% \changes{v0.9.1757}{2014/04/09}{new: two offsets available}^^A
+% \changes{v3.15}{2014/12/28}{fix: missing colon in call of
+% \cs{sls@split@at@iicolons}}^^A
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{description}
+% \item[\texttt{=\meta{special dimensional expression}:\meta{special
+% dimensional expression}}:] see \Macro{sls@settowidthof} for information
+% about the syntax of \meta{special dimensional expression}. The width of
+% the page head or footer will be set to the result of the first on, the
+% offset to the result of the second one. If the first one\,---\,the
+% width\,---\,is omitted, the current width will be used. If the second
+% one\,---\,the offset\,---\,is omitted and the width is the width of the
+% text area plus the margin note column, the offset will be set to
+% zero. If the second one is omitted and the width is not the width of the
+% text area plus the margin note column, a special kind of centering will
+% be used.
+% \end{description}
+% These options may be used to set up the widths of head and foot.
+% \begin{macrocode}
+%<*options>
+\KOMA@key{headwidth}{%
+ \begingroup
+ \sls@split@at@iicolons#1:::\@nil
+ \ifx\reserved@a\@empty \let\reserved@a\sls@headwidth\fi
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\sls@set@hf@width{head}{\reserved@b}{\reserved@c}{\reserved@a}%
+ \noexpand\FamilyKeyStateProcessed
+ \noexpand\KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{headwidth}{%
+ \reserved@a:\reserved@b:\reserved@c
+ }%
+ }%
+ \reserved@a
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headwidth}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headwidth@default}
+\KOMA@key{footwidth}{%
+ \begingroup
+ \sls@split@at@iicolons#1:::\@nil
+ \ifx\reserved@a\@empty \let\reserved@a\sls@footwidth\fi
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\sls@set@hf@width{foot}{\reserved@b}{\reserved@c}{\reserved@a}%
+ \noexpand\FamilyKeyStateProcessed
+ \noexpand\KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{footwidth}{%
+ \reserved@a:\reserved@b:\reserved@c
+ }%
+ }%
+ \reserved@a
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footwidth}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footwidth@default}
+% \end{macrocode}
+% \begin{macro}{\sls@split@at@iicolons}
+% \begin{description}
+% \item[\texttt{\meta{balanced}:^^A
+% \meta{balanced}:^^A
+% \meta{balanced}\Macro{@nil}}:] first \meta{balanced} will be stored into
+% \Macro{reserved@a}, second into \Macro{reserved@b}, third will be eaten
+% and warn about if it is neither empty and nor a colon.
+% \end{description}
+% This little helper is used, e.g., by options \Option{headwidth} and
+% \Option{footwidth}.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@split@at@iicolons{%
+ \def\sls@split@at@iicolons#1:#2:#3:#4\@nil{%
+ \ifstr{#4}{}{}{%
+ \ifstr{#4}{:}{}{%
+ \ifstr{#4}{::}{}{%
+ \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
+ You've used more than two colons at the argument\MessageBreak
+ of a two value option.\MessageBreak
+ The extra value(s) will be ignored%
+ }%
+ }%
+ }%
+ }%
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+ \def\reserved@c{#3}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@split@at@iicolons
+% \begin{macro}{\sls@set@hf@width}
+% \changes{v0.9.1757}{2014/04/09}{new: two offsets available}
+% \begin{description}
+% \item[\Parameter{head} or \Parameter{foot}:] to complete the macro names
+% for page head or footer.
+% \item[\Parameter{special dimensional expression}:] the offset odd page
+% \item[\Parameter{special dimensional expression}:] the offset even page
+% \item[\Parameter{special dimensional expression}:] the width
+% \end{description}
+% This helper will generally set up width an offset of either head or footer.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@set@hf@width{%
+ \newcommand*{\sls@set@hf@width}[4]{%
+ \sls@settowidthof{\@tempdima}{#4}%
+ \ifdim\@tempdima>\paperwidth
+ \PackageWarning
+ {scrlayer-scrpage}%
+ {You've set width of #1 to a value\MessageBreak
+ greater than width of page!\MessageBreak%
+ I'll reduce width of #1 to width of page}%
+ \setlength{\@tempdima}{\paperwidth}%
+ \else
+ \ifdim\@tempdima<\z@
+ \PackageWarning
+ {scrlayer-scrpage}%
+ {You've set width of #1 to negative value!\MessageBreak%
+ I'll set it to 0pt}%
+ \setlength{\@tempdima}{\z@}%
+ \fi
+ \fi
+ \expandafter\edef\csname sls@#1width\endcsname{\the\@tempdima}%
+ \setlength{\@tempdima}{\textwidth}%
+ \addtolength{\@tempdima}{-\csname sls@#1width\endcsname}%
+ \ifstr{#2}{}{%
+ \ifdim \csname sls@#1width\endcsname
+ = \dimexpr \textwidth+\marginparwidth+\marginparsep\relax
+ \setlength{\@tempdimb}{\z@}
+ \else
+ \if@twoside
+ \setlength{\@tempdimb}{.3333333333\@tempdima}%
+ \else
+ \setlength{\@tempdimb}{.5\@tempdima}%
+ \fi
+ \fi
+ }{%
+ \sls@settowidthof{\@tempdimb}{#2}%
+ }%
+ \ifstr{#3}{}{%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ }{%
+ \sls@settowidthof{\@tempdima}{#3}%
+ \setlength{\@tempdima}{-\@tempdima}%
+ }%
+ \ifdim\@tempdimb<\z@
+ \setlength{\@tempdimb}{-\@tempdimb}%
+ \expandafter\edef\csname sls@odd#1shift\endcsname{-\the\@tempdimb}%
+ \else
+ \expandafter\edef\csname sls@odd#1shift\endcsname{\the\@tempdimb}%
+ \fi
+ \ifdim\@tempdima<\z@
+ \setlength{\@tempdima}{-\@tempdima}%
+ \expandafter\edef\csname sls@even#1shift\endcsname{-\the\@tempdima}%
+ \else
+ \expandafter\edef\csname sls@even#1shift\endcsname{\the\@tempdima}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@set@hf@width
+% \begin{macro}{\sls@headwidth}
+% \begin{macro}{\sls@oddheadshift}
+% \begin{macro}{\sls@evenheadshift}
+% \begin{macro}{\sls@footwidth}
+% \begin{macro}{\sls@oddfootshift}
+% \begin{macro}{\sls@evenfootshift}
+% To store width and offset of page head an footer, we use macros. Those are
+% also used by the options and therefore need to be initialised before option
+% usage.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@headwidth{%
+ \scr@ifundefinedorrelax{@headwidth}{%
+ \newcommand*{\sls@headwidth}{\textwidth}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{headwidth}{\textwidth:0pt:0pt}%
+ }{%
+ \newcommand*{\sls@headwidth}{\@headwidth}%
+ \KOMA@kav@xadd{.scrlayer-scrpage.sty}{headwidth}{\@headwidth:0pt:0pt}%
+ }%
+}
+\scrlayerAddToInterface\sls@oddheadshift{\newcommand*{\sls@oddheadshift}{0pt}}
+\scrlayerAddToInterface\sls@evenheadshift{\newcommand*{\sls@evenheadshift}{0pt}}
+\scrlayerAddToInterface\sls@footwidth{%
+ \scr@ifundefinedorrelax{@footwidth}{%
+ \newcommand*{\sls@footwidth}{\textwidth}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{footwidth}{\textwidth:0pt:0pt}
+ }{%
+ \newcommand*{\sls@footwidth}{\@footwidth}%
+ \KOMA@kav@xadd{.scrlayer-scrpage.sty}{footwidth}{\@footwidth:0pt:0pt}
+ }%
+}
+\scrlayerAddToInterface\sls@oddfootshift{\newcommand*{\sls@oddfootshift}{0pt}}
+\scrlayerAddToInterface\sls@evenfootshift{\newcommand*{\sls@evenfootshift}{0pt}}
+% \end{macrocode}
+% \end{macro}^^A \sls@headwidth
+% \end{macro}^^A \sls@oddheadshift
+% \end{macro}^^A \sls@evenheadshift
+% \end{macro}^^A \sls@footwidth
+% \end{macro}^^A \sls@oddfootshift
+% \end{macro}^^A \sls@evenfootshift
+%
+% \begin{macro}{\sls@settowidthof}
+% \begin{macro}{\sls@deftowidthof}
+% the special dimensional expressions may be either one of the strings
+% \texttt{paper}, \texttt{text}, \texttt{marginpar},
+% \texttt{textwithmarginpar}, \texttt{head}, \texttt{foot},
+% \texttt{headtopline}, \texttt{headsepline}, \texttt{footsepline},
+% \texttt{footbotline}, or \texttt{page} or a valid dimensional
+% expression. But it cannot be both a dimensional expression using symbolic
+% values!
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@settotwidthof{%
+ \newcommand*{\sls@settowidthof}[2]{%
+ \ifstr{#2}{paper}{%
+ \setlength{#1}{\paperwidth}%
+ }{%
+ \ifstr{#2}{text}{%
+ \setlength{#1}{\textwidth}%
+ }{%
+ \ifstr{#2}{marginpar}{%
+ \setlength{#1}{\dimexpr \marginparwidth+\marginparsep\relax}%
+ }{%
+ \ifstr{#2}{textwithmarginpar}{%
+ \setlength{#1}{\dimexpr\textwidth
+ +\marginparwidth
+ +\marginparsep\relax}%
+ }{%
+ \ifstr{#2}{head}{%
+ \setlength{#1}{\sls@headwidth}%
+ }{%
+ \ifstr{#2}{foot}{%
+ \setlength{#1}{\sls@footwidth}%
+ }{%
+ \ifstr{#2}{headtopline}{%
+ \setlength{#1}{\sls@headabove@linelength}%
+ }{%
+ \ifstr{#2}{headsepline}{%
+ \setlength{#1}{\sls@headbelow@linelength}%
+ }{%
+ \ifstr{#2}{footsepline}{%
+ \setlength{#1}{\sls@footabove@linelength}%
+ }{%
+ \ifstr{#2}{footbotline}{%
+ \setlength{#1}{\sls@footbelow@linelength}%
+ }{%
+ \ifstr{#2}{page}{%
+ \setlength{#1}{\paperwidth}%
+ \begingroup
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ta@bcor\endcsname\relax\else
+ \addtolength{#1}{-\ta@bcor}%
+ \fi
+ }{%
+ \setlength{#1}{\dimexpr #2\relax}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\scrlayerAddToInterface\sls@deftowidthof{%
+ \newcommand*{\sls@deftowidthof}[2]{%
+ \ifstr{#2}{autohead}{%
+ \expandafter\def\csname #1\endcsname{\sls@headwidth}%
+ }{%
+ \ifstr{#2}{autofoot}{%
+ \expandafter\def\csname #1\endcsname{\sls@footwidth}%
+ }{%
+ \sls@settowidthof{\@tempdima}{#2}%
+ \expandafter\edef\csname #1\endcsname{\the\@tempdima}%
+ }%
+ }%
+ }%
+}
+%</options>
+% \end{macrocode}
+% \end{macro}^^A \sls@deftowidthof
+% \end{macro}^^A \sls@settowidthof
+% \end{option}^^A footwidth
+% \end{option}^^A footheight
+%
+% \begin{macro}{\setheadwidth}
+% \begin{macro}{\setfootwidth}
+% For compatibility with \Package{scrpage2}, map the commands to the options:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\setheadwidth{%
+ \newcommand*{\setheadwidth}[2][]{%
+ \KOMAoptions{headwidth=#2:#1}%
+ }%
+}
+\scrlayerAddToInterface\setfootwidth{%
+ \newcommand*{\setfootwidth}[2][]{%
+ \KOMAoptions{footwidth=#2:#1}%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \setheadwidth
+% \end{macro}^^A \setfootwidth
+%
+%
+% \section{Lines in Page Head and Footer}
+%
+% The interface implements the options \Option{headtopline},
+% \Option{headsepline}, \Option{footsepline}, \Option{footbotline},
+% \Option{plainheadtopline}, \Option{plainheadsepline},
+% \Option{plainfootsepline}, \Option{plainfootbotline}, \Option{ilines},
+% \Option{clines}, and \Option{olines}, the commands \Macro{setheadtopline},
+% \Macro{setheadsepline}, \Macro{setfootsepline}, and \Macro{setfootbotline},
+% and the corresponding \KOMAScript{} font elements of package
+% \Package{scrpage2}. Some of the options are extended to understand
+% values.
+%
+% \begin{option}{headtopline}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{headsepline}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{footsepline}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{footbotline}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{description}
+% \item[{\texttt{=\meta{dimensional expression}:\meta{dimensional
+% expression}}:}]
+% \end{description}\noindent
+% Define thickness and length of the a default separation line between:
+% \begin{description}
+% \item[\Option{headtopline}:] the top margin of the page and the page head.
+% \item[\Option{headsepline}:] the page head and the text area.
+% \item[\Option{footsepline}:] the text area and the page footer.
+% \item[\Option{footbotline}:] the page footer and the bottom margin.
+% \end{description}
+% Both values may be omitted. In that case thickness would be 0.4\,pt, and
+% length would be the width of the page head or footer. If the second
+% argument, the length, has been omitted the \texttt{:} may also be omitted.
+% \begin{macrocode}
+%<*options>
+\KOMA@key{headtopline}[:]{%
+ \sls@set@values[headtopline]{head}{above}{#1}%
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headtopline}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headtopline@default}
+\KOMA@key{headsepline}[:]{%
+ \sls@set@values[headsepline]{head}{below}{#1}%
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headsepline}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@headsepline@default}
+\KOMA@key{footsepline}[:]{%
+ \sls@set@values[footsepline]{foot}{above}{#1}%
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footsepline}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footsepline@default}
+\KOMA@key{footbotline}[:]{%
+ \sls@set@values[footbotline]{foot}{below}{#1}%
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footbotline}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@footbotline@default}
+% \end{macrocode}
+% \begin{macro}{\sls@set@values}
+% \begin{description}
+% \item[\OParameter{option name}:] either empty or the name of the option
+% that sets the line,
+% \item[\Parameter{head or foot}:] either \texttt{head} or \texttt{foot},
+% \item[\Parameter{above or below}:] either \texttt{above} or
+% \texttt{below},
+% \item[\Parameter{dimension expression}\texttt{:}\Parameter{dimension
+% expression}] length an thickness of a line (both are optional).
+% \end{description}
+% Helper macros for the options to set two macros by two values of one
+% option. The two values are separated by a colon.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@set@values{%
+ \newcommand*{\sls@set@values}[4][]{%
+ \begingroup
+ \ifstr{#1}{}{%
+ \FamilyKeyStateUnknown
+ }{%
+ \KOMA@set@ifkey{#1}{@tempswa}{#4}%
+ }%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \edef\reserved@b{%
+ \noexpand\endgroup
+ \noexpand\@namedef{sls@#2#3@linethickness}{.4pt}%
+ \noexpand\@namedef{sls@#2#3@linelength}{%
+ \expandafter\noexpand\csname sls@#2width\endcsname
+ }%
+ }%
+ \else
+ \def\reserved@b{%
+ \endgroup
+ \@namedef{sls@#2#3@linethickness}{0pt}%
+ \@namedef{sls@#2#3@linelength}{0pt}%
+ }%
+ \fi
+ \else
+ \let\reserved@a\@empty
+ \let\reserved@b\@empty
+ \sls@split@at@colon#4::\@nil
+ \ifx\reserved@a\@empty
+ \def\reserved@a{\endgroup\@namedef{sls@#2#3@linethickness}{.4pt}}%
+ \else
+ \setlength{\@tempdima}{\dimexpr\reserved@a\relax}%
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\@namedef{sls@#2#3@linethickness}{\the\@tempdima}%
+ }%
+ \fi
+ \ifx\reserved@b\@empty
+ \def\reserved@b{%
+ \reserved@a
+ \@namedef{sls@#2#3@linelength}{\@nameuse{sls@#2width}}%
+ }%
+ \else
+ \edef\reserved@b{%
+ \noexpand\reserved@a
+ \noexpand\sls@deftowidthof{sls@#2#3@linelength}{\reserved@b}%
+ }%
+ \fi
+ \fi
+ \reserved@b
+ \FamilyKeyStateProcessed
+ \ifstr{#1}{}{}{%
+ \KOMA@kav@xreplacevalue{.scrlayer-scrpage.sty}{#1}{%
+ \csname sls@#2#3@linethickness\endcsname
+ :\csname sls@#2#3@linelength\endcsname
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@set@values
+% \begin{macro}{\sls@split@at@colon}
+% \begin{description}
+% \item[\texttt{\meta{balanced}:^^A
+% \meta{balanced}:^^A
+% \meta{balanced}\Macro{@nil}}:] first \meta{balanced} will be stored into
+% \Macro{reserved@a}, second into \Macro{reserved@b}, third will be eaten
+% and warn about if it is neither empty and nor a colon.
+% \end{description}
+% This little helper is used, e.g., by options \Option{headwidth} and
+% \Option{footwidth}.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@split@at@colon{%
+ \def\sls@split@at@colon#1:#2:#3\@nil{%
+ \ifstr{#3}{}{}{%
+ \ifstr{#3}{:}{}{%
+ \PackageWarning{scrlayer}{extra `:' found!\MessageBreak
+ You've used more than one colon at the argument\MessageBreak
+ of a two value option.\MessageBreak
+ The extra value(s) will be ignored%
+ }%
+ }%
+ }%
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@split@at@colon
+% \begin{macro}{\sls@headabove@linelength}
+% \begin{macro}{\sls@headabove@linethickness}
+% \begin{macro}{\sls@headbelow@linelength}
+% \begin{macro}{\sls@headbelow@linethickness}
+% \begin{macro}{\sls@footabove@linelength}
+% \begin{macro}{\sls@footabove@linethickness}
+% \begin{macro}{\sls@footbelow@linelength}
+% \begin{macro}{\sls@footbelow@linethickness}
+% To store length and thickness of the lines at the page head an footer, we
+% use macros. Those are also used by the options and therefore need to be
+% initialised before option usage.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@headabove@linelength{%
+ \newcommand*{\sls@headabove@linelength}{\sls@headwidth}%
+}
+\scrlayerAddToInterface\sls@headabove{%
+ \newcommand*{\sls@headabove@linethickness}{0pt}%
+}
+\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headtopline}{%
+ \expandafter\noexpand\sls@headabove@linethickness:%
+ \expandafter\noexpand\sls@headabove@linelength}
+\scrlayerAddToInterface\sls@headbelow@linelength{%
+ \newcommand*{\sls@headbelow@linelength}{\sls@headwidth}%
+}
+\scrlayerAddToInterface\sls@headbelow@linethickness{%
+ \newcommand*{\sls@headbelow@linethickness}{0pt}%
+}
+\KOMA@kav@xadd{.scrlayer-scrpage.sty}{headsepline}{%
+ \expandafter\noexpand\sls@headbelow@linethickness:%
+ \expandafter\noexpand\sls@headbelow@linelength}
+\scrlayerAddToInterface\sls@footabove@linelength{%
+ \newcommand*{\sls@footabove@linelength}{\sls@footwidth}%
+}
+\scrlayerAddToInterface\sls@footabove@linethickness{%
+ \newcommand*{\sls@footabove@linethickness}{0pt}%
+}
+\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footsepline}{%
+ \expandafter\noexpand\sls@footabove@linethickness:%
+ \expandafter\noexpand\sls@footabove@linelength}
+\scrlayerAddToInterface\sls@footbelow@linelength{%
+ \newcommand*{\sls@footbelow@linelength}{\sls@footwidth}%
+}
+\scrlayerAddToInterface\sls@footbelow@linethickness{%
+ \newcommand*{\sls@footbelow@linethickness}{0pt}%
+}
+\KOMA@kav@xadd{.scrlayer-scrpage.sty}{footbotline}{%
+ \expandafter\noexpand\sls@footbelow@linethickness:%
+ \expandafter\noexpand\sls@footbelow@linelength}
+%</options>
+% \end{macrocode}
+% \end{macro}^^A \sls@footbelow@linethickness
+% \end{macro}^^A \sls@footbelow@linelength
+% \end{macro}^^A \sls@footabove@linethickness
+% \end{macro}^^A \sls@footabove@linelength
+% \end{macro}^^A \sls@headbelow@linethickness
+% \end{macro}^^A \sls@headbelow@linelength
+% \end{macro}^^A \sls@headabove@linethickness
+% \end{macro}^^A \sls@headabove@linelength
+% \end{option}^^A footbotline
+% \end{option}^^A footsepline
+% \end{option}^^A headsepline
+% \end{option}^^A headtopline
+%
+% \begin{option}{plainheadtopline}
+% \begin{macro}{\ifsls@plain@head@above@line}
+% \begin{option}{plainheadsepline}
+% \begin{macro}{\ifsls@plain@head@below@line}
+% \begin{option}{plainfootsepline}
+% \begin{macro}{\ifsls@plain@foot@above@line}
+% \begin{option}{plainfootbotline}
+% \begin{macro}{\ifsls@plain@foot@below@line}
+% \begin{description}
+% \item[\texttt{=\meta{switch value}}:]
+% \end{description}\noindent
+% While these only switches the rule on or off, we need only some switches.
+% \begin{macrocode}
+%<*options>
+\scrlayerAddCsToInterface{ifsls@plain@head@above@line}{%
+ \KOMA@ifkey{plainheadtopline}{sls@plain@head@above@line}%
+ \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainheadtopline}%
+ \scrlayer@AddCsToInterface{%
+ KV@KOMA.scrlayer-scrpage.sty@plainheadtopline@default}%
+ \scrlayer@AddCsToInterface{sls@plain@head@above@linetrue}
+ \scrlayer@AddCsToInterface{sls@plain@head@above@linefalse}
+}
+\scrlayerAddCsToInterface{ifsls@plain@head@sbelow@line}{%
+ \KOMA@ifkey{plainheadsepline}{sls@plain@head@below@line}%
+ \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainheadsepline}%
+ \scrlayer@AddCsToInterface{%
+ KV@KOMA.scrlayer-scrpage.sty@plainheadsepline@default}%
+ \scrlayer@AddCsToInterface{sls@plain@head@below@linetrue}%
+ \scrlayer@AddCsToInterface{sls@plain@head@below@linefalse}%
+}
+\scrlayerAddCsToInterface{ifsls@plain@foot@above@line}{%
+ \KOMA@ifkey{plainfootsepline}{sls@plain@foot@above@line}%
+ \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainfootsepline}%
+ \scrlayer@AddCsToInterface{%
+ KV@KOMA.scrlayer-scrpage.sty@plainfootsepline@default}%
+ \scrlayer@AddCsToInterface{sls@plain@foot@above@linetrue}%
+ \scrlayer@AddCsToInterface{sls@plain@foot@above@linefalse}%
+}
+\scrlayerAddCsToInterface{ifsls@plain@foot@below@line}{%
+ \KOMA@ifkey{plainfootbotline}{sls@plain@foot@below@line}%
+ \scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@plainfootbotline}%
+ \scrlayer@AddCsToInterface{%
+ KV@KOMA.scrlayer-scrpage.sty@plainfootbotline@default}%
+ \scrlayer@AddCsToInterface{sls@plain@foot@below@linetrue}%
+ \scrlayer@AddCsToInterface{sls@plain@foot@below@linefalse}%
+}
+%</options>
+% \end{macrocode}
+% \end{macro}^^A \ifsls@plain@foot@below@line
+% \end{option}^^A plainfootbotline
+% \end{macro}^^A \ifsls@plain@foot@above@line
+% \end{option}^^A plainfootsepline
+% \end{macro}^^A \ifsls@plain@head@below@line
+% \end{option}^^A plainheadsepline
+% \end{macro}^^A \ifsls@plain@head@above@line
+% \end{option}^^A plainheadtopline
+%
+% \begin{option}{ilines}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{clines}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{option}{olines}
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{macro}{\sls@hfline@adjust}
+% Maybe it would be more useful to be able to adjust each line on its own or
+% at most to define an offset. But \Package{scrpage2} supports only these
+% options. At least we can set the options inside a layer or page style. This
+% may help.
+% \begin{macrocode}
+%<*options>
+\scrlayerAddToInterface\sls@hfline@adjust{%
+ \newcommand*{\sls@hfline@adjust}{0}%
+}
+\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}
+\KOMA@key{ilines}[]{%
+ \ifx\relax#1\relax
+ \renewcommand*{\sls@hfline@adjust}{0}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}%
+ \else
+ \def\FamilyKeyStateProcessed{unexpected value}%
+ \fi
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@ilines}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@ilines@default}
+\KOMA@key{clines}[]{%
+ \ifx\relax#1\relax
+ \renewcommand*{\sls@hfline@adjust}{1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{clines}{}%
+ \else
+ \def\FamilyKeyStateProcessed{unexpected value}%
+ \fi
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@clines}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@clines@default}
+\KOMA@key{olines}[]{%
+ \ifx\relax#1\relax
+ \renewcommand*{\sls@hfline@adjust}{2}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{ilines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{clines}%
+ \KOMA@kav@removekey{.scrlayer-scrpage.sty}{olines}%
+ \KOMA@kav@add{.scrlayer-scrpage.sty}{olines}{}%
+ \else
+ \def\FamilyKeyStateProcessed{unexpected value}%
+ \fi
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@olines}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@olines@default}
+\KOMA@kav@add{.scrlayer-scrpage.sty}{ilines}{}
+%</options>
+% \end{macrocode}
+% \end{macro}^^A \sls@hfline@adjust
+% \end{option}^^A olines
+% \end{option}^^A clines
+% \end{option}^^A ilines
+%
+% \begin{macro}{\setheadtopline}
+% \begin{macro}{\setheadsepline}
+% \begin{macro}{\setfootsepline}
+% \begin{macro}{\setfootbotline}
+% \begin{description}
+% \item[\OParameter{extended dimensional expression}:] the length of the
+% line; if omitted the length will use the width of the page head or
+% footer while printing the line.
+% \item[\Parameter{dimensional expression}:] the thickness of the line.
+% \item[\OParameter{code}:] the font selection code for the line. You may
+% use it for any kind of operation, that doesn't change the position,
+% width, height, or depth, e.g., to change the colour of the line.
+% \end{description}
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\setheadtopline{%
+ \newcommand*{\setheadtopline}{\sls@setline{head}{above}}%
+}
+\scrlayerAddToInterface\setheadsepline{%
+ \newcommand*{\setheadsepline}{\sls@setline{head}{below}}%
+}
+\scrlayerAddToInterface\setfootsepline{%
+ \newcommand*{\setfootsepline}{\sls@setline{foot}{above}}%
+}
+\scrlayerAddToInterface\setfootbotline{%
+ \newcommand*{\setfootbotline}{\sls@setline{foot}{below}}%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@setline}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@setline}
+% \begin{macro}{\sls@@@setline}
+% \changes{v3.17}[2015/02/27]{internal use of the corresponding options}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@@@setline}
+% \changes{v3.18}{2015/06/17}{explicit reuse of the current length}^^A
+% Helper to set up the line attributes processing the parameters of the
+% commands above.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@setline{%
+ \newcommand*\sls@setline[2]{%
+ \kernel@ifnextchar[%]
+ {\sls@@setline{#1}{#2}}{\sls@@@setline{#1#2}}%
+ }%
+}
+\scrlayerAddToInterface\sls@@setline{%
+ \def\sls@@setline#1#2[#3]{%
+ \ifstr{#3}{auto}{%
+ \sls@deftowidthof{sls@#1#2@linelength}{#3#1}%
+ }{%
+ \sls@deftowidthof{sls@#1#2@linelength}{#3}%
+ }%
+ \sls@@@setline{#1#2}%
+ }%
+}
+\scrlayerAddToInterface\sls@@@setline{%
+ \def\sls@@@setline#1#2{%
+ \edef\@tempa{#2}\edef\@tempb{current}%
+ \ifstr{#2}{}{}{%
+ \ifstr{#2}{current}{}{%
+ \setlength{\@tempdima}{#2}%
+ \ifstr{#1}{headabove}{%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {headtopline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }{\ifstr{#1}{headbelow}{%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {headsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }{%
+ \ifstr{#1}{footabove}{%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {footsepline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }{%
+ \KOMAExecuteOptions[.scrlayer-scrpage.sty]%
+ {footbotline=\@tempdima:\csname sls@#1@linelength\endcsname}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \PackageWarning{scrlayer-scrpage}{%
+ Command deprecated!\MessageBreak
+ Usage of `\string\setheadtopline',
+ `\string\setheadsepline',\MessageBreak
+ `\string\setfootsepline', and `\string\setfootbotline'\MessageBreak
+ became deprecated with scrlayer-scrpage.\MessageBreak
+ You should use KOMA-Script options\MessageBreak
+ `headsepline', `headtopline', `footsepline',\MessageBreak
+ or `footbotline' with values\MessageBreak
+ `<line thickness>:<line length>' to setup\MessageBreak
+ the line length and thickness, and\MessageBreak
+ `\string\setkomafont' or `\string\addtokomafont' to\MessageBreak
+ setup the colour%
+ }%
+ \kernel@ifnextchar[%]
+ {%
+ \sls@@@@setline{#1}%
+ }{%
+ }%
+ }%
+}
+\scrlayerAddToInterface\sls@@@@setline{%
+ \def\sls@@@@setline#1[#2]{%
+ \ifstr{#1}{headabove}{\setkomafont{headtopline}{#2}}{%
+ \ifstr{#1}{headbelow}{\setkomafont{headsepline}{#2}}{%
+ \ifstr{#1}{footabove}{\setkomafont{footsepline}{#2}}{%
+ \setkomafont{footbotline}{#2}%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@setline
+% \end{macro}^^A \sls@@setline
+% \end{macro}^^A \sls@@@setline
+% \end{macro}^^A \sls@@@@setline
+% \begin{KOMAfont}{headtopline}
+% \begin{KOMAfont}{headsepline}
+% \begin{KOMAfont}{footsepline}
+% \begin{KOMAfont}{footbotline}
+% These are the font elements used in \Macro{sls@hf@rule} to set the rules
+% with, i.e., another colour. Note, that those may already be defined and
+% become only part of the interface if they are not.
+% \begin{macrocode}
+\@ifundefined{scr@fnt@headtopline}{%
+ \@ifundefined{@headtoplinefont}{%
+ \scrlayer@AddCsToInterface{@headtoplinefont}%
+ }{}%
+ \newkomafont{headtopline}{}%
+ \scrlayer@AddCsToInterface{scr@fnt@headtopline}%
+}{}
+\@ifundefined{scr@fnt@headsepline}{%
+ \@ifundefined{@headseplinefont}{%
+ \scrlayer@AddCsToInterface{@headseplinefont}%
+ }{}%
+ \newkomafont{headsepline}{}%
+ \scrlayer@AddCsToInterface{scr@fnt@headsepline}%
+}{}
+\@ifundefined{scr@fnt@footsepline}{%
+ \@ifundefined{@footseplinefont}{%
+ \scrlayer@AddCsToInterface{@footseplinefont}%
+ }{}%
+ \newkomafont{footsepline}{}%
+ \scrlayer@AddCsToInterface{scr@fnt@footsepline}%
+}{}
+\@ifundefined{scr@fnt@footbotline}{%
+ \@ifundefined{@footbotlinefont}{%
+ \scrlayer@AddCsToInterface{@footbotlinefont}%
+ }{}%
+ \newkomafont{footbotline}{}%
+ \scrlayer@AddCsToInterface{scr@fnt@footbotline}%
+}{}
+%</body>
+% \end{macrocode}
+% \end{KOMAfont}^^A footbotline
+% \end{KOMAfont}^^A footsepline
+% \end{KOMAfont}^^A headsepline
+% \end{KOMAfont}^^A headtopline
+% \end{macro}^^A \setfootbotline
+% \end{macro}^^A \setfootsepline
+% \end{macro}^^A \setheadsepline
+% \end{macro}^^A \setheadtopline
+%
+% \begin{length}{\headheight}
+% \changes{v3.24}{2017/05/22}{warning depends on option
+% \texttt{singlespacing}}^^A
+% Some classes set \Length{headheight} to a very, very small value. We'll
+% warn about that.
+% \begin{length}{\footheight}
+% \changes{v3.24}{2017/05/23}{also warn for low \cs{footheight}}^^A
+% If the \Length{headheight} is OK, we also test for \Length{footheight}.
+% \begin{macrocode}
+%<*body>
+\AtBeginDocument{%
+ \ifdim \headheight
+ <\if@ps@singlespacing\f@baselineskip\else\baselineskip\fi\relax
+ \PackageWarningNoLine{scrlayer-scrpage}{Very small head height
+ detected!\MessageBreak
+ Using scrlayer-scrpage the head height\MessageBreak
+ should be at least \string\baselineskip, which is\MessageBreak
+ \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi\space
+ currently.\MessageBreak
+ But head height is currently
+ \the\headheight\space only.\MessageBreak
+ You may use\MessageBreak
+ \@ifpackageloaded{geometry}{%
+ geometry option
+ `head=\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'%
+ }{%
+ \@ifpackageloaded{typearea}{%
+ typearea option `headheight=%
+ \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'%
+ }{%
+ \string\setlength{\string\headheight}%
+ {\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi}%
+ }%
+ }\MessageBreak
+ \if@ps@singlespacing\else\ifdim \headheight<\f@baselineskip\else
+ or load package `scrlayer-scrpage' with\MessageBreak
+ option `singlespacing=true'\MessageBreak
+ \fi\fi
+ to avoid this warning%
+ }%
+ \else
+ \ifdim \footheight
+ <\if@ps@singlespacing\f@baselineskip\else\baselineskip\fi\relax
+ \PackageWarningNoLine{scrlayer-scrpage}{Very small foot height
+ detected!\MessageBreak
+ Using scrlayer-scrpage the foot height\MessageBreak
+ should be at least \string\baselineskip, which is\MessageBreak
+ \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi\space
+ currently.\MessageBreak
+ But foot height is currently
+ \the\footheight\space only.\MessageBreak
+ You may use\MessageBreak
+ \@ifpackageloaded{typearea}{%
+ typearea option `footheight=%
+ \if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi'%
+ }{%
+ \string\setlength{\string\footheight}%
+ {\if@ps@singlespacing\f@baselineskip\else\the\baselineskip\fi}%
+ }%
+ \MessageBreak
+ \if@ps@singlespacing\else\ifdim \footheight<\f@baselineskip\else
+ or load package `scrlayer-scrpage' with\MessageBreak
+ option `singlespacing=true'\MessageBreak
+ \fi\fi
+ to avoid this warning%
+ }%
+ \fi
+ \fi
+}
+%</body>
+% \end{macrocode}
+% \end{length}^^A \footheight
+% \end{length}^^A \headheight
+%
+%
+% \section{Style of Running Heads}
+%
+% This implements not only options \Option{komastyle} and
+% \Option{standardstyle} of \Package{scrpage2}, but also activates the default
+% style at the end of the package and takes care for the correct overwrite
+% behaviour of option \Option{markcase}.
+%
+% \begin{option}{pagestyleset}
+% \begin{description}
+% \item[\texttt{=\meta{string}}:] a valid name of a predefined
+% style-set. Currently only \texttt{KOMA-Script} and \texttt{standard} are
+% supported. Maybe more will follow.
+% \end{description}
+% Note, that the following automatic style activation must be before the
+% first option usage:
+% \begin{macrocode}
+%<*init>
+\AtEndOfPackage{%
+ \sls@auto@pagestyleset%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@auto@pagestyleset}
+% \changes{v0.9}{2014/01/22}{new (internal) macro}%^^A
+% \begin{macrocode}
+\newcommand*{\sls@auto@pagestyleset}{%
+ \scr@ifundefinedorrelax{KOMAClassName}{%
+%<trace> \PackageInfoNoLine{scrlayer-scrpage}{%
+%<trace> auto-selection of `pagestyleset=standard'}%
+ \FamilyExecuteOptions[.scrlayer-scrpage.sty]{KOMA}{pagestyleset=standard}%
+ }{%
+%<trace> \PackageInfoNoLine{scrlayer-scrpage}{%
+%<trace> auto-selection of `pagestyleset=KOMA-Script'}%
+ \FamilyExecuteOptions[.scrlayer-scrpage.sty]{KOMA}%
+ {pagestyleset=KOMA-Script}%
+ }%
+}
+%</init>
+% \end{macrocode}
+% \end{macro}%^^A \sls@auto@pagestyleset
+% \changes{v3.17}{2015/02/25}{new: store the values}^^A
+% \begin{macrocode}
+%<*options>
+\KOMA@key{pagestyleset}{%
+ \scr@ifundefinedorrelax{sls@ps@style@#1}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \let\sls@auto@pagestyleset\relax
+ \@nameuse{sls@ps@style@#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.scrlayer-scrpage.sty}{pagestyleset}{#1}%
+ }%
+}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@pagestyleset}
+% \end{macrocode}
+% \begin{macro}{\sls@ps@style@standard}
+% \begin{macro}{\sls@ps@style@KOMA-Script}
+% These are the predefined page style sets.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@ps@style@standard{%
+ \newcommand*{\sls@ps@style@standard}{%
+ \let\MakeMarkcase\MakeUppercase
+ \scrlayer@AtEndOfPackage{%
+ \pagestyle{scrheadings}%
+ \clearpairofpagestyles
+ \ihead{\headmark}%
+ \ohead{\pagemark}%
+ \cfoot[\if@twoside\else\pagemark\fi]{}%
+ }%
+ }%
+}
+\scrlayerAddCsToInterface{sls@ps@style@KOMA-Script}{%
+ \@namedef{sls@ps@style@KOMA-Script}{%
+ \let\MakeMarkcase\@firstofone
+ \scrlayer@AtEndOfPackage{%
+ \pagestyle{scrheadings}%
+ \clearpairofpagestyles
+ \ohead{\if@twoside\headmark\fi}%
+ \chead{\if@twoside\else\headmark\fi}%
+ \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}%
+ \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}%
+ \scr@ifundefinedorrelax{KOMAClassName}{}{%
+ \ifstr{\KOMAClassName}{scrlttr2}{%
+% \end{macrocode}
+% We are using \Class{scrlttr2}, so we have to initialise the page style
+% different:
+% \changes{v3.18}{2015/06/24}{missing \cs{lofoot} and \cs{rofoot} added}^^A
+% \begin{macrocode}
+ \clearpairofpagestyles
+ \lehead[\ifnum\@pageat=\z@\pagemark\fi]
+ {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
+ \lohead[\ifnum\@pageat=\z@\pagemark\fi]
+ {\ifnum\@pageat=\z@\pagemark\else\leftmark\fi}%
+ \chead[\ifnum\@pageat=\@ne\pagemark\fi]
+ {\ifcase\@pageat \rightmark\or \pagemark\or \rightmark\fi}%
+ \rehead[\ifnum\@pageat=\tw@\pagemark\fi]
+ {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
+ \else \rightmark\fi}%
+ \rohead[\ifnum\@pageat=\tw@\pagemark\fi]
+ {\ifcase\@pageat \leftmark\or \rightmark\or \pagemark
+ \else \rightmark\fi}%
+ \lefoot[\ifnum\@pageat=\thr@@\pagemark\fi]
+ {\ifnum\@pageat=\thr@@\pagemark\fi}%
+ \lofoot[\ifnum\@pageat=\thr@@\pagemark\fi]
+ {\ifnum\@pageat=\thr@@\pagemark\fi}%
+ \cfoot[\ifnum\@pageat=4 \pagemark\fi]
+ {\ifnum\@pageat=4 \pagemark\fi}%
+ \refoot[\ifnum\@pageat=5 \pagemark\fi]
+ {\ifnum\@pageat=5 \pagemark\fi}%
+ \rofoot[\ifnum\@pageat=5 \pagemark\fi]
+ {\ifnum\@pageat=5 \pagemark\fi}%
+ }{}%
+ }%
+ }%
+ }%
+}
+%</options>
+% \end{macrocode}
+% \end{macro}^^A \sls@ps@style@KOMA-Script
+% \end{macro}^^A \sls@ps@style@standard
+% \end{option}^^A pagestyleset
+%
+% \begin{option}{komastyle}
+% \begin{option}{standardstyle}
+% These options are deprecated, but defined for compatibility with
+% \Package{scrpage2}:
+% \begin{macrocode}
+%<*options>
+\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{komastyle}{%
+ pagestyleset=KOMA-Script}
+\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{standardstyle}{%
+ pagestyleset=standard}
+%</options>
+% \end{macrocode}
+% \end{option}^^A standardstyle
+% \end{option}^^A komastyle
+%
+%
+% \section{Extended Mark Mechanisms}
+%
+% Package options \Option{markuppercase}, \Option{markusedcase}, and
+% \Option{nouppercase} of package \Package{scrpage2} will be mapped to
+% \KOMAScript{} option \Option{markcase}.
+%
+% \begin{option}{markuppercase}
+% \begin{option}{markusedcase}
+% \begin{option}{nouppercase}
+% For compatibility with \Package{scrpage2}.
+% \begin{macrocode}
+%<*options>
+\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{markuppercase}{markcase=upper}
+\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{markusedcase}{markcase=used}
+\KOMA@DeclareDeprecatedOption[scrlayer-scrpage]{nouppercase}{%
+ markcase=ignoreuppercase%
+}
+%</options>
+% \end{macrocode}
+% \end{option}^^A nouppercase
+% \end{option}^^A markusedcase
+% \end{option}^^A markuppercase
+%
+%
+% \section{Expert Page Style Definition Interface}
+%
+% This is the low level interface of \Package{scrpage2} with
+% \Macro{defpagestyle}, \Macro{newpagestyle}, \Macro{renewpagestyle}, and
+% \Macro{providepagestyle}. We will also define is. In difference to
+% \Package{scrpage2} layers are used. Following layers will be defined for
+% each page style:
+% \begin{description}
+% \item[\texttt{\meta{page style name}.head.above.line}] line above the head
+% \item[\texttt{\meta{page style name}.head.odd}] odd page head (only twoside)
+% \item[\texttt{\meta{page style name}.head.even}] even page head (only
+% twoside)
+% \item[\texttt{\meta{page style name}.head.oneside}] single-side head (only
+% oneside)
+% \item[\texttt{\meta{page style name}.head.below}] line below the head
+% \item[\texttt{\meta{page style name}.foot.above.line}] line above the footer
+% \item[\texttt{\meta{page style name}.foot.odd}] odd page footer (only
+% twoside)
+% \item[\texttt{\meta{page style name}.foot.even}] even side footer (only
+% twoside)
+% \item[\texttt{\meta{page style name}.foot.oneside}] single-side footer (only
+% oneside)
+% \item[\texttt{\meta{page style name}.foot.below.line}] line below the footer
+% (only oneside)
+% \end{description}
+% Note: \Package{scrpage2} also provides starred versions of the page style
+% definition commands, doing the same like the starless versions. This has
+% been done for compatibility reasons with deprecated \Package{scrpage2} and
+% may be removed some times. The layer interface doesn't support this.
+%
+% \begin{macro}{\defpagestyle}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be defined (must
+% be fully expandable and expand to a string only).
+% \item[\Parameter{head/foot definition}:] will be used to define the
+% head (see \Macro{sls@defhead}).
+% \item[\Parameter{head/foot definition}:] will be used to define the
+% foot (see \Macro{sls@deffoot}).
+% \end{description}
+% See \Package{scrpage2} implementation.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\defpagestyle{%
+ \newcommand*{\defpagestyle}[3]{%
+ \sls@defhead{#1}#2\@empty\@empty\@empty
+ \sls@deffoot{#1}#3\@empty\@empty\@empty
+ \DeclarePageStyleByLayers{#1}{%
+ #1.head.odd,#1.head.even,#1.head.oneside,%
+ #1.head.above.line,#1.head.below.line,%
+ #1.foot.odd,#1.foot.even,#1.foot.oneside,%
+ #1.foot.above.line,#1.foot.below.line%
+ }%
+ \edef\reserved@a{%
+ \noexpand\scrlayerOnAutoRemoveInterface[scrlayer-scrpage.sty]{%
+ \noexpand\DestroyLayer{#1.head.odd}%
+ \noexpand\DestroyLayer{#1.head.even}%
+ \noexpand\DestroyLayer{#1.head.oneside}%
+ \noexpand\DestroyLayer{#1.head.above.line}%
+ \noexpand\DestroyLayer{#1.head.below.line}%
+ \noexpand\DestroyLayer{#1.foot.odd}%
+ \noexpand\DestroyLayer{#1.foot.even}%
+ \noexpand\DestroyLayer{#1.foot.oneside}%
+ \noexpand\DestroyLayer{#1.foot.above.line}%
+ \noexpand\DestroyLayer{#1.foot.below.line}%
+ \noexpand\ifstr{\noexpand\currentpagestyle}{#1}{%
+ \noexpand\PackageWarning{scrlayer-scrpage}{%
+ page style `#1' not longer valid.\noexpand\MessageBreak
+ The page style has been defined using\noexpand\MessageBreak
+ interface `scrlayer-scrpage.sty', that\noexpand\MessageBreak
+ has been removed%
+ }%
+ }{}%
+ \noexpand\DestroyRealLayerPageStyle{#1}%
+ }%
+ }\reserved@a
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@defhead}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@defhead}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@@defhead}
+% \changes{v0.9}{2014/08/18}{fix names of layers \texttt{\dots head.odd} and
+% \texttt{\dots head.even}}%^^A
+% \begin{description}
+% \item[\MParameter{dimensional expression}{dimensional expression}:] length
+% and thickness of a line (ruler) above the page head. May be omitted and
+% if so the values from option \Option{headtopline} will be used.
+% \item[\Parameter{code}:] will be executed on even pages; used to define
+% the contents of layer \texttt{\meta{page style name}.head.even}.
+% \item[\Parameter{code}:] will be executed on odd pages within two-side
+% layout; used to define the contents of layer \texttt{\meta{page style
+% name}.head.odd}.
+% \item[\Parameter{code}:] will be executed on single-side pages; used to
+% define the contents of layer \texttt{\meta{page style
+% name}.head.oneside}.
+% \item[\MParameter{dimensional expression}{dimensional expression}:] length
+% and thickness of a line (ruler) below the page head. May be omitted and
+% if so the values from option \Option{headsepline} will be used.
+% \end{description}
+% Helper to define the head layers.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@defhead{%
+ \newcommand*\sls@defhead[1]{%
+ \kernel@ifnextchar(%)
+ {\sls@@defhead{#1}}%
+ {\sls@@defhead{#1}(\sls@headabove@linelength,\sls@headabove@linethickness)}%
+ }%
+}
+\scrlayerAddToInterface\sls@@defhead{%
+ \def\sls@@defhead#1(#2,#3)#4#5#6{%
+ \kernel@ifnextchar(%)
+ {\sls@@@defhead{#1}({#2},{#3}){#4}{#5}{#6}}%
+ {\sls@@@defhead{#1}%
+ ({#2},{#3})%
+ {#4}{#5}{#6}%
+ (\sls@headbelow@linelength,\sls@headbelow@linethickness)}%
+ }%
+}
+\scrlayerAddToInterface\sls@@@defhead{%
+ \def\sls@@@defhead#1(#2,#3)#4#5#6(#7,#8){%
+% \end{macrocode}
+% The lines:
+% \begin{macrocode}
+ \DeclareLayer[%
+ background,%
+ hoffset=\sls@leftmargin{head},%
+ voffset=\sls@topmargin+\dp\strutbox,%
+ width=\sls@headwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
+ \sls@hf@rule{headtop}{#2}{#3}}}}%
+ }%
+ ]{#1.head.above.line}%
+ \DeclareLayer[%
+ background,%
+ hoffset=\sls@leftmargin{head},%
+ voffset=\sls@topmargin+\headheight-\ht\strutbox+#8,%
+ width=\sls@headwidth,%
+ height=0pt,%
+ align=tl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagehead}{%
+ \sls@hf@rule{headsep}{#7}{#8}}}}%
+ }%
+ ]{#1.head.below.line}%
+% \end{macrocode}
+% The odd side, even side and one side:
+% \changes{v3.13b}{2014/10/16}{workaround: additional group added to avoid
+% pdf\TeX{} color stack warnings}%^^A
+% \begin{macrocode}
+ \DeclareLayer[%
+ background,evenpage,twoside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#4}}}}}%
+ ]{#1.head.even}%
+ \DeclareLayer[%
+ background,oddpage,twoside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#5}}}}}%
+ ]{#1.head.odd}%
+ \DeclareLayer[%
+ background,oddpage,oneside,%
+ head,%
+ hoffset=\sls@leftmargin{head},%
+ width=\sls@headwidth,%
+ contents={%
+ \sls@secure@box\headheight{%
+ \normalfont{\usekomafont{pageheadfoot}{\usekomafont{pagehead}{#6}}}}}%
+ ]{#1.head.oneside}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@deffoot}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@deffoot}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\sls@@@deffoot}
+% \changes{v0.9}{2014/08/18}{fix names of layers \texttt{\dots foot.odd} and
+% \texttt{\dots foot.even}}%^^A
+% \begin{description}
+% \item[\MParameter{dimensional expression}{dimensional expression}:] length
+% and thickness of a line (ruler) above the page footer. May be omitted
+% and if so the values from option \Option{footsepline} will be used.
+% \item[\Parameter{code}:] will be executed on even pages; used to define
+% the contents of layer \texttt{\meta{page style name}.foot.even}.
+% \item[\Parameter{code}:] will be executed on odd pages within two-side
+% layout; used to define the contents of layer \texttt{\meta{page style
+% name}.foot.odd}.
+% \item[\Parameter{code}:] will be executed on single-side pages; used to
+% define the contents of layer \texttt{\meta{page style
+% name}.foot.oneside}.
+% \item[\MParameter{dimensional expression}{dimensional expression}:] length
+% and thickness of a line (ruler) below the page footer. May be omitted
+% and if so the values from option \Option{footbotline} will be used.
+% \end{description}
+% Helper to define the foot layers.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@deffoot{%
+ \newcommand*\sls@deffoot[1]{%
+ \kernel@ifnextchar(%)
+ {\sls@@deffoot{#1}}%
+ {\sls@@deffoot{#1}(\sls@footabove@linelength,\sls@footabove@linethickness)}%
+ }%
+}
+\scrlayerAddToInterface\sls@@deffoot{%
+ \def\sls@@deffoot#1(#2,#3)#4#5#6{%
+ \kernel@ifnextchar(%)
+ {\sls@@@deffoot{#1}({#2},{#3}){#4}{#5}{#6}}%
+ {\sls@@@deffoot{#1}%
+ ({#2},{#3})%
+ {#4}{#5}{#6}%
+ (\sls@footbelow@linelength,\sls@footbelow@linethickness)}%
+ }%
+}
+\scrlayerAddToInterface\sls@@@deffoot{%
+ \def\sls@@@deffoot#1(#2,#3)#4#5#6(#7,#8){%
+% \end{macrocode}
+% The lines:
+% \begin{macrocode}
+ \DeclareLayer[%
+ foreground,%
+ hoffset=\sls@leftmargin{foot},%
+ voffset=\sls@topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip-\footheight
+ +2\dp\strutbox,%
+ width=\sls@footwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
+ \sls@hf@rule{footsep}{#2}{#3}}}}%
+ }%
+ ]{#1.foot.above.line}%
+ \DeclareLayer[%
+ foreground,%
+ hoffset=\sls@leftmargin{foot},%
+ voffset=\sls@topmargin
+ +\headheight+\headsep
+ +\textheight
+ +\footskip
+ +2\dp\strutbox
+ +#8,%
+ width=\sls@footwidth,%
+ height=0pt,%
+ align=bl,%
+ contents={%
+ {\normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{%
+ \sls@hf@rule{footbot}{#7}{#8}}}}%
+ }%
+ ]{#1.foot.below.line}%
+% \end{macrocode}
+% The odd side, even side and one side:
+% \begin{macrocode}
+ \DeclareLayer[%
+ foreground,evenpage,twoside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#4}}}}%
+ ]{#1.foot.even}%
+ \DeclareLayer[%
+ foreground,oddpage,twoside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#5}}}}%
+ ]{#1.foot.odd}%
+ \DeclareLayer[%
+ foreground,oddpage,oneside,%
+ foot,%
+ hoffset=\sls@leftmargin{foot},%
+ width=\sls@footwidth,%
+ contents={%
+ \sls@secure@box\footheight{%
+ \normalfont\usekomafont{pageheadfoot}{\usekomafont{pagefoot}{#6}}}}%
+ ]{#1.foot.oneside}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@secure@box}
+% \begin{description}
+% \item[\Parameter{length}:] a \LaTeX{} length, that gives the maximum
+% height + depth of the \meta{content}. It has to be either
+% \cs{headheight} or \cs{footheight}.
+% \item[\Parameter{content}:] what should be output (inside the box).
+% \end{description}
+% Note, that several length may be changed, to fit.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@secure@box{%
+ \newcommand*{\sls@secure@box}[2]{%
+ \begingroup
+ \setbox\z@\vbox{%
+ \ifsls@leavevmode\leavevmode\expandafter\ignorespaces\fi
+ #2%
+ }%
+ \ifdim #1<\dimexpr \ht\z@+\dp\z@\relax
+ \PackageWarning{scrlayer-scrpage}{%
+ \string#1 to low.\MessageBreak
+ At least \the\dimexpr \ht\z@+\dp\z@\relax\space needed,\MessageBreak
+ but only \the#1 found.\MessageBreak
+ \ifsls@autoenlarge
+ I'll enlarge \string#1, for further\MessageBreak
+ processing, but you should do this yourself,\MessageBreak
+ \else
+ You should enlarge \string#1,\MessageBreak
+ \fi
+ e.g.,
+ \scr@ifundefinedorrelax{geometry}{%
+ \scr@ifundefinedorrelax{typearea}{%
+ using\MessageBreak
+ \space\space\string\setlength{\string#1}{%
+ \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
+ in your preamble%
+ }{%
+ setting typearea's option\MessageBreak
+ `\expandafter\@gobble\string#1=\the\dimexpr \ht\z@+\dp\z@\relax'%
+ }%
+ }{%
+ \ifx #1\headheight
+ setting geometry's option\MessageBreak
+ `head=\the\dimexpr \ht\z@+\dp\z@\relax'%
+ \else
+ using\MessageBreak
+ \space\space\string\setlength{\string#1}{%
+ \the\dimexpr \ht\z@+\dp\z@\relax}\MessageBreak
+ in your preamble%
+ \fi
+ }%
+ \ifsls@autoenlarge
+ .\MessageBreak
+ I'll also
+ \ifx #1\headheight decrease \string\topmargin
+ \else increase \string\footskip\fi
+ \fi
+ }%
+ \ifsls@autoenlarge
+ \@tempdima\dimexpr \ht\z@+\dp\z@\relax
+ \ifx #1\headheight
+ \global\advance\topmargin by \dimexpr #1-(\ht\z@+\dp\z@)\relax
+ \dp\z@\dimexpr \dp\z@+\ht\z@+\dp\z@-\headheight\relax
+ \else
+ \global\advance\footskip by \dimexpr \ht\z@+\dp\z@-#1\relax
+ \fi
+ \global#1\@tempdima
+ \fi
+ \fi
+ \usebox\z@
+ \endgroup
+ }%
+}
+%</body>
+% \end{macrocode}
+% \begin{option}{hmode}
+% Switch automatically to the horizontal mode before setting a page head or
+% page footer element.
+% \begin{macrocode}
+%<*options>
+\KOMA@ifkey{hmode}{sls@leavevmode}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@hmode}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@hmode@default}
+\scrlayer@AddCsToInterface{sls@leavevmode@linetrue}
+\scrlayer@AddCsToInterface{sls@leavevmode@linefalse}
+%</options>
+% \end{macrocode}
+% \end{option}^^A hmode
+% \begin{option}{autoenlargeheadfoot}
+% \changes{v3.25}{2018/01/14}{new option}^^A
+% Automaticly enlarge vertical size of head or foot if the contents is to
+% large. This is the default.
+% \begin{macrocode}
+%<*options>
+\KOMA@ifkey{autoenlargeheadfoot}{sls@autoenlarge}
+\KOMAExecuteOptions{autoenlargeheadfoot=true}
+\scrlayer@AddCsToInterface{KV@KOMA.scrlayer-scrpage.sty@autoenlargeheadfoot}
+\scrlayer@AddCsToInterface{%
+ KV@KOMA.scrlayer-scrpage.sty@autoenlargeheadfoot@default}
+\scrlayer@AddCsToInterface{sls@autoenlargetrue}
+\scrlayer@AddCsToInterface{sls@autoenlargefalse}
+%</options>
+% \end{macrocode}
+% \end{option}^^A autoenlargeheadfoot
+% \end{macro}^^A \sls@secure@box
+% \end{macro}^^A \sls@@@deffoot
+% \end{macro}^^A \sls@@deffoot
+% \end{macro}^^A \sls@deffoot
+% \end{macro}^^A \sls@@@defhead
+% \end{macro}^^A \sls@@defhead
+% \end{macro}^^A \sls@defhead
+% \begin{macro}{\headfont}
+% The low level page head font command. It is deprecated to redefine or use
+% this and it may already be defined.
+% \begin{macro}{\scr@fnt@pagehead}
+% \changes{v3.25}{2018/02/05}{don't use \cs{newkomafont} to avoid
+% warning}^^A
+% \begin{macro}{\scr@fnt@wrn@pagehead}
+% \changes{v0.9}{2014/01/13}{warning always deactivated}^^A
+% \begin{macro}{\scr@fnt@pageheadfoot}
+% \begin{macrocode}
+%<*body>
+\@ifundefined{scr@fnt@pagehead}{%
+ \scr@ifundefinedorrelax{scr@fnt@instead@pagehead}{}{%
+ \PackageInfo{scrlayer-scrpage}{%
+ Makeing stand-alone element `pagehead' from\MessageBreak
+ alias to `pageheadfoot'%
+ }%
+ \let\scr@fnt@instead@pagehead\relax
+ }%
+ \scrlayer@AddCsToInterface{scr@fnt@pagehead}%
+ \@ifundefined{@pageheadfont}{%
+ \newcommand*{\@pageheadfont}{}%
+ \scrlayer@AddCsToInterface{@pageheadfont}%
+ }{}%
+ \newcommand*{\scr@fnt@pagehead}{\@pageheadfont}%
+}{}
+\@ifundefined{scr@fnt@pageheadfoot}{%
+ \newcommand*{\scr@fnt@pageheadfoot}{\headfont}%
+ \scrlayer@AddCsToInterface{scr@fnt@pageheadfoot}%
+ \@ifundefined{headfont}{%
+ \newcommand*{\headfont}{\normalcolor\slshape}%
+ }{}
+}{}
+\scr@ifundefinedorrelax{scr@fnt@wrn@pagehead}{}{%
+%<trace> \PackageInfo{scrlayer-scrpage}{%
+%<trace> deactivating warning for font element\MessageBreak
+%<trace> `pagehead'}%
+ \let\scr@fnt@wrn@pagehead\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@fnt@pageheadfoot
+% \end{macro}^^A \scr@fnt@wrn@pagehead
+% \end{macro}^^A \scr@fnt@pagehead
+% \end{macro}^^A \headfont
+%
+% \begin{macro}{\footfont}
+% The low level page footer font command. It is deprecated to redefine or use
+% this and it may already be defined.
+% \begin{macro}{\scr@fnt@pagefoot}
+% \begin{macro}{\scr@fnt@wrn@pagefoot}
+% \changes{v0.9}{2014/01/13}{warning always deactivated}
+% \begin{macrocode}
+\@ifundefined{scr@fnt@pagefoot}{%
+ \scrlayer@AddCsToInterface{scr@fnt@pagefoot}%
+ \def\scr@fnt@pagefoot{\footfont}%
+ \@ifundefined{footfont}{%
+ \newcommand*{\footfont}{}%
+ \scrlayer@AddCsToInterface{footfont}%
+ }{}%
+}{}
+\scr@ifundefinedorrelax{scr@fnt@wrn@pagefoot}{}{%
+%<trace> \PackageInfo{scrlayer-scrpage}{%
+%<trace> deactivating warning for font element\MessageBreak
+%<trace> `pagefoot'}%
+ \let\scr@fnt@wrn@pagefoot\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@fnt@wrn@pagefoot
+% \end{macro}^^A \scr@fnt@pagefoot
+% \end{macro}^^A \footfont
+%
+% \begin{macro}{\sls@hf@rule}
+% \begin{description}
+% \item[\Parameter{rule name}:] one of \texttt{headtop}, \texttt{headsep},
+% \texttt{footsep}, or \texttt{footbot}
+% \item[\Parameter{dimensional expression}:] the line length (width)
+% \item[\Parameter{dimensional expression}:] the line thickness (height)
+% \end{description}
+% Helper to draw the line.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@hf@rule{%
+ \newcommand*\sls@hf@rule[3]{%
+ \begingroup
+ \normalfont\usekomafont{#1line}{%
+ \vbox to \z@{%
+ \kern -\dimexpr #3\relax
+ \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
+ \if@twoside\ifodd\value{page}\else
+ \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi
+ \fi\fi
+ \if@tempswa
+ \hskip \z@\@plus 1fill\@minus \paperwidth
+ \fi
+ \vrule \@width\dimexpr #2\relax \@height\dimexpr #3\relax \@depth\z@
+ \ifnum \sls@hfline@adjust<\tw@ \@tempswatrue\else \@tempswafalse\fi
+ \if@twoside\ifodd\value{page}\else
+ \ifnum \sls@hfline@adjust>\z@ \@tempswatrue \else \@tempswafalse\fi
+ \fi\fi
+ \if@tempswa
+ \hskip \z@\@plus 1fill\@minus \paperwidth\null
+ \fi
+ }%
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@hf@rule
+% \begin{macro}{\sls@topmargin}
+% \begin{macro}{\sls@leftmargin}
+% Two simple helper macros:
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@topmargin{%
+ \newcommand*{\sls@topmargin}{\dimexpr\topmargin+1in\relax}%
+}
+\scrlayerAddToInterface\sls@leftmargin{%
+ \newcommand*{\sls@leftmargin}[1]{%
+ \dimexpr
+ \if@twoside
+ \ifodd\value{page}
+ \oddsidemargin+\csname sls@odd#1shift\endcsname
+ \else
+ \evensidemargin+\csname sls@even#1shift\endcsname
+ \fi
+ \else
+ \oddsidemargin+\csname sls@odd#1shift\endcsname
+ \fi
+ +1in\relax
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \sls@leftmargin
+% \end{macro}^^A \sls@topmargin
+% \end{macro}^^A \defpagestyle
+%
+% \begin{macro}{\newpagestyle}
+% For the parameters see \Macro{defpagestyle}.
+% Define only, if not already defined:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\newpagestyle{%
+ \newcommand*\newpagestyle[3]{%
+ \@ifundefined{ps@#1}{\defpagestyle{#1}{#2}{#3}}{%
+ \PackageError{scrlayer-scrpage}{Page style `#1' already defined}{%
+ Only not yet defined page style may be defined using
+ \string\newpagestyle.\MessageBreak
+ You may use either \string\renewpagestyle, \string\providepagestyle,
+ or \string\defpagestyle\MessageBreak
+ with already defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \newpagestyle
+%
+% \begin{macro}{\renewpagestyle}
+% For the parameters see \Macro{defpagestyle}.
+% Define only, if not already defined:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\renewpagestyle{%
+ \newcommand*\renewpagestyle[3]{%
+ \@ifundefined{ps@#1}{%
+ \PackageError{scrlayer-scrpage}{Undefined page style `#1'}{%
+ Only already defined page style may be re-defined using
+ \string\renewpagestyle.\MessageBreak
+ You may use either \string\newpagestyle, \string\providepagestyle,
+ or \string\defpagestyle\MessageBreak
+ with not yet defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }{%
+ \defpagestyle{#1}{#2}{#3}%
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \renewpagestyle
+%
+% \begin{macro}{\providepagestyle}
+% For the parameters see \Macro{defpagestyle}.
+% Define only, if not already defined:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\providepagestyle{%
+ \newcommand*\providepagestyle[3]{%
+ \@ifundefined{ps@#1}{%
+ \defpagestyle{#1}{#2}{#3}%
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer-scrpage}{%
+ page style `#1' already defined.\MessageBreak
+ New definition ignored%
+ }%
+%</trace>
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \providepagestyle
+%
+%
+% \section{User Page Style Definition Interface}
+%
+% This is the mid-level interface of \Package{scrpage2} with
+% \Macro{deftripstyle}. As in \Package{scrpage2} we simply use the expert page
+% style definition interface to define the new user interface commands. But
+% here the useless starred versions will not longer be supported. So users of
+% them have to remove the star (nothing else).
+%
+% \begin{macro}{\deftriplepagestyle}
+% \begin{macro}{\newtriplepagestyle}
+% \begin{macro}{\renewtriplepagestyle}
+% \begin{macro}{\providetriplepagestyle}
+% \begin{macro}{\deftripstyle}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be defined (must
+% be fully expandable and expand to a string only).
+% \item[\OParameter{dimensional expression}:] thickness of a horizontal line
+% above the page head and below the page foot (default: 0\,pt).
+% \item[\OParameter{dimensional expression}:] thickness of a horizontal line
+% below the page head and above the page foot (default: 0\,pt).
+% \item[\Parameter{code}:] will be expanded left aligned at head of odd
+% pages (with one-side layout all pages are odd) and right aligned at head
+% of even pages.
+% \item[\Parameter{code}:] will be expanded centered at head of odd
+% and even pages.
+% \item[\Parameter{code}:] will be expanded right aligned at head of odd
+% pages (with one-side layout all pages are odd) and left aligned at head
+% of even pages.
+% \item[\Parameter{code}:] will be expanded left aligned at footer of odd
+% pages (with one-side layout all pages are odd) and right aligned at
+% footer of even pages.
+% \item[\Parameter{code}:] will be expanded centered at footer of odd
+% and even pages.
+% \item[\Parameter{code}:] will be expanded right aligned at footer of odd
+% pages (with one-side layout all pages are odd) and left aligned at
+% footer of even pages.
+% \end{description}
+% See \Package{scrpage2}, but:
+% While the starred version of \Macro{deftripstyle} is deprecated for several
+% years and hasn't been described at the manual, it will not longer be
+% defined. Additional commands have been added.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface{\deftriplepagestyle}{%
+ \newcommand*{\deftriplepagestyle}[1]{%
+ \let\@tempa\defpagestyle
+ \scrlayer@triplestyle{#1}%
+ }%
+}
+\scrlayerAddToInterface{\newtriplepagestyle}{%
+ \newcommand*{\newtriplepagestyle}[1]{%
+ \let\@tempa\newpagestyle
+ \scrlayer@triplestyle{#1}%
+ }%
+}
+\scrlayerAddToInterface{\renewtriplepagestyle}{%
+ \newcommand*{\renewtriplepagestyle}[1]{%
+ \let\@tempa\renewpagestyle
+ \scrlayer@triplestyle{#1}%
+ }%
+}
+\scrlayerAddToInterface{\providetriplepagestyle}{%
+ \newcommand*{\providetriplepagestyle}[1]{%
+ \let\@tempa\providepagestyle
+ \scrlayer@triplestyle{#1}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@triplestyle}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\scrlayer@@triplestyle}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\scrlayer@@@triplestyle}
+% Helpers, that do the real work. Parameters are same, but \cs{reserved@a} has
+% to be one of \Macro{defpagestyle}, \Macro{newpagestyle},
+% \Macro{renewpagestyle}, or \Macro{providepagestyle}.
+% \begin{macrocode}
+\scrlayerAddToInterface\scrlayer@triplestyle{%
+ \def\scrlayer@triplestyle#1{%
+ \kernel@ifnextchar[%]
+ {\scrlayer@@triplestyle{#1}}%
+ {\scrlayer@@triplestyle{#1}[\z@]}%
+ }
+}
+\scrlayerAddToInterface\scrlayer@@triplestyle{%
+ \def\scrlayer@@triplestyle#1[#2]{%
+ \kernel@ifnextchar[%]
+ {\scrlayer@@@triplestyle{#1}[#2]}%
+ {\scrlayer@@@triplestyle{#1}[\z@][#2]}%
+ }%
+}
+\scrlayerAddToInterface\scrlayer@@@triplestyle{%
+ \def\scrlayer@@@triplestyle#1[#2][#3]#4#5#6#7#8#9{%
+ \@tempa{#1}{%
+ (\sls@headwidth,#2)%
+ {%
+ \makebox[\z@][l]{#6}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#4}%
+ }{%
+ \makebox[\z@][l]{#4}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#6}%
+ }{%
+ \makebox[\z@][l]{#4}\hfill
+ \makebox[\z@][c]{#5}\hfill
+ \makebox[\z@][r]{#6}%
+ }%
+ (\sls@headwidth,#3)%
+ }{%
+ (\sls@footwidth,#3)%
+ {%
+ \makebox[\z@][l]{#9}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#7}%
+ }{%
+ \makebox[\z@][l]{#7}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#9}%
+ }{%
+ \makebox[\z@][l]{#7}\hfill
+ \makebox[\z@][c]{#8}\hfill
+ \makebox[\z@][r]{#9}%
+ }%
+ (\sls@footwidth,#2)%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@@@triplestyle
+% \end{macro}^^A \scrlayer@@triplestyle
+% \end{macro}^^A \scrlayer@triplestyle
+% \begin{macrocode}
+\scrlayerAddToInterface{\deftripstyle}{%
+ \newcommand*{\deftripstyle}{%
+ \PackageWarning{scrlayer-scrpage}{%
+ Command \string\deftripstyle\space is deprecate.\MessageBreak
+ You should replace it by \string\deftriplepagestyle,\MessageBreak
+ e.g.,%
+ }%
+ \let\deftripstyle\deftriplepagestyle
+ \deftripstyle
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \deftripstyle
+% \end{macro}^^A \providetriplepagestyle
+% \end{macro}^^A \renewtriplepagestyle
+% \end{macro}^^A \newtriplepagestyle
+% \end{macro}^^A \deftriplepagestyle
+%
+%
+% \section{Pre-defined Page Styles Interface}
+%
+% This is the high-level interface of \Package{scrpage2} with the page style
+% \Pagestyle{scrheadings}, \Pagestyle{scrplain}, and
+% \Pagestyle{useheadings}. Those will work as expected but will also be
+% extended to support definition of additional styles using the same
+% interface.
+%
+% \begin{macro}{\defpairofpagestyles}
+% \begin{description}
+% \item[\OParameter{string}:] name of a parent page style, that will be used
+% to initialise the new page style (must be fully expandable and expand to
+% the name of a page style).
+% \item[\Parameter{string}:] name the page style to be defined (must be
+% fully expandable and expand to the name of a page style).
+% \item[\Parameter{code}:] several commands of \Macro{ihead}, \Macro{chead},
+% \Macro{ohead}, \Macro{lehead}, \Macro{lohead}, \Macro{cohead},
+% \Macro{rehead}, \Macro{cehead}, \Macro{rohead}, \Macro{ifoot},
+% \Macro{cfoot}, \Macro{ofoot}, \Macro{lefoot}, \Macro{cefoot},
+% \Macro{lofoot}, \Macro{refoot}, \Macro{cofoot}, \Macro{rofoot},
+% \Macro{clearscrheadfoot}, \Macro{clearscrheadings},
+% \Macro{clearscrplain}.
+% \end{description}
+% Two page styles will be defined using \Macro{defpagestyle}, page style named
+% with the second argument and page style with the same name but an additional
+% prefix ``\texttt{plain.}''. This will be activated automatically to be the
+% plain page style when the first page style will be used. If first argument
+% is used this pair of page styles will be used to initialise the head and
+% footer of the new. All the other commands are used to define the initial
+% fields. Note, if one of those page styles is active, all further commands
+% (see 3rd argument) depend on the active page style. If no one is active,
+% they depend on page style \texttt{scrheadings}.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\defpairofpagestyles{%
+ \newcommand*{\defpairofpagestyles}[3][]{%
+ \def\reserved@a##1##2##3##4##5##6##7\@nil{##1##2##3##4##5##6}%
+ \edef\reserved@a{\expandafter\reserved@a #2xxxxxx\@nil}%
+ \ifstr\reserved@a{plain.}{%
+ \PackageError{scrlayer-scrpage}{plain page style `#2' not allowed}{%
+ You may not define a plain page style using
+ \string\defpairofpagestyles, \string\newpairofpagestyles,
+ \string\renewpairofpagestyles, or\MessageBreak
+ \string\providepairofpagestyles. I'd suggest to simply define the
+ corresponding\MessageBreak
+ non-plain page style to also define the plain one.\MessageBreak
+ If you'll continue, your command will be ignored.}%
+ }{%
+ \sls@init@pair@page@style*{#2}%
+ \sls@init@pair@page@style*{plain.#2}%
+ \ifx\relax #1\relax\else
+ \scr@ifundefinedorrelax{sls@ps@#1@even@left@head}{%
+ \PackageError{scrlayer-scrpage}{`#1' not a pair page style}{%
+ Only pair page styles may be used to initialise new pairs of page
+ styles. So\MessageBreak
+ optional argument of \string\defpairofpagestyles,
+ \string\newpairofpagestyles,\MessageBreak
+ \string\renewpairofpagestyles, or \string\providepairofpagestyle has
+ to be a pair\MessageBreak
+ page style or should be unused.\MessageBreak
+ If you'll continue, the initialisation will be ignored.}%
+ }{%
+ \sls@init@pair@page@style{#2}{#1}%
+ \scr@ifundefinedorrelax{sls@ps@plain.#1@even@left@head}{%
+ \sls@init@pair@page@style{plain.#2}{#1}%
+ }{%
+ \sls@init@pair@page@style{plain.#2}{plain.#1}%
+ }%
+ }%
+ \fi
+ \edef\reserved@a{%
+ \noexpand\scrlayerOnAutoRemoveInterface[scrlayer-scrpage.sty]{%
+ \noexpand\sls@init@pair@page@style**{#2}%
+ \noexpand\sls@init@pair@page@style**{plain.#2}%
+ \noexpand\expandafter\noexpand\ifx\noexpand
+ \csname ps@plain.#2\noexpand\endcsname\noexpand\ps@plain
+ \noexpand\PackageWarning{scrlayer-scrpage}{%
+ page style `#2' not longer valid.\noexpand\MessageBreak
+ This was the current plain page style.\noexpand\MessageBreak
+ Making current plain page style empty.\noexpand\MessageBreak
+ The page style has been defined using\noexpand\MessageBreak
+ interface `scrlayer-scrpage.sty', that\noexpand\MessageBreak
+ has been removed%
+ }%
+ \noexpand\def\noexpand\ps@plain{%
+ \noexpand\def\noexpand\@oddhead{}\noexpand\def\noexpand\@evenhead{}%
+ \noexpand\def\noexpand\@oddhead{}\noexpand\def\noexpand\@evenhead{}%
+ }%
+ \noexpand\fi
+ }%
+ }\reserved@a
+ \sls@def@pair@page@style@member{#2}%
+ \AddToLayerPageStyleOptions{#2}{%
+ onselect={%
+% \end{macrocode}
+% \changes{v3.15}{2015/01/08}{usage of \cs{DeclarePageStyleAlias} instead of
+% \cs{let}}^^A fixme: Is this correct?
+% \begin{macrocode}
+ \DeclarePageStyleAlias{plain}{plain.#2}%
+ \DeclarePageStyleAlias{headings}{#2}%
+ \def\sls@currentheadings{#2}%
+ \def\sls@currentplain{plain.#2}%
+ #3%
+ }%
+ }%
+ \sls@def@pair@page@style@member{plain.#2}%
+ \AddToLayerPageStyleOptions{plain.#2}{%
+ onselect={%
+% \end{macrocode}
+% \changes{v3.15}{2015/01/08}{usage of \cs{DeclarePageStyleAlias} instead of
+% \cs{let}}^^A fixme: Is this correct?
+% \begin{macrocode}
+ \DeclarePageStyleAlias{plain}{plain.#2}%
+ \DeclarePageStyleAlias{headings}{#2}%
+ \def\sls@currentheadings{#2}%
+ \def\sls@currentplain{plain.#2}%
+ #3%
+ },%
+ oninit={%
+ \expandafter
+ \ifx\csname ifsls@plain@head@above@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@headabove@linelength\z@
+ \let\sls@headabove@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@head@below@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@headbelow@linelength\z@
+ \let\sls@headbelow@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@foot@above@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@footabove@linelength\z@
+ \let\sls@footabove@linethickness\z@
+ \fi
+ \expandafter
+ \ifx\csname ifsls@plain@foot@below@line\expandafter\endcsname
+ \csname iftrue\endcsname\else
+ \let\sls@footbelow@linelength\z@
+ \let\sls@footbelow@linethickness\z@
+ \fi
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@currentheadings}
+% \begin{macro}{\sls@currentplain}
+% These little helpers will be set up at selection of each pair page style and
+% stores the last activated page style pair of the scope.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@currentheadings{%
+ \newcommand*\sls@currentheadings{scrheadings}%
+}
+\scrlayerAddToInterface\sls@currentplain{%
+ \newcommand*\sls@currentplain{plain.scrheadings}%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@currentplain
+% \end{macro}^^A \sls@currentheadings
+% \begin{macro}{\sls@init@pair@page@style}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\sls@init@@pair@page@style}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style, that should be
+% initialised to be one member of a page style pair.
+% \item[\Parameter{string}:] the name of a member of a page style pair, that
+% should be used to initialise one the member of a page style pair from
+% first argument.
+% \end{description}
+% These are two little helpers for \Macro{defpairofpagestyles}.
+% The first command has two starred versions. With one star the commands for
+% the page style will be initialised to \Macro{@empty}, with two stars they
+% will become \LaTeX-undefined (\Macro{relax}).
+%
+% Note also, that the second argument may either be the plain or the non-plain
+% member of the page style pair.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@init@pair@page@style{%
+ \newcommand*{\sls@init@pair@page@style}{%
+ \kernel@ifstar {%
+ \kernel@ifstar {%
+ \sls@let@pair@page@style\relax
+ }{%
+ \sls@let@pair@page@style\@empty
+ }
+ }{%
+ \sls@init@@pair@page@style
+ }%
+ }%
+}
+\scrlayerAddToInterface\sls@init@@pair@page@style{%
+ \newcommand*{\sls@init@@pair@page@style}[2]{%
+ \expandafter\let\csname sls@ps@#1@even@left@head\expandafter\endcsname
+ \csname sls@ps@#2@even@left@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@middle@head\expandafter\endcsname
+ \csname sls@ps@#2@even@middle@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@right@head\expandafter\endcsname
+ \csname sls@ps@#2@even@right@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@left@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@left@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@middle@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@middle@head\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@right@head\expandafter\endcsname
+ \csname sls@ps@#2@odd@right@head\endcsname
+ \expandafter\let\csname sls@ps@#1@even@left@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@left@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@even@middle@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@middle@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@even@right@foot\expandafter\endcsname
+ \csname sls@ps@#2@even@right@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@left@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@left@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@middle@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@middle@foot\endcsname
+ \expandafter\let\csname sls@ps@#1@odd@right@foot\expandafter\endcsname
+ \csname sls@ps@#2@odd@right@foot\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@init@@pair@page@style
+% \begin{macro}{\sls@let@pair@page@style}
+% \begin{description}
+% \item[\Parameter{command}:] a single command used to initialise the
+% commands of the page style commands.
+% \item[\Parameter{string}:] the name of a member of a page style pair, that
+% should be used to initialise one the member of a page style pair from
+% first argument.
+% \end{description}
+% A little helper for \Macro{sls@init@pair@page@style}.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@let@pair@page@style{%
+ \newcommand*{\sls@let@pair@page@style}[2]{%
+ \expandafter\let\csname sls@ps@#2@even@left@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@middle@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@right@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@left@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@middle@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@right@head\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@left@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@middle@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@even@right@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@left@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@middle@foot\endcsname #1%
+ \expandafter\let\csname sls@ps@#2@odd@right@foot\endcsname #1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \sls@let@pair@page@style
+% \end{macro}^^A \sls@init@pair@page@style
+% \begin{macro}{\sls@def@pair@page@style@member}
+% \changes{v3.24}{2017/05/04}{improved \textsf{bidi} compatibility}^^A
+% \begin{description}
+% \item[\Parameter{string}:] name of the page style to be defined.
+% \end{description}
+% A little helper for \Macro{defpairofpagestyles}.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@def@pair@page@style@member{%
+ \newcommand*{\sls@def@pair@page@style@member}[1]{%
+ \defpagestyle{#1}{%
+ {%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@even@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@even@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@even@right@head}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@headwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@head}\strut}}%
+ \parbox{\sls@headwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@odd@middle@head}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@headwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@head}\strut}}%
+ }%
+ }{%
+ {%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@even@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@even@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@even@right@foot}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
+ }{%
+ \makebox[0pt][\IfRTL{r}{l}]{\parbox{\sls@footwidth}{\raggedright
+ \strut\@nameuse{sls@ps@#1@odd@left@foot}\strut}}%
+ \parbox{\sls@footwidth}{\centering
+ \strut\@nameuse{sls@ps@#1@odd@middle@foot}\strut}%
+ \makebox[0pt][\IfRTL{l}{r}]{\parbox{\sls@footwidth}{\raggedleft
+ \strut\@nameuse{sls@ps@#1@odd@right@foot}\strut}}%
+ }%
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \sls@def@pair@page@style@member
+% \end{macro}^^A \defpairofpagestyles
+%
+% \begin{macro}{\newpairofpagestyles}
+% \begin{macro}{\renewpairofpagestyles}
+% \begin{macro}{\providepairofpagestyles}
+% See \Macro{defpairofpagestyles} for the arguments.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\newpairofpagestyles{%
+ \newcommand*{\newpairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
+ \PackageError{scrlayer-scrpage}{%
+ Plain page style of `#2' already defined}{%
+ You may only define a new pair of page styles, if neither the style
+ itself\MessageBreak
+ nor it's plain page style has already been defined.\MessageBreak
+ You may use only \string\defpairofpagestyles\space or
+ \string\providepairofpagestyles\space with partly\MessageBreak
+ already defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }%
+ }{%
+ \PackageError{scrlayer-scrpage}{%
+ Page style `#2' already defined}{%
+ You may only define a new pair of page styles, if neither the style
+ itself\MessageBreak
+ nor it's plain page style has already been defined.\MessageBreak
+ You may use either \string\renewpairsofpagestyles,
+ \string\defpairofpagestyles, or\MessageBreak
+ \string\providepairofpagestyles\space with already defined page
+ styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }%
+ }%
+}
+\scrlayerAddToInterface\renewpairofpagestyles{%
+ \newcommand*{\renewpairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \PackageError{scrlayer-scrpage}{%
+ Undefined page style `#2'}{%
+ You may only redefine existing pairs of page styles. You may use
+ either\MessageBreak
+ \string\newpairsofpagestyles, \string\defpairofpagestyles, or
+ \string\providepairofpagestyles\MessageBreak
+ with not yet defined page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }{%
+ \@ifundefined{ps@plain.#2}{%
+ \PackageError{scrlayer-scrpage}{%
+ Undefined plain page style of `#2'}{%
+ You may only redefine existing pairs of page styles. You may use
+ either\MessageBreak
+ \string\defpairofpagestyles\space or
+ \string\providepairofpagestyles\space with partly already
+ defined\MessageBreak
+ page styles.\MessageBreak
+ If you'll continue, your command will be ignored.%
+ }%
+ }{\defpairofpagestyles[#1]{#2}{#3}}%
+ }%
+ }%
+}
+\scrlayerAddToInterface\providepairofpagestyles{%
+ \newcommand*{\providepairofpagestyles}[3][]{%
+ \scr@ifundefinedorrelax{ps@#2}{%
+ \@ifundefined{ps@plain.#2}{\defpairofpagestyles[#1]{#2}{#3}}{%
+%<*trace>
+ \PackageInfo{scrlayer-scrpage}{%
+ Plain page style of `#2' already\MessageBreak
+ defined. Definition ignored}%
+%</trace>
+ }%
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer-scrpage}{%
+ Page style of `#2' already defined.\MessageBreak
+ Definition ignored}%
+%</trace>
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \providepairofpagestyles
+% \end{macro}^^A \renewpairofpagestyles
+% \end{macro}^^A \newpairofpagestyles
+%
+% \begin{macro}{\ps@scrheadings}
+% \begin{macro}{\ps@plain.scrheadings}
+% We have one predefined pair: \texttt{scrheadings} with plain page style
+% \texttt{plain.scrheadings}.
+% \begin{macrocode}
+%<*body>
+\newpairofpagestyles{scrheadings}{}%
+% \end{macrocode}
+% \begin{macro}{\ps@scrplain}
+% But with package \Package{scrpage2} the plain page style was
+% \texttt{scrplain}. So we make a kind of alias:
+% \begin{macrocode}
+\DeclarePageStyleAlias{scrplain}{plain.scrheadings}
+\scrlayerOnAutoRemoveInterface{\DestroyPageStyleAlias{scrplain}}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \ps@scrplain
+% \end{macro}^^A \ps@plain.scrheadings
+% \end{macro}^^A \ps@scrheadings
+%
+%
+% \begin{macro}{\ihead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ohead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\chead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\lehead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\lohead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\rehead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\rohead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\cehead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\cohead}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ifoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\ofoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\cfoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\lefoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\lofoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\refoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\rofoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\cefoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\cofoot}
+% \changes{v3.14}{2014/09/19}{new star version double the argument}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% We also need macros to define the contents of the three part head
+% and foot. Each macro defines one of the part of head or foot of the
+% headings page style member and optional of the plain page style
+% member.
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\ihead{%
+ \newcommand*{\ihead}{\kernel@ifstar {\@dblarg\@@@ihead}{\@ihead}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@ihead}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@ihead}
+% \begin{macro}{\@@@ihead}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@ihead{%
+ \newcommand*{\@ihead}{\kernel@ifnextchar[{\@@@ihead}{\@@ihead}}%
+}
+\scrlayerAddToInterface\@@ihead{%
+ \newcommand*{\@@ihead}[1]{\rehead{#1}\lohead{#1}}%
+}
+\scrlayerAddToInterface\@@@ihead{%
+ \newcommand*{\@@@ihead}[2][]{\rehead[{#1}]{#2}\lohead[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@ihead
+% \end{macro}^^A \@@ihead
+% \end{macro}^^A \@ihead
+% \begin{macrocode}
+\scrlayerAddToInterface\ohead{%
+ \newcommand*{\ohead}{\kernel@ifstar {\@dblarg\@@@ohead}{\@ohead}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@ohead}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@ohead}
+% \begin{macro}{\@@@ohead}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@ohead{%
+ \newcommand*{\@ohead}{\kernel@ifnextchar[{\@@@ohead}{\@@ohead}}%
+}
+\scrlayerAddToInterface\@@ohead{%
+ \newcommand*{\@@ohead}[1]{\lehead{#1}\rohead{#1}}%
+}
+\scrlayerAddToInterface\@@@ohead{%
+ \newcommand*{\@@@ohead}[2][]{\lehead[{#1}]{#2}\rohead[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@ohead
+% \end{macro}^^A \@@ohead
+% \end{macro}^^A \@ohead
+% \begin{macrocode}
+\scrlayerAddToInterface\chead{%
+ \newcommand*{\chead}{\kernel@ifstar {\@dblarg\@@@chead}{\@chead}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@chead}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@chead}
+% \begin{macro}{\@@@chead}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@chead{%
+ \newcommand*{\@chead}{\kernel@ifnextchar[{\@@@chead}{\@@chead}}%
+}
+\scrlayerAddToInterface\@@chead{%
+ \newcommand*{\@@chead}[1]{\cehead{#1}\cohead{#1}}%
+}
+\scrlayerAddToInterface\@@@chead{%
+ \newcommand*{\@@@chead}[2][]{\cehead[{#1}]{#2}\cohead[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@chead
+% \end{macro}^^A \@@chead
+% \end{macro}^^A \@chead
+% \begin{macrocode}
+\scrlayerAddToInterface\lehead{%
+ \newcommand*{\lehead}{\sls@renewelement{even}{left}{head}}%
+}
+\scrlayerAddToInterface\lohead{%
+ \newcommand*{\lohead}{\sls@renewelement{odd}{left}{head}}%
+}
+\scrlayerAddToInterface\rehead{%
+ \newcommand*{\rehead}{\sls@renewelement{even}{right}{head}}%
+}
+\scrlayerAddToInterface\rohead{%
+ \newcommand*{\rohead}{\sls@renewelement{odd}{right}{head}}%
+}
+\scrlayerAddToInterface\cehead{%
+ \newcommand*{\cehead}{\sls@renewelement{even}{middle}{head}}%
+}
+\scrlayerAddToInterface\cohead{%
+ \newcommand*{\cohead}{\sls@renewelement{odd}{middle}{head}}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\scrlayerAddToInterface\ifoot{%
+ \newcommand*{\ifoot}{\kernel@ifstar {\@dblarg\@@@ifoot}{\@ifoot}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@ifoot}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@ifoot}
+% \begin{macro}{\@@@ifoot}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@ifoot{%
+ \newcommand*{\@ifoot}{\kernel@ifnextchar[{\@@@ifoot}{\@@ifoot}}%
+}
+\scrlayerAddToInterface\@@ifoot{%
+ \newcommand*{\@@ifoot}[1]{\refoot{#1}\lofoot{#1}}%
+}
+\scrlayerAddToInterface\@@@ifoot{%
+ \newcommand*{\@@@ifoot}[2][]{\refoot[{#1}]{#2}\lofoot[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@ifoot
+% \end{macro}^^A \@@ifoot
+% \end{macro}^^A \@ifoot
+% \begin{macrocode}
+\scrlayerAddToInterface\ofoot{%
+ \newcommand*{\ofoot}{\kernel@ifstar {\@dblarg\@@@ofoot}{\@ofoot}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@ofoot}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@ofoot}
+% \begin{macro}{\@@@ofoot}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@ofoot{%
+ \newcommand*{\@ofoot}{\kernel@ifnextchar[{\@@@ofoot}{\@@ofoot}}%
+}
+\scrlayerAddToInterface\@@ofoot{%
+ \newcommand*{\@@ofoot}[1]{\lefoot{#1}\rofoot{#1}}%
+}
+\scrlayerAddToInterface\@@@ofoot{%
+ \newcommand*{\@@@ofoot}[2][]{\lefoot[{#1}]{#2}\rofoot[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@ofoot
+% \end{macro}^^A \@@ofoot
+% \end{macro}^^A \@ofoot
+% \begin{macrocode}
+\scrlayerAddToInterface\cfoot{%
+ \newcommand*{\cfoot}{\kernel@ifstar {\@dblarg\@@@cfoot}{\@cfoot}}%
+}
+% \end{macrocode}
+% \begin{macro}{\@cfoot}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@cfoot}
+% \begin{macro}{\@@@cfoot}
+% Two helpers for the previous one to double the command and it's arguments.
+% \begin{macrocode}
+\scrlayerAddToInterface\@cfoot{%
+ \newcommand*{\@cfoot}{\kernel@ifnextchar[{\@@@cfoot}{\@@cfoot}}%
+}
+\scrlayerAddToInterface\@@cfoot{%
+ \newcommand*{\@@cfoot}[1]{\cefoot{#1}\cofoot{#1}}%
+}
+\scrlayerAddToInterface\@@@cfoot{%
+ \newcommand*{\@@@cfoot}[2][]{\cefoot[{#1}]{#2}\cofoot[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \@@@cfoot
+% \end{macro}^^A \@@cfoot
+% \end{macro}^^A \@cfoot
+% \begin{macrocode}
+\scrlayerAddToInterface\lefoot{%
+ \newcommand*{\lefoot}{\sls@renewelement{even}{left}{foot}}%
+}
+\scrlayerAddToInterface\lofoot{%
+ \newcommand*{\lofoot}{\sls@renewelement{odd}{left}{foot}}%
+}
+\scrlayerAddToInterface\refoot{%
+ \newcommand*{\refoot}{\sls@renewelement{even}{right}{foot}}%
+}
+\scrlayerAddToInterface\rofoot{%
+ \newcommand*{\rofoot}{\sls@renewelement{odd}{right}{foot}}%
+}
+\scrlayerAddToInterface\cefoot{%
+ \newcommand*{\cefoot}{\sls@renewelement{even}{middle}{foot}}%
+}
+\scrlayerAddToInterface\cofoot{%
+ \newcommand*{\cofoot}{\sls@renewelement{odd}{middle}{foot}}%
+}
+% \end{macrocode}
+% \begin{macro}{\sls@renewelement}
+% \begin{macro}{\sls@@renewelement}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\sls@@@renewelement}
+% \begin{macro}{\sls@@@@renewelement}
+% \begin{macro}{\sls@@renewplainelement}
+% Little helper for several of the above commands.
+% \begin{macrocode}
+\scrlayerAddToInterface\sls@renewelement{%
+ \newcommand*{\sls@renewelement}[3]{%
+ \kernel@ifstar{\@dblarg{\sls@@@@renewelement{#1}{#2}{#3}}}%
+ {\sls@@renewelement{#1}{#2}{#3}}%
+ }%
+}
+\scrlayerAddToInterface\sls@@renewelement{%
+ \newcommand*{\sls@@renewelement}[3]{%
+ \kernel@ifnextchar[%]
+ {\sls@@@@renewelement{#1}{#2}{#3}}%
+ {\sls@@@renewelement{#1}{#2}{#3}}%
+ }%
+}
+\scrlayerAddToInterface\sls@@@renewelement{%
+ \newcommand*{\sls@@@renewelement}[4]{%
+ \scr@ifundefinedorrelax{sls@ps@\sls@currentheadings @#1@#2@#3}{%
+ \@namedef{sls@ps@scrheadings@#1@#2@#3}{#4}%
+ }{%
+ \@namedef{sls@ps@\sls@currentheadings @#1@#2@#3}{#4}%
+ }%
+ }%
+}
+\scrlayerAddToInterface\sls@@@@renewelement{%
+ \def\sls@@@@renewelement#1#2#3[#4]#5{%
+ \sls@@renewplainelement{#1}{#2}{#3}{#4}%
+ \sls@@@renewelement{#1}{#2}{#3}{#5}%
+ }%
+}
+\scrlayerAddToInterface\sls@@renewplainelement{%
+ \newcommand*{\sls@@renewplainelement}[4]{%
+ \scr@ifundefinedorrelax{sls@ps@\sls@currentplain @#1@#2@#3}{%
+ \@namedef{sls@ps@plain.scrheadings@#1@#2@#3}{#4}%
+ }{%
+ \@namedef{sls@ps@\sls@currentplain @#1@#2@#3}{#4}%
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \sls@@renewplainelement
+% \end{macro}^^A \sls@@@@renewelement
+% \end{macro}^^A \sls@@@renewelement
+% \end{macro}^^A \sls@@renewelement
+% \end{macro}^^A \sls@renewelement
+% \end{macro}^^A \cofoot
+% \end{macro}^^A \cefoot
+% \end{macro}^^A \rofoot
+% \end{macro}^^A \refoot
+% \end{macro}^^A \lofoot
+% \end{macro}^^A \lefoot
+% \end{macro}^^A \cfoot
+% \end{macro}^^A \ofoot
+% \end{macro}^^A \ifoot
+% \end{macro}^^A \cohead
+% \end{macro}^^A \cehead
+% \end{macro}^^A \rohead
+% \end{macro}^^A \rehead
+% \end{macro}^^A \lohead
+% \end{macro}^^A \lehead
+% \end{macro}^^A \chead
+% \end{macro}^^A \ohead
+% \end{macro}^^A \ihead
+%
+% \begin{macro}{\clearmainofpairofpagestyles}
+% \begin{macro}{\clearscrheadings}
+% Maybe you want to clear the currently defined head and foot. First
+% let's clear only scrheadings pagestyle but not scrplain pagestyle.
+% We do this simply using the already known command:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\clearmainofpairofpagestyles{%
+ \newcommand*{\clearmainofpairofpagestyles}{%
+ \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}%
+ }%
+}
+\scrlayerAddToInterface\clearscrheadings{%
+ \let\clearscrheadings\clearmainofpairofpagestyles
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \clearscrheadings
+% \end{macro}^^A \clearmainofpairofpagestyles
+% \begin{macro}{\clearplainofpairofpagestyles}
+% \begin{macro}{\clearscrplain}
+% Now, we use the not recommended feature to set up a plain style:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\clearplainofpairofpagestyles{%
+ \newcommand*{\clearplainofpairofpagestyles}{%
+ \sls@@renewplainelement{odd}{left}{head}{}%
+ \sls@@renewplainelement{odd}{right}{head}{}%
+ \sls@@renewplainelement{odd}{middle}{head}{}%
+ \sls@@renewplainelement{even}{left}{head}{}%
+ \sls@@renewplainelement{even}{right}{head}{}%
+ \sls@@renewplainelement{even}{middle}{head}{}%
+ \sls@@renewplainelement{odd}{left}{foot}{}%
+ \sls@@renewplainelement{odd}{right}{foot}{}%
+ \sls@@renewplainelement{odd}{middle}{foot}{}%
+ \sls@@renewplainelement{even}{left}{foot}{}%
+ \sls@@renewplainelement{even}{right}{foot}{}%
+ \sls@@renewplainelement{even}{middle}{foot}{}%
+ }%
+}
+\scrlayerAddToInterface\clearscrplain{%
+ \let\clearscrplain\clearplainofpairofpagestyles
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \clearscrplain
+% \end{macro}^^A \clearplainofpairofpagestyles
+% \begin{macro}{\clearpairofpagestyles}
+% \begin{macro}{\clearscrheadfoot}
+% Last but not least we clean up both, the main and the plain:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\clearpairofpagestyles{%
+ \newcommand*{\clearpairofpagestyles}{%
+ \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}%
+ }%
+}
+\scrlayerAddToInterface\clearscrheadfoot{%
+ \let\clearscrheadfoot\clearpairofpagestyles
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \clearscrheadfoot
+% \end{macro}^^A \clearpairofpagestyles
+%
+% \begin{macro}{\ps@useheadings}
+% Not longer supported:
+% \begin{macrocode}
+%<*body>
+\scrlayerAddToInterface\ps@useheadings{%
+ \newcommand*\ps@useheadings{%
+ \PackageWarning{scrlayer-scrpage}{incompatible page style!\MessageBreak
+ Page styles like `headings' and `plain'\MessageBreak
+ are incompatible with the page styles\MessageBreak
+ of scrlayer-scrpage. You shouldn't mix\MessageBreak
+ them up. Therefore page style\MessageBreak
+ `useheadings' is not longer provided.\MessageBreak
+ Usage is deprecated and will be replaced\MessageBreak
+ by `scrheadings'%
+ }%
+ \let\ps@useheadings\ps@scrheadings
+ \ps@useheadings
+ }%
+}
+\scrlayerAddCsToInterface{ps@plain.useheadings}{%
+ \@namedef{ps@plain.useheadings}{\@nameuse{ps@plain.scrheadings}}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \ps@useheadings
+%
+% \iffalse^^A meta-comment
+%</interface>
+% \fi^^A meta-comment
+%
+% \Finale
+% \let\subsection\section
+% \let\section\chapter
+% \let\chapter\restorechapter
+%
+\endinput
+%
+% end of file `scrlayer.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% ispell-local-dictionary: "en_GB"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlayer.dtx b/macros/latex/contrib/koma-script/source/scrlayer.dtx
new file mode 100644
index 0000000000..0fc52a4e68
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlayer.dtx
@@ -0,0 +1,4319 @@
+% \CheckSum{4042}
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlayer.dtx
+% Copyright (c) Markus Kohm, 2012-2018
+%
+% 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 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.
+% ----------------------------------------------------------------------
+% scrlayer.dtx
+% Copyright (c) Markus Kohm, 2012-2018
+%
+% Diese Datei ist Teil der LaTeX2e KOMA-Script-Sammlung.
+%
+% 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 in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse^^A meta-comment
+%%% From File: $Id: scrlayer.dtx 3015 2018-09-03 10:51:32Z kohm $
+%<identify>%%% (run: identify)
+%<init>%%% (run: init)
+%<options>%%% (run: options)
+%<body>%%% (run: body)
+%<final>%%% (run: final)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-09-03 12:51:32 +0200 (Mon, 03 Sep 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3015 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlayer.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*identify|doc>
+%<package>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<package>\ProvidesPackage{scrlayer}[%
+%<doc>\ProvidesFile{scrlayer.tex}[%
+%!KOMAScriptVersion
+%<package> package
+%</identify|doc>
+%<*dtx|identify|doc>
+ (defining layers and page styles)]
+%</dtx|identify|doc>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2012}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlayer.sty}{%
+ \from{scrlayer.dtx}{package,trace,scrlayer,identify}%
+ \from{scrlayer.dtx}{package,trace,scrlayer,init}%
+ \from{scrlayer.dtx}{package,trace,scrlayer,options}%
+ \from{scrlayer.dtx}{package,trace,scrlayer,body}%
+ \from{scrlayer.dtx}{package,trace,scrlayer,final}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+
+ \batchinput{scrlayer-scrpage.dtx}
+ \batchinput{scrlayer-notecolumn.dtx}
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+ \documentclass{scrdoc}
+ \addtolength{\textwidth}{-1em}
+ \addtolength{\marginparwidth}{2em}
+ \addtolength{\oddsidemargin}{2em}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{url,babelbib}\bibliographystyle{babalpha-fl}
+ \usepackage{listings}
+ \usepackage{scrhack}
+ \usepackage{etoolbox}
+ \pretocmd\DescribeMacro{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeEnv{\ifhmode\else\bigskip\noindent\fi}{}{}
+ \pretocmd\DescribeOption{\ifhmode\else\bigskip\noindent\fi}{}{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrlayer.dtx}
+ \title{The \KOMAScript{} package \texttt{scrlayer}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \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}%
+ }
+ \providecommand*{\IndexCmd}[2][]{}
+ \providecommand*{\textnote}[2][]{}
+ \providecommand*\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
+ \providecommand*\NTS{%
+ \leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}%
+ \kern-0.2emS$}}
+
+ \lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}
+ \makeatother
+ \sloppy% YOU SHOULD NOT DO THIS!!!
+
+ \begin{document}
+ \maketitle
+ \DocInput{\filename}
+ \DocInput{scrlayer-scrpage.dtx}
+ \DocInput{scrlayer-notecolumn.dtx}
+ \bibliography{guide}
+ \PrintChanges
+ \PrintIndex
+ \end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \selectlanguage{english}
+%
+% \changes{v0.0}{2012/01/01}{Start of new package}
+% \changes{v0.9}{2014/07/25}{User documentation removed}
+%
+% \StopEventually{}
+%
+%
+% \section{Implementation of \Package{scrlayer}}
+%
+% This section if for developers only.
+%
+% \iffalse
+%<*package>
+%<*identify>
+% \fi
+%
+%\iffalse^^A meta-comment
+%</identify>
+%</package>
+%<*package|interface|class>
+%\fi^^A meta-comment
+%
+% \subsection{Initialising some Values before the Options}
+%
+% \iffalse^^A meta-comment
+%<*init>
+% \fi^^A meta-comment
+%
+% Initialisation before all options.
+%
+% While there are \KOMAScript{} options, we need \Package{scrkbase} to declare
+% them, but the interfaces also needs \Package{scrlayer} which already
+% includes \Package{scrkbase}.
+% \begin{macrocode}
+%<package>\RequirePackage{scrkbase}[2013/03/05]
+%<interface>\RequirePackage{scrlayer}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\scrlayer@AtEndOfPackage}
+% Initial \Macro{AtEndOfPackage}, but after end of package
+% \Macro{@firstofone}.
+% \begin{macrocode}
+\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{%
+ \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
+}{%
+ \ifx\scrlayer@AtEndOfPackage\@firstofone
+ \AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
+ \fi
+}
+\let\scrlayer@AtEndOfPackage\AtEndOfPackage
+% \end{macrocode}
+% \end{macro}^^A \sls@AtEndOfPackage
+%
+% \begin{macro}{\scrlayer@testunexpectedarg}
+% We'll have several \KOMAScript{} options, that didn't expect an
+% value. So we use this general helper to test the value and report an error
+% if it is not empty (or \Macro{relax}).
+% \begin{macrocode}
+%<*package>
+\newcommand*{\scrlayer@testunexpectedarg}[2]{%
+ \ifx\relax#2\relax\else
+ \PackageError{scrlayer}{unexpected value to `#1'}{%
+ Option `#1' doesn't expect any value.\MessageBreak
+ If you'll continue, the value `#2' will be ignored.%
+ }%
+ \fi
+}
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@testunexpectedarg
+%
+% \begin{macro}{\if@chapter}
+% We need this later. But it is something general. So we initialise it as
+% early as possible.
+% \begin{macrocode}
+%<*package>
+\scr@ifundefinedorrelax{if@chapter}{%
+ \newif\if@chapter
+ \scr@ifundefinedorrelax{chapter}{\@chapterfalse}{\@chaptertrue}%
+}{}
+% \end{macrocode}
+% \end{macro}^^A \if@chapter
+%
+% \begin{macro}{\if@mainmatter}
+% Some classes define \Macro{frontmatter} or \Macro{mainmatter}, but do not
+% define \Macro{if@mainmatter}. But we nee some information about the matter,
+% so in that case, we add it.
+% \begin{macrocode}
+\scr@ifundefinedorrelax{if@mainmatter}{%
+ \scr@ifundefinedorrelax{mainmatter}{%
+ \newif\if@mainmatter\@mainmattertrue
+ }{%
+ \PackageWarningNoLine{scrlayer}{%
+ \string\mainmatter\space defined without
+ \string\if@mainmatter!\MessageBreak
+ Note, that several packages need
+ \string\if@mainmatter\space\MessageBreak
+ to detect whether or no the main matter has been\MessageBreak
+ entered. So does scrlayer. Because of this\MessageBreak
+ it will extend \string\mainmatter, now%
+ }%
+ \newif\if@mainmatter\@mainmattertrue
+ \expandafter\def\expandafter\mainmatter\expandafter{%
+ \expandafter\@mainmattertrue\mainmatter}%
+ \scr@ifundefinedorrelax{frontmatter}{}{%
+ \expandafter\def\expandafter\frontmatter\expandafter{%
+ \expandafter\@mainmatterfalse\frontmatter}
+ }%
+ \scr@ifundefinedorrelax{backmatter}{}{%
+ \expandafter\def\expandafter\backmatter{%
+ \expandafter\@mainmatterfalse\backmattter}%
+ }%
+ }%
+}{}
+%</package>
+% \end{macrocode}
+% \end{macro}^^A \if@mainmatter
+%
+% \iffalse^^A meta-comment
+%</init>
+% \fi^^A meta-comment
+%
+%
+% \subsection{Process Options}
+%
+% \iffalse^^A meta-comment
+%<*body>
+% \fi^^A meta-comment
+%
+% The very first thing at the body is processing the options:
+% \begin{macrocode}
+%<*package|interface>
+\KOMAProcessOptions\relax
+%</package|interface>
+% \end{macrocode}
+%
+% \subsection{Body Initialisation}
+%
+% Currently not needed.
+%
+% \iffalse
+%</body>
+% \fi
+%
+%
+% \subsection{Extended Running Heads}
+%
+% Package \Package{scrpage2} changes and extends the running head mechanisms
+% of \LaTeX{} and the classes. Most of this are basic features an therefore
+% done already by \Package{scrlayer}. But not the deprecated options.
+%
+% \begin{option}{markcase}
+% \begin{description}
+% \item[\texttt{=\meta{setting}}] one of: \texttt{upper}, \texttt{lower},
+% \texttt{used}, or \texttt{ignoreuppercase}.
+% \end{description}\noindent
+% The two options \Option{markuppercase} and \Option{markusedcase} become
+% deprecated and are replace be the single option \Option{markcase}. Note,
+% that interface \Package{scrlayer-scrpage} has to delay this option to
+% overload case setting of option \Option{pagestyleset}.
+% \begin{macrocode}
+%<*options>
+\KOMA@key{markcase}{%
+%<interface&scrpage>\scrlayer@AtEndOfPackage{%
+ \begingroup
+ \KOMA@set@ncmdkey{markcase}{reserved@a}{%
+ {upper}{0},{lower}{1},{used}{2},%
+ {ignoreuppercase}{3},{nouppercase}{3},%
+ {ignoreupper}{3},{noupper}{3}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
+ \ifnum \reserved@a>\m@ne
+ \aftergroup\let\aftergroup\MakeMarkcase
+ \ifcase \reserved@a
+ \aftergroup\MakeUppercase
+ \aftergroup\scrlayer@forceignoreuppercasefalse
+ \or
+ \aftergroup\MakeLowercase
+ \aftergroup\scrlayer@forceignoreuppercasefalse
+ \or
+ \aftergroup\@firstofone
+ \aftergroup\scrlayer@forceignoreuppercasefalse
+ \else
+ \aftergroup\scrlayer@ignoreuppercase
+ \aftergroup\scrlayer@forceignoreuppercasetrue
+ \fi
+ \fi
+ \else
+ \aftergroup\FamilyKeyStateUnknownValue
+ \fi
+ \endgroup
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer.sty}{markcase}%
+ \KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}%
+ \fi
+%<interface&scrpage>}%
+}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @markcase\endcsname\relax
+%</interface&body>
+% \end{macrocode}
+% \begin{macro}{\MakeMarkcase}
+% We use this instead of, e.g., \Macro{MakeUppercase} for every layer! So the
+% name seams to be wrong, but it is common, so we use it here.
+% \begin{macrocode}
+%<*package&options>
+\@ifundefined{MakeMarkcase}{\let\MakeMarkcase\@firstofone}{}
+\ifx\MakeMarkcase\@firstofone
+ \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{used}%
+\else\ifx\MakeMarkcase\MakeUppercase
+ \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{upper}%
+ \else\ifx\MakeMarkcase\MakeLowercase
+ \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{lower}%
+ \else\ifx\MakeMarkcase\scr@ignoreuppercase
+ \KOMA@kav@replacevalue{.scrlayer.sty}{markcase}{ignoreuppercase}%
+\fi\fi\fi\fi
+% \end{macrocode}
+% \begin{macro}{\scrlayer@ignoreuppercase}
+% We span a group and set \Macro{uppercase} and \Macro{MakeUppercase} to
+% \Macro{@firstofone}.
+% \begin{macrocode}
+\DeclareRobustCommand*{\scrlayer@ignoreuppercase}[1]{%
+ \begingroup
+ \let\uppercase\@firstofone
+ \let\MakeUppercase\@firstofone
+ \expandafter\let\csname MakeUppercase \endcsname\@firstofone
+ #1%
+ \endgroup
+}
+% \end{macrocode}
+% This is almost enough, but standard classes still would show upper-case
+% letters at table of contents, list of figures, list of tables, index and
+% bibliography. So we need an additional workaround.
+% \begin{macro}{\ifscrlayer@forceignoreuppercase}
+% \begin{macrocode}
+\newif\ifscrlayer@forceignoreuppercase
+%</package&options>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@forceignoreuppercase
+% \end{macro}^^A \scrlayer@ignoreuppercase
+% \end{macro}^^A \MakeMarkcase
+% \end{option}^^A markcase
+%
+% \begin{macro}{\rightfirstmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \begin{macro}{\rightbotmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \begin{macro}{\righttopmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \Macro{rightfirstmark} is simply the same like the \Macro{rightmark} of the
+% \LaTeX{} kernel. \Macro{rightbotmark} uses \Macro{botmark} instead of
+% \Macro{firstmark} and \Macro{righttopmark} uses \Macro{topmark}.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\rightfirstmark}{\expandafter\@rightmark\firstmark\@empty\@empty}
+\newcommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
+\newcommand*{\righttopmark}{\expandafter\@rightmark\topmark\@empty\@empty}
+% \end{macrocode}
+% \end{macro}^^A \righttopmark
+% \end{macro}^^A \rightbotmark
+% \end{macro}^^A \rightfirstmark
+%
+% \begin{macro}{\leftfirstmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \begin{macro}{\leftbotmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \begin{macro}{\lefttopmark}
+% \changes{v3.16}{2015/01/14}{new}
+% \Macro{leftbotmark} is simply the same like the \Macro{leftmark} of the
+% \LaTeX{} kernel. \Macro{leftfirstmark} uses \Macro{firstmark} instead of
+% \Macro{botmark} and \Macro{lefttopmark} uses \Macro{topmark}.
+% \begin{macrocode}
+\newcommand*{\leftfirstmark}{\expandafter\@leftmark\firstmark\@empty\@empty}
+\newcommand*{\leftbotmark}{\expandafter\@leftmark\botmark\@empty\@empty}
+\newcommand*{\lefttopmark}{\expandafter\@leftmark\topmark\@empty\@empty}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \lefttopmark
+% \end{macro}^^A \leftbotmark
+% \end{macro}^^A \leftfirstmark
+%
+% \begin{macro}{\headmark}
+% Inside a page style, this macro is either \Macro{rightmark} or
+% \Macro{leftmark}. Outside its \LaTeX-undefined and therefore it's not an
+% interface command, but has to be undefined:
+% \begin{macrocode}
+%<*package&body>
+\@ifundefined{headmark}{}{%
+ \PackageWarningNoLine{scrlayer}{%
+ \string\headmark\space detected!\MessageBreak
+ \string\headmark\space will either be set to
+ \string\rightmark\MessageBreak
+ or \string\leftmark inside of page styles.\MessageBreak
+ This means, that \string\headmark\space will be overwritten\MessageBreak
+ at every page layer usage!\MessageBreak
+ Nevertheless it will stay unchanged outside\MessageBreak
+ of page layers.\MessageBreak
+ I hope, this won't break your document%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \headmark
+%
+% \begin{macro}{\pagemark}
+% The page number together with its font setting. It's robust and will never
+% be part of the interface.
+% \begin{macrocode}
+%<*package&body>
+\@ifundefined{pagemark}{%
+ \DeclareRobustCommand\pagemark{{\pnumfont{\thepage}}}%
+}{}%
+% \end{macrocode}
+% \begin{macro}{\pnumfont}
+% \begin{macro}{\scr@fnt@pagenumber}
+% The low-level page number font command. It is deprecated to redefine or use
+% this and it may already be defined. These commands will not become part of
+% the interface!
+% \begin{macrocode}
+\@ifundefined{pnumfont}{%
+ \newcommand{\pnumfont}{\normalfont}%
+}{}
+\@ifundefined{scr@fnt@pagenumber}{%
+ \newcommand{\scr@fnt@pagenumber}{\pnumfont}%
+}{}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scr@fnt@pagenumber
+% \end{macro}^^A \pnumfont
+% \end{macro}^^A \pagemark
+%
+% \begin{macro}{\partmarkformat}
+% \begin{macro}{\chaptermarkformat}
+% \begin{macro}{\sectionmarkformat}
+% \begin{macro}{\GenericMarkFormat}
+% All the \Macro{\dots markformat} macros of \KOMAScript{} are also
+% supported by \Package{scrlayer} and it uses them actively. The generic
+% definition has been moved from \Macro{@seccntmarkformat} to
+% \Macro{GenericMarkFormat}. This is one more difference to
+% \Package{scrpage2}. The defaults are compatible to the standard
+% classes. These commands will not become part of the interface and other
+% interfaces should redefine them only, if they are not already defined.
+% \begin{macrocode}
+%<*package&body>
+\providecommand*{\partmarkformat}{\partname\ \thepart. \ }%
+\if@chapter
+ \providecommand*{\@chapapp}{\chaptername}%
+ \providecommand*{\chaptermarkformat}{\@chapapp\ \thechapter. \ }%
+ \providecommand*{\sectionmarkformat}{\thesection. \ }%
+\else
+ \providecommand*{\sectionmarkformat}{\GenericMarkFormat{section}}%
+\fi
+\scr@ifundefinedorrelax{@seccntmarkformat}{%
+ \providecommand*{\GenericMarkFormat}{\@seccntformat}%
+}{%
+ \providecommand*{\GenericMarkFormat}[1]{\@seccntmarkformat{#1}}%
+}
+%</package&body>
+% \end{macrocode}
+% Note, that the other \Macro{\dots markformat} will be defined by
+% \Macro{scrlayer@level@init}.
+% \end{macro}^^A \GenericMarkFormat
+% \end{macro}^^A \sectionmarkformat
+% \end{macro}^^A \chaptermarkformat
+% \end{macro}^^A \partmarkformat
+%
+% \begin{macro}{\@mkleft}
+% \changes{v3.25}{2017/10/13}{added to the \KOMAScript{} classes}
+% \begin{macro}{\@mkright}
+% \changes{v3.25}{2017/10/13}{added to the \KOMAScript{} classes}
+% \begin{macro}{\@mkdouble}
+% \changes{v3.25}{2017/10/13}{added to the \KOMAScript{} classes}
+% These are new in \Package{scrlayer}. They may be updated, whenever
+% \Macro{@mkboth} will be updated. Otherwise they get a working default
+% definition. These commands will not become part of the interface and other
+% interfaces should redefine them only, if they are not already defined.
+% \begin{macrocode}
+%<*(package|class)&body>
+\providecommand*{\@mkleft}{%
+ \IfActiveMkBoth{\markleft}{\@gobble}%
+}%
+\providecommand*{\@mkright}{%
+ \IfActiveMkBoth{\markright}{\@gobble}%
+}%
+\providecommand*{\@mkdouble}[1]{%
+ \@mkboth{#1}{#1}%
+}
+%</(package|class)&body>
+% \end{macrocode}
+% \end{macro}^^A \@mkdouble
+% \end{macro}^^A \@mkright
+% \end{macro}^^A \@mkleft
+%
+% \begin{macro}{\markleft}
+% \begin{macro}{\@markleft}
+% \LaTeX{} itself provides \Macro{markboth} and \Macro{markright} but not
+% \Macro{markleft}. So we add it.
+% \begin{macrocode}
+%<*package&body>
+\providecommand*{\markleft}[1]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markleft\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+\providecommand{\@markleft}[3]{%
+ \@temptokena {#2}%
+ \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@markleft
+% \end{macro}^^A \markleft
+%
+%
+% \begin{option}{autooneside}
+% \begin{macro}{\ifscrlayer@autooneside}
+% Decide whether or not use the optional argument of \Macro{automark} in
+% single-side layout.
+% \begin{macrocode}
+%<*options>
+%<*package>
+\KOMA@ifkey{autooneside}{scrlayer@autooneside}\scrlayer@autoonesidetrue
+\KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}
+%</package>
+%<*interface>
+\KOMA@key{autooneside}[true]{%
+ \KOMA@set@ifkey{autooneside}{scrlayer@autooneside}{#1}%
+ \KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}%
+}
+%</interface>
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @autooneside\endcsname\relax
+%</interface&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@autooneside
+% \end{option}^^A autooneside
+%
+%
+% \begin{option}{automark}
+% \begin{option}{manualmark}
+% Maybe we will extend these options later. Currently they do almost the
+% same they do at \Package{scrpage2}. The difference is, that single-side or
+% two-side doesn't matter here (but it does inside of the definitions of the
+% marks itself).
+%
+% ToDo: Maybe \Option{manualmark} should become deprecated and
+% \Option{automark} should have simple values or a new option, that also
+% handles \Option{autooneside}?
+% \changes{v3.22}{2016/12/07}{prepared for classes without \cs{section} or
+% \cs{subsection}}^^A
+% \begin{macrocode}
+%<*options>
+\KOMA@key{automark}[]{%
+ \scrlayer@testunexpectedarg{automark}{#1}%
+ \scrlayer@AtEndOfPackage{%
+ \if@chapter
+ \scr@ifundefinedorrelax{section}{%
+ \automark{chapter}%
+ }{%
+ \automark[section]{chapter}%
+ }%
+ \else
+ \scr@ifundefinedorrelax{section}{%
+ \automark{}%
+ }{%
+ \scr@ifundefinedorrelax{subsection}{%
+ \automark{section}%
+ }{%
+ \automark[subsection]{section}%
+ }
+ }%
+ \fi
+ }%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer.sty}{automark}%
+ \KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
+ \KOMA@kav@add{.scrlayer.sty}{automark}{}%
+}
+%</options>
+%<*interface&body>
+\expandafter\let\csname KV@KOMA.\@currname.\@currext @automark\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @automark@default\endcsname\relax
+%</interface&body>
+%<*options>
+\KOMA@key{manualmark}[]{%
+ \scrlayer@testunexpectedarg{manualmark}{#1}%
+ \scrlayer@AtEndOfPackage{\manualmark}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@removekey{.scrlayer.sty}{automark}%
+ \KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
+ \KOMA@kav@add{.scrlayer.sty}{manualmark}{}%
+}
+%</options>
+%<*interface&body>
+\expandafter\let\csname KV@KOMA.\@currname.\@currext @manualmark\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @manualmark@default\endcsname\relax
+%</interface&body>
+% \end{macrocode}
+% \end{option}^^A manualmark
+% \end{option}^^A automark
+%
+% \begin{macro}{\manualmark}
+% Switch to manual marks. This resets \Macro{@mkleft}, \Macro{@mkright},
+% \Macro{@mkdouble}, \Macro{@mkboth} and the \Macro{\dots mark} of all known
+% levels.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\manualmark}{%
+ \begingroup
+ \def\@elt##1{%
+ \aftergroup\let\expandafter\aftergroup\csname ##1mark\endcsname
+ \aftergroup\@gobble
+ }%
+ \scrlayer@level@list
+ \endgroup
+ \let\@mkleft\@gobble
+ \let\@mkright\@gobble
+ \let\@mkdouble\@gobble
+ \let\@mkboth\@gobbletwo
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\automark}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@automark}
+% This is the brain knot of the game! I'll try to explain, what I'm doing:
+% First of all the new starred version of \Macro{automark} doesn't reset the
+% mark commands. So it works cumulatively. This may be useful e.g. to have
+% chapter marks as long as no section marks have been made etc.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\automark}{%
+ \kernel@ifstar{\@automark}{\manualmark\@automark}%
+}
+\newcommand*{\@automark}[2][]{%
+ \ifstr{#2}{}{%
+ \ifstr{#1}{}{%
+% \end{macrocode}
+% \Macro{automark[]{}} or \Macro{automark{}} has been used. This will activate
+% the low level mark commands, but doesn't change the high level commands. It
+% may be useful or may not, the user should know what he does:
+% \begin{macrocode}
+ \automark@basics
+ }{%
+% \end{macrocode}
+% \Macro{automark[\dots]{}} has been used. This will activate the higher level
+% mark commands and also set up the right mark
+% \begin{macrocode}
+ \automark@basics
+ \automark@righthigh{#1}%
+ }%
+ }{%
+ \ifstr{#1}{}{%
+% \end{macrocode}
+% \Macro{automark[]{\dots}} or \Macro{automark{\dots}} has been used. This
+% will activate the low level mark commands and also set up either the left or
+% both marks.
+% \begin{macrocode}
+ \automark@basics
+ \automark@leftlow{#2}%
+ }{%
+% \end{macrocode}
+% \Macro{automark[\dots]{\dots}} has been used. This will activate the low
+% level mark commands and also both high level marks.
+% \begin{macrocode}
+ \automark@basics
+ \automark@both{#1}{#2}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\automark@basics}
+% Activate all low level \Macro{@mk\dots} commands:
+% \begin{macrocode}
+\newcommand*{\automark@basics}{%
+ \let\@mkleft\markleft
+ \let\@mkright\markright
+ \let\@mkboth\markboth
+ \def\@mkdouble##1{\@mkboth{##1}{##1}}%
+}
+% \end{macrocode}
+% \end{macro}^^A \automark@basics
+% \begin{macro}{\automark@righthigh}
+% Set up the right mark of a higher level, but in single-side layout only if
+% \Option{autooneside} hasn't been used. Note, that with this definition no
+% special handling for \KOMAScript's \Macro{addchap} and \Macro{addsec} is
+% needed.
+% \begin{macrocode}
+\newcommand*{\automark@righthigh}[1]{%
+ \ifscrlayer@level@prepared{#1}{%
+ \expandafter\def\csname #1mark\endcsname##1{%
+ \begingroup
+ \@tempswafalse
+ \if@twoside\@tempswatrue
+ \else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi
+ \expandafter\endgroup
+ \if@tempswa
+ \@mkright{%
+ \MakeMarkcase{%
+ \ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax
+ \else\if@mainmatter \csname #1markformat\endcsname\fi\fi
+ ##1%
+ }%
+ }%
+ \fi
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \automark@righthigh
+% \begin{macro}{\automark@leftlow}
+% Set up the left mark of a low level, but in single-side layout the right
+% mark has to be used.
+% \begin{macrocode}
+\newcommand*{\automark@leftlow}[1]{%
+ \ifscrlayer@level@prepared{#1}{%
+ \expandafter\def\csname #1mark\endcsname ##1{%
+ \if@twoside
+% \end{macrocode}
+% In two-side mode the left high mark has also to clear the right low
+% mark. This would be unwanted, if the left mark is a low mark and the right
+% mark is a high mark. But we cannot detect this if no right mark level has
+% been given. So we simply use:
+% \begin{macrocode}
+ \expandafter\@mkboth
+ \else
+% \end{macrocode}
+% In single-side mode there's no left high mark without a right low mark. So
+% instead of only a left high mark, we set up both marks.
+% \begin{macrocode}
+ \expandafter\@mkdouble
+ \fi
+ {%
+ \MakeMarkcase{%
+ \ifnum \c@secnumdepth<\numexpr \csname #1numdepth\endcsname +0\relax
+ \else\if@mainmatter \csname #1markformat\endcsname\fi\fi
+ ##1%
+ }%
+ }\@empty
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}^^A \automark@leftlow
+% \begin{macro}{\automark@both}
+% Set up both marks, but in single-side layout depending on
+% \Option{autooneside}.
+% \begin{macrocode}
+\newcommand*{\automark@both}[2]{%
+ \ifscrlayer@level@prepared{#1}{%
+ \ifscrlayer@level@prepared{#2}{%
+ \ifnum \numexpr \csname #1numdepth\endcsname +0\relax
+ > \numexpr \csname #2numdepth\endcsname +0\relax
+% \end{macrocode}
+% Level of left mark is greater than level of right mark. e.g., section >
+% chapter. This is unusual. Nevertheless we'll handle it.
+% \begin{macrocode}
+ \automark@leftlow{#2}%
+ \automark@righthigh{#1}%
+ \else \ifnum \numexpr \csname #1numdepth\endcsname +0\relax
+ = \numexpr \csname #2numdepth\endcsname +0\relax
+% \end{macrocode}
+% Level of left mark is equal to level of right mark. This is
+% nice and very easy to handle.
+% \begin{macrocode}
+ \expandafter\def\csname #2mark\endcsname##1{%
+ \@mkdouble{%
+ \MakeMarkcase{%
+ \ifnum \c@secnumdepth<\numexpr
+ \csname #2numdepth\endcsname +0\relax
+ \else
+ \if@mainmatter \csname #2markformat\endcsname\fi
+ \fi
+ ##1%
+ }%
+ }%
+ }%
+ \else
+% \end{macrocode}
+% Level of left mark is less than level of right mark. This is
+% usual.
+% \begin{macrocode}
+ \expandafter\def\csname #1mark\endcsname##1{%
+ \begingroup
+ \@tempswafalse
+ \if@twoside\@tempswatrue
+ \else\ifscrlayer@autooneside\else\@tempswatrue\fi\fi
+ \expandafter\endgroup
+ \if@tempswa
+ \@mkleft{%
+ \MakeMarkcase{%
+ \ifnum \c@secnumdepth
+ < \numexpr\csname #1numdepth\endcsname +0\relax
+ \else
+ \if@mainmatter \csname #1markformat\endcsname\fi
+ \fi
+ ##1%
+ }%
+ }%
+ \fi
+ }%
+ \expandafter\def\csname #2mark\endcsname##1{%
+ \@mkboth{}{%
+ \MakeMarkcase{%
+ \ifnum \c@secnumdepth
+ < \numexpr \csname #2numdepth\endcsname +0\relax
+ \else\if@mainmatter \csname #2markformat\endcsname\fi\fi
+ ##1%
+ }%
+ }%
+ }%
+ \fi
+ \fi
+ }{}%
+ }{}%
+}
+% \end{macrocode}
+% \begin{macro}{\ifscrlayer@level@prepared}
+% Test, whether or not this level has been prepared.
+% \begin{macrocode}
+\newcommand*{\ifscrlayer@level@prepared}[1]{%
+ \typeout{1: \detokenize{#1}}%
+ \scr@ifundefinedorrelax{#1numdepth}{%
+ \PackageError{scrlayer}{numbering depth of `#1' unknown}{%
+ Someone told me to use a section mark for level `#1',\MessageBreak
+ but the numbering depth hasn't been declared before. You may solve this
+ using\MessageBreak
+ \string\DeclareSectionNumberDepth{#1}{NUMBER}.%
+ }%
+ \@secondoftwo
+ }{%
+ \@firstoftwo
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@level@prepared
+% \end{macro}^^A \automark@both
+% \end{macro}^^A \@automark
+% \end{macro}^^A \automark
+%
+% \begin{macro}{\DeclareSectionNumberDepth}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the section level, e.g.,
+% part, chapter, section etc. (must be fully
+% expandable and expand to a string).
+% \item[\Parameter{numeric expression}:] the section number depth of the
+% level, e.g., -1 for part, 0 for chapter etc.
+% \end{description}
+% Note that levels part, chapter, section, subsection, sub\dots subsection,
+% paragraph, subparagraph, sub\dots subparagraph, minisec, subminisec,
+% sub\dots subminisec will be recognised either at load time or at
+% \Macro{begin}\PParameter{document} automatically if they have the usual
+% levels.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DeclareSectionNumberDepth}[2]{%
+ \expandafter\edef\csname #1numdepth\endcsname{\the\numexpr #2\relax}%
+ \@ifundefined{#1mark}{%
+ \expandafter\let\csname #1mark\endcsname\@gobble
+ }{}%
+ \@ifundefined{#1markformat}{%
+ \@namedef{#1markformat}{\GenericMarkFormat{#1}}%
+ }{}%
+ \begingroup
+ \@tempswatrue
+ \def\@elt##1{\ifstr{#1}{##1}{\@tempswafalse}{}}%
+ \scrlayer@level@list
+ \if@tempswa
+ \aftergroup\@firstofone
+ \else
+ \aftergroup\@gobble
+ \fi
+ \endgroup
+ {%
+ \l@addto@macro\scrlayer@level@list{\@elt{#1}}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@level@list}
+% \begin{macro}{\scrlayer@level@init}
+% Stores all the existing levels.
+% \begin{macrocode}
+\newcommand*{\scrlayer@level@list}{}
+% \end{macrocode}
+% Usually all levels are known on loading this package, but if a package
+% defines additional levels later we'll do an additional test at
+% \Macro{begin}\PParameter{document}. But we do not redo the part and the
+% chapter test.
+% \begin{macrocode}
+\scr@ifundefinedorrelax{part}{}{%
+ \DeclareSectionNumberDepth{part}{-1}%
+}
+\if@chapter
+ \DeclareSectionNumberDepth{chapter}{0}%
+\fi
+\newcommand*{\scrlayer@level@init}{%
+ \@tempcnta=1
+ \def\reserved@b##1{%
+ \@tempswatrue
+ \def\reserved@a{##1}%
+ \@whilesw \if@tempswa \fi {%
+ \scr@ifundefinedorrelax{\reserved@a}{%
+ \@tempswafalse
+ }{%
+ \@ifundefined{\reserved@a numdepth}{%
+ \expandafter\DeclareSectionNumberDepth
+ \expandafter{\reserved@a}{\@tempcnta}%
+ }{%
+ \expandafter\DeclareSectionNumberDepth
+ \expandafter{\reserved@a}{\csname \reserved@a numdepth\endcsname}%
+ }%
+ \advance \@tempcnta by \@ne
+ \edef\reserved@a{sub\reserved@a}%
+ }%
+ }%
+ }%
+ \reserved@b{section}%
+ \reserved@b{paragraph}%
+ \reserved@b{minisec}%
+}
+\scrlayer@level@init
+\AtBeginDocument{%
+ \scrlayer@level@init
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@level@init
+% \end{macro}^^A \scrlayer@level@list
+% \end{macro}^^A DeclareSectionNumberDepth
+%
+%
+% \subsection{Providing Layers}
+%
+% A layer is a virtual sheet of paper stacked behind or above the real sheet
+% of paper. All the virtual and real sheets of one page may been seen
+% simultanous, but material o one sheet may overlap material on sheets below.
+% Layers provided by \Package{scrlayer} will not be stacked below or above
+% real sheets unless they are used by a page style.
+%
+% While we use \meta{key}\texttt{=}\meta{value} arguments for several of the
+% layer commands we define a new family with a new member:
+% \begin{macrocode}
+%<*package&body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.definelayer]{KOMAarg}
+%</package&body>
+% \end{macrocode}
+%
+% \begin{macro}{\DeclareLayer}
+% \begin{description}
+% \item[\OParameter{option list}:] a comma separated list of
+% \texttt{\meta{key}=\meta{value}} pairs.
+% \item[\Parameter{string}:] the name of the layer (must be fully expandable
+% and expand to a string only).
+% \end{description}
+% Layers are the basic elements of page styles. A layer has a name and several
+% attributes. The attributes may be set as comma separated list at the first,
+% optional argument of \cs{DeclareLayer}. The name must be set by the second,
+% mandatory argument.
+% \begin{macro}{\def@scr@l@pos}
+% And a second helper macro to easily define $x, y, w, h$ of a layer.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\def@scr@l@pos}[4]{%
+ \@namedef{scr@l@\scr@current@layer @x}{#1}%
+ \@namedef{scr@l@\scr@current@layer @y}{#2}%
+ \@namedef{scr@l@\scr@current@layer @w}{#3}%
+ \@namedef{scr@l@\scr@current@layer @h}{#4}%
+}
+% \end{macrocode}
+% \end{macro}^^A \def@scr@l@pos
+%
+% There are basic, primitive attributes and compounding attributes. The basic
+% attributes are:
+% \begin{description}
+% \item[\texttt{mode=\meta{command sequence}}:] the mode that should be used
+% to output the \texttt{contents}. A command \cs{layer\meta{command
+% sequence}mode} with one argument need to be defined.
+% \changes{v3.19}{2015/07/30}{new layer attribute \texttt{mode}}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{mode}{%
+ \scr@ifundefinedorrelax{layer#1mode}{\FamilyKeyStateUnknownValue}{%
+ \@namedef{scr@l@\scr@current@layer @mode}{#1}%
+ \FamilyKeyStateProcessed
+ }%
+}
+% \end{macrocode}
+% \item[\texttt{hoffset=\meta{dimension expression}}:] offset from the left
+% edge of the paper.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{hoffset}{%
+ \@namedef{scr@l@\scr@current@layer @x}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{voffset=\meta{dimension expression}}:] offset from the top
+% edge of the paper.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{voffset}{%
+ \@namedef{scr@l@\scr@current@layer @y}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{width=\meta{dimension expression}}:] width of the layer.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{width}{%
+ \@namedef{scr@l@\scr@current@layer @w}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{height=\meta{dimension expression}}:] height of the layer.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{height}{%
+ \@namedef{scr@l@\scr@current@layer @h}{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{align=\meta{specification}}:] horizontal and vertical
+% alignment of the layer. The \meta{specification} will interpreted
+% character by character with the following valid characters:
+% \begin{itemize}
+% \item[l] -- align the layer with its left edge to the given horizontal
+% offset. This means, that the layer's width will span right from the
+% given horizontal offset.
+% \item[r] -- align the layer with its right edge to the given horizontal
+% offset. This means, that the layer's width will span left from the given
+% horizontal offset.
+% \item[c] -- align the layer centered to the given horizontal and vertical
+% offset. This means, that the given offsets are at the middle of the
+% layer width and total height.
+% \item[t] -- align the layer with its top edge to the given vertical
+% offset. This means that the layer's contents will span below the given
+% vertical offset.
+% \item[b] -- align the layer with its bottom edge to the given vertical
+% offset. This means, that the layer's contents will span above the given
+% vertical offset.
+% \end{itemize}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{align}{%
+ \@namedef{scr@l@\scr@current@layer @align}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{contents=\meta{output}}:] whatever should be printed by the
+% layer.
+% \changes{v3.14}{2014/10/20}{\texttt{contents} is \cs{long}}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{contents}{%
+ \long\@namedef{scr@l@\scr@current@layer @contents}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \item[\texttt{background}:] restrict the layer to the page
+% background. This means, that the main contents of the page may overprint
+% the contents of the layer. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{background}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{background}{#1}%
+ \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
+ \csname @scr@l@\scr@current@layer @foregroundfalse\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{foreground}:] restrict the layer to the page
+% foreground. This means, that the layer's contents may overprint the main
+% contents of the page. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{foreground}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{foreground}{#1}%
+ \csname @scr@l@\scr@current@layer @backgroundfalse\endcsname
+ \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{backandforeground}:] not really useful, but the counterpart of
+% the restrictions above.
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{backandforeground}}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{backandforeground}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{backandforeground}{#1}%
+ \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
+ \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{oddpage}:] restrict the layer to odd pages only. At
+% two-sided layout only pages with odd page numbers are odd pages. At
+% single-sided layout all pages are odd pages. Note, that this attribute has
+% no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{oddpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{oddpage}{#1}%
+ \csname @scr@l@\scr@current@layer @oddtrue\endcsname
+ \csname @scr@l@\scr@current@layer @evenfalse\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{evenpage}:] restrict the layer to even pages only. At
+% two-sided layout only pages with even page numbers are even pages. At
+% single-sided layout there aren't even pages. Note, that this attribute has
+% no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{evenpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{evenpage}{#1}%
+ \csname @scr@l@\scr@current@layer @oddfalse\endcsname
+ \csname @scr@l@\scr@current@layer @eventrue\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{oddorevenpage}:] do not restrict the layer to odd or even
+% pages.
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{oddorevenpage}}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{oddorevenpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{oddorevenpage}{#1}%
+ \csname @scr@l@\scr@current@layer @oddtrue\endcsname
+ \csname @scr@l@\scr@current@layer @eventrue\endcsname
+}
+% \end{macrocode}
+% \item[\texttt{evenoroddpage}:] same as \texttt{oddorevenpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{evenoroddpage}[\relax]{%
+ \PackageWarning{scrlayer}{Option `evenoroddpage' unknown.\MessageBreak
+ Using `oddorevenpage' instead}%
+ \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
+}
+% \end{macrocode}
+% \item[\texttt{oddandevenpages}:] same as \texttt{oddorevenpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{oddandevenpages}[\relax]{%
+ \PackageWarning{scrlayer}{Option `oddandevenpages' unknown.\MessageBreak
+ Using `oddorevenpage' instead}%
+ \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
+}
+% \end{macrocode}
+% \item[\texttt{evenandoddpages}:] same as \texttt{oddorevenpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{evenandoddpages}[\relax]{%
+ \PackageWarning{scrlayer}{Option `evenandoddpages' unknown.\MessageBreak
+ Using `oddorevenpage' instead}%
+ \ExecuteFamilyOptions[.definelayer]{KOMAarg}{oddorevenpage=#1}
+}
+% \end{macrocode}
+% \item[\Option{floatpage}:] restrict the layer to float pages.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{floatpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{floatpage}{#1}%
+ \csname @scr@l@\scr@current@layer @nonfloatpagefalse\endcsname
+ \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
+}
+% \end{macrocode}
+% \item[\Option{nonfloatpage}:] restrict the layer to pages, which aren't
+% float pages.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{nonfloatpage}{#1}%
+ \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
+ \csname @scr@l@\scr@current@layer @floatpagefalse\endcsname
+}
+% \end{macrocode}
+% \item[\Option{floatornonfloatpage}:] don't restrict the layer to float or
+% non-float pages.
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{floatornonfloatpage}}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{floatornonfloatpage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{floatornonfloatpage}{#1}%
+ \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
+ \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
+}
+% \end{macrocode}
+% \item[\Option{nonfloatorfloatpage}:] same as \Option{floatornonfloatpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatorfloatpage}[\relax]{%
+ \PackageWarning{scrlayer}{Option `nonfloatorfloatpage' unknown.\MessageBreak
+ Using `floatornonfloatpage' instead}%
+ \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
+}
+% \end{macrocode}
+% \item[\Option{floatandnonfloatpages}:] same as \Option{floatornonfloatpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{floatandnonfloatpages}[\relax]{%
+ \PackageWarning{scrlayer}{Option `floatandnonfloatpages' unknown.\MessageBreak
+ Using `floatornonfloatpage' instead}%
+ \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
+}
+% \end{macrocode}
+% \item[\Option{nonfloatandfloatpages}:] same as \Option{floatornonfloatpage}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{nonfloatandfloatpages}[\relax]{%
+ \PackageWarning{scrlayer}{Option `nonfloatandfloatpages' unknown.\MessageBreak
+ Using `floatornonfloatpage' instead}%
+ \FamilyExecuteOptions[.definelayer]{KOMAarg}{floatornonfloatpage=#1}%
+}
+% \end{macrocode}
+% \item[\Option{everypage}:] remove all odd-, even-, float-, and
+% nonfloat-restrictions.
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{everypage}}^^A
+% \changes{v3.22}{2016/09/24}{foreground and background condition
+% removed}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{everypage}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{everypage}{#1}%
+ \csname @scr@l@\scr@current@layer @oddtrue\endcsname
+ \csname @scr@l@\scr@current@layer @eventrue\endcsname
+ \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
+ \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
+}
+% \end{macrocode}
+% \item[\Option{oneside}:] restrict the layer to pages on single-sided
+% layouts.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{oneside}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{oneside}{#1}%
+ \csname @scr@l@\scr@current@layer @twosidefalse\endcsname
+ \csname @scr@l@\scr@current@layer @onesidetrue\endcsname
+}
+% \end{macrocode}
+% \item[\Option{twoside}:] restrict the layer to pages on two-sided
+% layouts.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{twoside}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{twoside}{#1}%
+ \csname @scr@l@\scr@current@layer @twosidetrue\endcsname
+ \csname @scr@l@\scr@current@layer @onesidefalse\endcsname
+}
+% \end{macrocode}
+% \item[\Option{everyside}:] remove all one- or two-side restrictions.
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{everyside}}
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{everyside}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{everyside}{#1}%
+ \csname @scr@l@\scr@current@layer @twosidetrue\endcsname
+ \csname @scr@l@\scr@current@layer @onesidetrue\endcsname
+}
+% \end{macrocode}
+% \item[\Option{unrestricted}:] remove all restrictions
+% \changes{v3.18}{2015/05/14}{new layer feature \texttt{unrestricted}}^^A
+% \changes{v3.22}{2016/09/24}{missing background and foreground
+% condition}^^A
+% \changes{v3.22}{2016/09/24}{nonfloatpage condition fixed}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{unrestricted}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{unrestricted}{#1}%
+ \csname @scr@l@\scr@current@layer @oddtrue\endcsname
+ \csname @scr@l@\scr@current@layer @eventrue\endcsname
+ \csname @scr@l@\scr@current@layer @backgroundtrue\endcsname
+ \csname @scr@l@\scr@current@layer @foregroundtrue\endcsname
+ \csname @scr@l@\scr@current@layer @nonfloatpagetrue\endcsname
+ \csname @scr@l@\scr@current@layer @floatpagetrue\endcsname
+ \csname @scr@l@\scr@current@layer @twosidetrue\endcsname
+ \csname @scr@l@\scr@current@layer @onesidetrue\endcsname
+}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{beforecontents}}^^A
+% \item[\Option{beforecontents}:] code to be executed immediately before
+% setting the contents. See also modification attribute
+% \texttt{addbeforecontents}.
+% \begin{macrocode}
+\FamilyCSKey[.definelayer]{KOMAarg}{beforecontents}
+ {scr@l@\scr@current@layer @precontents@hook}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{aftercontents}}^^A
+% \item[\Option{aftercontents}:] code to be executed immediately before
+% setting the contents. See also modification attribute
+% \texttt{addaftercontents}.
+% \begin{macrocode}
+\FamilyCSKey[.definelayer]{KOMAarg}{aftercontents}
+ {scr@l@\scr@current@layer @postcontents@hook}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{artifact}}^^A
+% \item[\Option{artifact}:] reserved for tagging packages. The artifact can
+% either be a boolean or a general value. Boolean false will unset the
+% attribute. Boolean true is the same like empty. All other values will be
+% stored.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{artifact}[true]{%
+ \FamilySetBool{KOMAarg}{artifact}{@tempswa}{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \if@tempswa
+ \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname
+ \@empty
+ \else
+ \expandafter\let\csname scr@l@\scr@current@layer @artifact\endcsname
+ \relax
+ \fi
+ \else
+ \FamilyKeyStateProcessed
+ \@namedef{scr@l@\scr@current@layer @artifact}{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{description}
+%
+% Attribute modifications are attributes, that modify existing basic
+% attributes:
+% \begin{description}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{addhoffset}}^^A
+% \item[\texttt{addhoffset=\meta{dimension expression}}:] add to offset from
+% the left edge of the paper.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addhoffset}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @x\endcsname{%
+ \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @x\endcsname + (#1)\relax}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{addvoffset}}^^A
+% \item[\texttt{addvoffset=\meta{dimension expression}}:] add to offset from
+% the top edge of the paper.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addvoffset}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @y\endcsname{%
+ \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @y\endcsname + (#1)\relax}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{addwidth}}^^A
+% \item[\texttt{addwidth=\meta{dimension expression}}:] add to width of the
+% layer.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addwidth}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @w\endcsname{%
+ \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @w\endcsname + (#1)\relax}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{addheight}}^^A
+% \item[\texttt{addheight=\meta{dimension expression}}:] add to height of the
+% layer.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addheight}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @h\endcsname{%
+ \noexpand\dimexpr \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @h\endcsname + (#1)\relax}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{addcontents}}^^A
+% \item[\texttt{addcontents=\meta{output}}:] append to whatever should be
+% printed by the layer.
+% \changes{v3.14}{2014/10/20}{\texttt{contents} is \cs{long}}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addcontents}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @contents\endcsname #1}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.16}{2015/01/26}{new layer attribute \texttt{pretocontents}}^^A
+% \item[\texttt{pretocontents=\meta{output}}:] prefix whatever should be
+% printed by the layer.
+% \changes{v3.14}{2014/10/20}{\texttt{contents} is \cs{long}}^^A
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{pretocontents}{%
+ \expandafter\edef\csname scr@l@\scr@current@layer @contents\endcsname{%
+ \unexpanded{#1}\unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @contents\endcsname}}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{addbeforecontents}}^^A
+% \item[\Option{addbeforecontents}:] code to be executed immediately before
+% setting the contents. The new code will be added before the old code.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addbeforecontents}{%
+ \scr@ifundefinedorrelax{scr@l@\scr@current@layer @precontents@hook}{%
+ \expandafter\def
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname{#1}%
+ }{%
+ \expandafter\edef
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname{%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @precontents@hook\endcsname}%
+ \unexpanded{#1}
+ }%
+ }%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{new attribute \texttt{addaftercontents}}^^A
+% \item[\Option{addaftercontents}:] code to be executed immediately before
+% setting the contents. The new code will be added after the old code.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{addaftercontents}{%
+ \scr@ifundefinedorrelax{scr@l@\scr@current@layer @postcontents@hook}{%
+ \expandafter\def
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{#1}%
+ }{%
+ \expandafter\edef
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname{%
+ \unexpanded{#1}%
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname scr@l@\scr@current@layer @postcontents@hook\endcsname}%
+ }%
+ }%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{description}
+%
+% Compounding attributes are attributes, that set up several basic attributes
+% with a single compounding attribute:
+% \begin{description}
+% \item[\texttt{page}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values spanning the whole
+% page aligned by the default alignment \texttt{tl}. Note, that this
+% attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{page}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{page}{#1}%
+ \def@scr@l@pos{\z@}{\z@}{\paperwidth}{\paperheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{topmargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the top
+% margin of the page and horizontally spanning the whole page aligned by the
+% default alignment \texttt{tl}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{topmargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{topmargin}{#1}%
+ \def@scr@l@pos{\z@}{\z@}{\paperwidth}{\dimexpr \topmargin+1in\relax}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{head}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% head and horizontally spanning the text area aligned by usual head
+% alignment \texttt{bl}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{head}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{head}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{%
+ \dimexpr \topmargin+1in+\headheight\relax
+ }{\textwidth}{\headheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{bl}%
+}
+% \end{macrocode}
+% \item[\texttt{headsep}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the area
+% between page head and text area and horizontally spanning the text area
+% aligned by the default alignment \texttt{t}. Note, that this attribute
+% has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{headsep}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{head}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{%
+ \dimexpr \topmargin+1in+\headheight\relax
+ }{\textwidth}{\headsep}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{textarea}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values spanning the text area of
+% the page aligned by the default alignment \texttt{t}. Note, that this
+% attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{textarea}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{textarea}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{%
+ \dimexpr \topmargin+1in+\headheight+\headsep\relax
+ }{\textwidth}{\textheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{foot}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% footer and horizontally spanning the text area aligned by the usual footer
+% alignment \texttt{t}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{foot}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{foot}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{%
+ \dimexpr \topmargin+1in+\headheight+\headsep+\textheight
+ +\footskip+\dp\strutbox-\footheight\relax
+ }{\textwidth}{\footheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{footskip}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the
+% distance from the text area to the page
+% footer and horizontally spanning the text area aligned by the usual footer
+% alignment \texttt{t}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{footskip}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{foot}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{%
+ \dimexpr \topmargin+1in+\headheight+\headsep+\textheight\relax
+ }{\textwidth}{\dimexpr\footskip+\dp\strutbox-\footheight\relax}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{bottommargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the
+% page's bottom margin below the footer and horizontally spanning the page
+% by the default alignment \texttt{t}. Note, that this attribute has no
+% value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{bottommargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{bottommargin}{#1}%
+ \def@scr@l@pos{\z@}{%
+ \dimexpr \topmargin+1in+\headheight+\headsep
+ +\textheight
+ +\footskip+\dp\strutbox\relax
+ }{\paperwidth}{\dimexpr\paperheight-\layeryoffset\relax}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{leftmargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% and horizontally spanning the left margin of the page by the default
+% alignment \texttt{t}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{leftmargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{leftmargin}{#1}%
+ \def@scr@l@pos{\z@}{\z@}{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi
+ +1in
+ \relax
+ }{\paperheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{rightmargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% and horizontally spanning the right margin of the page by the default
+% alignment \texttt{t}. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{rightmargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{rightmargin}{#1}%
+ \def@scr@l@pos{\paperwidth}{\z@}{%
+ \dimexpr \paperwidth-1in-\textwidth
+ -\if@twoside\ifodd\value{page}\oddsidemargin\else\evensidemargin\fi
+ \else\oddsidemargin\fi\relax
+ }{\paperheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tr}%
+}
+% \end{macrocode}
+% \item[\texttt{innermargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% and horizontally spanning the right margin of even pages and the left
+% margin of odd pages by the default alignment \texttt{t}. See attributes
+% \texttt{oddpage} and \texttt{evenpage} for more information about odd and
+% even pages. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{innermargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{innermargin}{#1}%
+ \def@scr@l@pos{%
+ \if@twoside
+ \ifodd\value{page} \z@
+ \else \dimexpr \evensidemargin+1in+\textwidth\relax
+ \fi
+ \else \z@\fi
+ }{\z@}{%
+ \dimexpr
+ \if@twoside\ifodd\value{page} \oddsidemargin+1in
+ \else \paperwidth-\layerxoffset\fi
+ \else \oddsidemargin+1in\fi
+ \relax
+ }{\paperheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{outermargin}:] set up \texttt{hoffset}, \texttt{voffset},
+% \texttt{width}, and \texttt{height} to values vertically spanning the page
+% and horizontally spanning the left margin of even pages and the right
+% margin of odd pages by the default alignment \texttt{t}. See attributes
+% \texttt{oddpage} and \texttt{evenpage} for more information about odd and
+% even pages. Note, that this attribute has no value!
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{outermargin}[\relax]{%
+ \FamilyKeyStateProcessed
+ \scrlayer@testunexpectedarg{outermargin}{#1}%
+ \def@scr@l@pos{%
+ \dimexpr
+ \if@twoside\ifodd\value{page} \oddsidemargin+1in+\textwidth
+ \else \z@\fi
+ \else \oddsidemargin+1in+\textwidth\fi
+ \relax
+ }{\z@}{%
+ \dimexpr
+ \if@twoside\ifodd\value{page}\paperwidth-\layerxoffset
+ \else \evensidemargin+1in\fi
+ \else \paperwidth-\layerxoffset\fi
+ \relax
+ }{\paperheight}%
+ \@namedef{scr@l@\scr@current@layer @align}{tl}%
+}
+% \end{macrocode}
+% \item[\texttt{area=\{\meta{hoffset}\}\{\meta{voffset}\}^^A
+% \{\meta{width}\}\{\meta{height}\}}:] set up
+% \texttt{hoffset}, \texttt{voffset}, \texttt{width}, and \texttt{height} to
+% the given values.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{area}{%
+ \def@scr@l@pos#1
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \changes{v3.26}{2018/07/14}{clone code for \texttt{precontents@hook},
+% \texttt{postcontents@hook} and \texttt{artifact} added}^^A
+% \item[\texttt{clone=\meta{layer}}:] set up the new layer by the settings
+% of the given \meta{layer}.
+% \begin{macrocode}
+\DefineFamilyKey[.definelayer]{KOMAarg}{clone}{%
+ \scr@ifundefinedorrelax{scr@l@#1@x}{%
+ \FamilyKeyStateUnknownValue
+ \PackageError{scrlayer}{layer `#1' undefined}{%
+ You can clone only already defined layers.\MessageBreak
+ If you'll continue, `clone=#1' will be ignored.%
+ }%
+ }{%
+ \FamilyKeyStateProcessed
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{mode}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{x}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{y}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{w}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{h}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{align}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{contents}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{background}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{foreground}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{odd}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{even}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{oneside}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{twoside}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{floatpage}%
+ \scrlayer@clone@switch{\scr@current@layer}{#1}{nonfloatpage}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{precontents@hook}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{postcontents@hook}%
+ \scrlayer@clone@attribute{\scr@current@layer}{#1}{artifact}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@clone@attribute}
+% \begin{macro}{\scrlayer@clone@switch}
+% Two helpers used at option \texttt{clone} to clone either a macro-based
+% attribute or a if-based attribute.
+% \begin{macrocode}
+\newcommand*{\scrlayer@clone@attribute}[3]{%
+ \expandafter\let\csname scr@l@#1@#3\expandafter\endcsname
+ \csname scr@l@#2@#3\expandafter\endcsname
+}
+\newcommand*{\scrlayer@clone@switch}[3]{%
+ \expandafter\let\csname if@scr@l@#1@#3\expandafter\endcsname
+ \csname if@scr@l@#2@#3\expandafter\endcsname
+}
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@clone@switch
+% \end{macro}^^A \scrlayer@clone@attribute
+% \end{description}
+%
+% \changes{v0.9}{2014/08/31}{missing reset of \cs{scr@current@layer}
+% added}%^^A
+% \changes{v3.14}{2014/10/20}{\cs{long}}^^A
+% \begin{macrocode}
+\newcommand{\DeclareLayer}[2][]{%
+ \def\scr@current@layer{#2}%
+ \@namedef{scr@l@#2@mode}{text}%
+ \@namedef{scr@l@#2@x}{\z@}%
+ \@namedef{scr@l@#2@y}{\z@}%
+ \@namedef{scr@l@#2@w}{\paperwidth}%
+ \@namedef{scr@l@#2@h}{\paperheight}%
+ \@namedef{scr@l@#2@align}{tl}%
+ \@namedef{scr@l@#2@contents}{}%
+ \expandafter\newif\csname if@scr@l@#2@background\endcsname
+ \csname @scr@l@#2@backgroundtrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@foreground\endcsname
+ \csname @scr@l@#2@foregroundtrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@odd\endcsname
+ \csname @scr@l@#2@oddtrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@even\endcsname
+ \csname @scr@l@#2@eventrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@oneside\endcsname
+ \csname @scr@l@#2@onesidetrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@twoside\endcsname
+ \csname @scr@l@#2@twosidetrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@floatpage\endcsname
+ \csname @scr@l@#2@floatpagetrue\endcsname
+ \expandafter\newif\csname if@scr@l@#2@nonfloatpage\endcsname
+ \csname @scr@l@#2@nonfloatpagetrue\endcsname
+ \FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}%
+ \let\scr@current@layer\@empty
+}
+% \end{macrocode}
+% \begin{macro}{\scr@current@layer}
+% Helper to hold the current layer and only valid in non recursive calls of
+% \Macro{DeclareLayer}.
+% \begin{macrocode}
+\newcommand*{\scr@current@layer}{}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scr@current@layer
+% \end{macro}^^A \DeclareLayer
+%
+% \begin{macro}{\IfLayerExists}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the layer (must be fully expandable
+% and expand to a string only).
+% \item[\Parameter{then code}:] will be executed, if the layer exists.
+% \item[\Parameter{else code}:] will be executed, if the layer doesn't exist.
+% \end{description}
+% Note, that we don't known really whether or not a layer exists, but have a
+% heuristic.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\IfLayerExists}[1]{%
+ \scr@ifundefinedorrelax{scr@l@#1@mode}{%
+ \expandafter\@secondoftwo
+ }{%
+ \expandafter\@firstoftwo
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}%^^A \IfLayerExists
+%
+% \begin{macro}{\DeclareNewLayer}
+% \changes{v3.14}{2014/10/20}{\cs{long}}^^A
+% \begin{macro}{\ProvideLayer}
+% \changes{v3.14}{2014/10/20}{\cs{long}}^^A
+% \begin{macro}{\RedeclareLayer}
+% \changes{v3.14}{2014/10/20}{\cs{long}}^^A
+% \begin{macro}{\ModifyLayer}
+% \changes{v3.14}{2014/10/20}{\cs{long}}^^A
+% \changes{v0.9}{2014/08/31}{missing definition and reset of
+% \cs{scr@current@layer} added}%^^A
+% There are also two commands for declaration of layers, that haven't been
+% declared before, with or without error message for already declared layers,
+% and two commands for changing already declared layers, first one beginning
+% again from scratch, second one for only setting up attributes, that should
+% be changed.
+% \begin{macrocode}
+%<*package&body>
+\newcommand{\DeclareNewLayer}[2][]{%
+ \IfLayerExists{#2}{%
+ \PackageError{scrlayer}{layer `#2' already defined}{%
+ You may declare only layer, that haven't been declared previously
+ using\MessageBreak
+ \string\DeclareNewLayer. See also the alternatives
+ \string\RedeclareLayer,\MessageBreak
+ \string\ModifyLayer\space and \string\ProvideLayer.\MessageBreak
+ If you'll continue, declaration will be ignored.}%
+ }{\DeclareLayer[{#1}]{#2}}%
+}
+\newcommand{\ProvideLayer}[2][]{%
+ \IfLayerExists{#2}{%
+%<*trace>
+ \PackageInfo{scrlayer}{\string\ProvideLayer{#2} ignored,\MessageBreak
+ because of already defined layer}%
+%</trace>
+ }{\DeclareNewLayer[{#1}]{#2}}%
+}
+\newcommand{\RedeclareLayer}[2][]{%
+ \IfLayerExists{#2}{}{%
+ \PackageError{scrlayer}{layer `#2' not yet defined}{%
+ You may declare only already declared layers using
+ \string\RedeclareLayer.\MessageBreak
+ See also the alternatives
+ \string\DeclareLayer and \string\ProvideLayer.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.}%
+ }%
+ \DeclareLayer[{#1}]{#2}%
+}
+\newcommand{\ModifyLayer}[2][]{%
+ \IfLayerExists{#2}{%
+ \def\scr@current@layer{#2}%
+ \edef\reserved@a{%
+ \unexpanded{%
+ \FamilyExecuteOptions[.definelayer]{KOMAarg}{#1}%
+ \ifstr{\csname scr@l@#2@mode\endcsname}%
+ }{\csname scr@l@#2@mode\endcsname}%
+ }\reserved@a{}{%
+ \PackageWarning{scrlayer}{%
+ change of layer mode could result in unexpected\MessageBreak
+ output and errors%
+ }%
+ }%
+ \let\scr@current@layer\@empty
+ }{%
+ \PackageError{scrlayer}{layer `#2' not yet defined}{%
+ You may modify only already declared layers using
+ \string\ModifyLayer.\MessageBreak
+ See also the alternatives
+ \string\DeclareLayer and \string\ProvideLayer.\MessageBreak
+ Nevertheless, if you'll continue, declaration will be done.}%
+ \DeclareLayer[{#1}]{#2}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \ModifyLayer
+% \end{macro}^^A \RedeclareLayer
+% \end{macro}^^A \ProvideLayer
+% \end{macro}^^A \DeclareNewLayer
+%
+% \begin{macro}{\ModifyLayers}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% Like \cs{ModifyLayer} but allows a list of layers instead of only one layer.
+% For the commands \cs{DeclareLayer}, \cs{ProvideLayer} and
+% \cs{RedeclareLayer} this does not make any sense, so there are not similar
+% list commands for these commands.
+% \begin{macrocode}
+%<*package&body>
+\newcommand{\ModifyLayers}[2][]{%
+ \edef\scr@current@layer{#2}%
+ \@for\scr@current@layer:=\scr@current@layer\do{%
+ \scr@trim@spaces\scr@current@layer
+ \ifx\scr@current@layer\@emtpy\else
+ \edef\scr@current@layer{%
+ \unexpanded{\ModifyLayer[{#1}]}{\scr@current@layer}%
+ }%
+ \scr@current@layer
+ \fi
+ }%
+ \let\scr@current@layer\@empty
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \ModifyLayers
+%
+% \begin{macro}{\GetLayerContents}
+% \changes{v3.16}{2015/01/26}{new}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the layer
+% \end{description}
+% Get the contents of the given layer.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\GetLayerContents}[1]{%
+ \IfLayerExists{#1}{\@nameuse{scr@l@#1@contents}}{%
+ \PackageError{scrlayer}{unknown layer `#1'}{%
+ You can ask only for the contents of an existing layer.}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\DestroyLayer}
+% \changes{v3.26}{2018/07/14}{destroy pre-contents hook, post-contents hook
+% and artifact}^^A
+% \begin{description}
+% \item[\Parameter{string}:] the name of the layer, that should be
+% destroyed
+% \end{description}
+% Note: Nothing will be done to remove the layer from a page style, but this
+% shouldn't matter, because layers with, e.g.,
+% \Macro{if@scr@l@\dots@nonfloatpage}=\Macro{relax} and
+% \Macro{if@scr@l@\dots@floatpage}=\Macro{relax} won't be output ever. This
+% command may and should be used by interfaces via
+% \Macro{scrlayerOnAutoRemoveInterface} to remove the generated
+% layers. Therefore it only destroys existing layers and doesn't care for not
+% existing.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DestroyLayer}[1]{%
+ \IfLayerExists{#1}{%
+ \expandafter\let\csname scr@l@#1@mode\endcsname\relax
+ \expandafter\let\csname scr@l@#1@x\endcsname\relax
+ \expandafter\let\csname scr@l@#1@y\endcsname\relax
+ \expandafter\let\csname scr@l@#1@w\endcsname\relax
+ \expandafter\let\csname scr@l@#1@h\endcsname\relax
+ \expandafter\let\csname scr@l@#1@align\endcsname\relax
+ \expandafter\let\csname scr@l@#1@contents\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@background\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@backgroundfalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@backgroundtrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@foreground\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@foregroundfalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@foregroundtrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@odd\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@oddfalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@oddtrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@even\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@evenfalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@eventrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@oneside\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@onesidefalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@onesidetrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@twoside\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@twosidefalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@twosidetrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@floatpage\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@floatpagefalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@floatpagetrue\endcsname\relax
+ \expandafter\let\csname if@scr@l@#1@nonfloatpage\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@nonfloatpagefalse\endcsname\relax
+ \expandafter\let\csname @scr@l@#1@nonfloatpagetrue\endcsname\relax
+ \expandafter\let\csname scr@l@#1@precontents@hook\relax
+ \expandafter\let\csname scr@l@#1@postcontents@hook\relax
+ \expandafter\let\csname scr@l@#1@artifact\relax
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer}{\string\DestroyLayer{#1} ignored,\MessageBreak
+ because that layer doesn't exist\MessageBreak
+ (any longer)%
+ }%
+%</trace>
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \DestroyLayer
+%
+%
+% \begin{macro}{\layercontentsmeasure}
+% \changes{v3.19}{2015/07/27}{\cs{@gobble} eliminated}^^A
+% This may used by used as the only value of the layer option
+% \texttt{contents} to show measure lines around the layer. The left and the
+% top measure line will be in centimeter, the right and the bottom measure
+% line in inch. With option \texttt{draft=true} this also be used
+% automatically and additionally for every layer of a page style.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\layercontentsmeasure}{%
+ \smash{\begin{picture}(0,0)
+ (0,\LenToUnit{%
+ \if t\layervalign -\ht\strutbox
+ \else
+ \if b\layervalign -\dimexpr\layerheight-\dp\strutbox\relax
+ \else -.5\dimexpr\layerheight+\ht\strutbox-\dp\strutbox\relax
+ \fi
+ \fi})
+% \end{macrocode}
+% 1st horizontal cm
+% \begin{macrocode}
+ \setlength{\unitlength}{1mm}%
+ \put(0,0){\line(1,0){\LenToUnit{\layerwidth}}}%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + .5mm\relax/\dimexpr 1mm\relax\relax
+ \multiput(0,0)(1,0){\@tempcnta}{%
+ \line(0,-1){1}%
+ }%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + 2.5mm\relax/\dimexpr 5mm\relax\relax
+ \multiput(0,0)(5,0){\@tempcnta}{%
+ \line(0,-1){2}%
+ }%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + .5cm\relax/\dimexpr 1cm\relax\relax
+ \multiput(0,0)(10,0){\@tempcnta}{%
+ \put(0,0){\line(0,-1){3}}%
+ \put(0,-3.5){%
+ \makebox(0,0)[ct]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
+ }%
+% \end{macrocode}
+% 2nd horizontal in:
+% \begin{macrocode}
+ \put(0,\LenToUnit{-\layerheight}){\line(1,0){\LenToUnit{\layerwidth}}}%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + .05in\relax/\dimexpr .1in\relax\relax
+ \multiput(0,\LenToUnit{-\layerheight})(2.54,0){\@tempcnta}{%
+ \line(0,1){1}%
+ }%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + .25in\relax/\dimexpr .5in\relax\relax
+ \multiput(0,\LenToUnit{-\layerheight})(12.7,0){\@tempcnta}{%
+ \line(0,1){2}%
+ }%
+ \@tempcnta=\numexpr \dimexpr\layerwidth + .5in\relax/\dimexpr 1in\relax\relax
+ \multiput(0,\LenToUnit{-\layerheight})(25.4,0){\@tempcnta}{%
+ \put(0,0){\line(0,1){3}}%
+ \put(0,3.5){%
+ \makebox(0,0)[cb]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
+ }%
+% \end{macrocode}
+% 3rd vertical cm:
+% \begin{macrocode}
+ \put(0,0){\line(0,-1){\LenToUnit{\layerheight}}}%
+ \@tempcnta\numexpr \dimexpr\layerheight + .5mm\relax/\dimexpr 1mm\relax\relax
+ \multiput(0,0)(0,-1){\@tempcnta}{%
+ \line(1,0){1}%
+ }%
+ \@tempcnta\numexpr \dimexpr\layerheight + 2.5mm\relax/\dimexpr 5mm\relax\relax
+ \multiput(0,0)(0,-5){\@tempcnta}{%
+ \line(1,0){2}%
+ }%
+ \@tempcnta\numexpr \dimexpr\layerheight + .5cm\relax/\dimexpr 1cm\relax\relax
+ \multiput(0,0)(0,-10){\@tempcnta}{%
+ \put(0,0){\line(1,0){3}}%
+ \put(3.5,0){%
+ \makebox(0,0)[cl]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
+ }%
+% \end{macrocode}
+% 4th vertical in:
+% \begin{macrocode}
+ \put(\LenToUnit{\layerwidth},0){\line(0,-1){\LenToUnit{\layerheight}}}%
+ \@tempcnta\numexpr \dimexpr\layerheight + .05in\relax/\dimexpr .1in\relax\relax
+ \multiput(\LenToUnit{\layerwidth},0)(0,-2.54){\@tempcnta}{%
+ \line(-1,0){1}%
+ }%
+ \@tempcnta\numexpr \dimexpr\layerheight + .25in\relax/\dimexpr .5in\relax\relax
+ \multiput(\LenToUnit{\layerwidth},0)(0,-12.7){\@tempcnta}{%
+ \line(-1,0){2}%
+ }%
+ \@tempcnta\numexpr \dimexpr\layerheight + .5in\relax/\dimexpr 1in\relax\relax
+ \multiput(\LenToUnit{\layerwidth},0)(0,-25.4){\@tempcnta}{%
+ \put(0,0){\line(-1,0){3}}%
+ \put(-3.5,0){%
+ \makebox(0,0)[cr]{\the\numexpr\@tempcnta-\@multicnt\relax}}%
+ }%
+ \end{picture}}%
+}
+% \end{macrocode}
+% \begin{macro}{\LenToUnit}
+% \changes{v3.19}{2015/07/27}{new}
+% Due to an incompatibility of package \textsf{curve2e} I've eliminated
+% \cs{@gobble} in the definition of \cs{layercontentsmeasure} and replaced it
+% sometimes by \cs{LenToUnit} with the (not long) definition suggested by
+% \textsf{curve2e} itself.
+% \begin{macrocode}
+\providecommand*{\LenToUnit}[1]{\strip@pt\dimexpr#1*\p@/\unitlength}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \LenToUnit
+% \end{macro}^^A \layercontentsmeasure
+%
+%
+% \subsection{Providing Page Styles}
+%
+% Page styles in \LaTeX{} consist of the elements:
+% \begin{itemize}
+% \item a header for odd pages,
+% \item a header for even pages,
+% \item a footer for odd pages,
+% \item a footer for even pages,
+% \end{itemize}
+% and some optional additional commands, that will be expanded, whenever the
+% page style will be activated. Note, that header and footer for even pages
+% will be used only at two-sided mode. At one-sided mode the header and footer
+% for odd pages will be used for all pages.
+%
+% With package \Package{scrlayer} layers will be linked to package styles and
+% expanded at the four elements above. Background layers will expand only
+% at the headers. Foreground layers will expand only at the
+% footers. Layers, that haven't been restricted to background or foreground,
+% will expand at both, page headers and page footers.
+%
+% Similar to the expansion of background and foreground layers, odd page
+% layers will only expand in the headers or footers of odd pages and even page
+% layers will only expand in the headers or footers of even pages. Layers,
+% that haven't been restricted to odd or even pages, will expand in the
+% headers or footers of odd pages and also in the headers or footers of even
+% pages.
+%
+% One step more: Single-side layers will only expand in the headers or footers
+% of pages in single-side layouts and two-side layers only in the headers or
+% footers of pages in two-side layout.
+%
+% One more step: float page layers will only expand in the headers or footers
+% of pages, that consists of page floats only, while non-float page layers
+% will only expand in the headers of footers of pages, that doesn't have page
+% floats.
+%
+% \begin{length}{\footheight}
+% For the header \LaTeX{} already defines a length \Length{headheight} to be
+% the maximum height of the header. But for footer it only defines the
+% distance of the baseline of the footer from the last baseline of the text
+% area. \Package{scrlayer} changes this and also defines a new length
+% \Length{footheight}. This length will be initialised with magic value
+% -12345\,sp. But if it is still that magic value at
+% \Macro{begin}\PParameter{document} it will be reset to the value of
+% \Length{baselineskip}.
+% \begin{macrocode}
+%<*package&init>
+\@ifundefined{footheight}{%
+ \newlength{\footheight}%
+ \setlength{\footheight}{-12345sp}%
+}{%
+%<*trace>
+ \PackageInfo{scrlayer}{Using already defined \string\footheight\MessageBreak
+ hoping, that this is a length and\MessageBreak
+ not only a macro}%
+%</trace>
+}
+\AtBeginDocument{%
+ \ifdim\footheight=-12345sp
+%<*trace>
+ \PackageInfo{scrlayer}{Setting magic \string\footheight\space to
+ \string\baselineskip\space while\MessageBreak
+ \string\begin{document}}%
+%</trace>
+ \setlength{\footheight}{\baselineskip}
+ \fi
+}
+%</package&init>
+% \end{macrocode}
+% \end{length}^^A \footheight
+%
+%
+% Several of the following commands use \meta{key}=\meta{value} arguments. So
+% we define a family with a new member:
+% \begin{macrocode}
+%<*package&body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.definelayerpagestyle]{KOMAarg}
+%</package&body>
+% \end{macrocode}
+%
+% \begin{macro}{\DeclarePageStyleByLayers}
+% \begin{description}
+% \item[\OParameter{option list}:] comma separated list of named page
+% style options (see below).
+% \item[\Parameter{string}:] the name of the page style to be declared (must
+% be expandable and result in a string).
+% \item[\Parameter{string list}:] comma separated list of layer names (must
+% be expandable and result in strings); first in the list will be added
+% first.
+% \end{description}
+% Page styles may be declared using this command. It has one optional and
+% two mandatory arguments. The first mandatory one is the name of the page
+% style and the second one is a list of layers to be used for this page
+% style. The page style itself will expand all background layers for odd
+% pages in \cs{@oddhead}, all background layers for even pages on
+% \cs{@evenhead}, all foreground layers for odd pages in \cs{@oddfoot}, and
+% all foreground layers for even pages in \cs{@evenfoot}. This may be
+% restricted by additional attributes, e.g., \Option{oneside} and
+% \Option{twoside}.
+%
+% The optional argument may be used to define hooks. There are six named
+% optional arguments to set up six hooks. And there are also \KOMAScript{}
+% options for these, to define global pre-definitions. Note, that you may
+% remove the global pre-definitions by emptying the local hooks. The local
+% argument are named similar, but without ``\texttt{ps}'' after
+% ``\texttt{on}''.
+% \begin{option}{onpsselect}
+% \begin{macro}{\@ps@initialhook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} whenever the
+% page style will be selected, e.g. using \Macro{pagestyle} or
+% \Macro{thispagestyle} or the low level command defining the page
+% style itself.
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsselect}{%
+ \l@addto@macro{\@ps@initialhook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}%
+}
+%<package>\newcommand*{\@ps@initialhook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsselect}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsselect\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsselect@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onselect}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @initialhook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@initialhook
+% \end{option}^^A onpsselect
+% \begin{option}{onpsinit}
+% \begin{macro}{\@ps@hook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} whenever the
+% output of a layer stack is initialised. Note, that \meta{code} must not
+% result in any page output. Otherwise the output of the layer stack will be
+% broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsinit}{%
+ \l@addto@macro{\@ps@hook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}%
+}
+%<package>\newcommand*{\@ps@hook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsinit}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsinit\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsinit@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{oninit}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @hook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@hook
+% \end{option}^^A onpsinit
+% \begin{option}{onpsoneside}
+% \begin{macro}{\@ps@onesidehook}
+% \begin{description}
+% \item[\Option{=\meta{code}}:] executes \meta{code} after
+% \Option{oninit}'s \meta{code} whenever the output of a layer stack of a
+% page in single-side layout is initialised. Note, that \meta{code} must not
+% result in any page output. Otherwise the output of the layer stack will be
+% broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsoneside}{%
+ \l@addto@macro{\@ps@onesidehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}%
+}
+%<package>\newcommand*{\@ps@onesidehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsoneside}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsoneside\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsoneside@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ononeside}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @onesidehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@onesidehook
+% \end{option}^^A onpsoneside
+% \begin{option}{onpstwoside}
+% \begin{macro}{\@ps@twosidehook}
+% \begin{description}
+% \item[\Option{=\meta{code}}:] executes \meta{code} after
+% \Option{oninit}'s \meta{code} whenever the output of a layer stack of a
+% page in two-side layout is initialised. Note, that \meta{code} must not
+% result in any page output. Otherwise the output of the layer stack will be
+% broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpstwoside}{%
+ \l@addto@macro{\@ps@twosidehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}%
+}
+%<package>\newcommand*{\@ps@twosidehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpstwoside}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpstwoside\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpstwoside@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{ontwoside}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @twosidehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@twosidehook
+% \end{option}^^A onpstwoside
+% \begin{option}{onpsoddpage}
+% \begin{macro}{\@ps@oddpagehook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} after
+% \Option{ononeside}'s or \Option{ontwoside}'s \meta{code} whenever the
+% output of a layer stack of an odd page is initialised. Note, that
+% \meta{code} must not result in any page output. Otherwise the output of
+% the layer stack will be broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsoddpage}{%
+ \l@addto@macro{\@ps@oddpagehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}%
+}
+%<package>\newcommand*{\@ps@oddpagehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsoddpage\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsoddpage@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onoddpage}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @oddpagehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@oddpagehook
+% \end{option}^^A onpsoddpage
+% \begin{option}{onpsevenpage}
+% \begin{macro}{\@ps@evenpagehook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} after
+% \Option{ononeside}'s or \Option{ontwoside}'s \meta{code} whenever the
+% output of a layer stack of an even page is initialised. Note, that
+% \meta{code} must not result in any page output. Otherwise the output of
+% the layer stack will be broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsevenpage}{%
+ \l@addto@macro{\@ps@evenpagehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}%
+}
+%<package>\newcommand*{\@ps@evenpagehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsevenpage\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsevenpage@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onevenpage}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @evenpagehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@evenpagehook
+% \end{option}^^A onpsevenpage
+% \begin{option}{onpsfloatpage}
+% \begin{macro}{\@ps@floatpagehook}
+% \begin{description}
+% \item[\Option{=\meta{code}}:] executes \meta{code} after
+% \Option{onoddpage}'s or \Option{onevenpage}'s \meta{code} whenever a float
+% column has been made (usually those pages are float pages).
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsfloatpage}{%
+ \l@addto@macro{\@ps@floatpagehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}%
+}
+%<package>\newcommand*{\@ps@floatpagehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsfloatpage\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsfloatpage@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onfloatpage}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @floatpagehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@floatpagehook
+% \end{option}^^A onpsfloatpage
+% \begin{option}{onpsnonfloatpage}
+% \begin{macro}{\@ps@nonfloatpagehook}
+% \begin{description}
+% \item[\Option{=\meta{code}}:] executes \meta{code} after
+% \Option{onoddpage}'s or \Option{onevenpage}'s \meta{code} whenever no
+% float column has been made (usually those pages aren't float pages).
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsnonfloatpage}{%
+ \l@addto@macro{\@ps@nonfloatpagehook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}%
+}
+%<package>\newcommand*{\@ps@nonfloatpagehook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onnonfloatpage}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @nonfloatpagehook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@nonfloatpagehook
+% \end{option}^^A onpsnonfloatpage
+% \begin{option}{onpsbackground}
+% \begin{macro}{\@ps@backgroundhook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} after
+% \Option{onfloatpage}'s or \Option{onnonfloatpage}'s \meta{code} whenever
+% the output of a background layer stack is initialised. Note, that
+% \meta{code} must not result in any page output. Otherwise the output of
+% the layer stack will be broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsbackground}{%
+ \l@addto@macro{\@ps@backgroundhook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}%
+}
+%<package>\newcommand*{\@ps@backgroundhook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsbackground}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsbackground\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsbackground@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onbackground}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @backgroundhook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@ps@backgroundhook
+% \end{option}^^A onbackground
+% \begin{option}{onpsforeground}
+% \begin{macro}{\@ps@foregroundhook}
+% \begin{description}
+% \item[\texttt{=\meta{code}}:] executes \meta{code} after
+% \Option{onfloatpage}'s or \Option{onnonfloatpage}'s \meta{code} whenever
+% the output of a foreground layer stack is initialised. Note, that
+% \meta{code} must not result in any page output. Otherwise the output of
+% the layer stack will be broken!
+% \end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@key{onpsforeground}{%
+ \l@addto@macro{\@ps@foregroundhook}{#1}%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}%
+}
+%<package>\newcommand*{\@ps@foregroundhook}{}
+%<package>\KOMA@kav@add{.scrlayer.sty}{onpsforeground}{}
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsforeground\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @onpsforeground@default\endcsname\relax
+%</interface&body>
+%<*package&body>
+\DefineFamilyKey[.definelayerpagestyle]{KOMAarg}{onforeground}{%
+ \expandafter\l@addto@macro
+ \csname @ps@\scrlayer@current@pagestyle @foregroundhook\endcsname
+ {#1}%
+ \FamilyKeyStateProcessed
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \@psforegroundhook
+% \end{option}^^A onpsforeground
+% \begin{option}{singlespacing}
+% \changes{v3.24}{2017/05/22}{new option added}^^A
+% \begin{description}
+% \item[\texttt{=\meta{simple switch}}:] if activated, all page styles will be
+% set with line spread 1. This switch is global. If you want it for some
+% styles only, add \Macro{linespread}\PParameter{1}\Macro{selectfont} to
+% option \Option{oninit} of only those styles.
+%\end{description}
+% \begin{macrocode}
+%<*options>
+\KOMA@ifkey{singlespacing}{@ps@singlespacing}
+%</options>
+% \end{macrocode}
+% \end{option}
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DeclarePageStyleByLayers}[3][]{%
+ \edef\scrlayer@current@pagestyle{\GetRealPageStyle{#2}}%
+ \expandafter\scrlayer@declare@ps@by@layers\expandafter{%
+ \scrlayer@current@pagestyle
+ }{#1}{#3}%
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@declare@ps@by@layers}
+% \changes{v3.15}{2014/12/28}{fix: \cs{linewidth} replaced by
+% \cs{textwidth}}^^A
+% \changes{v3.18}{2015/06/09}{usage of \cs{parbox[b]} instead of
+% \cs{parbox[t]} because of strange effect with package
+% \textsf{multicol}}^^A
+% \changes{v3.24}{2017/05/22}{test for \cs{if@ps@singlespacing} added}^^A
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% Needed, because of page style aliases. Same arguments like
+% \cs{DeclarePageStyleByLayers} but, \#1 is the name of the page style, \#2 is
+% the list of options and \#3 is still the list of layers.
+% \begin{macrocode}
+\newcommand*{\scrlayer@declare@ps@by@layers}[3]{%
+ \@namedef{@ps@#1@initialhook}{\@ps@initialhook}%
+ \@namedef{@ps@#1@hook}{\@ps@hook}%
+ \@namedef{@ps@#1@backgroundhook}{\@ps@backgroundhook}%
+ \@namedef{@ps@#1@foregroundhook}{\@ps@foregroundhook}%
+ \@namedef{@ps@#1@oddpagehook}{\@ps@oddpagehook}%
+ \@namedef{@ps@#1@evenpagehook}{\@ps@evenpagehook}%
+ \@namedef{@ps@#1@onesidehook}{\@ps@onesidehook}%
+ \@namedef{@ps@#1@twosidehook}{\@ps@twosidehook}%
+ \@namedef{@ps@#1@floatpagehook}{\@ps@floatpagehook}%
+ \@namedef{@ps@#1@nonfloatpagehook}{\@ps@nonfloatpagehook}%
+ \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
+ \@namedef{ps@#1}{%
+ \renewcommand*{\currentpagestyle}{#1}%
+ \@nameuse{@ps@@everystyle@@initialhook}%
+ \@nameuse{@ps@#1@initialhook}%
+ \renewcommand*{\currentpagestyle}{#1}%
+ \renewcommand*{\@oddhead}{%
+ \begingroup
+ \let\headmark\rightmark
+ \if@ps@singlespacing\linespread{1}\selectfont\fi
+ \@nameuse{@ps@@everystyle@@hook}%
+ \@nameuse{@ps@#1@hook}%
+ \@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}%
+ \@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}%
+ \@nameuse{@ps@@everystyle@@oddpagehook}%
+ \@nameuse{@ps@#1@oddpagehook}%
+ \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@@everystyle@@backgroundhook}%
+ \@nameuse{@ps@#1@backgroundhook}%
+ \parbox[b][\headheight][t]{\textwidth}{%
+ \vskip \dimexpr -\topmargin-1in
+ -\ht\strutbox\relax
+ \hskip \dimexpr -\oddsidemargin-1in\relax
+ \strut\makebox[\z@][l]{%
+ \ForEachLayerOfPageStyle{@everystyle@}{%
+ \scrlayer@do@page@style@element@layer{background}{odd}%
+ {########1}%
+ }%
+ \ForEachLayerOfPageStyle{#1}{%
+ \scrlayer@do@page@style@element@layer{background}{odd}%
+ {########1}%
+ }%
+ }%
+ }%
+ \endgroup
+ }%
+ \renewcommand*{\@evenhead}{%
+ \begingroup
+ \let\headmark\leftmark
+ \if@ps@singlespacing\linespread{1}\selectfont\fi
+ \@nameuse{@ps@@everystyle@@hook}%
+ \@nameuse{@ps@#1@hook}%
+ \@nameuse{@ps@@everystyle@@twosidehook}%
+ \@nameuse{@ps@#1@twosidehook}%
+ \@nameuse{@ps@@everystyle@@evenpagehook}%
+ \@nameuse{@ps@#1@evenpagehook}%
+ \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@@everystyle@@backgroundhook}%
+ \@nameuse{@ps@#1@backgroundhook}%
+ \parbox[b][\headheight][t]{\textwidth}{%
+ \vskip \dimexpr -\topmargin-1in
+ -\ht\strutbox\relax
+ \hskip \dimexpr-\evensidemargin-1in\relax
+ \strut\makebox[\z@][l]{%
+ \ForEachLayerOfPageStyle{@everystyle@}{%
+ \scrlayer@do@page@style@element@layer{background}{even}%
+ {########1}%
+ }%
+ \ForEachLayerOfPageStyle{#1}{%
+ \scrlayer@do@page@style@element@layer{background}{even}%
+ {########1}%
+ }%
+ }%
+ }%
+ \endgroup
+ }%
+ \renewcommand*{\@oddfoot}{%
+ \begingroup
+ \let\headmark\rightmark
+ \if@ps@singlespacing\linespread{1}\selectfont\fi
+ \@nameuse{@ps@@everystyle@@hook}%
+ \@nameuse{@ps@#1@hook}%
+ \@nameuse{@ps@@everystyle@@\if@twoside two\else one\fi sidehook}%
+ \@nameuse{@ps@#1@\if@twoside two\else one\fi sidehook}%
+ \@nameuse{@ps@@everystyle@@oddpagehook}%
+ \@nameuse{@ps@#1@oddpagehook}%
+ \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@@everystyle@@foregroundhook}%
+ \@nameuse{@ps@#1@foregroundhook}%
+ \parbox[t][\headheight][t]{\textwidth}{%
+ \vskip \dimexpr -\topmargin-1in
+ -\headheight
+ -\headsep
+ -\textheight
+ -\footskip
+ -\ht\strutbox\relax
+ \hskip \dimexpr -\oddsidemargin-1in\relax
+ \strut\makebox[\z@][l]{%
+ \ForEachLayerOfPageStyle{@everystyle@}{%
+ \scrlayer@do@page@style@element@layer{foreground}{odd}%
+ {########1}%
+ }%
+ \ForEachLayerOfPageStyle{#1}{%
+ \scrlayer@do@page@style@element@layer{foreground}{odd}%
+ {########1}%
+ }%
+ }%
+ }%
+ \endgroup
+ }%
+ \renewcommand*{\@evenfoot}{%
+ \begingroup
+ \let\headmark\leftmark
+ \if@ps@singlespacing\linespread{1}\selectfont\fi
+ \@nameuse{@ps@@everystyle@@hook}%
+ \@nameuse{@ps@#1@hook}%
+ \@nameuse{@ps@@everystyle@@twosidehook}%
+ \@nameuse{@ps@#1@twosidehook}%
+ \@nameuse{@ps@@everystyle@@evenpagehook}%
+ \@nameuse{@ps@#1@evenpagehook}%
+ \@nameuse{@ps@@everystyle@@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@#1@\if@fcolmade\else non\fi floatpagehook}%
+ \@nameuse{@ps@@everystyle@@foregroundhook}%
+ \@nameuse{@ps@#1@foregroundhook}%
+ \parbox[t][\headheight][t]{\textwidth}{%
+ \vskip \dimexpr -\topmargin-1in
+ -\headheight
+ -\headsep
+ -\textheight
+ -\footskip
+ -\ht\strutbox\relax
+ \hskip \dimexpr-\evensidemargin-1in\relax
+ \strut\makebox[\z@][l]{%
+ \ForEachLayerOfPageStyle{@everystyle@}{%
+ \scrlayer@do@page@style@element@layer{foreground}{even}%
+ {########1}%
+ }%
+ \ForEachLayerOfPageStyle{#1}{%
+ \scrlayer@do@page@style@element@layer{foreground}{even}%
+ {########1}%
+ }%
+ }%
+ }%
+ \endgroup
+ }%
+ }%
+ \@namedef{@ps@#1@layers}{}%
+ \@for \reserved@a:=#3\do {%
+ \scr@trim@spaces\reserved@a
+ \ifstr\reserved@a\@empty{}{%
+ \expandafter\@cons\csname @ps@#1@layers\endcsname{{\reserved@a}}%
+ }%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@declare@ps@by@layers
+%
+% \begin{macro}{\ForEachLayerOfPageStyle}
+% \changes{v3.18}{2015/05/14}{star version of the command}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{description}
+% \item[\Parameter{string}:] a valid page style (must be fully expandable
+% and expand to the name of a existing page style); note, that currently
+% no exists test will be done.
+% \item[\Parameter{code}:] any macro definition body with usage of at most
+% one argument (\texttt{\#1}), that will be replaced by the layer's name
+% \end{description}
+% Do the given \meta{code} for each layer of the page style
+% \meta{string}. Note, that the expansion of \meta{code} will be done inside
+% a group. There's also a star version of the command, that delays execution
+% of \meta{code} after the end of the group.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\ForEachLayerOfPageStyle}{%
+ \kernel@ifstar {\@s@ForEachLayerOfPageStyle}{\@ForEachLayerOfPageStyle}%
+}
+\newcommand*{\@ForEachLayerOfPageStyle}[2]{%
+ \begingroup
+ \edef\reserved@a{\GetRealPageStyle{#1}}%
+ \def\@elt##1{\ifscrlayer@deactivate@layers\else #2\fi}%
+ \@nameuse{@ps@\reserved@a @layers}%
+ \endgroup
+}
+\newcommand*{\@s@ForEachLayerOfPageStyle}[2]{%
+ \begingroup
+ \edef\reserved@a{\GetRealPageStyle{#1}}%
+ \def\reserved@b{\endgroup}%
+ \def\@elt##1{%
+ \l@addto@macro\reserved@b{%
+ \ifscrlayer@deactivate@layers\else #2\fi
+ }%
+ }%
+ \@nameuse{@ps@\reserved@a @layers}%
+ \reserved@b
+}
+%</package&body>
+% \end{macrocode}
+% \begin{option}{deactivatepagestylelayers}
+% \begin{macro}{\ifscrlayer@deactivate@layers}
+% \begin{description}
+% \item[\Parameter{simple switch}:] whether or not
+% \Macro{ForEachLayerOfPageStyle} should ignore the layers.
+% \end{description}
+% This is a global \KOMAScript{} options. Several other definitions and at
+% least the usage of the page style will ignore the layers if
+% \Macro{ForEachLayerOfPageStyle} ignores them. So this is something like:
+% hide the layers. It may also be useful inside the code for the hooks
+% described above, because hooks may used to deactivate the layers with this
+% option too.
+% \begin{macrocode}
+%<*options>
+%<*package>
+\KOMA@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}
+%</package>
+%<*interface>
+\KOMA@key{deactivatepagestylelayers}[true]{%
+ \KOMA@set@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}{#1}%
+ \KOMA@kav@replacebool{.scrlayer.sty}{deactivatepagestylelayers}
+ {scrlayer@deactivate@layers}%
+}
+%</interface>
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers\endcsname
+ \relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers@default\endcsname
+ \relax
+%</interface&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@deactivate@layers
+% \end{option}^^A deactivatepagestylelayers
+% \end{macro}^^A \ForEachLayerOfPageStyle
+%
+% \begin{macro}{\scrlayer@do@page@style@element@layer}
+% \changes{v3.26}{2018/07/14}{added hooks and artifact code}^^A
+% Helper macro to show one layer. First argument is either ``background'' or
+% ``foreground'', second argument is either ``odd'' or ``even'', and third
+% argument is the name of the layer. Note, that in draft mode for every layer
+% will be shown also a \cs{layercontentsmeasure}.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\scrlayer@do@page@style@element@layer}[3]{%
+ \begingroup
+ \expandafter\ifx\csname if@scr@l@#3@\if@fcolmade\else non\fi floatpage%
+ \expandafter\endcsname\csname iftrue\endcsname
+ \expandafter\ifx\csname if@scr@l@#3@\if@twoside two\else one\fi side%
+ \expandafter\endcsname\csname iftrue\endcsname
+ \expandafter
+ \ifx\csname if@scr@l@#3@#1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \expandafter
+ \ifx\csname if@scr@l@#3@#2\expandafter\endcsname
+ \csname iftrue\endcsname
+ \ifscrlayer@draft
+ \scr@layerbox(\csname scr@l@#3@x\endcsname,%
+ \csname scr@l@#3@y\endcsname)%
+ (\csname scr@l@#3@w\endcsname,%
+ \csname scr@l@#3@h\endcsname)%
+ [\csname scr@l@#3@align\endcsname]%
+ {%
+ \scrlayer@predraftmeasure@hook
+ \scrlayer@beginartifact{}%
+ \layercontentsmeasure
+ \scrlayer@endartifact{}%
+ \scrlayer@postdraftmeasure@hook
+ }%
+ \fi
+ \scr@layerbox(\csname scr@l@#3@x\endcsname,%
+ \csname scr@l@#3@y\endcsname)%
+ (\csname scr@l@#3@w\endcsname,%
+ \csname scr@l@#3@h\endcsname)%
+ [\csname scr@l@#3@align\endcsname]%
+ {\csname layer\csname scr@l@#3@mode\endcsname
+ mode\expandafter\endcsname{%
+ \csname scr@l@#3@precontents@hook\endcsname
+ \scr@ifundefinedorrelax{scr@l@#3@artifact}{}{%
+ \expandafter\expandafter\expandafter
+ \scrlayer@beginartifact
+ \expandafter\expandafter\expandafter{%
+ \csname scr@l@#3@artifact\endcsname
+ }%
+ \csname scr@l@#3@contents\endcsname
+ \expandafter\expandafter\expandafter
+ \scrlayer@endartifact
+ \expandafter\expandafter\expandafter{%
+ \csname scr@l@#3@artifact\endcsname
+ }%
+ }{%
+ \csname scr@l@#3@contents\endcsname
+ }%
+ \csname scr@l@#3@postcontents@hook\endcsname
+ }%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@predraftmeasure@hook}
+% \changes{v3.26}{2018/07/14}{new (internal)}^^A
+% The hooks that will be executed before setting the draft measuring.
+% \begin{macrocode}
+\newcommand*{\scrlayer@predraftmeasure@hook}{}
+% \end{macrocode}
+% \begin{macro}{\BeforeDraftMeasuringLayer}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% New code will be added in front of the hook.
+% \begin{macrocode}
+\newcommand*{\BeforeDraftMeasuringLayer}[1]{%
+ \edef\scrlayer@predraftmeasure@hook{%
+ \unexpanded{#1}\unexpanded\expandafter{\scrlayer@predraftmeasure@hook}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \BeforeDraftMeasuringLayer
+% \end{macro}^^A \scrlayer@predraftmeasure@hook
+% \begin{macro}{\scrlayer@postdraftmeasure@hook}
+% \changes{v3.26}{2018/07/14}{new (internal)}^^A
+% The hook that will be executed after setting the draft measuring.
+% \begin{macrocode}
+\newcommand*{\scrlayer@postdraftmeasure@hook}{}
+% \end{macrocode}
+% \begin{macro}{\AfterDraftMeasuringLayer}
+% \changes{v3.26}{2018/07/14}{new}^^A
+% New code will be added at the end of the hook.
+% \begin{macrocode}
+\newcommand*{\AfterDraftMeasuringLayer}[1]{%
+ \expandafter\def\expandafter\scrlayer@postdraftmeasure@hook\expandafter{%
+ \scrlayer@postdraftmeasure@hook #1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}^^A \AfterDraftMeasuringLayer
+% \end{macro}^^A \scrlayer@postdraftmeasure@hook
+% \begin{macro}{\scr@layerbox}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\scr@@layerbox}
+% \changes{v3.24}{2017/05/08}{\cs{edef} replaced by \cs{protected@edef}}^^A
+% \changes{v3.24}{2017/05/08}{\cs{dimexpr} added to \cs{layer\dots}}^^A
+% \changes{v3.24}{2017/05/08}{\cs{dimexpr} removed from usage of
+% \cs{layer\dots}}^^A
+% The layer box is used to output a layer in \cs{@oddhead}, \cs{@evenhead},
+% \cs{@oddfoot}, or \cs{@evenfoot}. Is has two pairs of arguments: ($x,y$)
+% and ($w,h$), where $x$ is the distance from left paper edge, $y$ is the
+% distance from the topmost edge of paper, $w$ is the width of the box and $h$
+% is the height of the box. The fifth argument is an optional vertical and
+% horizontal alignment of the box. It may be a combination of the alignment
+% characters described above. The sixth and last argument is the contents of
+% the layer, to be placed into the last argument of the innermost
+% \cs{parbox}.
+% \begin{macrocode}
+\def\scr@layerbox(#1,#2)(#3,#4){%
+ \kernel@ifnextchar [%]
+ {\scr@@layerbox(#1,#2)(#3,#4)}{\scr@@layerbox(#1,#2)(#3,#4)[]}%
+}
+\def\scr@@layerbox(#1,#2)(#3,#4)[#5]#6{%
+ \begingroup
+ \protected@edef\layerxoffset{\noexpand\dimexpr #1\relax}%
+ \protected@edef\layeryoffset{\noexpand\dimexpr #2\relax}%
+ \protected@edef\layerwidth{\noexpand\dimexpr #3\relax}%
+ \protected@edef\layerheight{\noexpand\dimexpr #4\relax}%
+ \def\layervalign{t}%
+ \def\layerhalign{l}%
+ \edef\reserved@b{#5}%
+ \expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=%
+ \reserved@b\do{%
+ \if t\reserved@a
+ \def\layervalign{t}%
+ \else
+ \if c\reserved@a
+ \def\layervalign{c}%
+ \def\layerhalign{c}%
+ \else
+ \if b\reserved@a
+ \def\layervalign{b}%
+ \else
+ \if l\reserved@a
+ \def\layerhalign{l}%
+ \else
+ \if r\reserved@a
+ \def\layerhalign{r}%
+ \else
+ \PackageWarning{scrlayer}{%
+ Unknown alignment `\reserved@a' ignored}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \parbox[t][\z@][t]{\z@}{%
+ \vskip\layeryoffset
+ \if b\layervalign\vskip-\layerheight\fi
+ \if c\layervalign\vskip-.5\layerheight\fi
+% \end{macrocode}
+% \changes{3.23a}{2017/04/22}{\textsf{bidi} code added}^^A
+% \changes{v3.24}{2017/05/04}{usage of \textsf{scrbase}'s \cs{IfRTL}}^^A
+% If we are in right-to-left mode of package \textsf{bidi} or
+% \textsf{xepersian} the horizontal output is in the opposite direction. So we
+% need the \cs{makebox} to the right instead of the left and to move the
+% contents additionally by its width.
+% \begin{macrocode}
+ \makebox[\z@][\IfRTL{r}{l}]{%
+ \hskip\layerxoffset
+ \IfRTL{\hskip\layerwidth}{}%
+ \makebox[\z@][\layerhalign]{%
+ \parbox[\layervalign][\layerheight][\layervalign]{\layerwidth}{%
+ \vskip\z@\strut{%
+ \ifscrlayer@forceignoreuppercase
+ \expandafter\let\csname MakeUppercase \endcsname\@firstofone
+ \let\MakeUppercase\@firstofone
+ \let\uppercase\@firstofone
+ \fi
+ #6%
+ }\strut\vskip\z@
+ }%
+ }%
+ }%
+ }%
+ \endgroup
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scr@@layerbox
+% \end{macro}^^A \scr@layerbox
+%
+% \begin{macro}{\layerrawmode}
+% \changes{v3.19}{2015/07/30}{new command}^^A
+% \begin{macro}{\layertextmode}
+% \changes{v3.19}{2015/07/30}{new command}^^A
+% This is the command to output layers in raw mode. This is very simple:
+% \begin{macrocode}
+%<*package&body>
+\newcommand{\layerrawmode}[1]{#1}
+\newcommand{\layertextmode}[1]{#1}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \layertextmode
+% \end{macro}^^A \layerrawmode
+%
+% \begin{macro}{\layerpicturemode}
+% \changes{v3.19}{2015/07/30}{new command}^^A
+% \changes{v3.24}{2017/05/08}{redundant \cs{dimexpr} removed}^^A
+% This is a bit more complicated. It is the layer output for \texttt{picture}
+% layers. In this case we use a picture environment and internally define some
+% additional commands.
+% \begin{macrocode}
+%<*package&body>
+\newcommand{\layerpicturemode}[1]{%
+ \begin{picture}(0,0)
+ (0,\LenToUnit{%
+ \if t\layervalign \dimexpr\layerheight-\ht\strutbox\relax
+ \else
+ \if b\layervalign \dp\strutbox
+ \else .5\dimexpr\layerheight-\ht\strutbox+\dp\strutbox\relax
+ \fi
+ \fi})
+ \long\def\putLL##1{\put(0,0){##1}}%
+ \long\def\putUL##1{\put(0,\LenToUnit{\layerheight}){##1}}%
+ \long\def\putLR##1{\put(\LenToUnit{\layerwidth},0){##1}}%
+ \long\def\putUR##1{\put(\LenToUnit{\layerwidth},%
+ \LenToUnit{\layerheight}){##1}}%
+ \long\def\putC##1{\put(\LenToUnit{.5\layerwidth},%
+ \LenToUnit{.5\layerheight}){##1}}%
+ #1%
+ \end{picture}%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \layerpicturemode
+%
+% \begin{option}{draft}
+% \begin{macro}{\ifscrlayer@draft}
+% \begin{description}
+% \item[\Parameter{simple switch}:] whether or not to use the draft mode,
+% that, i.e., activates visualisation of the layers.
+% \end{description}
+% When option is set, every layer is shown twice: one time with it's own
+% contents and one time with contents \Macro{layercontentsmeasure}.
+% \begin{macrocode}
+%<*options>
+%<*package>
+\KOMA@ifkey{draft}{scrlayer@draft}
+%</package>
+%<*interface>
+\KOMA@key{draft}[true]{%
+ \KOMA@set@ifkey{draft}{scrlayer@draft}{#1}%
+ \KOMA@kav@replacebool{.scrlayer.sty}{draft}{scrlayer@draft}%
+}
+%</interface>
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @draft\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @draft@default\endcsname\relax
+%</interface&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@draft
+% \end{option}^^A draft
+% \end{macro}^^A \scrlayer@do@page@style@element@layer
+% \end{macro}^^A \DeclarePageStyleByLayers
+%
+%
+% \begin{macro}{\DeclareNewPageStyleByLayers}
+% Arguments like \Macro{DeclarePageStyleByLayers}; results in error if the page
+% style has been defined (or declared) already.
+% \begin{macro}{\ProvidePageStyleByLayers}
+% Arguments like \Macro{DeclarePageStyleByLayers}; doesn't define anything it
+% the page style has been defined (or declared) already.
+% \begin{macro}{\RedeclarePageStyleByLayers}
+% Arguments like \Macro{DeclarePageStyleByLayers}; results in error if the page
+% style hasn't been defined (or declared) already.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DeclareNewPageStyleByLayers}[2][]{%
+ \@ifundefined{ps@#2}{}{%
+ \PackageError{scrlayer}{%
+ Page style `#2' already defined%
+ }{%
+ You may use \string\DeclareNewPageStyleByLayers\space to declare a new
+ page style only\MessageBreak
+ if that page style hasn't been declared or defined before.\MessageBreak
+ You may use either \string\ProvidePageStyleByLayers\space to declare the
+ page style only\MessageBreak
+ if it hasn't been declared or defined before, or
+ \string\RedeclarePageStyleByLayers\MessageBreak
+ to overwrite the former
+ declaration or definition of the page style%
+ \@ifundefined{@ps@#2@layers}{}{,\MessageBreak
+ or \string\AddLayersToPageStyle\space to add further layers to the
+ already declared\MessageBreak
+ page style, or \string\RemoveLayersFromPageStyle\space to remove
+ layers from the\MessageBreak
+ already declared page style}.\MessageBreak
+ Nevertheless, if you'll continue, the page style will be
+ overwritten\MessageBreak
+ by the new declaration.%
+ }%
+ }%
+ \DeclarePageStyleByLayers[{#1}]{#2}%
+}
+\newcommand*{\ProvidePageStyleByLayers}[3][]{%
+ \@ifundefined{ps@#2}{%
+ \DeclarePageStyleByLayers[{#1}]{#2}{#3}%
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer}{%
+ \string\ProvidePageStyleByLayers{#2}{#3} ignored,\MessageBreak
+ because page style `#2'\MessageBreak
+ already exists%
+ }%
+%</trace>
+ }%
+}
+\newcommand*{\RedeclarePageStyleByLayers}[2][]{%
+ \@ifundefined{ps@#2}{%
+ \PackageError{scrlayer}{%
+ Page style `#2' not yet defined%
+ }{%
+ You may use \string\RedeclarePageStyleByLayers\space to declare a page
+ style only\MessageBreak
+ if that page style has already been declared or defined.\MessageBreak
+ You may use either \string\DeclareNewPageStyleByLayers,
+ \string\DeclarePageStyleByLayers,\MessageBreak
+ or \string\ProvidePageStyleByLayers\space to declare that not yet
+ defined page style.\MessageBreak
+ Nevertheless, if you'll continue, the page style will be declared.%
+ }%
+ }{}%
+ \DeclarePageStyleByLayers[{#1}]{#2}%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \RedeclarePageStyleByLayers
+% \end{macro}^^A \ProvidePageStyleByLayers
+% \end{macro}^^A \DeclareNewPageStyleByLayers
+%
+% We also declare page style \Pagestyle{@everystyle@} by default. You should
+% not use this page style as an real page style (even not as the empty
+% one). The layers of this page style will be used by every other layer page
+% style. An we re-declare \Pagestyle{empty} to be a layer page style.
+% \begin{macrocode}
+%<*package&final>
+\DeclareNewPageStyleByLayers{@everystyle@}{}
+\RedeclarePageStyleByLayers{empty}{}
+%</package&final>
+% \end{macrocode}
+%
+% \begin{macro}{\AddLayersToPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{macro}{\AddLayersAtBeginOfPageStyle}
+% \begin{macro}{\AddLayersAtEndOfPageStyle}
+% \begin{macro}{\RemoveLayersFromPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be modified (must
+% be expandable and result in a string).
+% \item[\Parameter{string list}:] comma separated list of layer names (must
+% be expandable and result in strings); first in the list will be added
+% first.
+% \end{description}
+% Change the layer list of a given page style. The differences between the
+% commands are:
+% \begin{description}
+% \item[\Macro{AddLayersToPageStyle}:] first in the \meta{string list} will
+% be added first at the end.
+% \item[\Macro{AddLayersAtBeginOfPageStyle}:] first in the \meta{string list}
+% will be added first at the start. Note, that this will result in changing
+% the order of the layers in \meta{string list}.
+% \item[\Macro{AddLayerAtEndOfPageStyle}:] same like
+% \Macro{AddLayerToPageStyle}.
+% \item[\Macro{RemoveLayersFromPageStyle}:] remove the layers from the page
+% style's layer list.
+% \end{description}
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\AddLayersToPageStyle}[2]{%
+ \edef\reserved@b{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{\reserved@b}{%
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \ifstr\reserved@a\@empty{}{%
+ \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
+ {{\reserved@a}}%
+ }%
+ }%
+ }{%
+ \scrlayer@lpm@error{#1}{adding layers}%
+ }%
+}
+\newcommand*{\AddLayersAtEndOfPageStyle}{%
+ \AddLayersToPageStyle
+}
+\newcommand*{\AddLayersAtBeginOfPageStyle}[2]{%
+ \begingroup
+ \let\@cons\@snoc
+ \AddLayersToPageStyle{#1}{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\@snoc}
+% \cs{@snoc} is a helper macro similar to \cs{@cons} from \LaTeX{} kernel, but
+% it appends at the front instead of the end.
+% \begin{macrocode}
+\newcommand*{\@snoc}[2]{%
+ \begingroup\let\@elt\relax\xdef#1{\@elt #2#1}\endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \@snoc
+% \begin{macrocode}
+\newcommand*{\RemoveLayersFromPageStyle}[2]{%
+ \edef\reserved@b{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{#1}{%
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \ifstr\reserved@a\@empty{}{%
+ \expandafter\remove@layer@from@page@style\expandafter{\reserved@a}%
+ {\reserved@b}%
+ }%
+ }%
+ }{%
+ \scrlayer@lpm@error{#1}{removing layers}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\remove@layer@from@page@style}
+% \changes{v0.9}{2014/07/25}{cleaning of layer list must be global}
+% Helper macro to remove exactly one layer (arg 1) from a page style (arg 2).
+% \begin{macrocode}
+\newcommand*{\remove@layer@from@page@style}[2]{%
+ \begingroup
+ \expandafter\let\expandafter\reserved@a\csname @ps@#2@layers\endcsname
+ \expandafter\global\expandafter\let\csname @ps@#2@layers\endcsname\@empty
+ \def\@elt##1{%
+ \ifstr{#1}{##1}{}{%
+ \expandafter\@cons\csname @ps@#2@layers\endcsname{{##1}}%
+ }%
+ }\reserved@a
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}^^A \remoce@layer@from@page@style
+% \begin{macro}{\scrlayer@lpm@error}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be modified (must
+% be expandable and result in a string).
+% \item[\Parameter{string}:] the kind of modification, that isn't allowed
+% (must be expandable and result in a string).
+% \end{description}
+% Show an error because of page style it either not a defined or not a layer
+% page style.
+% \begin{macrocode}
+\newcommand*{\scrlayer@lpm@error}[2]{%
+ \PackageError{scrlayer}{`#1' is not a layer page style}{%
+ \scr@ifundefinedorrelax{ps@#1}{%
+ Page style `#1' is not defined,
+ }{%
+ Page style `#1' is not a layer page style,
+ }%
+ but #2\MessageBreak
+ may be used only for layer page styles declared using\MessageBreak
+ \string\DeclarePageStyleByLayers,
+ \string\DeclareNewPageStyleByLayers,\MessageBreak
+ of \string\ProvidePageStyleByLayers.\MessageBreak
+ If you'll continue, your operation will be ignored.%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@lpm@error
+% \end{macro}^^A \RemoveLayersFromPageStyle
+% \end{macro}^^A \AddLayersAtEndOfPageStyle
+% \end{macro}^^A \AddLayersAtBeginOfPageStyle
+% \end{macro}^^A \AddLayersToPageStyle
+%
+% \begin{macro}{\AddLayersToPageStyleBeforeLayer}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{macro}{\AddLayersToPageStyleAfterLayer}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be modified (must
+% be expandable and result in a string).
+% \item[\Parameter{string list}:] comma separated list of layer names (must
+% be expandable and result in strings); first in the list will be added
+% first.
+% \item[\Parameter{string}:] the name of the layer before
+% (\Macro{AddLayersToPageStyleBeforeLayer}) or after
+% (\Macro{AddLayersToPageStyleAfterLayer}) that the layers of the list
+% should be added.
+% \end{description}
+% Note: If the layer from third argument is not part of the page style's layer
+% list, the new layers won't be added anywhere.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\AddLayersToPageStyleAfterLayer}[3]{%
+ \edef\reserved@b{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{\reserved@b}{%
+ \begingroup
+ \expandafter\let\expandafter\reserved@a
+ \csname @ps@\reserved@b @layers\endcsname
+ \@namedef{@ps@\reserved@b @layers}{}%
+ \def\@elt##1{%
+ \ifstr{##1}\@empty{}{%
+ \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}%
+ \ifstr{##1}{#3}{%
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \ifstr\reserved@a\@empty{}{%
+ \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
+ {{\reserved@a}}%
+ }%
+ }%
+ }{}%
+ }%
+ }%
+ \reserved@a
+ \endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{adding layers}%
+ }%
+}
+\newcommand*{\AddLayersToPageStyleBeforeLayer}[3]{%
+ \edef\reserved@b{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{\reserved@b}{%
+ \begingroup
+ \expandafter\let\expandafter\reserved@a
+ \csname @ps@\reserved@b @layers\endcsname
+ \@namedef{@ps@\reserved@b @layers}{}%
+ \def\@elt##1{%
+ \ifstr{##1}\@empty{}{%
+ \ifstr{##1}{#3}{%
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \ifstr\reserved@a\@empty{}{%
+ \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname
+ {{\reserved@a}}%
+ }%
+ }%
+ }{}%
+ \expandafter\@cons\csname @ps@#1@layers\endcsname{{##1}}%
+ }%
+ }%
+ \reserved@a
+ \endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{adding layers}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \AddLayersToPageStyleAfterLayer
+% \end{macro}^^A \AddLayersToPageStyleBeforeLayer
+%
+%
+% \begin{macro}{\UnifyLayersAtPageStyle}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be unified (must
+% be expandable and result in a string).
+% \end{description}
+% Remove doublets of layers from a page style.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\UnifyLayersAtPageStyle}[1]{%
+ \edef\reserved@b{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{\reserved@b}{%
+ \expandafter\let\expandafter\reserved@a
+ \csname @ps@\reserved@b @layers\endcsname
+ \@namedef{@ps@\reserved@b @layers}{}%
+ \begingroup
+ \def\@elt##1{%
+ \ifstr{##1}\@empty{}{%
+ \remove@layer@from@page@style{##1}{\reserved@b}%
+ \expandafter\@cons\csname @ps@\reserved@b @layers\endcsname{{##1}}%
+ }%
+ }%
+ \reserved@a
+ \endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{unifying}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \UnifyLayersAtPageStyle
+%
+% \begin{macro}{\ModifyLayerPageStyleOptions}
+% \begin{macro}{\AddToLayerPageStyleOptions}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be modified (must
+% be expandable and result in a string).
+% \item[\Parameter{option list}:] comma separated list of named page
+% style options. You may use any of the options provided for
+% \Macro{DeclarePageStyle}.
+% \end{description}
+% \Macro{ModifyLayerPageStyleOptions} replaces the options and only the
+% options from the list by their new
+% values. \Macro{AddToLayerPageStyleOptions} adds the new values to the
+% already given.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\ModifyLayerPageStyleOptions}[2]{%
+ \edef\reserved@a{\GetRealPageStyle{#1}}%
+ \IfLayerPageStyleExists{#1}{%
+ \expandafter\scrlayer@modify@layer@ps@options\expandafter{%
+ \reserved@a
+ }{#2}%
+ }{%
+ \scrlayer@lpm@error{#1}{modifying}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scrlayer@modify@layer@ps@options}
+% Helper needed because of alias page styles. Same parameters like
+% \cs{ModifyLayerPageStyleOptions}
+% \begin{macrocode}
+\newcommand*{\scrlayer@modify@layer@ps@options}[2]{%
+ \begingroup
+ \def\scrlayer@current@pagestyle{#1}%
+ \@namedef{@ps@#1@initialhook}{}%
+ \@namedef{@ps@#1@hook}{}%
+ \@namedef{@ps@#1@backgroundhook}{}%
+ \@namedef{@ps@#1@foregroundhook}{}%
+ \@namedef{@ps@#1@oddpagehook}{}%
+ \@namedef{@ps@#1@evenpagehook}{}%
+ \@namedef{@ps@#1@onesidehook}{}%
+ \@namedef{@ps@#1@twosidehook}{}%
+ \@namedef{@ps@#1@floatpagehook}{}%
+ \@namedef{@ps@#1@nonfloatpagehook}{}%
+ \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
+ \def\reserved@a{\endgroup}%
+ \def\@sls@##1{%
+ \expandafter\let\expandafter\reserved@b\csname @ps@#1@##1hook\endcsname
+ \ifx\reserved@b\@empty\else
+ \l@addto@macro\reserved@a{\@namedef{@ps@#1@##1hook}}%
+ \expandafter\l@addto@macro\expandafter\reserved@a\expandafter{%
+ \expandafter{%
+ \reserved@b
+ }%
+ }%
+ \fi
+ }%
+ \@sls@{initial}%
+ \@sls@{}%
+ \@sls@{background}%
+ \@sls@{foreground}%
+ \@sls@{oddpage}%
+ \@sls@{evenpage}%
+ \@sls@{oneside}%
+ \@sls@{twoside}%
+ \@sls@{floatpage}%
+ \@sls@{nonfloatpage}%
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@modify@layer@ps@options
+% \begin{macrocode}
+\newcommand*{\AddToLayerPageStyleOptions}[2]{%
+ \IfLayerPageStyleExists{#1}{%
+ \def\scrlayer@current@pagestyle{#1}%
+ \FamilyExecuteOptions[.definelayerpagestyle]{KOMAarg}{#2}%
+ }{%
+ \scrlayer@lpm@error{#1}{modifying}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \AddToLayerPageStyleOptions
+% \end{macro}^^A \ModifyLayerPageStyleOptions
+%
+% \begin{macro}{\scrlayer@beginartifact}
+% \changes{v3.26}{2018/07/14}{new (semi internal)}^^A
+% \begin{macro}{\scrlayer@endartifact}
+% \changes{v3.26}{2018/07/14}{new (semi internal)}^^A
+% These macros are reserved for tagging packages. The first one is executed
+% after the initial contents hook, the last one is executed after the final
+% contents hook. Both executions are done only, if the \texttt{artifact}
+% option of the layer has been used an was not boolean false. With boolean
+% true the argument will be empty. All other values will be passed as
+% argument.
+%
+% In case of package \textsf{tagpdf} the following definition would be
+% usefull (here automatically done after loading the package, if the package
+% does not do its own definitions):
+% \begin{macrocode}
+%<*package&body>
+\RequirePackage{scrlfile}
+\BeforePackage{tagpdf}{%
+% \end{macrocode}
+% Deactivation of the two commands before loading \textsf{tagpdf}, so that
+% after loading the package \cs{providecommand} can be used to do a new
+% default definition.
+% \begin{macrocode}
+ \let\scrlayer@beginartifact\relax
+ \let\scrlayer@endartifact\relax
+}
+\AfterPackage*{tagpdf}{%
+ \providecommand*{\scrlayer@beginartifact}[1]{%
+ \ifstr{#1}{}{%
+ \tagmcbegin{artifact}%
+ }{%
+ \tagmcbegin{artifact=#1}%
+ }%
+ }%
+ \providecommand*{\scrlayer@endartifact}[1]{%
+ \tagmcend
+ }%
+}
+% \end{macrocode}
+% But the default definition (if \textsf{tagpdf} has not already been loaded)
+% are simple dummies:
+% \begin{macrocode}
+\providecommand*{\scrlayer@beginartifact}[1]{}
+\providecommand*{\scrlayer@endartifact}[1]{}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@endartifact
+% \end{macro}^^A \scrlayer@beginartifact
+%
+% \begin{macro}{\DeclarePageStyleAlias}
+% \begin{macro}{\DeclareNewPageStyleAlias}
+% \begin{macro}{\ProvidePageStyleAlias}
+% \begin{macro}{\RedeclarePageStyleAlias}
+% \begin{description}
+% \item[\Parameter{string}:] The name of the page style to be declared
+% (must be expandable and result in a string).
+% \item[\Parameter{string}:] The name of the existing page style
+% (must be expandable and result in a string).
+% \end{description}
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DeclarePageStyleAlias}[2]{%
+ \edef\reserved@a{\GetRealPageStyle{#2}}%
+ \scr@ifundefinedorrelax{ps@\reserved@a}{%
+ \PackageError{scrlayer}{unknown real page style `#2'}{%
+ You've tried to declare an alias for page style `#2',\MessageBreak
+ but the real page style of `#2' is undefined.\MessageBreak
+ You can define aliases, only if the real page style has been
+ defined.\MessageBreak
+ If you'll continue, the declaration will be ignored.%
+ }%
+ \DestroyRealLayerPageStyle{#1}%
+ \DestroyLayerAlias{#1}%
+ }{%
+ \@namedef{@ps@#1@alias}{#2}%
+ \@namedef{ps@#1}{\pagestyle{\@nameuse{@ps@#1@alias}}}%
+ }%
+}
+\newcommand*{\DeclareNewPageStyleAlias}[1]{%
+ \@ifundefined{ps@#1}{}{%
+ \PackageError{scrlayer}{%
+ Page style `#1' already defined%
+ }{%
+ You may use \string\DeclareNewPageStyleAlias\space to declare a new
+ page style only\MessageBreak
+ if that page style hasn't been declared or defined before.\MessageBreak
+ You may use either \string\ProvidePageStyleAlias\space to declare the
+ page style only\MessageBreak
+ if it hasn't been declared or defined before, or
+ \string\RedeclarePageStyleAlias\MessageBreak
+ to overwrite the former declaration or definition of the page
+ style\MessageBreak
+ Nevertheless, if you'll continue, the page style will be
+ overwritten\MessageBreak
+ by the new alias.%
+ }%
+ }%
+ \DeclarePageStyleAlias{#1}%
+}
+\newcommand*{\ProvidePageStyleAlias}[2]{%
+ \@ifundefined{ps@#1}{%
+ \DeclarePageStyleAlias{#1}{#2}%
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer}{%
+ \string\ProvidePageStyleAlias{#1}{#2} ignored,\MessageBreak
+ because page style `#1' already\MessageBreak
+ exists%
+ }%
+%</trace>
+ }%
+}
+\newcommand*{\RedeclarePageStyleAlias}[1]{%
+ \@ifundefined{ps@#1}{%
+ \PackageError{scrlayer}{%
+ Page style `#1' not yet defined%
+ }{%
+ You may use \string\RedeclarePageStyleAlias\space to declare a page
+ style only\MessageBreak
+ if that page style has already been declared or defined.\MessageBreak
+ You may use either \string\DeclareNewPageStyleAlias,
+ \string\DeclarePageStyleAlias,\MessageBreak
+ or \string\ProvidePageStyleAlias\space to declare that not yet
+ defined page style.\MessageBreak
+ Nevertheless, if you'll continue, the page style will be declared.%
+ }%
+ }{}%
+ \DeclarePageStyleAlias{#1}%
+}
+% \end{macrocode}
+% \end{macro}^^A \RedeclarePageStyleAlias
+% \end{macro}^^A \ProvidePageStyleAlias
+% \end{macro}^^A \DeclareNewPageStyleAlias
+% \end{macro}^^A \DeclarePageStyleAlias
+%
+% \begin{macro}{\DestroyPageStyleAlias}
+% \begin{description}
+% \item[\Parameter{string}:] the name of a page style (must be
+% expandable and result in a string).
+% \end{description}
+% \begin{macrocode}
+\newcommand*{\DestroyPageStyleAlias}[1]{%
+ \scr@ifundefinedorrelax{@ps@#1@alias}{}{%
+ \expandafter\let\csname @ps@#1@alias\endcsname\relax
+ \expandafter\let\csname ps@#1\endcsname\relax
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\GetRealPageStyle}
+% \begin{description}
+% \item[\Parameter{string}:] the name of a page style (must be
+% expandable and result in a string).
+% \end{description}
+% Get the real name of the page style.
+% \begin{macrocode}
+\newcommand*{\GetRealPageStyle}[1]{%
+ \scr@ifundefinedorrelax{@ps@#1@alias}{#1}{%
+ \expandafter\GetRealPageStyle\expandafter{%
+ \expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfLayerPageStyleExists}
+% \begin{macro}{\IfRealLayerPageStyleExists}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be tested (must
+% be expandable and result in a string).
+% \item[\Parameter{code}:] whatever code should be expanded, if the test
+% result is true.
+% \item[\Parameter{code}:] whatever code should be expanded, if the test
+% result is false.
+% \end{description}
+% Test, whether or not the page style is a declared layer page style.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\IfLayerPageStyleExists}[1]{%
+ \scr@ifundefinedorrelax{ps@#1}{%
+ \expandafter\@secondoftwo
+ }{%
+ \scr@ifundefinedorrelax{@ps@#1@layers}{%
+ \scr@ifundefinedorrelax{@ps@#1@alias}{%
+ \expandafter\@secondoftwo
+ }{%
+ \expandafter\IfLayerPageStyleExists\expandafter{%
+ \expandafter\csname @ps@#1@alias\expandafter\endcsname\expandafter}%
+ }%
+ }{%
+ \expandafter\@firstoftwo
+ }%
+ }%
+}
+\newcommand*{\IfRealLayerPageStyleExists}[1]{%
+ \scr@ifundefinedorrelax{ps@#1}{%
+ \expandafter\@secondoftwo
+ }{%
+ \scr@ifundefinedorrelax{@ps@#1@layers}{%
+ \expandafter\@secondoftwo
+ }{%
+ \expandafter\@firstoftwo
+ }%
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \IfRealLayerPageStyleExists
+% \end{macro}^^A \IfLayerPageStyleExists
+%
+% \begin{macro}{\IfLayerAtPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{macro}{\IfSomeLayersAtPageStyle}
+% \changes{v3.26}{2018/08/29}{\cs{scr@trim@spaces} added}^^A
+% \begin{macro}{\IfLayersAtPageStyle}
+% \begin{description}
+% \item[\Parameter{string}:] the name of the page style to be tested (must
+% be expandable and result in a string).
+% \item[\Parameter{string}:] the name(s) of the layer(s) to be tested (must be
+% expandable and result in a string).
+% \item[\Parameter{code}:] whatever code should be expanded, if the test
+% result is true.
+% \item[\Parameter{code}:] whatever code should be expanded, if the test
+% result is false.
+% \end{description}
+% Tests:
+% \begin{description}
+% \item[\Macro{IfLayerAtPageStyle}:] Test, whether or not the page style has a
+% layer. The second argument is the name of one layer only!
+% \item[\Macro{IfSomeLayersAtPageStyle}:] Test, whether or not the page style
+% has at least one layer of a list of layers. The second argument is a comma
+% separated list of layer names.
+% \item[\Macro{IfLayersAtPageStyle}:] Test, whether or not the page style has
+% every layer of a list of layers. The second argument is a comma separated
+% list of layer names.
+% \end{description}
+% Note, that testing an page style, that is not a layer page style will result
+% in an error and neither the third nor the fourth argument will be expanded.
+% Note, that layers with empty name are only part of a layer page style
+% without any layers.
+%
+% Note also, that with active \Option{deactivatepagestylelayers} layers are
+% logically not longer part of the page styles.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\IfLayerAtPageStyle}[2]{%
+ \IfLayerPageStyleExists{#1}{%
+ \begingroup
+ \edef\reserved@a{\GetRealPageStyle{#1}}%
+ \@tempswafalse
+ \ifstr{#2}{}{%
+ \expandafter\ifx\csname @ps@\reserved@a @layers\endcsname\@empty
+ \@tempswatrue
+ \fi
+ }{%
+ \expandafter\ForEachLayerOfPageStyle\expandafter{%
+ \reserved@a}{\ifstr{##1}{#2}{\aftergroup\@tempswatrue}{}}%
+ }%
+ \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
+ \expandafter\endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{testing for layers}%
+ \expandafter\@gobbletwo
+ }%
+}
+\newcommand*{\IfSomeLayersAtPageStyle}[2]{%
+ \IfLayerPageStyleExists{#1}{%
+ \begingroup
+ \@tempswafalse
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
+ \reserved@a{\@tempswatrue}{}%
+ }%
+ \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
+ \expandafter\endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{testing for layers}%
+ \expandafter\@gobbletwo
+ }%
+}
+\newcommand*{\IfLayersAtPageStyle}[2]{%
+ \IfLayerPageStyleExists{#1}{%
+ \begingroup
+ \@tempswatrue
+ \ifstr{#2}{}{%
+ \edef\reserved@a{\GetRealPageStyle{#1}}%
+ \expandafter\ifx\csname @scr@\reserved@a @layers\endcsname\@empty \else
+ \@tempswafalse
+ \fi
+ }{%
+ \@for \reserved@a:=#2\do {%
+ \scr@trim@spaces\reserved@a
+ \edef\reserved@a{\noexpand\IfLayerAtPageStyle{#1}{\reserved@a}}%
+ \reserved@a{}{\@tempswafalse}%
+ }%
+ }%
+ \if@tempswa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi
+ \expandafter\endgroup
+ }{%
+ \scrlayer@lpm@error{#1}{testing for layers}%
+ \expandafter\@gobbletwo
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \IfLayersAtPageStyle
+% \end{macro}^^A \IfSomeLayersAtPageStyle
+% \end{macro}^^A \IfLayerAtPageStyle
+%
+%
+% \begin{macro}{\DestroyRealLayerPageStyle}
+% \begin{description}
+% \item[\Parameter{string}:] name of the layer page style to be destroyed.
+% \end{description}
+% Destroys the given layer page style but not the layers! If the page style is
+% the current page style, the empty page style an empty page style will be
+% activated. If the special page style is valid an the destroyed one, this
+% will be removed. This command may be used, e.g., at
+% \Macro{scrlayerOnAutoRemoveInterface} after destroying the layers.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\DestroyRealLayerPageStyle}[1]{%
+ \IfRealLayerPageStyleExists{#1}{%
+ \expandafter\let\csname @ps@#1@initialhook\endcsname\relax
+ \expandafter\let\csname @ps@#1@hook\endcsname\relax
+ \expandafter\let\csname @ps@#1@backgroundhook\endcsname\relax
+ \expandafter\let\csname @ps@#1@foregroundhook\endcsname\relax
+ \expandafter\let\csname @ps@#1@oddpagehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@evenpagehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@onesidehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@twosidehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@floatpagehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@nonfloatpagehook\endcsname\relax
+ \expandafter\let\csname @ps@#1@layers\endcsname\relax
+ \expandafter\let\csname ps@#1\endcsname\relax
+ \ifstr{\currentpagestyle}{#1}{%
+ \def\currentpagestyle{scrlayer@empty}%
+ \let\@oddhead\@empty\let\@evenhead\@empty
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ }{}%
+ \if@specialpage
+ \ifstr{\@specialstyle}{#1}{%
+ \global\let\@specialstyle\relax
+ \global\@specialpagefalse
+ }{}%
+ \fi
+ }{%
+%<*trace>
+ \PackageInfo{scrlayer}{%
+ \string\DestroyRealLayerPageStyle{#1} ignored,\MessageBreak
+ because the layer page style isn't\MessageBreak
+ defined (any longer)%
+ }%
+%</trace>
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \DestroyRealLayerPageStyle
+%
+%
+% \subsection{Kernel Patches}
+%
+% This package as so many others need to patch the \LaTeX{} kernel. This will
+% be done, because we need information about the current active package style.
+%
+% \begin{macro}{\pagestyle}
+% \begin{macro}{\currentpagestyle}
+% We save the current page style. Note, that this doesn't work for special
+% page styles\footnote{Special page styles are set by
+% \Macro{thispagestyle}.} that hasn't been defined using
+% \Package{scrlayer}. As long as \Macro{currentpagestyle} is empty, the
+% current page style is unknown. And we add two hooks into page style
+% selection: one before an one after the selection.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\currentpagestyle}{}
+\PackageInfo{scrlayer}{patching LaTeX kernel macro \string\pagestyle}
+\def\reserved@a{%
+ \iftoplevelpagestyle\edef\toplevelpagestyle{##1}\toplevelpagestylefalse\fi
+ \scrlayer@exec@before@pagestyle@hook{##1}%
+}
+\expandafter\expandafter\expandafter\renewcommand
+\expandafter\expandafter\expandafter*%
+\expandafter\expandafter\expandafter\pagestyle
+\expandafter\expandafter\expandafter[%
+\expandafter\expandafter\expandafter1%
+\expandafter\expandafter\expandafter]%
+\expandafter\expandafter\expandafter{%
+ \expandafter\reserved@a
+ \pagestyle{#1}%
+ \edef\currentpagestyle{\GetRealPageStyle{#1}}%
+ \scrlayer@exec@after@pagestyle@hook{#1}%
+ \toplevelpagestyletrue
+}
+\newif\iftoplevelpagestyle\toplevelpagestyletrue
+\AtBeginDocument{%
+ \begingroup
+ \let\scrlayer@exec@before@pagestyle@hook\@gobble
+ \let\scrlayer@exec@after@pagestyle@hook\@gobble
+ \def\ps@test{}%
+ \pagestyle{test}%
+ \ifstr{\currentpagestyle}{test}{}{%
+ \PackageError{scrlayer}{package incompatibility detected}{%
+ Another package redefines \string\pagestyle\space incompatible with
+ scrlayer.\MessageBreak
+ This disables setting of \string\currentpagestyle\space and may
+ be serious.\MessageBreak
+ Maybe you could prevent this loading package scrlayer
+ later.\MessageBreak
+ If not you should either not use scrlayer or not the other
+ package,\MessageBreak
+ that redefines \string\pagestyle.%
+ }%
+ }%
+ \endgroup
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \currentpagestyle
+%
+% \begin{macro}{\BeforeSelectAnyPageStyle}
+% \begin{macro}{\scrlayer@exec@before@pagestyle@hook}
+% \begin{macro}{\AfterSelectAnyPageStyle}
+% \begin{macro}{\scrlayer@exec@after@pagestyle@hook}
+% We have two macros to locally add code to be executed whenever a page style
+% changes using \Macro{pagestyle}. The first one executes the code before the
+% page style will be changed, the second one after the page style has been
+% changed. Note, that you may use \#1 as a placeholder of the argument of
+% \Macro{pagestyle}.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\BeforeSelectAnyPageStyle}[1]{%
+ \expandafter\renewcommand\expandafter*%
+ \expandafter\scrlayer@exec@before@pagestyle@hook
+ \expandafter[\expandafter1\expandafter]\expandafter{%
+ \scrlayer@exec@before@pagestyle@hook{##1}#1}%
+}
+\newcommand*{\scrlayer@exec@before@pagestyle@hook}[1]{}
+\newcommand*{\AfterSelectAnyPageStyle}[1]{%
+ \expandafter\renewcommand\expandafter*%
+ \expandafter\scrlayer@exec@after@pagestyle@hook
+ \expandafter[\expandafter1\expandafter]\expandafter{%
+ \scrlayer@exec@after@pagestyle@hook{##1}#1}%
+}
+\newcommand*{\scrlayer@exec@after@pagestyle@hook}[1]{}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayer@exec@after@pagestyle@hook
+% \end{macro}^^A \AfterSelectAnyPageStyle
+% \end{macro}^^A \scrlayer@exec@before@pagestyle@hook
+% \end{macro}^^A \BeforeSelectAnyPageStyle
+% \end{macro}^^A \pagestyle
+%
+%
+% \subsection{Declaration of End User Interfaces}
+%
+% The package also supports an interface for loading end user interfaces.
+% Maybe it would be a good idea to move this to \Package{scrbase}, but
+% currently it is not needed.
+%
+% \begin{macro}{\scrlayerAddToInterface}
+% \begin{macro}{\scrlayerAddCsToInterface}
+% \begin{description}
+% \item[\texttt{\{\meta{command}\textbar\meta{command sequence}\}}:] the
+% command (with backslash) or the command sequence of the command (without
+% backslash) of the command, that should be added to the interface.
+% \item[\Parameter{code}:] will be executed, only if the command could be
+% added to the interface.
+% \end{description}
+% Add either a command sequence or a command to the user interface.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\scrlayerAddToInterface}[2][\@currname.\@currext]{%
+ \begingroup
+ \edef\reserve@a{%
+ \noexpand\scrlayerAddCsToInterface[#1]{\expandafter\@gobble\string #2}%
+ }%
+ \expandafter\endgroup\reserve@a
+}
+\newcommand{\scrlayerAddCsToInterface}[3][\@currname.\@currext]{%
+ \@ifundefined{scrlayer@#1@commandlist}{%
+ \PackageError{scrlayer}{unkown interface `#1'}{%
+ I've been told to add a command sequence to an interface, that hasn't
+ been\MessageBreak
+ defined yet. Please initialise every interface using
+ \string\InitInterface\space before\MessageBreak
+ trying to add command sequences to it.\MessageBreak
+ If you'll continue, the command will be ignored.%
+ }%
+ }{%
+ \@ifundefined{#2}{%
+ \scrlayer@AddCsToInterface[#1]{#2}#3%
+ }{%
+ \@ifundefined{scrlayer@command@#2}{%
+ \ifscrlayer@forceoverwrite
+ \PackageWarning{scrlayer}{%
+ Overloading `\@backslashchar#2'!\MessageBreak
+ scrlayer detected, that the given command\MessageBreak
+ has been defined already, when\MessageBreak
+ `#1' tried to define it again.\MessageBreak
+ Nevertheless, while scrlayer is in force overwrite\MessageBreak
+ mode currently, the original definition will be\MessageBreak
+ removed%
+ }%
+ \expandafter\let\csname #2\endcsname\relax
+ \scrlayer@AddCsToInterface[#1]{#2}#3%
+ \else
+ \PackageError{scrlayer}{cannot define `\@backslashchar#2'}{%
+ scrlayer interface `#1' has tried to
+ define command\MessageBreak
+ `\@backslashchar#2', but this has already been defined\MessageBreak
+ and is not part of another interface. So it cannot be
+ defined.\MessageBreak
+ Before continuing you should solve this conflict.\MessageBreak
+ Nevertheless, you may use option `forceoverwrite' to get only a
+ warning instead\MessageBreak
+ of an error. But this wouldn't solve the problem at
+ all!\MessageBreak
+ This error is almost fatal, so you should abort the LaTeX
+ run.%
+ }%
+ \fi
+ }{%
+ \ifscrlayer@autoremoveinterfaces
+ \PackageInfo{scrlayer}{%
+ already define interface command\MessageBreak
+ `\@backslashchar#2' detected.\MessageBreak
+ Command has been defined by interface\MessageBreak
+ `\@nameuse{scrlayer@command@#2}'.\MessageBreak
+ To continue installation of interface\MessageBreak
+ `#1', interface\MessageBreak
+ `\@nameuse{scrlayer@command@#2}' will\MessageBreak
+ be removed%
+ }%
+ \@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@onremove}%
+ \begingroup
+ \def\@elt##1{%
+ \aftergroup\let\aftergroup##1\aftergroup\relax
+ }%
+ \@nameuse{scrlayer@\@nameuse{scrlayer@command@#2}@commandlist}%
+ \endgroup
+ \expandafter\let\csname
+ scrlayer@\@nameuse{scrlayer@command@#2}@commandlist\endcsname\relax
+ \expandafter\let\csname
+ scrlayer@\@nameuse{scrlayer@command@#2}@onremove\endcsname\relax
+ \expandafter\let\csname #2\endcsname\relax
+ \scrlayer@AddCsToInterface[#1]{#2}#3%
+ \else
+ \PackageError{scrlayer}{cannot define `\@backslashchar#2'}{%
+ Interface command `\@backslashchar#2' has already
+ been\MessageBreak
+ defined by interface
+ `\@nameuse{scrlayer@command@#2}'.\MessageBreak
+ So it cannot be defined again.\MessageBreak
+ You may try scrlayer option `autoremoveinterfaces' to
+ automatically remove\MessageBreak
+ older interfaces in such conflict situations.\MessageBreak
+ For now, it's recommended so solve the problem before you'll
+ continue.%
+ }%
+ \fi
+ }%
+ }%
+ }%
+}%
+% \end{macrocode}
+% \begin{macro}{\scrlayer@AddCsToInterface}
+% Little helper, to avoid repeating this \Macro{expandafter} orgy.
+% \begin{description}
+% \item[\OParameter{string}:] the interface name (must be expandable and
+% expand to a string)
+% \item[\Parameter{command sequence}] the command sequence of the command to
+% be added.
+% \end{description}
+% \begin{macrocode}
+\newcommand*\scrlayer@AddCsToInterface[2][\@currname.\@currext]{%
+ \expandafter\expandafter\expandafter\def\expandafter
+ \csname scrlayer@#1@commandlist\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \csname scrlayer@#1@commandlist\expandafter\endcsname
+ \expandafter\@elt\csname #2\endcsname
+ }%
+ \@namedef{scrlayer@command@#2}{#1}%
+}
+%</package&body>
+% \end{macrocode}
+% \begin{option}{forceoverwrite}
+% \begin{macro}{\ifscrlayer@forceoverwrite}
+% \begin{description}
+% \item[\Parameter{simple switch}:] whether or not to overwrite already
+% defined command. Note: If true, there will still be a warning.
+% \end{description}
+% \begin{macrocode}
+%<*options>
+%<*package>
+\KOMA@ifkey{forceoverwrite}{scrlayer@forceoverwrite}
+%</package>
+%<*interface>
+\KOMA@key{forceoverwrite}[true]{%
+ \KOMA@set@ifkey{forceoverwrite}{scrlayer@forceoverwrite}{#1}%
+ \KOMA@kav@replacebool{.scrlayer.sty}{forceoverwrite}{scrlayer@forceoverwrite}%
+}
+%</interface>
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @forceoverwrite\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @forceoverwrite@default\endcsname\relax
+%</interface&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@forceoverwrite
+% \end{option}^^A forceoverwrite
+%
+% \begin{option}{autoremoveinterfaces}
+% \begin{macro}{\ifscrlayer@autoremoveinterfaces}
+% \begin{description}
+% \item[\Parameter{simple switch}:] whether or not older interfaces may be
+% automatically removed in conflict cases.
+% \end{description}
+% \begin{macrocode}
+%<*options>
+%<*package>
+\KOMA@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}
+%</package>
+%<*interface>
+\KOMA@key{autoremoveinterfaces}[true]{%
+ \KOMA@set@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}{#1}%
+ \KOMA@kav@replacebool{.scrlayer.sty}{autoremoveinterfaces}
+ {scrlayer@autoremoveinterfaces}%
+}
+%</interface>
+%</options>
+%<*interface&body>
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces\endcsname\relax
+\expandafter\let
+ \csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces@default\endcsname
+ \relax
+%</interface&body>
+% \end{macrocode}
+% \end{macro}^^A \ifscrlayer@autoremoveinterfaces
+% \end{option}^^A autoremoveinterfaces
+% \end{macro}^^A \scrlayer@AddCsToInterface
+% \end{macro}^^A \scrlayerAddCsToInterface
+% \end{macro}^^A \scrlayerAddToInterface
+%
+% \begin{macro}{\scrlayerInitInterface}
+% \begin{description}
+% \item[\OParameter{string}:] the name of the interface. Generally this is
+% the file name of the package or class, that defines the interface
+% (default: \texttt{\Macro{@currname}.\Macro{@currext}}).
+% \end{description}
+% This registers a new user interface.
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\scrlayerInitInterface}[1][\@currname.\@currext]{%
+ \@ifundefined{scrlayer@#1@commandlist}{%
+ \@namedef{scrlayer@#1@commandlist}{}%
+ }{%
+ \begingroup
+ \def\@elt##1{\space\space\string##1\MessageBreak}%
+ \PackageError{scrlayer}{interface `#1' already initialised}{%
+ You've tried to initialise scrlayer interface `#1',\MessageBreak
+ but an interface of this name has been initialised
+ already.\MessageBreak
+ Here's a list of all macros of the already initialised
+ interface:\MessageBreak
+ \@nameuse{scrlayer@#1@commandlist}.%
+ If you'll continue, this re-initialisation will be ignored.%
+ }%
+ \endgroup
+ }%
+}
+%</package&body>
+% \end{macrocode}
+% The initialisation has to be done by each interface package:
+% \begin{macrocode}
+%<interface&init>\scrlayerInitInterface
+% \end{macrocode}
+% \end{macro}^^A \scrlayerInitInterface
+%
+% \begin{macro}{\scrlayerOnAutoRemoveInterface}
+% \begin{description}
+% \item[\OParameter{string}:] the name of the interface. Generally this is
+% the file name of the package or class, that defines the interface
+% (default: \texttt{\Macro{@currname}.\Macro{@currext}}).
+% \item[\Parameter{code}:] will be executed if the interface will be removed
+% automatically (see option \Option{autoremoveinterfaces}).
+% \end{description}
+% \begin{macrocode}
+%<*package&body>
+\newcommand*{\scrlayerOnAutoRemoveInterface}[2][\@currname.\@currext]{%
+ \@ifundefined{scrlayer@#1@onremove}{\@namedef{scrlayer@#1@onremove}{}}{}%
+ \expandafter\l@addto@macro\csname scrlayer@#1@onremove\endcsname{#2}%
+}
+%</package&body>
+% \end{macrocode}
+% \end{macro}^^A \scrlayerOnAutoRemoveInterface
+%
+%
+% \iffalse^^A meta-comment
+%</package|interface|class>
+% \fi^^A meta-comment
+%
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrlayer.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% ispell-local-dictionary: "en_GB"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlfile.dtx b/macros/latex/contrib/koma-script/source/scrlfile.dtx
new file mode 100644
index 0000000000..a56dbe6266
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlfile.dtx
@@ -0,0 +1,965 @@
+% \CheckSum{772}
+% \iffalse^^A meta-comment
+% ======================================================================
+% scrlfile.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% This file is part of the work `scrlfile' which 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.
+% ----------------------------------------------------------------------
+% scrlfile.dtx
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% Diese Datei ist Teil des Werks `scrlfile', das wiederum Teil des
+% LaTeX2e KOMA-Script Pakets ist.
+%
+% 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.
+% ======================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrlfile.dtx 3011 2018-08-29 07:35:17Z kohm $
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-08-29 09:35:17 +0200 (Wed, 29 Aug 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2631 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlfile.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*dtx|scrlfile>
+%<scrlfile>\ProvidesPackage{scrlfile}[%
+%!KOMAScriptVersion
+%<scrlfile> package
+ (loading files)]
+%</dtx|scrlfile>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2002}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrlfile.sty}{%
+ \from{scrlfile.dtx}{scrlfile}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[german,english]{babel}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrlfile.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \thanks{This file is version \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm\thanks{mailto:komascript@gmx.info}~\thanks{Parts of
+ description sections of the documentation where written by Jens-Uwe
+ Morawski.}}
+
+\begin{document}
+ \maketitle
+ \begin{abstract}
+ This package provides hooks before and after loading files, packages or
+ classes. It also provides a hook after the last \cs{clearpage} of the
+ document. It allowes to replace files, packages and classes by other
+ files, packages and classes. It is inteded to be used by package and class
+ authors but may also be used by \LaTeX{} users.
+ \end{abstract}
+
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{english}
+%
+% \changes{v2.95}{2002/06/11}{First version split from hugh scrclass.dtx}^^A
+% \changes{v3.24}{2017/05/06}{standalone manual removed}^^A
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation of \textsf{scrlfile}}
+%
+% \iffalse
+%<*scrlfile>
+% \fi
+%
+% \subsection{Preamble}
+%
+% \changes{v3.24}{2017/05/06}{Preamble sub-section removed}^^A
+% Since \KOMAScript~3.24 we do not longer output version information into the
+% \texttt{log}-file.
+%
+% \subsection{Options}
+%
+% Currently there are no options.
+% \begin{macrocode}
+\ExecuteOptions{}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{The macros}
+%
+% \begin{macro}{\InputIfFileExists}
+% \changes{v2.96}{2006/07/19}{replacement code added}
+% \LaTeX{} uses this macro for loading files with
+% \cs{input}\marg{filename}, \cs{include}, \cs{LoadClass},
+% \cs{LoadClassWithOptions}, \cs{documentclass}, \cs{documentstyle},
+% \cs{RequirePackage}, \cs{usepackage}. Only
+% \cs{input}~\meta{filename} loads \meta{filename} without using
+% \cs{InputIfFileExists}.
+%
+% Because of this, it's very easy to add stuff before and after
+% loading a file. We simply change this macro and add to
+% macros\,---\,one before loading the file and one after loading the
+% file. But before we redefine the macro, we test, if the macro was
+% defined like we expected. \LaTeX{} will warn, if not.
+% \begin{macrocode}
+\CheckCommand{\InputIfFileExists}[2]{%
+ \IfFileExists{#1}%
+ {#2\@addtofilelist{#1}\@@input \@filef@und}}
+% \end{macrocode}
+% Now we can redefine the macro like described above:
+% \begin{macrocode}
+\renewcommand{\InputIfFileExists}[2]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1-@alias\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
+ \expandafter\@firstoftwo
+ \fi
+ {%
+ \expandafter\InputIfFileExists\expandafter{\csname
+ #1-@alias\endcsname}{#2}%
+ }%
+ {\IfFileExists{#1}{%
+ \scr@load@hook{before}{#1}%
+ #2\@addtofilelist{#1}%
+ \@@input \@filef@und
+ \scr@load@hook{after}{#1}%
+ }}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@loadwithoptions}
+% \changes{v2.96}{2006/07/19}{new redefinition}
+% \begin{macro}{\scr@loadwithoptions}
+% \changes{v2.96}{2006/07/19}{new helper macro}
+% \begin{macro}{\scr@@loadwithoptions}
+% \changes{v2.97a}{2007/03/07}{new helper macro}
+% \LaTeX{} uses this macro for loading classes and packages using
+% \cs{LoadClassWithOptions} or \cs{RequirePackageWithOptions}. We simply say
+% now: if the class or package should be replaced by another, try it again
+% with the replacement name. The stack is used. This will result in an
+% error if the replacements are nested too deep. This should be, because it
+% will also result in an error using ring replacements.
+% \begin{macrocode}
+\newcommand*{\scr@@loadwithoptions}{}
+\newcommand*{\scr@loadwithoptions}{}
+\let\scr@loadwithoptions\@loadwithoptions
+\renewcommand*{\@loadwithoptions}[3]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #3.#1-@aliasname\endcsname\relax
+ \def\scr@@loadwithoptions{\scr@loadwithoptions{#1}{#2}{#3}}%
+ \else
+ \scr@replacefile@msg{\csname #3.#1-@aliasname\endcsname.#1}{#3.#1}%
+ \def\scr@@loadwithoptions{%
+ \@loadwithoptions{#1}{#2}{\csname #3.#1-@aliasname\endcsname}%
+ }%
+ \fi
+ \scr@@loadwithoptions
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@onefilewithoption}
+% \changes{v2.96}{2006/07/19}{new redefinition}
+% \begin{macro}{\scr@onefilewithoption}
+% \changes{v2.96}{2006/07/19}{new helper macro}
+% \begin{macro}{\scr@@onefilewithoption}
+% \changes{v2.98}{2007/12/18}{new helper macro}
+% \LaTeX{} uses this macro for loading classes and packages using
+% \cs{LoadClass}, \cs{documentclass}, \cs{RequirePackage}, and
+% \cs{usepackage}. We simply say now: if the class or package should be
+% replaced by another, try it again with the replacement name. The stack is
+% used. This will result in an error if the replacements are nested too
+% deep. This should be, because it will also result in an error using ring
+% replacements.
+% \begin{macrocode}
+\newcommand*{\scr@onefilewithoptions}{}
+\let\scr@onefilewithoptions\@onefilewithoptions
+\def\@onefilewithoptions#1[#2][#3]#4{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname #1.#4-@aliasname\endcsname\relax
+% \end{macrocode}
+% Do this ridiculous definition and call outside of \cs{ifx}\dots\cs{fi}
+% because of some errornous packages like some versions of
+% \textsf{breakurl}. This does not avoid an error, but the message about
+% unclosed \cs{if} will be outside of \textsf{scrlfile}.
+% \begin{macrocode}
+ \def\scr@@onefilewithoptions{\scr@onefilewithoptions{#1}}%
+ \else
+ \scr@replacefile@msg{\csname #1.#4-@aliasname\endcsname.#4}{#1.#4}%
+ \edef\scr@@onefilewithoptions{%
+ \noexpand\@onefilewithoptions{\csname #1.#4-@aliasname\endcsname}}%
+ \fi
+ \scr@@onefilewithoptions[{#2}][{#3}]{#4}%
+ \scr@load@hook{lateafter}{#1.#4}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ReplaceInput}
+% \changes{v2.96}{2006/07/19}{new command}
+% \changes{v3.12}{2013/11/15}{implemented}
+% Defining the replacement by definition of \cs{\#1-@alias}.
+% \begin{macrocode}
+\newcommand*{\ReplaceInput}[2]{%
+ \expandafter\edef\csname #1-@alias\endcsname{#2}%
+}
+% \end{macrocode}
+% \begin{macro}{\ReplaceFile}
+% \changes{v2.96}{2006/07/19}{new command}
+% \changes{v3.12}{2013/11/15}{throw error}
+% Sorry, but I've implemented the wrong command some time ago.
+% \begin{macrocode}
+\newcommand*{\ReplaceFile}{%
+ \PackageError{scrlfile}{%
+ usage of not documented command `\string\ReplaceFile'%
+ }{%
+ Command `\string\ReplaceFile' has been implemented accidentally in
+ KOMA-Script 2.96\MessageBreak
+ and replaced by `\string\ReplaceInput' in KOMA-Script 3.12.\MessageBreak
+ You should replace `\string\ReplaceFile' by `\string\ReplaceInput' to
+ avoid this error\MessageBreak
+ message%
+ }%
+ \ReplaceInput
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\UnReplaceInput}
+% \changes{v3.12}{2013/11/15}{new command}
+% Do not longer replace a file.
+% \begin{macrocode}
+\newcommand*{\UnReplaceInput}[1]{%
+ \ifcsname #1-@alias\endcsname
+ \expandafter\let\csname #1-@alias\endcsname\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ReplacePackage}
+% \changes{v2.96}{2006/07/19}{new command}
+% \begin{macro}{\ReplaceClass}
+% \changes{v2.96}{2006/07/19}{new command}
+% \begin{macro}{\@replacefilewithext}
+% \changes{v2.96}{2006/07/19}{new helper command}^^A
+% Note that replacing a package or class will not replace the input of the
+% file of the package or class but only the input of package or class.
+% \begin{macrocode}
+\newcommand*{\@replacefilewithext}[3]{%
+ \expandafter\edef\csname #1.#3-@aliasname\endcsname{#2}%
+ }
+\newcommand*{\ReplacePackage}[2]{%
+ \@replacefilewithext{#1}{#2}\@pkgextension
+}
+\newcommand*{\ReplaceClass}[2]{%
+ \@replacefilewithext{#1}{#2}\@clsextension
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\UnReplacePackage}
+% \changes{v3.12}{2013/11/15}{new command}
+% \begin{macro}{\UnReplaceClass}
+% \changes{v3.12}{2013/11/15}{new command}
+% \begin{macro}{\@unreplacefilewithext}
+% \changes{v3.12}{2013/11/15}{new helper command}^^A
+% Do not nolonger replace a class or package.
+% \begin{macrocode}
+\newcommand*{\@unreplacefilewithext}[2]{%
+ \ifcsname #1.#2-@aliasname\endcsname
+ \expandafter\let\csname #1.#2-@aliasname\endcsname\relax
+ \fi
+}
+\newcommand*{\UnReplacePackage}[1]{%
+ \@unreplacefilewithext{#1}\@pkgextension
+}
+\newcommand*{\UnReplaceClass}[1]{%
+ \@unreplacefilewithext{#1}\@clsextension
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\scr@replacefile@msg}
+% \changes{v2.96}{2006/07/19}{new helper command}
+% \changes{v2.98}{2007/12/18}{spellfix}
+% Last but not least \textsf{scrlfile} will write a message to the log file at
+% every replacement.
+% \begin{macrocode}
+\newcommand*{\scr@replacefile@msg}[2]{%
+ \PackageInfo{scrlfile}{inputing `#1' instead of `#2'}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@load@hook}
+% This macro simply calls a load-file-hook, either the \emph{before}
+% or the \emph{after} one, if the hook exists. After calling the hook
+% it will be deleted. First argument is the type of hook
+% (\meta{before} or \meta{after}), second argument is a filename.
+% \begin{macrocode}
+\newcommand*{\scr@load@hook}[2]{%
+ \@ifundefined{#2-@#1}{}{%
+ \@nameuse{#2-@#1}%
+ \expandafter\let\csname #2-@#1\endcsname=\relax}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scr@set@load@hook}
+% This command adds stuff to a load-file-hook, either the
+% \emph{before} or the \emph{after} one. First argument is the type of
+% hook (\meta{before} or \meta{after}), second is a filename. There's
+% a third argument not parsed by the macro itself but
+% \cs{g@addto@macro}. This third argument is the stuff, which will be
+% added to the hook. Because of using \cs{g@addto@macro} the hook must
+% be defined. So we define it, if it isn't.
+% \begin{macrocode}
+\newcommand*{\scr@set@load@hook}[2]{%
+ \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}%
+ \expandafter\g@addto@macro\csname #2-@#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\BeforeFile}
+% \begin{macro}{\AfterFile}
+% \begin{macro}{\BeforeClass}
+% \begin{macro}{\AfterClass}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\AfterAtEndOfClass}
+% \begin{macro}{\@AfterClass}
+% \begin{macro}{\@@AfterClass}
+% \changes{v3.09}{2011/03/08}{new (internal)}
+% \begin{macro}{\@@@AfterClass}
+% \changes{v3.09}{2011/03/09}{new (internal)}
+% \begin{macro}{\@sAfterClass}
+% \begin{macro}{\BeforePackage}
+% \begin{macro}{\AfterPackage}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\AfterAtEndOfPackage}
+% \begin{macro}{\@AfterPackage}
+% \begin{macro}{\@@AfterPackage}
+% \changes{v3.09}{2011/03/08}{new (internal)}
+% \begin{macro}{\@@@AfterPackage}
+% \changes{v3.09}{2011/03/09}{new (internal)}
+% \begin{macro}{\@sAfterPackage}
+% These macros add stuff to a load-file-hook of a file, class or
+% package. First argument is the name of the file (with extension),
+% class (without extension) or package (without extension). There's a
+% second argument parsed by wether the macros themself nor
+% \cs{scr@set@load@hook} but \cs{g@addto@macro}. See
+% \cs{scr@set@load@hook} for more information. The star-forms
+% \cs{AfterClass*} and \cs{AfterPackage*} does the action immediate,
+% if the class or package was already loaded.
+% \begin{macrocode}
+\newcommand*{\BeforeFile}{\scr@set@load@hook{before}}
+\newcommand*{\AfterFile}{\scr@set@load@hook{after}}
+\newcommand*{\BeforeClass}[1]{%
+ \scr@set@load@hook{before}{#1.\@clsextension}}
+\newcommand*{\AfterClass}{%
+ \kernel@ifstar {\@sAfterClass}{%
+ \kernel@ifnextchar +\@@AfterClass{%
+ \kernel@ifnextchar !\@@@AfterClass\@AfterClass
+ }%
+ }%
+}
+\newcommand*{\@@@AfterClass}[2]{%
+ \begingroup\ifx\csname #2.\@clsextension-h@@k\endcsname\relax
+ \aftergroup\@sAfterClass
+ \else
+ \aftergroup\AfterAtEndOfClass
+ \fi
+ \endgroup{#2}%
+}
+\newcommand*{\AfterAtEndOfClass}[1]{%
+ \scr@set@load@hook{lateafter}{#1.\@clsextension}}
+\newcommand*{\@@AfterClass}[2]{%
+ \begingroup
+ \expandafter\ifx\csname #2.\@clsextension-h@@k\endcsname\relax
+ \aftergroup\@sAfterClass
+ \else
+ \aftergroup\@AfterClass
+ \fi
+ \endgroup{#2}%
+}
+\newcommand*{\@AfterClass}[1]{%
+ \scr@set@load@hook{after}{#1.\@clsextension}}
+\newcommand*{\@sAfterClass}[1]{%
+ \begingroup
+ \@ifclassloaded{#1}{%
+ \aftergroup\@secondoftwo
+ }{%
+ \aftergroup\@AfterClass
+ }%
+ \endgroup
+ {#1}%
+}
+\newcommand*{\BeforePackage}[1]{%
+ \scr@set@load@hook{before}{#1.\@pkgextension}}
+\newcommand*{\AfterPackage}{%
+ \kernel@ifstar {\@sAfterPackage}{%
+ \kernel@ifnextchar +\@@AfterPackage{%
+ \kernel@ifnextchar !\@@@AfterPackage\@AfterPackage
+ }%
+ }%
+}
+\newcommand*{\@@@AfterPackage}[2]{%
+ \begingroup\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax
+ \aftergroup\@sAfterPackage
+ \else
+ \aftergroup\AfterAtEndOfPackage
+ \fi
+ \endgroup{#2}%
+}
+\newcommand*{\AfterAtEndOfPackage}[1]{%
+ \scr@set@load@hook{lateafter}{#1.\@pkgextension}}
+\newcommand*{\@@AfterPackage}[2]{%
+ \begingroup
+ \expandafter\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax
+ \aftergroup\@sAfterPackage
+ \else
+ \aftergroup\@AfterPackage
+ \fi
+ \endgroup{#2}%
+}
+\newcommand*{\@AfterPackage}[1]{%
+ \scr@set@load@hook{after}{#1.\@pkgextension}}
+\newcommand*{\@sAfterPackage}[1]{%
+ \begingroup
+ \@ifpackageloaded{#1}{%
+ \aftergroup\@secondoftwo
+ }{%
+ \aftergroup\@AfterPackage
+ }%
+ \endgroup
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\PreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% \changes{v3.11a}{2012/06/13}{write fault error in \cs{MessageBreak} fixed}
+% \changes{v3.12}{2012/06/15}{new star version allowes empty argument with
+% info instead of warning}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@PreventPackageFromLoading}
+% \changes{v3.12}{2012/06/15}{New (internal)}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@PreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New (internal)}^^A
+% \changes{v3.12}{2013/11/22}{\cs{usepackage} before \cs{documentclass}
+% fixed}^^A
+% \begin{macro}{\scrlfile@excludedpackages}
+% \changes{v3.08}{2010/11/04}{New (internal)}^^A
+% \begin{macro}{\scrlfile@saved@RequirePackage}
+% \changes{v3.08}{2010/11/04}{New (internal)}^^A
+% \begin{macrocode}
+\newcommand*{\scrlfile@excludedpackages}{}
+\let\scrlfile@excludedpackages\@empty
+\newcommand*{\scrlfile@saved@RequirePackage}{}
+\newcommand*{\PreventPackageFromLoading}{%
+ \kernel@ifstar{\@PreventPackageFromLoading\PackageInfo}%
+ {\@PreventPackageFromLoading\PackageWarning}%
+}
+\newcommand*{\@PreventPackageFromLoading}[1]{%
+ \kernel@ifnextchar [%]
+ {\@@PreventPackageFromLoading#1}{\@@PreventPackageFromLoading#1[]}%
+}
+\newcommand*{\@@PreventPackageFromLoading}{}
+\def\@@PreventPackageFromLoading#1[#2]#3{%
+% \end{macrocode}
+% We do nothing, if the argument was empty:
+% \begin{macrocode}
+ \edef\reserved@b{\zap@space#3 \@empty}%
+ \ifx \reserved@b\@empty
+ #1{scrlfile}{%
+ \string\PreventPackageFromLoading\space with empty packages\MessageBreak
+ argument ignored%
+ }%
+ \else
+% \end{macrocode}
+% If the argument was not empty we first need to patch \cs{RequirePackage} and
+% maybe \cs{usepackage} too.
+% \begin{macrocode}
+ \ifx\scrlfile@excludedpackages\@empty
+ \let\scrlfile@saved@RequirePackage\RequirePackage
+ \let\RequirePackage\scrlfile@RequirePackage
+ \def\reserved@a##1##{%
+ \@latex@error
+ {\noexpand \usepackage before \string\documentclass}%
+ {\noexpand \usepackage may only appear in the document
+ preamble, i.e.,\MessageBreak
+ between \noexpand\documentclass and
+ \string\begin{document}.}%
+ \@gobble}%
+ \ifx\reserved@a\usepackage\else
+ \ifx\usepackage\scrlfile@saved@RequirePackage\else
+ \PackageWarning{scrlfile}{%
+ Maybe serious problem: unexpected definition of\MessageBreak
+ \string\usepackage
+ }%
+ \fi
+ \let\usepackage\RequirePackage
+ \fi
+ \fi
+% \end{macrocode}
+% We have to test, if a package was already loaded. Only not yet loaded
+% packages will be added to the exclusion list. Empty arguments will be
+% ignored.
+% \changes{v3.11a}{2012/06/11}{missing \cs{scrlfile@excludedpackages} at
+% redefinition of \cs{scrlfile@excludedpackages} added}^^A
+% \changes{v3.26}{2018/08/29}{spurious \cs{expandafter} removed}^^A
+% \begin{macrocode}
+ \@for\reserved@a:=\reserved@b\do {%
+ \ifx\reserved@a\@empty
+ #1{scrlfile}{%
+ empty package argument for
+ \string\PreventPackageFromLoading\MessageBreak
+ ignored%
+ }%
+ \else
+ \expandafter\@ifpackageloaded\expandafter{\reserved@a}{%
+ #1{scrlfile}{%
+ package `\reserved@a' already loaded.\MessageBreak
+ Cannot prevent it from beeing loaded%
+ }%
+ }{%
+ \edef\scrlfile@excludedpackages{\scrlfile@excludedpackages,%
+ \reserved@a}%
+ \if\relax\detokenize{#2}\relax\else
+ \@ifundefined{scrlfile@exclude@package@\reserved@a @do}{%
+ \@namedef{scrlfile@exclude@package@\reserved@a @do}{}%
+ }{}%
+ \expandafter\def
+ \csname scrlfile@exclude@package@\reserved@a
+ @do\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \csname scrlfile@exclude@package@\reserved@a @do\endcsname
+ #2%
+ }%
+ \fi
+ }%
+ \fi
+ }%
+% \end{macrocode}
+% If the exclusion list is still empty (because all packages has been loaded
+% already), remove the patch:
+% \begin{macrocode}
+ \ifx\scrlfile@excludedpackages\@empty
+ \ResetPreventPackageFromLoading
+ \fi
+ \fi
+}
+\@onlypreamble\PreventPackageFromLoading
+% \end{macrocode}
+% \begin{macro}{\ResetPreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% \begin{macro}{\StorePreventPackageFromLoading}
+% \changes{v3.08}{2010/11/04}{New}
+% These two are very simple
+% \begin{macrocode}
+\newcommand*{\ResetPreventPackageFromLoading}{%
+ \let\scrlfile@excludedpackages\@empty
+ \ifx\RequirePackage\scrlfile@RequirePackage
+ \ifx\usepackage\RequirePackage
+ \let\usepackage\scrlfile@saved@RequirePackage
+ \fi
+ \let\RequirePackage\scrlfile@saved@RequirePackage
+ \fi
+}
+\@onlypreamble\ResetPreventPackageFromLoading
+\newcommand*{\StorePreventPackageFromLoading}[1]{%
+ \let#1\scrlfile@excludedpackages
+}
+\@onlypreamble\StorePreventPackageFromLoading
+% \end{macrocode}
+% \begin{macro}{\UnPreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@UnPreventPackageFromLoading}
+% \changes{v3.12}{2013/11/22}{New (internal)}^^A
+% This removes packages from the prevent exclude list. The star variant also
+% undefines the instead code.
+% \begin{macrocode}
+\newcommand*{\UnPreventPackageFromLoading}{%
+ \kernel@ifstar {\@tempswatrue\@UnPreventPackageFromLoading}%
+ {\@tempswafalse\@UnPreventPackageFromLoading}%
+}
+\newcommand*{\@UnPreventPackageFromLoading}[1]{%
+ \edef\reserved@b{\zap@space#1 \@empty}%
+ \if@tempswa
+ \@for\reserved@a:=\reserved@b\do {%
+ \ifx\reserved@a\@empty \else
+ \ifcsname scrlfile@exclude@package@\reserved@a @do\endcsname
+ \expandafter\let
+ \csname scrlfile@exclude@package@\reserved@a @do\endcsname
+ \undefined
+ \fi
+ \fi
+ }%
+ \fi
+ \ifcsname scrlfile@excludedpackages\endcsname
+ \let\reserved@a\scrlfile@excludedpackages
+ \let\scrlfile@excludedpackages\@empty
+ \expandafter\@for\expandafter\reserved@c
+ \expandafter:\expandafter=\reserved@a
+ \do{%
+ \ifx\reserved@c\@empty\else
+ \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}%
+ \ifin@
+ \else
+ \edef\scrlfile@excludedpackages{%
+ \scrlfile@excludedpackages,\reserved@c
+ }%
+ \fi
+ \fi
+ }%
+ \ifx\scrlfile@excludedpackages\@empty\ResetPreventPackageFromLoading\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scrlfile@RequirePackage}
+% \changes{v3.08}{2010/11/04}{New (internal)}
+% \changes{v3.12}{2013/11/22}{tolerate spaces}
+% \changes{v3.12}{2013/11/22}{execute the optional argument of
+% \cs{PreventPackageFromLoading}}
+% This macro will replace \cs{RequirePackage} whenever the exlude list is not
+% empty
+% \begin{macrocode}
+\newcommand*{\scrlfile@RequirePackage}[2][]{%
+ \let\reserved@c\@empty
+ \let\reserved@d\@empty
+ \edef\reserved@b{\zap@space#2 \@empty}%
+ \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b
+ \do {%
+ \begingroup
+ \@tempswatrue
+ \@for\reserved@a:=\scrlfile@excludedpackages\do {%
+ \ifx\reserved@a\reserved@b
+ \@tempswafalse
+ \fi
+ }%
+ \if@tempswa
+ \xdef\reserved@c{\reserved@c,\reserved@b}%
+ \else
+ \ifx\reserved@b\@empty\else
+ \PackageInfo{scrlfile}{Excluding package `\reserved@b'\MessageBreak
+ from loading}%
+ \@ifundefined{scrlfile@exclude@package@\reserved@b @do}{%
+ }{%
+ \expandafter\g@addto@macro\expandafter\reserved@d
+ \csname scrlfile@exclude@package@\reserved@b @do\endcsname
+ }%
+ \fi
+ \fi
+ \endgroup
+ }%
+ \ifx\reserved@c\@empty
+ \let\reserved@a\scr@gobbleopt
+ \else
+ \edef\reserved@a{\noexpand\scrlfile@saved@RequirePackage[#1]{%
+ \expandafter\@gobble\reserved@c\@empty}}%
+ \fi
+ \expandafter\reserved@d
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@gobbleopt}
+% \changes{v3.08}{2010/11/04}{New (internal)}
+% \changes{v3.08a}{2011/02/11}{\cs{@gobbleopt} renamed due to compaibility
+% problems with \texttt{ntheorem}}
+% Eat the optional argument if it exists.
+% \begin{macrocode}
+\newcommand{\scr@gobbleopt}[1][]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kernel@ifstar}
+% \changes{v3.20}{2016/04/12}{New (internal)}
+% I hope, the \LaTeX{} kernel will define this command in future. But
+% nevertheless, there are \LaTeX{} kernels in real live without this
+% command. So I do it again if needed:
+% \begin{macrocode}
+\providecommand*\kernel@ifstar[1]{\kernel@ifnextchar*{\@firstoftwo{#1}}}
+% \end{macrocode}
+% \end{macro}^^A \kernel@ifstar
+%
+% \begin{macro}{\BeforeClosingMainAux}
+% \changes{v2.95}{2002/09/03}{new}
+% \begin{macro}{\AfterReadingMainAux}
+% \changes{v3.03}{2009/03/25}{new}
+% These are completly different. First we have to establish a new hook
+% at \cs{end\{document\}}, just after closing the group and after the
+% final \cs{clearpage}.
+% \begin{macrocode}
+\AtEndDocument{%
+ \let\scr@saved@checkend=\@checkend
+ \renewcommand*{\@checkend}[1]{%
+ \def\reserved@a{#1}\def\reserved@b{document}%
+ \scr@saved@checkend{#1}%
+ \ifx\reserved@a\reserved@b
+ \let\scr@saved@clearpage=\clearpage
+ \renewcommand*{\clearpage}{\scr@saved@clearpage
+ \scr@hook@bcma
+ \scr@restore@newpage
+ \let\clearpage=\scr@saved@clearpage}%
+ \fi%
+ \let\scr@saved@dofilelist\@dofilelist
+ \def\@dofilelist{%
+ \scr@hook@acma
+ \let\@dofilelist\scr@saved@dofilelist
+ \scr@saved@dofilelist
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@saved@checkend}
+% \changes{v2.95}{2002/09/03}{new (internal)}
+% \begin{macro}{\scr@saved@dofilelist}
+% \changes{v3.03}{2009/03/25}{new}
+% You may see above, that we need save-to macros.
+% \begin{macrocode}
+\newcommand*{\scr@saved@checkend}{}
+\newcommand*{\scr@saved@dofilelist}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@redefine@newpage}
+% \changes{v3.00}{2008/07/09}{new (internal)}
+% Some classes (e.g. \textsf{letter}) write output to the aux file.
+% Because of this, redefinition of \cs{newpage} will only be done, if
+% \cs{BeforeClosingMainAux} is used.
+% \begin{macro}{\scr@saved@newpage}
+% \changes{v3.00}{2008/07/09}{new (internal)}
+% And \cs{newpage} will be restored after the hook.
+% \begin{macro}{\scr@restore@newpage}
+% \begin{macrocode}
+\newcommand*{\scr@redefine@newpage}{%
+ \let\scr@saved@newpage\newpage
+ \def\scr@restore@newpage{%
+ \renewcommand*{\newpage}{%
+ \PackageWarningNoLine{%
+ scrlfile%
+ }{%
+ \string\newpage\space at main aux file!\MessageBreak
+ You have output material at the main aux file.\MessageBreak
+ Note, that the \string\BeforeClosingMainAux\space commands\MessageBreak
+ are processed before the output from aux file%
+ }%
+ \let\newpage\scr@saved@newpage
+ \newpage
+ }%
+ }%
+ \renewcommand*{\newpage}{%
+ \PackageError{%
+ scrlfile%
+ }{%
+ \string\newpage\space at \string\BeforeClosingMainAux
+ }{%
+ You should never use \string\newpage\space or
+ \string\clear(double)page or other output material at the\MessageBreak
+ argument of \string\BeforeClosingMainAux!\MessageBreak
+ If you'll continue, the \string\newpage\space will be ignored to
+ avoid corruption of\MessageBreak
+ every prior use of \string\BeforeClosingMainAux.
+ }%
+ }%
+}
+\newcommand*{\scr@restore@newpage}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\scr@hook@bcma}
+% \changes{v2.95}{2002/09/03}{new (internal)}
+% \begin{macro}{\scr@hook@acma}
+% \changes{v3.03}{2009/03/25}{new (internal)}
+% We also need macros, that saves the commands at the hooks and are
+% extendable using \cs{g@addto@macro}.
+% \begin{macrocode}
+\newcommand*{\scr@hook@bcma}{}
+\newcommand*{\scr@hook@acma}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Now we are able to write the user command. Here we also warn, if we detect
+% one more \cs{newpage}\,---\,maybe at a \cs{clearpage} or
+% \cs{cleardoublepage}.
+% \begin{macrocode}
+\newcommand*{\BeforeClosingMainAux}{%
+ \ifx\scr@hook@bcma\@empty
+ \gdef\scr@hook@bcma{%
+ \renewcommand*{\BeforeClosingMainAux}[1]{####1}%
+ \let\protected@write\protected@immediate@write
+ \scr@redefine@newpage
+ }%
+ \fi
+ \g@addto@macro\scr@hook@bcma%
+}
+\newcommand*{\AfterReadingMainAux}{%
+ \ifx\scr@hook@acma\@empty
+ \gdef\scr@hook@acma{%
+ \renewcommand*{\AfterReadingMainAux}[1]{####1}%
+ \let\protected@write\protected@immediate@write
+ }%
+ \fi
+ \g@addto@macro\scr@hook@acma%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\protected@immediate@write}
+% Like \LaTeX{} kernel's |\protected@write| but using |\immediate\write|. In
+% this case it is even not a good idea to protect |\thepage|!
+% \begin{macrocode}
+\long\def\protected@immediate@write#1#2#3{%
+ \begingroup
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write#1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+% \iffalse
+%</scrlfile>
+%<*load>
+% Used at \KOMAScript{} classes.
+% \begin{macrocode}
+\RequirePackage{scrlfile}[%
+%!KOMAScriptVersion
+]
+% \end{macrocode}
+%</load>
+% \fi
+%
+\endinput
+%
+% end of file `scrlfile.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrlogo.dtx b/macros/latex/contrib/koma-script/source/scrlogo.dtx
new file mode 100644
index 0000000000..14c5f0b6c9
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrlogo.dtx
@@ -0,0 +1,125 @@
+% \CheckSum{9}
+% \iffalse meta-comment
+% ======================================================================
+% scrlogo.dtx
+% Copyright (c) Markus Kohm, 2002-2017
+%
+% 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 the file `scrlogo.dtx' at least.
+% ----------------------------------------------------------------------
+% scrlogo.dtx
+% Copyright (c) Markus Kohm, 2002-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 mindestens aus der Datei `scrlogo.dtx'.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrlogo.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<*dtx>
+% \fi
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2631 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrlogo.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source (Logo)]
+ }%
+\reserved@a
+% \iffalse
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrlogo.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*logo>
+% \fi
+%
+% \section{\KOMAScript{} Logo}
+%
+% \begin{macro}{\KOMAScript}
+% Das \KOMAScript-Logo wird in allen \KOMAScript-Paketen und -Klassen
+% definiert, falls es nicht bereits definiert ist. Dabei werden die
+% Versalien moderat gesperrt. Es wird jedoch darauf verzichtet, die
+% Versalien etwa einen Punkt kleiner zu setzen, da das Logo aktiv
+% ausgezeichnet erscheinen soll.
+% \begin{macrocode}
+\@ifundefined{KOMAScript}{%
+ \DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
+ M\kern.05em A\kern.1em-\kern.1em Script}}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+% \iffalse
+%</logo>
+% \fi
+%
+\endinput
+%
+% end of file `scrlogo.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrmain.ins b/macros/latex/contrib/koma-script/source/scrmain.ins
new file mode 100644
index 0000000000..a7ae3b1dbb
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrmain.ins
@@ -0,0 +1,496 @@
+% ======================================================================
+% scrmain.ins
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrmain.ins
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+
+% ---------- KOMA-Script default docstrip declarations -----------------
+
+\input scrdocstrip.tex
+\@@input scrkernel-version.dtx
+\@@input scrstrip.inc
+
+% ---------- File generation -------------------------------------------
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrextend.sty}{%
+ \from{scrextend.dtx}{package,extend,preidentify}%
+ \from{scrkernel-version.dtx}{package,extend}%
+ \from{scrextend.dtx}{package,extend,identify,prepare}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrkernel-sections.dtx}{package,extend,prepare}%
+ \from{scrkernel-compatibility.dtx}{package,extend,init}%
+% \from{scrkernel-typearea.dtx}{package,extend,init}%
+ \from{scrextend.dtx}{package,extend,option}%
+ \from{scrkernel-compatibility.dtx}{package,extend,option}%
+ \from{scrkernel-miscellaneous.dtx}{package,extend,option}%
+ \from{scrkernel-fonts.dtx}{package,extend,option}%
+% \from{scrkernel-typearea.dtx}{package,extend,option}%
+% \from{scrkernel-paragraphs.dtx}{package,extend,option}%
+ \from{scrkernel-title.dtx}{package,extend,option}%
+ \from{scrkernel-sections.dtx}{package,extend,option}%
+ \from{scrkernel-pagestyles.dtx}{package,extend,option}%
+ \from{scrkernel-floats.dtx}{package,extend,option}%
+ \from{scrkernel-footnotes.dtx}{package,extend,option}%
+% \from{scrkernel-listsof.dtx}{package,extend,option}%
+% \from{scrkernel-bibliography.dtx}{package,extend,option}%
+% \from{scrkernel-index.dtx}{package,extend,option}%
+ \from{scrkernel-listsandtabulars.dtx}{package,extend,option}%
+ \from{scrkernel-sections.dtx}{package,extend,execoption}%
+ \from{scrkernel-miscellaneous.dtx}{package,extend,execoption}%
+ \from{scrkernel-compatibility.dtx}{package,extend,body}%
+ \from{scrkernel-fonts.dtx}{package,extend,body}%
+% \from{scrkernel-typearea.dtx}{package,extend,body}%
+% \from{scrkernel-paragraphs.dtx}{package,extend,body}%
+ \from{scrkernel-title.dtx}{package,extend,body}%
+ \from{scrkernel-sections.dtx}{package,extend,body}%
+ \from{scrkernel-miscellaneous.dtx}{package,extend,body}%
+ \from{scrkernel-pagestyles.dtx}{package,extend,body}%
+ \from{scrkernel-floats.dtx}{package,extend,body}%
+ \from{scrkernel-footnotes.dtx}{package,extend,body}%
+% \from{scrkernel-listsof.dtx}{package,extend,body}%
+% \from{scrkernel-bibliography.dtx}{package,extend,body}%
+% \from{scrkernel-index.dtx}{package,extend,body}%
+ \from{scrkernel-listsandtabulars.dtx}{package,extend,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrbook.cls}{%
+ \from{scrkernel-version.dtx}{class,book}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{tocbasic.dtx}{class,load,chapter}%
+ \from{scrkernel-tocstyle.dtx}{class,book,prepare}%
+ \from{scrkernel-sections.dtx}{class,book,prepare}%
+ \from{scrkernel-compatibility.dtx}{class,book,init}%
+ \from{scrkernel-typearea.dtx}{class,book,init}%
+ \from{scrkernel-compatibility.dtx}{class,book,option}%
+ \from{scrkernel-miscellaneous.dtx}{class,book,option}%
+ \from{scrkernel-language.dtx}{class,book,option}%
+ \from{scrkernel-fonts.dtx}{class,book,option}%
+ \from{scrkernel-typearea.dtx}{class,book,options}%
+ \from{scrkernel-paragraphs.dtx}{class,book,option}%
+ \from{scrkernel-title.dtx}{class,book,option}%
+ \from{scrkernel-tocstyle.dtx}{class,book,option}%
+ \from{scrkernel-sections.dtx}{class,book,option}%
+ \from{scrkernel-pagestyles.dtx}{class,book,option}%
+ \from{scrkernel-floats.dtx}{class,book,option}%
+ \from{scrkernel-footnotes.dtx}{class,book,option}%
+ \from{scrkernel-listsof.dtx}{class,book,option}%
+ \from{scrkernel-bibliography.dtx}{class,book,option}%
+ \from{scrkernel-index.dtx}{class,book,option}%
+ \from{scrkernel-listsandtabulars.dtx}{class,book,option}%
+ \from{scrkernel-sections.dtx}{class,book,execoption}%
+ \from{scrkernel-miscellaneous.dtx}{class,book,execoption}%
+ \from{scrkernel-compatibility.dtx}{class,book,body}%
+ \from{scrkernel-fonts.dtx}{class,book,body}%
+ \from{scrkernel-language.dtx}{class,book,body}%
+ \from{scrkernel-typearea.dtx}{class,book,body}%
+ \from{scrkernel-paragraphs.dtx}{class,book,body}%
+ \from{scrkernel-title.dtx}{class,book,body}%
+ \from{scrkernel-tocstyle.dtx}{class,book,body}%
+ \from{scrkernel-tocstyle.dtx}{class,book,style,part}%
+ \from{scrkernel-tocstyle.dtx}{class,book,style,chapter}%
+ \from{scrkernel-tocstyle.dtx}{class,book,style,section}%
+ \from{scrkernel-tocstyle.dtx}{class,book,style,default}%
+ \from{scrkernel-sections.dtx}{class,book,body}%
+ \from{scrkernel-miscellaneous.dtx}{class,book,body}%
+ \from{scrkernel-pagestyles.dtx}{class,book,body}%
+ \from{scrlayer.dtx}{class,book,body}%
+ \from{scrkernel-floats.dtx}{class,book,body}%
+ \from{scrkernel-footnotes.dtx}{class,book,body}%
+ \from{scrkernel-listsof.dtx}{class,book,body}%
+ \from{scrkernel-bibliography.dtx}{class,book,body}%
+ \from{scrkernel-index.dtx}{class,book,body}%
+ \from{scrkernel-listsandtabulars.dtx}{class,book,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ \file{scrreprt.cls}{%
+ \from{scrkernel-version.dtx}{class,report}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{tocbasic.dtx}{class,load,chapter}%
+ \from{scrkernel-tocstyle.dtx}{class,report,prepare}%
+ \from{scrkernel-sections.dtx}{class,report,prepare}%
+ \from{scrkernel-compatibility.dtx}{class,report,init}%
+ \from{scrkernel-typearea.dtx}{class,report,init}%
+ \from{scrkernel-compatibility.dtx}{class,report,option}%
+ \from{scrkernel-miscellaneous.dtx}{class,report,option}%
+ \from{scrkernel-language.dtx}{class,report,option}%
+ \from{scrkernel-fonts.dtx}{class,report,option}%
+ \from{scrkernel-typearea.dtx}{class,report,options}%
+ \from{scrkernel-paragraphs.dtx}{class,report,option}%
+ \from{scrkernel-title.dtx}{class,report,option}%
+ \from{scrkernel-tocstyle.dtx}{class,report,option}%
+ \from{scrkernel-sections.dtx}{class,report,option}%
+ \from{scrkernel-pagestyles.dtx}{class,report,option}%
+ \from{scrkernel-floats.dtx}{class,report,option}%
+ \from{scrkernel-footnotes.dtx}{class,report,option}%
+ \from{scrkernel-listsof.dtx}{class,report,option}%
+ \from{scrkernel-bibliography.dtx}{class,report,option}%
+ \from{scrkernel-index.dtx}{class,report,option}%
+ \from{scrkernel-listsandtabulars.dtx}{class,report,option}%
+ \from{scrkernel-sections.dtx}{class,report,execoption}%
+ \from{scrkernel-miscellaneous.dtx}{class,report,execoption}%
+ \from{scrkernel-compatibility.dtx}{class,report,body}%
+ \from{scrkernel-fonts.dtx}{class,report,body}%
+ \from{scrkernel-language.dtx}{class,report,body}%
+ \from{scrkernel-typearea.dtx}{class,report,body}%
+ \from{scrkernel-paragraphs.dtx}{class,report,body}%
+ \from{scrkernel-title.dtx}{class,report,body}%
+ \from{scrkernel-tocstyle.dtx}{class,report,body}%
+ \from{scrkernel-tocstyle.dtx}{class,report,style,part}%
+ \from{scrkernel-tocstyle.dtx}{class,report,style,chapter}%
+ \from{scrkernel-tocstyle.dtx}{class,report,style,section}%
+ \from{scrkernel-tocstyle.dtx}{class,report,style,default}%
+ \from{scrkernel-sections.dtx}{class,report,body}%
+ \from{scrkernel-miscellaneous.dtx}{class,report,body}%
+ \from{scrkernel-pagestyles.dtx}{class,report,body}%
+ \from{scrlayer.dtx}{class,report,body}%
+ \from{scrkernel-floats.dtx}{class,report,body}%
+ \from{scrkernel-footnotes.dtx}{class,report,body}%
+ \from{scrkernel-listsof.dtx}{class,report,body}%
+ \from{scrkernel-bibliography.dtx}{class,report,body}%
+ \from{scrkernel-index.dtx}{class,report,body}%
+ \from{scrkernel-listsandtabulars.dtx}{class,report,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ \file{scrartcl.cls}{%
+ \from{scrkernel-version.dtx}{class,article}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{tocbasic.dtx}{class,load}%
+ \from{scrkernel-tocstyle.dtx}{class,article,prepare}%
+ \from{scrkernel-sections.dtx}{class,article,prepare}%
+ \from{scrkernel-compatibility.dtx}{class,article,init}%
+ \from{scrkernel-typearea.dtx}{class,article,init}%
+ \from{scrkernel-compatibility.dtx}{class,article,option}%
+ \from{scrkernel-miscellaneous.dtx}{class,article,option}%
+ \from{scrkernel-language.dtx}{class,article,option}%
+ \from{scrkernel-fonts.dtx}{class,article,option}%
+ \from{scrkernel-typearea.dtx}{class,article,options}%
+ \from{scrkernel-paragraphs.dtx}{class,article,option}%
+ \from{scrkernel-title.dtx}{class,article,option}%
+ \from{scrkernel-tocstyle.dtx}{class,article,option}%
+ \from{scrkernel-sections.dtx}{class,article,option}%
+ \from{scrkernel-pagestyles.dtx}{class,article,option}%
+ \from{scrkernel-floats.dtx}{class,article,option}%
+ \from{scrkernel-footnotes.dtx}{class,article,option}%
+ \from{scrkernel-listsof.dtx}{class,article,option}%
+ \from{scrkernel-bibliography.dtx}{class,article,option}%
+ \from{scrkernel-index.dtx}{class,article,option}%
+ \from{scrkernel-listsandtabulars.dtx}{class,article,option}%
+ \from{scrkernel-sections.dtx}{class,article,execoption}%
+ \from{scrkernel-miscellaneous.dtx}{class,article,execoption}%
+ \from{scrkernel-compatibility.dtx}{class,article,body}%
+ \from{scrkernel-fonts.dtx}{class,article,body}%
+ \from{scrkernel-language.dtx}{class,article,body}%
+ \from{scrkernel-typearea.dtx}{class,article,body}%
+ \from{scrkernel-paragraphs.dtx}{class,article,body}%
+ \from{scrkernel-title.dtx}{class,article,body}%
+ \from{scrkernel-tocstyle.dtx}{class,article,body}%
+ \from{scrkernel-tocstyle.dtx}{class,article,style,part}%
+ \from{scrkernel-tocstyle.dtx}{class,article,style,section}%
+ \from{scrkernel-tocstyle.dtx}{class,article,style,subsection}%
+ \from{scrkernel-tocstyle.dtx}{class,article,style,default}%
+ \from{scrkernel-sections.dtx}{class,article,body}%
+ \from{scrkernel-miscellaneous.dtx}{class,article,body}%
+ \from{scrkernel-pagestyles.dtx}{class,article,body}%
+ \from{scrlayer.dtx}{class,article,body}%
+ \from{scrkernel-floats.dtx}{class,article,body}%
+ \from{scrkernel-footnotes.dtx}{class,article,body}%
+ \from{scrkernel-listsof.dtx}{class,article,body}%
+ \from{scrkernel-bibliography.dtx}{class,article,body}%
+ \from{scrkernel-index.dtx}{class,article,body}%
+ \from{scrkernel-listsandtabulars.dtx}{class,article,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}%
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrsize10pt.clo}{%
+ \from{scrkernel-version.dtx}{clo,10pt}%
+ \from{scrkernel-fonts.dtx}{clo,10pt}%
+ \from{scrkernel-paragraphs.dtx}{clo,10pt}%
+ }%
+ \file{scrsize11pt.clo}{%
+ \from{scrkernel-version.dtx}{clo,11pt}%
+ \from{scrkernel-fonts.dtx}{clo,11pt}%
+ \from{scrkernel-paragraphs.dtx}{clo,11pt}%
+ }%
+ \file{scrsize12pt.clo}{%
+ \from{scrkernel-version.dtx}{clo,12pt}%
+ \from{scrkernel-fonts.dtx}{clo,12pt}%
+ \from{scrkernel-paragraphs.dtx}{clo,12pt}%
+ }%
+}%
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrfontsizes.sty}{%
+ \from{scrkernel-version.dtx}{package}%
+ \from{scrkernel-fonts.dtx}{package,generator,identify}%
+ \from{scrkernel-fonts.dtx}{package,generator,option}%
+ \from{scrkernel-fonts.dtx}{package,generator,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}%
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrlttr2.cls}{%
+ \from{scrkernel-version.dtx}{class,letter}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrkernel-compatibility.dtx}{class,letter,init}%
+ \from{scrkernel-typearea.dtx}{class,scrlttr2,init}%
+ \from{scrkernel-compatibility.dtx}{class,letter,option}%
+ \from{scrkernel-miscellaneous.dtx}{class,letter,option}%
+ \from{scrkernel-letterclassoptions.dtx}{class,letter,option}%
+ \from{scrkernel-language.dtx}{class,letter,option}%
+ \from{scrkernel-fonts.dtx}{class,letter,option}%
+ \from{scrkernel-variables.dtx}{class,letter,option}%
+ \from{scrkernel-pseudolengths.dtx}{class,letter,option}%
+ \from{scrkernel-typearea.dtx}{class,letter,options}%
+ \from{scrkernel-paragraphs.dtx}{class,letter,option}%
+ \from{scrkernel-pagestyles.dtx}{class,letter,option}%
+ \from{scrkernel-floats.dtx}{class,letter,option}%
+ \from{scrkernel-footnotes.dtx}{class,letter,option}%
+ \from{scrkernel-listsandtabulars.dtx}{class,letter,option}%
+ \from{scrkernel-notepaper.dtx}{class,letter,option}%
+ \from{scrkernel-circularletters.dtx}{class,letter,option}%
+ \from{scrkernel-miscellaneous.dtx}{class,letter,execoption}%
+ \from{scrkernel-compatibility.dtx}{class,letter,body}%
+ \from{scrkernel-fonts.dtx}{class,letter,body}%
+ \from{scrkernel-miscellaneous.dtx}{class,letter,body}%
+ \from{scrkernel-letterclassoptions.dtx}{class,letter,body}%
+ \from{scrkernel-language.dtx}{class,letter,body}%
+ \from{scrkernel-variables.dtx}{class,letter,body}%
+ \from{scrkernel-pseudolengths.dtx}{class,letter,body}%
+ \from{scrkernel-typearea.dtx}{class,letter,body}%
+ \from{scrkernel-paragraphs.dtx}{class,letter,body}%
+ \from{scrkernel-pagestyles.dtx}{class,letter,body}%
+ \from{scrkernel-floats.dtx}{class,letter,body}%
+ \from{scrkernel-footnotes.dtx}{class,letter,body}%
+ \from{scrkernel-listsandtabulars.dtx}{class,letter,body}%
+ \from{scrkernel-notepaper.dtx}{class,letter,body}%
+ \from{scrkernel-circularletters.dtx}{class,letter,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrletter.sty}{%
+ \from{scrkernel-version.dtx}{package,letter}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrkernel-miscellaneous.dtx}{package,letter,init}%
+ \from{scrkernel-compatibility.dtx}{package,letter,init}%
+ \from{scrkernel-typearea.dtx}{package,letter,init}%
+% \from{scrkernel-compatibility.dtx}{package,letter,option}%
+ \from{scrkernel-miscellaneous.dtx}{package,letter,option}%
+ \from{scrkernel-letterclassoptions.dtx}{package,letter,option}%
+ \from{scrkernel-language.dtx}{package,letter,option}%
+ \from{scrkernel-fonts.dtx}{package,letter,option}%
+ \from{scrkernel-variables.dtx}{package,letter,option}%
+ \from{scrkernel-pseudolengths.dtx}{package,letter,option}%
+% \from{scrkernel-typearea.dtx}{package,letter,option}%
+% \from{scrkernel-paragraphs.dtx}{package,letter,option}%
+ \from{scrkernel-pagestyles.dtx}{package,letter,option}%
+% \from{scrkernel-floats.dtx}{package,letter,option}%
+% \from{scrkernel-footnotes.dtx}{package,letter,option}%
+% \from{scrkernel-listsandtabulars.dtx}{package,letter,option}%
+ \from{scrkernel-notepaper.dtx}{package,letter,option}%
+ \from{scrkernel-circularletters.dtx}{package,letter,option}%
+ \from{scrkernel-miscellaneous.dtx}{package,letter,execoption}%
+% \from{scrkernel-compatibility.dtx}{package,letter,body}%
+ \from{scrkernel-fonts.dtx}{package,letter,body}%
+ \from{scrkernel-miscellaneous.dtx}{package,letter,body}%
+ \from{scrkernel-letterclassoptions.dtx}{package,letter,body}%
+ \from{scrkernel-language.dtx}{package,letter,body}%
+ \from{scrkernel-variables.dtx}{package,letter,body}%
+ \from{scrkernel-pseudolengths.dtx}{package,letter,body}%
+% \from{scrkernel-typearea.dtx}{package,letter,body}%
+% \from{scrkernel-paragraphs.dtx}{package,letter,body}%
+ \from{scrkernel-pagestyles.dtx}{package,letter,body}%
+% \from{scrkernel-floats.dtx}{package,letter,body}%
+% \from{scrkernel-footnotes.dtx}{package,letter,body}%
+% \from{scrkernel-listsandtabulars.dtx}{package,letter,body}%
+ \from{scrkernel-notepaper.dtx}{package,letter,body}%
+ \from{scrkernel-circularletters.dtx}{package,letter,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}%
+
+\generate{\usepreamble\defaultpreamble
+ \file{visualize.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,visualize,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,visualize,body}%
+ \from{scrkernel-notepaper.dtx}{lco,visualize,body}%
+ }%
+ \file{KOMAold.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,KOMAold,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,KOMAold,body}%
+ \from{scrkernel-notepaper.dtx}{lco,KOMAold,body}%
+ }%
+ \file{DIN.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,DIN,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,DIN,body}%
+ }%
+ \file{DINmtext.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,DINmoretext,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,DINmoretext,body}%
+ }%
+ \file{DIN5008A.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,5008,A,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,5008,A,body}%
+ }%
+ \file{DIN5008B.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,5008,B,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,5008,B,body}%
+ }%
+ \file{SN.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,SN,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,SN,body}%
+ }%
+ \file{SNleft.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,SwissLeft,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,SwissLeft,body}%
+ }%
+ \file{NF.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,NF,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,NF,body}%
+ }%
+ \file{UScommercial9.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,UScommercial9,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,UScommercial9,body}%
+ }%
+ \file{UScommercial9DW.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,UScommercial9DW,head}%
+ \from{scrkernel-letterclassoptions.dtx}{lco,UScommercial9DW,body}%
+ }%
+}%
+
+% \generate{\usepreamble\defaultpreamble
+% \file{USletter2w.lco}{%
+% \from{scrkernel-version.dtx}{trace}%
+% \from{scrkernel-letterclassoptions.dtx}{lco,USletter2w,head}%
+% \from{scrkernel-letterclassoptions.dtx}{lco,USletter2w,body}%
+% }%
+% }
+
+\generate{\usepreamble\defaultpreamble
+ \file{NipponEL.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Ni,EARLY,LOW,head}%
+ \from{japanlco.dtx}{lco,Ni,EARLY,LOW,body}%
+ }%
+ \file{NipponEH.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Ni,EARLY,HIGH,head}%
+ \from{japanlco.dtx}{lco,Ni,EARLY,HIGH,body}%
+ }%
+ \file{NipponLL.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Ni,LATE,LOW,head}%
+ \from{japanlco.dtx}{lco,Ni,LATE,LOW,body}%
+ }%
+ \file{NipponLH.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Ni,LATE,HIGH,head}%
+ \from{japanlco.dtx}{lco,Ni,LATE,HIGH,body}%
+ }%
+ \file{NipponRL.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Ni,RIGHT,LOW,head}%
+ \from{japanlco.dtx}{lco,Ni,RIGHT,LOW,body}%
+ }%
+ \file{KakuLL.lco}{%
+ \from{scrkernel-version.dtx}{trace}%
+ \from{japanlco.dtx}{lco,Kaku,LATE,LOW,head}%
+ \from{japanlco.dtx}{lco,Kaku,LATE,LOW,body}%
+ }%
+}%
+
+%\generate{\usepreamble\defaultpreamble
+% \file{scrhack.tex}{%
+% \from{scrhack.dtx}{manual}%
+% }%
+%}
+
+\generate{\usepreamble\defaultpreamble
+ \file{scrkbase.sty}{%
+ \from{scrkernel-version.dtx}{package,scrkbase}%
+ \from{scrkernel-basics.dtx}{package,prepare,koma}%
+ \from{scrkernel-basics.dtx}{package,option,koma}%
+ \from{scrkernel-fonts.dtx}{package,option,scrkbase}%
+ \from{scrlfile.dtx}{load}%
+ \from{scrkernel-basics.dtx}{package,body,koma}%
+ \from{scrkernel-fonts.dtx}{package,body,scrkbase}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}
+
+% --- additional package batches (maybe used with other classes, too) --
+
+\batchinput{scrkernel-typearea.dtx}% typearea.sty
+\batchinput{scrkernel-basics.dtx}% scrbase.sty
+\batchinput{scrhack.dtx}% scrhack.sty and the hak files
+\batchinput{scrtime.dtx}% scrtime.sty, scrdate.sty
+\batchinput{scrlfile.dtx}% scrlfile.sty
+\batchinput{scraddr.dtx}% scraddr.sty
+\batchinput{scrpage.dtx}% scrpage2.sty
+\batchinput{tocbasic.dtx}% tocbasic.sty
+\batchinput{scrlayer.dtx}% scrlayer.sty, scrlayer-scrpage.sty ...
+\batchinput{scrwfile.dtx}% scrwfile.sty
+\batchinput{scrjura.dtx}% scrjura.sty
+
+% ---------- end of docstrip process -----------------------------------
+
+\@@input scrstrop.inc
+
+\endbatchfile
+
+%
+% end of file `scrmain.ins'
+%%% Local Variables:
+%%% mode: TeX
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrpage.dtx b/macros/latex/contrib/koma-script/source/scrpage.dtx
new file mode 100644
index 0000000000..5d500bc36f
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrpage.dtx
@@ -0,0 +1,2260 @@
+% \CheckSum{2389}
+% \iffalse
+% ======================================================================
+% scrpage.dtx
+% Copyright (c) Markus Kohm, 1995-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.
+% ----------------------------------------------------------------------
+% scrpage.dtx
+% Copyright (c) Markus Kohm, 1995-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrpage.dtx 2640 2017-05-08 09:36:55Z kohm $
+%<scrpage>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-08 11:36:55 +0200 (Mon, 08 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2631 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrpage.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script package source
+ }%
+\reserved@a
+%</dtx>
+%<*dtx|scrpage>
+%<scrpage>\ProvidesPackage{scrpage2}[%
+%!KOMAScriptVersion
+%<scrpage> package
+ (page head and foot)]
+%</dtx|scrpage>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHFROM}{1995}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrpage2.sty}{%
+ \from{scrpage.dtx}{scrpage}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass{scrdoc}
+\usepackage[ngerman,english]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrpage.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}\thanks{This file has
+ revision number \fileversion, last revised \filedate.}}
+\date{\filedate}
+\author{Markus Kohm}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi
+%
+% \section{Page Layout Package}
+%
+% This is the \KOMAScript{} package \textsf{scrpage2}. You may find the user
+% documentation of this package in the English \KOMAScript{} guide,
+% \texttt{scrguien.pdf}, and in the German \KOMAScript{} guide,
+% \texttt{scrguide.pdf}.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+%
+% Currently this package doesn't share any code but the \KOMAScript{} logo
+% with other packages. So all the code of this package but the implementation
+% of the \KOMAScript{} logo is at this file and their is nor more code at this
+% file.
+%
+% \changes{v3.24}{2017/05/08}{warning about obsolete package added}
+% \begin{macrocode}
+%<*scrpage>
+\PackageWarning{scrpage2}{usage of obsolete package!\MessageBreak
+ Package `scrpage2' is obsolete.\MessageBreak
+ You should not longer use package `scrpage2'.\MessageBreak
+ You should replace usage of package `scrpage2'\MessageBreak
+ by `scrlayer-scrpage'}
+% \end{macrocode}
+% \changes{v1.1}{1995/06/27}{\cs{hbox to} changed into \cs{hb@xt@}.}
+% \changes{v2.2c}{2007/07/23}{a lot of \% added and removed}
+%
+% \subsection{Options}
+% \begin{option}{headinclude}
+% \changes{v2.3}{2008/12/08}{obsolete}%
+% \begin{option}{headexclude}
+% \changes{v2.3}{2008/12/08}{obsolete}%
+% \begin{option}{footinclude}
+% \changes{v2.3}{2008/12/08}{obsolete}%
+% \begin{option}{footexclude}
+% \changes{v2.3}{2008/12/08}{obsolete}%
+% \texttt{scrpage} has known some options. They are similar to the
+% old \KOMAScript{} classes. To work with and without the \KOMAScript{}
+% classes their definitions are not quite simple.
+% \begin{macrocode}
+\newcommand*{\@Pass@Obsolete@Option@To@Typearea}[1]{%
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@curroptions,}%
+ \ifin@
+ \PackageWarningNoLine{scrpage2}{%
+ deprecated passing option `\CurrentOption' to scrpage2.\MessageBreak
+ If you are using package typearea or\MessageBreak
+ a KOMA-Script class since version 3.00\MessageBreak
+ you may use `\string\KOMAoptions{#1}' and\MessageBreak
+ remove passing `\CurrentOption' to scrpage2%
+ }%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname KOMAoptions\endcsname\relax
+ \PassOptionsToPackage{#1}{typearea}%
+ \else
+ \KOMAoptions{#1}\csname relcalctypearea\endcsname
+ \fi
+ \fi
+}
+\DeclareOption{headinclude}{%
+ \@Pass@Obsolete@Option@To@Typearea{headinclude}%
+}
+\DeclareOption{headexclude}{%
+ \@Pass@Obsolete@Option@To@Typearea{headinclude=false}%
+}
+\DeclareOption{footinclude}{%
+ \@Pass@Obsolete@Option@To@Typearea{footinclude}%
+}
+\DeclareOption{footexclude}{%
+ \@Pass@Obsolete@Option@To@Typearea{footinclude=false}%
+}
+% \end{macrocode}
+% We do so, because we want so set |headinclude|, |footinclude| by
+% default at old version (see below)!
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% We have additional options designed for the additional interface.
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{New option}
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{New option}
+% There are documents where the head and foot should span not only the
+% text but also the marginpar. We have an option to do this at
+% initialization. This option corresponds with the option of package
+% \texttt{typearea} and the classes.
+% \begin{macro}{\if@mincl}
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% \changes{v2.2g}{2008/11/19}{Test fixed}
+% \begin{macrocode}
+\@ifundefined{@mincltrue}{\newif\if@mincl}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\DeclareOption{mpinclude}{\@mincltrue}
+\DeclareOption{mpexclude}{\@minclfalse}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% Other new options redefine macros, so we have to define them first.
+% \begin{macro}{\scr@headabove@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@headbelow@linethickness}
+% \changes{v2.0}{2001/03/30}{New}
+% \begin{macro}{\scr@footabove@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footbelow@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% These macros define the thickness of the line above and below the head
+% and the foot.
+% \begin{macrocode}
+\newcommand*{\scr@headabove@linethickness}{0pt}
+\newcommand*{\scr@headbelow@linethickness}{0pt}
+\newcommand*{\scr@footabove@linethickness}{0pt}
+\newcommand*{\scr@footbelow@linethickness}{0pt}
+% \end{macrocode}
+% \begin{macro}{\scr@headabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@headbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@headabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@headbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@footabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@footbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% Because we want to have the ``line definitions'' at one place, we
+% also define the length of the lines here. We have own length at to
+% be used at pagestyle \texttt{scrplain}.
+% \begin{macrocode}
+\newcommand*{\scr@headabove@linelength}{\@headwidth}
+\newcommand*{\scr@headbelow@linelength}{\@headwidth}
+\newcommand*{\scr@footabove@linelength}{\@footwidth}
+\newcommand*{\scr@footbelow@linelength}{\@footwidth}
+\newcommand*{\scrplain@headabove@linelength}{0pt}
+\newcommand*{\scrplain@headbelow@linelength}{0pt}
+\newcommand*{\scrplain@footabove@linelength}{0pt}
+\newcommand*{\scrplain@footbelow@linelength}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{headtopline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{headsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{footsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{footbotline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainheadtopline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainheadsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainfootsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainfootbotline}
+% \changes{v2.0}{2001/04/20}{New option}
+% The thickness can be set by four simple options:
+% \begin{macrocode}
+\DeclareOption{headtopline}{%
+ \renewcommand*{\scr@headabove@linethickness}{.4pt}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{headsepline}{%
+ \renewcommand*{\scr@headbelow@linethickness}{.4pt}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{footsepline}{%
+ \renewcommand*{\scr@footabove@linethickness}{.4pt}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{footbotline}{
+ \renewcommand*{\scr@footbelow@linethickness}{.4pt}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{plainheadtopline}{%
+ \renewcommand*{\scrplain@headabove@linelength}{\scr@headabove@linelength}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{plainheadsepline}{%
+ \renewcommand*{\scrplain@headbelow@linelength}{\scr@headbelow@linelength}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{plainfootsepline}{%
+ \renewcommand*{\scrplain@footabove@linelength}{\scr@footabove@linelength}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{plainfootbotline}{
+ \renewcommand*{\scrplain@footbelow@linelength}{\scr@footbelow@linelength}
+ \PassOptionsToPackage{footinclude}{typearea}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hfline@adjust}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{ilines}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{clines}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{olines}
+% \changes{v2.0f}{2001/06/23}{New}
+% At Version 2 lines may be inner adjusted (0), centered (1) or outer
+% adjusted (2):
+% \begin{macrocode}
+\newcommand*{\hfline@adjust}{1}
+\DeclareOption{ilines}{\renewcommand*{\hfline@adjust}{0}}
+\DeclareOption{clines}{\renewcommand*{\hfline@adjust}{1}}
+\DeclareOption{olines}{\renewcommand*{\hfline@adjust}{2}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{macro}
+%
+% \begin{option}{automark}
+% \changes{v2.0b}{2001/05/31}{use \cs{AtEndOfPackage} to run not yet
+% defined macro}
+% \begin{option}{manualmark}
+% \changes{v2.0b}{2001/05/31}{use \cs{AtEndOfPackage} to run not yet
+% defined macro}
+% \changes{v2.0i}{2001/08/17}{don't ignore oneside any longer}
+% At version 2 we want to distinguish between running headline and
+% static headline not only using different pagestyles. We do this with
+% options and commands. But here only the options are defined.
+% \begin{macrocode}
+\DeclareOption{automark}{%
+ \AtEndOfPackage{\if@twoside%
+ \if@chapter\automark[section]{chapter}%
+ \else\automark[subsection]{section}\fi%
+ \else%
+ \if@chapter\automark{chapter}\else\automark{section}\fi%
+ \fi}}
+\DeclareOption{manualmark}{\AtEndOfPackage{\manualmark}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{autoonesize}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{\if@autooneside}
+% \changes{v2.0i}{2001/08/17}{New}
+% If the optional argument of \cs{automark} should be irgnored at
+% onside mode, use this option:
+% \begin{macrocode}
+\newif\if@autooneside\@autoonesidefalse
+\DeclareOption{autooneside}{\@autoonesidetrue}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{markuppercase}
+% \changes{v2.0c}{2001/06/07}{New}
+% \begin{option}{markusedcase}
+% \changes{v2.0c}{2001/06/07}{New}
+% For use of running headlines there are also options to say ``class
+% uses upper case at the automatic marks'' or ``class use same case at
+% the automatic marks like used writing the heading''.
+% \begin{macrocode}
+\DeclareOption{markuppercase}{\let\MakeMarkcase\MakeUppercase}
+\DeclareOption{markusedcase}{\let\MakeMarkcase\@empty}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{macro}{\scr@nouppercase}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{option}{nouppercase}
+% \changes{v2.0j}{2001/08/18}{New}
+% Sometimes scrpage may be used with a class, which uses
+% \cs{uppercase} or \cs{MakeUppercase} at \cs{markboth} or
+% \cs{markright}. But the author does not want upper case at the
+% headlines. So we define an option, that simply deaktivates
+% \cs{uppercase} and \cs{MakeUppercase} at all heads and foots,
+% defined by scrpage2.
+% \begin{macrocode}
+\newcommand*{\scr@nouppercase}{}
+\DeclareOption{nouppercase}{\renewcommand*{\scr@nouppercase}{%
+ \let\uppercase\relax\let\MakeUppercase\relax
+ \expandafter\let\csname MakeUppercase \endcsname\relax}
+ \ifx\MakeMarkcase\MakeUppercase
+ \PackageWarning{scrpage2}{%
+ Option 'markuppercase' will be ignored.\MessageBreak%
+ You shouldn't use option 'markuppercase' together\MessageBreak%
+ with option 'nouppercase'}
+ \let\MakeMarkcase\@empty
+ \fi}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+%
+% \begin{option}{komastyle}
+% \begin{option}{standardstyle}
+% At version 2 there is an predefined pagestyle ``scrheadings''. With
+% the two options you may decide, wether it has to behave like
+% ``headings'' at the standard classes or the KOMA-Script classes.
+% The macro saves the name of the style.
+% \begin{macrocode}
+\DeclareOption{komastyle}{\def\scrheadings@style{koma}
+ \@ifundefined{MakeMarkcase}{\let\MakeMarkcase\relax}{}}
+\DeclareOption{standardstyle}{\def\scrheadings@style{standard}
+ \@ifundefined{MakeMarkcase}{\let\MakeMarkcase\MakeUppercase}{}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% We don't need default options.
+% \begin{macrocode}
+\ExecuteOptions{}
+% \end{macrocode}
+% But you may set other Options:
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{Some Initialisation}
+%
+% For easier handling of the differences between article-, report- and
+% book-classes we define some more switches.
+%
+% \begin{macro}{\if@chapter}
+% \changes{v2.1b}{2003/05/31}{more save test}
+% First distinguish between article and others.
+% \begin{macrocode}
+\newif\if@chapter
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \@chapterfalse
+\else
+ \@chaptertrue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@mainmatter}
+% \changes{v1.2}{1995/07/08}{Definition changed}
+% \changes{v2.1b}{2003/05/31}{more save test}
+% \changes{v2.2d}{2007/03/13}{additional \cs{if@mainmatter} test}
+% \changes{v2.2g}{2008/11/19}{usage of \cs{if@mainmatter} at message
+% removed}
+% Next distinguish between matter- and nomatter-classes.
+% \begin{macrocode}
+\def\@tempa{\newif\if@mainmatter\@mainmattertrue}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname mainmatter\endcsname\relax
+\else
+ \@ifundefined{@mainmattertrue}{%
+ \PackageWarningNoLine{scrpage2}{%
+ \string\mainmatter\space defined without
+ \expandafter\string\csname if@mainmatter\endcsname!\MessageBreak
+ This switch is obligatory for scrpage2 to omit\MessageBreak
+ running head chapter numbers in front and\MessageBreak
+ back matter and will be defined now%
+ }%
+ }{%
+ \let\@tempa\relax
+ }%
+\fi
+\@tempa
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Predefinitions}
+% There are some commands, you can use at pagestyle-definition.
+%
+% \begin{macro}{\headmark}
+% This macro is |\rightmark| or |\leftmark|. But outside
+% pagestyle-definition it's nothing.
+% \begin{macrocode}
+\let\headmark\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pagemark}
+% This macro is the number of the page at the pagenumberfont:
+% \begin{macrocode}
+\DeclareRobustCommand\pagemark{{\pnumfont\thepage}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Expert-Pagestyle-Definition-Interface}
+% The pagestyle-definition-interface for experts is not as easy as the
+% simple interface we'll define later. But it's more flexible. We'll
+% later use it to define the pagestyle-definition-interface for users.
+%
+% \begin{macro}{\if@automark}
+% \changes{v2.1}{2002/10/30}{New switch}
+% \begin{macro}{\@automarktrue}
+% \begin{macro}{\@automarkfalse}
+% We need this switch to decide to switch on or off \cs{@mkboth} at the
+% pagestyles.
+% \begin{macrocode}
+\newif\if@automark\@automarkfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\defpagestyle}
+% First we define the simple definition-interface. There's no test, if
+% the pagestyle's defined twice.
+%
+% First there has to be the definition of head and foot.
+% \begin{macrocode}
+\def\defpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@defpagestyle[-]}%
+ {\@defpagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@defpagestyle}
+% Now the we can define the head and the foot.
+% \changes{v1.0b}{1995/05/25}{Dot deleted after number at
+% chapter- and sectionmark}
+% \changes{v1.0b}{1995/05/25}{Use CJK at \cs{chaptermark},
+% \cs{sectionmark} and \cs{subsectionmark}}
+% \changes{v1.3e}{2008/02/29}{usage of \cs{if@mainmatter} fixed}
+% \changes{v2.0}{2001/04/20}{Version 2 uses \cs{automark} and
+% \cs{manualmark}, so star and non-star version are same}
+% \changes{v2.1a}{2002/10/30}{Use \cs{if@automark}}
+% \changes{v2.2d}{2007/06/14}{Support of article-classes with
+% \cs{if@mainmatter}}
+% \changes{v2.5}{2010/04/22}{moved \cs{if@twoside} inside of definition}
+% Before version 2.5 we have distinguished one- and two-side definitions while
+% loading the package and have had all the definitions of \cs{@mkboth},
+% \cs{chaptermark}, \cs{sectionmark}, and \cs{subsectionmark} at the
+% definition of the page style.
+% Since version~2.5 the difference of one- and two-side is made at the
+% definition of the heads and foots themself and \cs{chaptermark},
+% \cs{sectionmark}, and \cs{subsectionmark} are defined by \cs{automark} and
+% \cs{manualmark}. So the code is much easier.
+% \begin{macrocode}
+\def\@defpagestyle[#1]#2#3#4{%
+ \expandafter\def\csname ps@#2\endcsname{%
+ \if@automark\let\@mkboth\markboth\else\let\@mkboth\@gobbletwo\fi
+ \def@head#3
+ \def@foot#4
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\def@head}
+% \changes{v2.5}{2010/04/22}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\def@@head}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% \changes{v2.5}{2010/04/22}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% This was real simple, but we already have to do the real definition
+% of the heads and foots. First the head:
+% \begin{macrocode}
+\def\def@head{%
+ \kernel@ifnextchar(%)
+ {\def@@head}%
+ {\def@@head(\scr@headabove@linelength,%
+ \scr@headabove@linethickness)}}
+\def\def@@head(#1,#2)#3#4#5{%
+ \kernel@ifnextchar(%)
+ {\def@@@head({#1},{#2}){#3}{#4}{#5}}%
+ {\def@@@head({#1},{#2}){#3}{#4}{#5}%
+ (\scr@headbelow@linelength,%
+ \scr@headbelow@linethickness)}}
+\def\def@@@head(#1,#2)#3#4#5(#6,#7){%
+ \def\@evenhead{%
+ \if@twoside
+ \let\headmark\leftmark%
+ \hss\hskip\@evenheadshift\vbox{\hsize=\@headwidth\relax%
+ \hf@rule{#1}{#2}{\@headwidth}{headabove}%
+ \vskip#2
+ \vskip\baselineskip
+ \hb@xt@\@headwidth{{%
+ \scr@nouppercase
+ \headfont\strut #3}}%
+ \hf@rule{#6}{#7}{\@headwidth}{headbelow}%
+ }\hskip\@oddheadshift\hss
+ \fi
+ }%
+ \def\@oddhead{\let\headmark\rightmark
+ \hss\hskip\@oddheadshift\vbox{\hsize=\@headwidth\relax
+ \hf@rule{#1}{#2}{\@headwidth}{headabove}%
+ \vskip#2%
+ \vskip\baselineskip
+ \hb@xt@\@headwidth{{%
+ \scr@nouppercase
+ \headfont\strut \if@twoside #4\else #5\fi}}%
+ \hf@rule{#6}{#7}{\@headwidth}{headbelow}%
+ }\hskip\@evenheadshift\hss}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\def@foot}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v1.3}{2001/03/30}{Use of \cmd\@footwidth instead of
+% \cs{textwidth}}
+% \changes{v2.5}{2010/04/22}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\def@@foot}
+% \changes{v2.5}{2010/04/22}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\def@@@foot}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% \changes{v2.2f}{2008/02/14}{Use of \cs{footfont}}
+% \changes{v2.5}{2010/04/22}{new (internal)}
+% And last twosided and onesided foot:
+% \begin{macrocode}
+\def\def@foot{%
+ \kernel@ifnextchar(%)
+ {\def@@foot}
+ {\def@@foot(\scr@footabove@linelength,%
+ \scr@footabove@linethickness)}}
+\def\def@@foot(#1,#2)#3#4#5{%
+ \kernel@ifnextchar(%)
+ {\def@@@foot({#1},{#2}){#3}{#4}{#5}}%
+ {\def@@@foot({#1},{#2}){#3}{#4}{#5}%
+ (\scr@footbelow@linelength,%
+ \scr@footbelow@linethickness)}}
+\def\def@@@foot(#1,#2)#3#4#5(#6,#7){%
+ \def\@evenfoot{%
+ \if@twoside
+ \let\headmark\leftmark
+ \hss\hskip\@evenfootshift\vbox{\hsize=\@footwidth\relax
+ \topfoot@rule{#1}{#2}\hb@xt@\@footwidth{{%
+ \scr@nouppercase
+ \headfont\footfont\strut #3}}%
+ \botfoot@rule{#6}{#7}}\hskip\@oddfootshift\hss
+ \fi
+ }%
+ \def\@oddfoot{\let\headmark\rightmark
+ \hss\hskip\@oddfootshift\vbox{\hsize=\@footwidth\relax
+ \topfoot@rule{#1}{#2}\hb@xt@\@footwidth{{%
+ \scr@nouppercase
+ \headfont\footfont\strut \if@twoside #4\else #5\fi}}%
+ \botfoot@rule{#6}{#7}}\hskip\@evenfootshift\hss}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We now define the rules used at head and foot.
+% \begin{macro}{\topfoot@rule}
+% \begin{macrocode}
+\newcommand\topfoot@rule[2]{%
+ \@tempdima\baselineskip\advance\@tempdima by-.7\normalbaselineskip
+ \advance\@tempdima by -#2
+ \vskip\@tempdima\hf@rule{#1}{#2}{\@footwidth}{footabove}%
+ \vskip-\@tempdima}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\botfoot@rule}
+% \begin{macrocode}
+\newcommand\botfoot@rule[2]{%
+ \@tempdima-\baselineskip\advance\@tempdima by .3\normalbaselineskip
+ \advance\@tempdima by #2
+ \vskip\@tempdima\hf@rule{#1}{#2}{\@footwidth}{footbelow}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hf@rule}
+% \changes{v1.3}{2001/03/30}{New, third parameter ``boxwidth''}
+% \changes{v2.0f}{2001/06/23}{Rule can be adjusted at inner margine,
+% centered or adjusted at outer margine}
+% \changes{v2.2}{2004/07/05}{Last parameter of the rule tells, if it is a
+% headabove, headbelow, footabove or footbelow rule}
+% \changes{v2.2}{2005/07/05}{Precommands before the rules are allowed}
+% \changes{v2.2}{2005/07/05}{Macro is not longer long}
+% \changes{v2.2b}{2005/08/31}{No even alignment at oneside}
+% \begin{macrocode}
+\newcommand*{\hf@rule}[4]{%
+ \setlength{\@tempdimb}{#1}
+ \begingroup
+ \csname scr@pre@#4@line\endcsname
+ \if@twoside
+ \ifodd\c@page
+ \edef\@tempa{\hfline@adjust}%
+ \else
+ \@tempcnta=2\advance\@tempcnta -\hfline@adjust
+ \edef\@tempa{\the\@tempcnta}%
+ \fi
+ \else
+ \edef\@tempa{\hfline@adjust}%
+ \fi
+ \ifnum\@tempa=1
+ \setlength{\@tempdimb}{.5\@tempdimb}%
+ \fi
+ \hb@xt@#3{%
+ \ifnum\@tempa>0
+ \hfill%
+ \llap{\vrule\@depth#2\@height\z@\@width\@tempdimb}%
+ \fi
+ \ifnum\@tempa<2
+ \rlap{\vrule\@depth#2\@height\z@\@width\@tempdimb}%
+ \hfill%
+ \fi
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scr@pre@headabove@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@headtopline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@headbelow@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@headsepline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@footabove@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@footsepline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@footbelow@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@footbottomrule}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@fnt@instead@footbotline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macrocode}
+\newcommand*{\scr@pre@headabove@line}{}
+\newcommand*{\scr@fnt@headtopline}{\scr@pre@headabove@line}
+\newcommand*{\scr@pre@headbelow@line}{}
+\newcommand*{\scr@fnt@headsepline}{\scr@pre@headbelow@line}
+\newcommand*{\scr@pre@footabove@line}{}
+\newcommand*{\scr@fnt@footsepline}{\scr@pre@footabove@line}
+\newcommand*{\scr@pre@footbelow@line}{}
+\newcommand*{\scr@fnt@footbottomline}{\scr@pre@footbelow@line}
+\newcommand*{\scr@fnt@instead@footbotline}{footbottomline}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Using these definitions, we can define the testing macros.
+%
+% \begin{macro}{\newpagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\newpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@newpagestyle[-]}%
+ {\@newpagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@newpagestyle}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@newpagestyle[#1]#2#3#4{%
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}%
+ \else
+ \PackageError
+ {scrpage2}%
+ {Your command was ignored}%
+ {There is already a pagestyle named ``#1''.\MessageBreak%
+ Use \protect\defpagestyle\space, \protect\renewpagestyle or
+ \protect\providepagestyle.}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\renewpagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\renewpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@renewpagestyle[-]}%
+ {\@renewpagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@renewpagestyle}
+% \changes{v1.2a}{1996/12/07}{Avoid to define pagestyle as \cs{relax}
+% if it wasn't defined (Thanks to Bernd).}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@renewpagestyle[#1]#2#3#4{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+ \PackageError
+ {scrpage2}%
+ {Your command was ignored}%
+ {There is no pagestyle named ``#1''.\MessageBreak%
+ Use \protect\defpagestyle, \protect\newpagestyle or
+ \protect\providepagestyle.}%
+ \else
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\providepagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\providepagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@providepagestyle[-]}%
+ {\@providepagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@providepagestyle}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@providepagestyle[#1]#2#3#4{%
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}%
+ \else
+ \PackageInfo
+ {scrpage2}%
+ {\protect\providepagestyle\protect{#1\protect} ignored.}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{User-Pagestyle-Definition-Interface}
+% The pagestyle-definition-interface for users is much easier than the
+% expert-version. Using the expert-macros, the definition is easy, too.
+%
+% \begin{macro}{\deftripstyle}
+% \begin{macrocode}
+% \end{macrocode}
+% At version 1 we define the selection of star- or starless-version first:
+% \begin{macrocode}
+\def\deftripstyle{%
+ \@ifstar
+ {\@deftripstyle[-]}%
+ {\@deftripstyle[+]}}
+% \end{macrocode}
+% \end{macro}
+% Next we check, if there is an optional argument:
+% \begin{macro}{\@deftripstyle}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macrocode}
+\def\@deftripstyle[#1]#2{%
+ \kernel@ifnextchar[%]
+ {\@@deftripstyle[#1]{#2}}%
+ {\@@deftripstyle[#1]{#2}[\z@]}}
+% \end{macrocode}
+% \end{macro}
+% or perhaps two optional arguments:
+% \begin{macro}{\@@deftripstyle}
+% \begin{macrocode}
+\def\@@deftripstyle[#1]#2[#3]{%
+% \end{macrocode}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Ok, now we have the problem, that there can be only 9 arguments. So we
+% have to distinguish the star-versions by a macro:
+% \begin{macrocode}
+ \def\@tempa{#1}%
+ \kernel@ifnextchar[%]
+ {\@@@deftripstyle#2[#3]}%
+ {\@@@deftripstyle#2[\z@][#3]}}
+% \end{macrocode}
+% \end{macro}
+% Now the main-definition:
+% \begin{macro}{\@@@deftripstyle}
+% \begin{macrocode}
+\def\@@@deftripstyle#1[#2][#3]#4#5#6#7#8#9{%
+ \def\@tempb{+}%
+ \ifx\@tempa\@tempb
+ \defpagestyle{#1}%
+ {(\@headwidth,#2)%
+ {\rlap{#6}\hfill{#5}\hfill\llap{#4}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ (\@headwidth,#3)}%
+ {(\@footwidth,#3)%
+ {\rlap{#9}\hfill{#8}\hfill\llap{#7}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ (\@footwidth,#2)}%
+ \else
+ \defpagestyle*{#1}%
+ {(\@headwidth,#2)%
+ {\rlap{#6}\hfill{#5}\hfill\llap{#4}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ (\@headwidth,#3)}%
+ {(\@footwidth,#3)%
+ {\rlap{#9}\hfill{#8}\hfill\llap{#7}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ (\@footwidth,#2)}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Automark or not}
+% This is new since version 2.
+% \begin{macro}{\automark}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0c}{2001/06/07}{Use of \cs{MakeMarkcase}}
+% \changes{v2.0g}{2001/06/25}{Use of \cs{manualmark}}
+% \changes{v2.0i}{2001/08/17}{Warning, if arguments are mixed up}
+% \changes{v2.0i}{2001/08/17}{\cs{markboth} behavior fixed}
+% \changes{v2.0i}{2001/08/17}{Use of \cs{if@autooneside}}
+% \changes{v2.1a}{2002/10/30}{Switch on \cs{if@automark}}
+% This macro activates automatic mark. Is has two arguments. The
+% first, optional argument is the sectioning level name of the mark at
+% left pages, the second, not optional argument is the same at right
+% pages. At oneside mode all pages are right.
+% \begin{macro}{\@iflevelok}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{\markleft}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{\@markleft}
+% \changes{v2.0i}{2001/08/17}{New}
+% To define \cs{automark} we also need these three makros. The first
+% one decides, if level of second parameter is less than level of
+% first parameter and does then third or fourth parameter.
+% \cs{markleft} and \cs{@markleft} are similar to \cs{markright} and
+% \cs{@markright} at \LaTeX{} kernel.
+% \begin{macrocode}
+\newcommand*{\@iflevelok}[4]{%
+ \begingroup
+ \edef\@tempa{#1}\ifx\@tempa\@empty\def\@tempa{\endgroup #3}\else
+ \def\@tempa{\csname #1level\endcsname}%
+ \def\@tempb{\csname #2level\endcsname}%
+ \ifnum \@tempa>\@tempb
+ \def\@tempa{\endgroup#3}%
+ \else
+ \def\@tempa{\endgroup#4}%
+ \fi\fi\@tempa}
+\providecommand{\markleft}[1]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markleft\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\providecommand{\@markleft}[3]{\@temptokena {#2}%
+ \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \changes{v2.2a}{2004/09/05}{all changes of helper macros and switches are
+% local to fix e.g.\ twocolumn problem with \cs{part}}
+% \begin{macrocode}
+\newcommand*{\automark}[2][\@empty]{%
+ \manualmark
+ \@automarktrue
+ \begingroup
+ \edef\@tempa{#2}\ifx\@tempa\@empty
+ \endgroup
+ \PackageWarning{scrpage2}%
+ {\string\automark\space with empty obligatory argument}%
+ \else
+ \endgroup
+ \expandafter\def\csname #2mark\endcsname##1{%
+ \begingroup
+ \def\@tempa{\csname #2level\endcsname}%
+ \@tempswafalse
+ \ifnum \c@secnumdepth <\@tempa\else\if@mainmatter
+ \@tempswatrue
+ \fi\fi
+ \edef\@tempa{#1}%
+ \if@twoside\edef\@tempb{#2}\else\let\@tempb\@tempa\fi
+ \ifx\@tempa\@tempb
+ \if@tempswa
+ \@mkboth{\MakeMarkcase{\csname #2markformat\endcsname ##1}}%
+ {\MakeMarkcase{\csname #2markformat\endcsname ##1}}%
+ \else%
+ \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}%
+ \fi
+ \else
+ \if@tempswa
+ \@iflevelok{#1}{#2}{%
+ \@mkboth{\MakeMarkcase{\csname #2markformat\endcsname
+ ##1}}{}}{%
+ \ifx\@mkboth\markboth\markleft{\MakeMarkcase{\csname
+ #2markformat\endcsname ##1}}%
+ \fi}
+ \else
+ \@iflevelok{#1}{#2}{%
+ \@mkboth{\MakeMarkcase{##1}}{}}{%
+ \ifx\@mkboth\markboth\markleft{\MakeMarkcase{##1}}\fi}%
+ \fi
+ \fi
+ \endgroup
+ }
+ \fi
+ \begingroup
+ \edef\@tempa{#1}\edef\@tempb{#2}%
+ \if@autooneside\if@twoside\else\let\@tempa\@empty\fi\fi
+ \ifx\@tempa\@empty
+ \endgroup
+ \else
+ \ifx\@tempa\@tempb
+ \endgroup
+ \else
+ \endgroup
+ \expandafter\def\csname #1mark\endcsname##1{%
+ \begingroup
+ \def\@tempa{\csname #1level\endcsname}%
+ \@tempswafalse
+ \ifnum \c@secnumdepth <\@tempa\else\if@mainmatter
+ \@tempswatrue
+ \fi\fi
+ \if@tempswa
+ \@iflevelok{#1}{#2}{%
+ \ifx\@mkboth\markboth
+ \markright{\MakeMarkcase{\csname #1markformat\endcsname
+ ##1}}%
+ \fi}{%
+ \@mkboth{}{\MakeMarkcase{\csname #1markformat\endcsname
+ ##1}}}%
+ \else
+ \@iflevelok{#1}{#2}{%
+ \ifx\@mkboth\markboth
+ \markright{\MakeMarkcase{##1}}%
+ \fi}{%
+ \@mkboth{}{\MakeMarkcase{##1}}}%
+ \fi
+ \endgroup
+ }
+ \fi\fi%
+ \let\@mkboth\markboth
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\manualmark}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0g}{2001/06/25}{also deactivating \cs{...mark}}
+% \changes{v2.1a}{2002/10/30}{Switch off \cs{if@automark}}
+% This macro switchs to the manual set of marks (using \cs{markboth}
+% and \cs{markright}. This is very simple, we only have to deaktivate
+% the mark macros.
+% \begin{macrocode}
+\newcommand*{\manualmark}{%
+ \if@chapter\let\chaptermark\@gobble\fi
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ \let\subsubsectionmark\@gobble
+ \let\paragraphmark\@gobble
+ \let\subparagraphmark\@gobble
+ \let\@mkboth\@gobbletwo
+ \@automarkfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\partlevel}
+% \changes{v2.2}{2004/07/05}{New}
+% \changes{v2.4}{2009/11/11}{part level is always -1}
+% \begin{macro}{\chapterlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\sectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subsectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subsubsectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\paragraphlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subparagraphlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% At \cs{automark} we use some macros to get the numeric level of a
+% sectioning name. We simply define these:
+% \begin{macrocode}
+\newcommand*{\partlevel}{-1}
+\newcommand*{\chapterlevel}{0}
+\newcommand*{\sectionlevel}{1}
+\newcommand*{\subsectionlevel}{2}
+\newcommand*{\subsubsectionlevel}{3}
+\newcommand*{\paragraphlevel}{4}
+\newcommand*{\subparagraphlevel}{5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\MakeMarkcase}
+% \changes{v2.0m}{2002/02/05}{\texttt{scrlttr2} is a known class}
+% At \cs{automark} we use a new macro to enable usability of
+% \cs{MakeUppercase} at the head-marks. We set this macro to
+% \cs{MakeUppercase} if one of the standard-classes was loaded:
+% \begin{macrocode}
+\@ifundefined{MakeMarkcase}{%
+ \@ifclassloaded{scrbook}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrreprt}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrartcl}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrlttr2}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{book}{}{%
+ \@ifclassloaded{report}{}{%
+ \@ifclassloaded{article}{}{%
+ \PackageWarningNoLine{scrpage2}{%
+ use of scrpage2 with unknown class.\MessageBreak
+ Please mail to markus.kohm@gmx.de, if
+ headmarks\MessageBreak
+ are lower case without use of scrpage2}}}}%
+ \let\MakeMarkcase\MakeUppercase}}}}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrheadings@style}
+% \changes{v2.0g}{2001/06/25}{New}
+% \changes{v2.0m}{2002/02/05}{Take care of class \texttt{scrlttr2}}
+% This macro defines, which style for scrheadings should be used. If
+% it is not defined, we have to define it in a propper way.
+% \begin{macrocode}
+\@ifundefined{scrheadings@style}{%
+ \@ifclassloaded{scrbook}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrreprt}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrartcl}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrlttr2}{\def\scrheadings@style{koma}}{%
+ \def\scrheadings@style{standard}}}}}}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Width of head and foot}
+% \begin{macro}{\setheadwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\setfootwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\set@hf@width}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v1.3a}{2001/05/31}{symbolic values ``paper'', ``text'',
+% ``textwidthmarginpar''}
+% \changes{v2.0b}{2001/05/31}{symbolic values ``paper'', ``text'',
+% ``textwidthmarginpar''}
+% \changes{v2.0c}{2001/06/07}{error fix at warning}
+% \begin{macro}{\settowidthof}
+% \changes{v2.0e}{2001/06/22}{New}
+% \begin{macro}{\deftowidthof}
+% \changes{v2.0e}{2001/06/22}{New}
+% \changes{v2.0f}{2001/06/23}{new symbolic values ``autohead'' and
+% ``autofoot''}
+% \changes{v2.0i}{2001/08/17}{new symbolic value ``page''}
+% \changes{v2.0k}{2001/09/28}{\cs{pagewidth} korrigiert}
+% \changes{v2.1b}{2003/05/31}{more save existance test}
+% \changes{v2.2}{2004/07/05}{value ``foot'' fixed}
+% Until version 1.3, head and foot of a page had same width like the
+% text block. Since version 1.3 this was changed. Now the head and
+% foot have their own width and an optional shift relative to the text
+% part of the page. This shift can be positive or negative. We set
+% the width and shift with one macro and save them at macros. The set
+% macros have an optional argument: the shift.
+%
+% For definition of symbolic length values there is the macro
+% \cs{settowidthof}. And to define a macro with this value, there
+% is \cs{deftowidthof}.
+% \begin{macrocode}
+\newcommand*{\settowidthof}[2]{%
+ \edef\@tempa{#2}%
+ \edef\@tempb{paper}\ifx\@tempa\@tempb
+ \setlength{#1}{\paperwidth}%
+ \else\edef\@tempb{text}\ifx\@tempa\@tempb
+ \setlength{#1}{\textwidth}%
+ \else\edef\@tempb{textwithmarginpar}\ifx\@tempa\@tempb
+ \setlength{#1}{\textwidth}%
+ \addtolength{#1}{\marginparwidth}%
+ \addtolength{#1}{\marginparsep}%
+ \else\edef\@tempb{head}\ifx\@tempa\@tempb
+ \setlength{#1}{\@headwidth}%
+ \else\edef\@tempb{foot}\ifx\@tempa\@tempb
+ \setlength{#1}{\@footwidth}%
+ \else\edef\@tempb{headtopline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@headabove@linelength}%
+ \else\edef\@tempb{headsepline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@headbelow@linelength}%
+ \else\edef\@tempb{footsepline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@footabove@linelength}%
+ \else\edef\@tempb{footbotline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@footbelow@linelength}%
+ \else\edef\@tempb{page}\ifx\@tempa\@tempb
+ \setlength{#1}{\paperwidth}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ta@bcor\endcsname\relax\else
+ \addtolength{#1}{-\ta@bcor}%
+ \fi
+ \else
+ \setlength{#1}{#2}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\deftowidthof}[2]{%
+ \edef\@tempa{#2}\edef\@tempb{autohead}\ifx\@tempa\@tempb
+ \expandafter\def\csname #1\endcsname{\@headwidth}%
+ \else\edef\@tempb{autofoot}\ifx\@tempa\@tempb
+ \expandafter\def\csname #1\endcsname{\@footwidth}%
+ \else
+ \settowidthof{\@tempdima}{#2}%
+ \expandafter\edef\csname #1\endcsname{\the\@tempdima}%
+ \fi
+ \fi
+}
+\newcommand*{\setheadwidth}[2][\@empty]{%
+ \set@hf@width{head}{#1}{#2} %
+}
+\newcommand*{\setfootwidth}[2][\@empty]{%
+ \set@hf@width{foot}{#1}{#2}%
+}
+\newcommand*{\set@hf@width}[3]{%
+ \settowidthof{\@tempdima}{#3}%
+ \ifdim\@tempdima>\paperwidth
+ \PackageWarning
+ {scrpage2}%
+ {You've set width of #1 to a value\MessageBreak
+ greater than width of page!\MessageBreak%
+ I`ll reduce width of #1 to width of page}%
+ \setlength{\@tempdima}{\paperwidth}%
+ \else
+ \ifdim\@tempdima<\z@
+ \PackageWarning
+ {scrpage2}%
+ {You've set width of #1 to negative value!\MessageBreak%
+ I'll set it to 0pt}%
+ \setlength{\@tempdima}{\z@}%
+ \fi
+ \fi
+ \expandafter\edef\csname @#1width\endcsname{\the\@tempdima}%
+ \edef\@tempa{#2}%
+ \setlength{\@tempdima}{\textwidth}%
+ \addtolength{\@tempdima}{-\csname @#1width\endcsname}%
+ \ifx\@tempa\@empty
+ \if@twoside
+ \setlength{\@tempdimb}{.3333333333\@tempdima}%
+ \else
+ \setlength{\@tempdimb}{.5\@tempdima}%
+ \fi
+ \else
+ \setlength{\@tempdimb}{#2}%
+ \fi
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \ifdim\@tempdimb<\z@
+ \setlength{\@tempdimb}{-\@tempdimb}%
+ \expandafter\edef\csname @odd#1shift\endcsname{-\the\@tempdimb}%
+ \else
+ \expandafter\edef\csname @odd#1shift\endcsname{\the\@tempdimb}%
+ \fi
+ \ifdim\@tempdima<\z@
+ \setlength{\@tempdima}{-\@tempdima}%
+ \expandafter\edef\csname @even#1shift\endcsname{-\the\@tempdima}%
+ \else
+ \expandafter\edef\csname @even#1shift\endcsname{\the\@tempdima}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@headwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v2.1}{2002/03/28}{use of option \texttt{mpinclude}}
+% \begin{macro}{\@footwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v2.1}{2002/03/28}{use of option \texttt{mpinclude}}
+% \begin{macro}{\@oddheadshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@evenheadshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@oddfootshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@evenfootshift}
+% \changes{v1.3}{2001/03/30}{New}
+% The values of width and shift of head and foot are saved at internal
+% macros.
+% \begin{macrocode}
+\newcommand*{\@headwidth}{\textwidth}%
+\newcommand*{\@oddheadshift}{\z@}%
+\newcommand*{\@evenheadshift}{\z@}%
+\newcommand*{\@footwidth}{\textwidth}%
+\newcommand*{\@oddfootshift}{\z@}%
+\newcommand*{\@evenfootshift}{\z@}%
+% \end{macrocode}
+% If option \texttt{mpinclude} was used, we use a special trick to set
+% width of head and foot but only if the user doesn't:
+% \begin{macrocode}
+\if@mincl
+ \renewcommand*{\@headwidth}{}%
+ \renewcommand*{\@footwidth}{}%
+ \AtBeginDocument{%
+ \ifx\@headwidth\@empty
+ \setheadwidth[0pt]{textwithmarginpar}%
+ \fi
+ \ifx\@footwidth\@empty
+ \setfootwidth[0pt]{textwithmarginpar}%
+ \fi
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Fonts}
+% \begin{macro}{\pnumfont}
+% We have to define a macro defining the font, used by |\pagemark|. Because
+% of this macro may already be defined by a \textsf{KOMA}-script-class, we
+% have to do this, using |\providecommand|
+% \begin{macrocode}
+\providecommand*{\pnumfont}{\normalfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\headfont}
+% There is also a macro used by |\@evenhead|, |\@oddhead| and |\@evenfoot|,
+% |\@oddfoot|:
+% \begin{macrocode}
+\providecommand*{\headfont}{\normalfont\slshape}
+\def\scr@fnt@wrn@pagehead#1{%
+ `pagehead' is only an alias of `pageheadfoot'.\MessageBreak
+ Font of page foot may also be changed%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footfont}
+% \changes{v2.2f}{2008/02/14}{New}
+% \begin{macro}{\scr@fnt@pagefoot}
+% \changes{v2.2f}{2008/02/14}{New (internal)}
+% \begin{macro}{\scr@fnt@wrn@pagefoot}
+% \changes{v2.2f}{2008/02/14}{deactivated}
+% There is also a macro used by |\@evenfoot|, |\@oddfoot| after |\headfont|:
+% \begin{macrocode}
+\providecommand*{\footfont}{\normalfont}
+\providecommand*{\scr@fnt@pagefoot}{\footfont}
+\let\scr@fnt@wrn@pagefoot\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Length and thickness of lines at head and foot}
+% \begin{macro}{\setheadtopline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{headtop} changed into
+% \texttt{headabove}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setheadsepline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{headbot} changed into
+% \texttt{headbelow}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setfootsepline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{foottop} changed into
+% \texttt{footabove}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setfootbotline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{footbot} changed into
+% \texttt{footbelow}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% Since version 2 there are new macros to set the length and
+% thickness of the lines at head and foot. Wie use macros not
+% dimensions, because the amount of dimensions is very small at \TeX.
+% \begin{macrocode}
+\newcommand*{\setheadtopline}{\scr@setline{head}{above}}
+\newcommand*{\setheadsepline}{\scr@setline{head}{below}}
+\newcommand*{\setfootsepline}{\scr@setline{foot}{above}}
+\newcommand*{\setfootbotline}{\scr@setline{foot}{below}}
+% \end{macrocode}
+% \begin{macro}{\scr@setline}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@scr@setline}
+% \changes{v2.0d}{2001/06/19}{symbolic values implemented}
+% \begin{macro}{\@@scr@setline}
+% \changes{v2.0d}{2001/06/18}{macro name fixed}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@scr@set@pre@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% The real change of the lines is done with the macros
+% \cs{scr@setline}, \cs{@scr@setline} and \cs{@@scr@setline}:
+% \begin{macrocode}
+\def\scr@setline#1#2{%
+ \kernel@ifnextchar[%]
+ {\@scr@setline{#1}{#2}}{\@@scr@setline{#1#2}}%
+}
+\def\@scr@setline#1#2[#3]{%
+ \edef\@tempa{#3}\edef\@tempa{auto}\ifx\@tempa\@tempb
+ \deftowidthof{scr@#1#2@linelength}{#3#1}%
+ \else
+ \deftowidthof{scr@#1#2@linelength}{#3}%
+ \fi
+ \@@scr@setline{#1#2}%
+}
+\def\@@scr@setline#1#2{%
+ \edef\@tempa{#2}\edef\@tempb{current}\ifx\@tempa\@empty\else
+ \ifx\@tempa\@tempb\else
+ \setlength{\@tempdima}{#2}%
+ \expandafter\edef\csname scr@#1@linethickness\endcsname%
+ {\the\@tempdima}%
+ \fi\fi
+ \kernel@ifnextchar[%]
+ {\@src@set@pre@line{#1}}{}%
+}
+\def\@src@set@pre@line#1[#2]{%
+ \expandafter\def\csname scr@pre@#1@line\endcsname{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Extended multilanguage formats}
+% \begin{macro}{\partmarkformat}
+% \changes{v2.2}{2004/07/05}{New}
+% \begin{macro}{\chaptermarkformat}
+% \changes{v1.1}{1995/06/27}{Space after chapternumber increased.}
+% \begin{macro}{\sectionmarkformat}
+% \changes{v1.1}{1995/06/27}{Space after sectionnumber increased.}
+% \begin{macro}{\subsectionmarkformat}
+% \changes{v1.1}{1995/06/27}{Space after subsectionnumber increased.}
+% \begin{macro}{\subsubsectionmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\paragraphmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subparagraphmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\@seccntmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\@seccntformat}
+% \changes{v2.0}{2001/04/20}{New}
+% There are some macros to handle languages like Chinese, Japanese or Korean.
+% These macros were defined first by Werner Lemberg at his CJK-bundle. See
+% |scrclass.dtx| for further information.
+% \begin{macrocode}
+\providecommand{\partmarkformat} {\partname\ \thepart. \ }
+\if@chapter
+ \providecommand{\chaptermarkformat} {\@chapapp\ \thechapter. \ }
+ \providecommand{\sectionmarkformat} {\thesection. \ }
+ \providecommand{\subsectionmarkformat} {\@seccntmarkformat{subsection}}
+\else
+ \providecommand{\sectionmarkformat} {\thesection\quad}
+ \providecommand{\subsectionmarkformat} {\thesubsection\quad}
+\fi
+\providecommand{\subsubsectionmarkformat}{\@seccntmarkformat{subsubsection}}
+\providecommand{\paragraphmarkformat} {\@seccntmarkformat{paragraph}}
+\providecommand{\subparagraphmarkformat} {\@seccntmarkformat{subparagraph}}
+\providecommand{\@seccntmarkformat}[1] {\@seccntformat{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Definition of default pagestyles}
+%
+% \begin{macro}{\ps@save@plain}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instead of
+% \cs{ps@standardplain}}
+% We define two default pagestyles, which can be used instead of the
+% standard pagestyles. The two pagestyles are something like a
+% family. A pagestyle for \emph{normal} pages with head and foot and a
+% pagestyle for \emph{plain} pages with not so much head and foot. So
+% we have to redefine the standard pagestyle \texttt{plain}. But maybe
+% someone want to use the old standard pagestyle. So we first define
+% new names for old pagestyles.
+% \begin{macrocode}
+\newcommand*{\ps@save@plain}{}
+\let\ps@save@plain\ps@plain
+\newcommand*{\ps@use@plain}{\let\save@@mkboth\@mkboth
+ \ps@save@plain
+ \let\@mkboth\save@@mkboth}
+\let\ps@plain\ps@use@plain
+% \end{macrocode}
+% \begin{macro}{\ps@save@headings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instead of
+% \cs{ps@standardheadings}}
+% \begin{macro}{\ps@save@myheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instead of
+% \cs{ps@standardmyheadings}}
+% \begin{macro}{\ps@headings}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\ps@myheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% If standard pagestyle \texttt{headings} or \texttt{myheadings} is
+% used, also standard pagestyle \texttt{use@plain} should be
+% used. So we also define new names for the other old pagestyles and
+% new pagestyles with the old names, doing the switch back for the
+% plain pagestyle. These are defined even if the pagestyles are
+% unknown.
+% \begin{macrocode}
+\newcommand*{\ps@save@headings}{}
+\let\ps@save@headings\ps@headings
+\newcommand*{\ps@save@myheadings}{}
+\let\ps@save@myheadings\ps@myheadings
+\def\ps@headings{%
+ \PackageWarning{scrpage2}%
+ {you've used pagestyle ``headings''.\MessageBreak
+ You should not use this pagestyle with a\MessageBreak
+ scrpage2-pagestyle!\MessageBreak
+ You should use pagestyle ``useheadings'' instead\MessageBreak}%
+ \let\ps@plain\ps@save@plain%
+ \ps@save@headings\@automarktrue}
+\def\ps@myheadings{%
+ \PackageWarning{scrpage2}%
+ {you've used pagestyle ``myheadings''.\MessageBreak
+ You should not use this pagestyle with a\MessageBreak
+ scrpage2-pagestyle!\MessageBreak
+ You should use pagestyle ``useheadings'' instead\MessageBreak}%
+ \let\ps@plain\ps@save@plain%
+ \ps@save@myheadings\@automarkfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ps@useheadings}
+% \changes{v2.0b}{2001/05/31}{New}
+% \changes{v2.0m}{2002/02/05}{Fatal bug (\cs{mkboth} instead of
+% \cs{@mkboth}) fixed}
+% \changes{v2.1a}{2002/10/30}{Use of switch \cs{if@automark}}
+% This is the pagestyle, you should use instead of \texttt{headings}
+% or \texttt{myheadings}. If you are using manual marks, this behaves
+% like pagestyle \texttt{myheadings}. If you are using automatic
+% marks, this behaves like headings, but without changing
+% \cs{chaptermark}, \cs{sectionmark} or \cs{subsectionmark}.
+% \begin{macrocode}
+\newcommand*{\ps@useheadings}{%
+ \if@automark\let\@mkboth\markboth\else\let\@mkboth\@gobbletwo\fi
+ \let\ps@plain\ps@use@plain
+ \let\save@@mkboth\@mkboth
+ \let\save@chaptermark\chaptermark
+ \let\save@sectionmark\sectionmark
+ \let\save@subsectionmark\subsectionmark
+ \ifx\@mkboth\markboth\ps@save@headings\else\ps@save@myheadings\fi
+ \let\@mkboth\save@@mkboth
+ \let\chaptermark\save@chaptermark
+ \let\sectionmark\save@sectionmark
+ \let\subsectionmark\save@subsectionmark
+}
+% \end{macrocode}
+% Note: Because of saving \cs{@mkboth}, \cs{chaptermark},
+% \cs{sectionmark} and \cs{subsection} before changing the pagestyle
+% and restore them after changing the pagestyle it does not matter, if
+% we set pagestyle \texttt{headings} or \texttt{myheadings}. So it
+% would be possible to remove the \cs{ifx}\dots\cs{fi}-line above and
+% simply use \cs{ps@save@headings} or \cs{ps@save@myheadings} instead
+% of.
+% \end{macro}
+%
+%
+% \begin{macro}{\ps@scrplain}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0a}{2001/04/24}{\cs{strut} inserted}
+% \changes{v2.0f}{2001/06/23}{\cs{strut} inserted}
+% \changes{v2.1c}{2004/02/07}{thickness of footbelow line fixed}
+% \begin{macro}{\scrplain@even@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% After this, we can define the new pagestyles, first a new plain
+% one. It sould be variable and so we use macros to define the parts.
+% \begin{macrocode}
+\newcommand*{\ps@scrplain}{\let\ps@plain\ps@@scrplain\ps@plain}
+\newpagestyle{@scrplain}
+{%
+ (\scrplain@headabove@linelength,\scr@headabove@linethickness)%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrplain@even@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering\strut
+ \scrplain@even@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft
+ \strut\scrplain@even@right@head\strut}}}%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrplain@odd@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering
+ \strut\scrplain@odd@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft
+ \strut\scrplain@odd@right@head\strut}}}%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrplain@odd@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering
+ \strut\scrplain@odd@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft
+ \strut\scrplain@odd@right@head\strut}}}%
+ (\scrplain@headbelow@linelength,\scr@headbelow@linethickness)
+}{%
+ (\scrplain@footabove@linelength,\scr@footabove@linethickness)
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrplain@even@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrplain@even@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrplain@even@right@foot\strut}}}%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrplain@odd@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrplain@odd@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrplain@odd@right@foot\strut}}}%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrplain@odd@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrplain@odd@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrplain@odd@right@foot\strut}}}%
+ (\scrplain@footbelow@linelength,\scr@footbelow@linethickness)
+}
+\newcommand*{\scrplain@even@left@head}{}
+\newcommand*{\scrplain@even@middle@head}{}
+\newcommand*{\scrplain@even@right@head}{}
+\newcommand*{\scrplain@odd@left@head}{}
+\newcommand*{\scrplain@odd@middle@head}{}
+\newcommand*{\scrplain@odd@right@head}{}
+\newcommand*{\scrplain@even@left@foot}{}
+\newcommand*{\scrplain@even@middle@foot}{}
+\newcommand*{\scrplain@even@right@foot}{}
+\newcommand*{\scrplain@odd@left@foot}{}
+\newcommand*{\scrplain@odd@middle@foot}{}
+\newcommand*{\scrplain@odd@right@foot}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ps@scrheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0a}{2001/04/24}{\cs{strut} inserted}
+% \changes{v2.0f}{2001/06/23}{\cs{strut} inserted}
+% \begin{macro}{\scrheadings@even@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% We also define define a new headings one. It sould be variable and
+% so we use macros to define the parts. But we need an \emph{also
+% action}, so we first define a inner pagestyle and then use this at a
+% outer one (definition is done in reverse order):
+% \begin{macrocode}
+\newcommand*{\ps@scrheadings}{\let\ps@plain\ps@scrplain\ps@@scrheadings}
+\newpagestyle{@scrheadings}
+{%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrheadings@even@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering
+ \strut\scrheadings@even@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrheadings@even@right@head\strut}}}%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrheadings@odd@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering
+ \strut\scrheadings@odd@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrheadings@odd@right@head\strut}}}%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright
+ \strut\scrheadings@odd@left@head\strut}}%
+ \hfill
+ \parbox{\@headwidth}{\centering
+ \strut\scrheadings@odd@middle@head\strut}%
+ \hfill
+ \llap{\parbox{\@headwidth}{\raggedleft
+ \strut\scrheadings@odd@right@head\strut}}}}%
+{%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrheadings@even@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrheadings@even@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrheadings@even@right@foot\strut}}}%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrheadings@odd@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrheadings@odd@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrheadings@odd@right@foot\strut}}}%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright
+ \strut\scrheadings@odd@left@foot\strut}}%
+ \hfill
+ \parbox{\@footwidth}{\centering
+ \strut\scrheadings@odd@middle@foot\strut}%
+ \hfill
+ \llap{\parbox{\@footwidth}{\raggedleft
+ \strut\scrheadings@odd@right@foot\strut}}%
+ }%
+}
+\newcommand*{\scrheadings@even@left@head}{}
+\newcommand*{\scrheadings@even@middle@head}{}
+\newcommand*{\scrheadings@even@right@head}{}
+\newcommand*{\scrheadings@odd@left@head}{}
+\newcommand*{\scrheadings@odd@middle@head}{}
+\newcommand*{\scrheadings@odd@right@head}{}
+\newcommand*{\scrheadings@even@left@foot}{}
+\newcommand*{\scrheadings@even@middle@foot}{}
+\newcommand*{\scrheadings@even@right@foot}{}
+\newcommand*{\scrheadings@odd@left@foot}{}
+\newcommand*{\scrheadings@odd@middle@foot}{}
+\newcommand*{\scrheadings@odd@right@foot}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ihead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\ohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\chead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\lehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\lohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\rehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\rohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\cehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\cohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\ifoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\ofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\cfoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\lefoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\lofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\refoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\rofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\cefoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\cofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% We also need macros to define the contents of the three part head
+% and foot. Each macro defines one of the part of head or foot of the
+% scrheadings pagestyle and optional of the scrplain pagestyle.
+% \begin{macrocode}
+\newcommand{\ihead}{\kernel@ifnextchar[{\@@lhead}{\@lhead}}
+\newcommand{\@lhead}[1]{\@rehead{#1}\@lohead{#1}}
+\newcommand{\@@lhead}[2][]{\@@rehead[{#1}]{#2}\@@lohead[{#1}]{#2}}
+\newcommand{\ohead}{\kernel@ifnextchar[{\@@rhead}{\@rhead}}
+\newcommand{\@rhead}[1]{\@lehead{#1}\@rohead{#1}}
+\newcommand{\@@rhead}[2][]{\@@lehead[{#1}]{#2}\@@rohead[{#1}]{#2}}
+\newcommand{\chead}{\kernel@ifnextchar[{\@@chead}{\@chead}}
+\newcommand{\@chead}[1]{\@cehead{#1}\@cohead{#1}}
+\newcommand{\@@chead}[2][]{\@@cehead[{#1}]{#2}\@@cohead[{#1}]{#2}}
+\newcommand{\lehead}{\kernel@ifnextchar[{\@@lehead}{\@lehead}}
+\newcommand{\@lehead}[1]{\renewcommand*{\scrheadings@even@left@head}{#1}}
+\newcommand{\@@lehead}[2][]{%
+ \renewcommand*{\scrplain@even@left@head}{#1}%
+ \renewcommand*{\scrheadings@even@left@head}{#2}}
+\newcommand{\lohead}{\kernel@ifnextchar[{\@@lohead}{\@lohead}}
+\newcommand{\@lohead}[1]{\renewcommand*{\scrheadings@odd@left@head}{#1}}
+\newcommand{\@@lohead}[2][]{%
+ \renewcommand*{\scrplain@odd@left@head}{#1}%
+ \renewcommand*{\scrheadings@odd@left@head}{#2}}
+\newcommand{\rehead}{\kernel@ifnextchar[{\@@rehead}{\@rehead}}
+\newcommand{\@rehead}[1]{\renewcommand*{\scrheadings@even@right@head}{#1}}
+\newcommand{\@@rehead}[2][]{%
+ \renewcommand*{\scrplain@even@right@head}{#1}%
+ \renewcommand*{\scrheadings@even@right@head}{#2}}
+\newcommand{\rohead}{\kernel@ifnextchar[{\@@rohead}{\@rohead}}
+\newcommand{\@rohead}[1]{\renewcommand*{\scrheadings@odd@right@head}{#1}}
+\newcommand{\@@rohead}[2][]{%
+ \renewcommand*{\scrplain@odd@right@head}{#1}%
+ \renewcommand*{\scrheadings@odd@right@head}{#2}}
+\newcommand{\cehead}{\kernel@ifnextchar[{\@@cehead}{\@cehead}}
+\newcommand{\@cehead}[1]{\renewcommand*{\scrheadings@even@middle@head}{#1}}
+\newcommand{\@@cehead}[2][]{%
+ \renewcommand*{\scrplain@even@middle@head}{#1}%
+ \renewcommand*{\scrheadings@even@middle@head}{#2}}
+\newcommand{\cohead}{\kernel@ifnextchar[{\@@cohead}{\@cohead}}
+\newcommand{\@cohead}[1]{\renewcommand*{\scrheadings@odd@middle@head}{#1}}
+\newcommand{\@@cohead}[2][]{%
+ \renewcommand*{\scrplain@odd@middle@head}{#1}%
+ \renewcommand*{\scrheadings@odd@middle@head}{#2}}
+\newcommand{\ifoot}{\kernel@ifnextchar[{\@@lfoot}{\@lfoot}}
+\newcommand{\@lfoot}[1]{\@refoot{#1}\@lofoot{#1}}
+\newcommand{\@@lfoot}[2][]{\@@refoot[{#1}]{#2}\@@lofoot[{#1}]{#2}}
+\newcommand{\ofoot}{\kernel@ifnextchar[{\@@rfoot}{\@rfoot}}
+\newcommand{\@rfoot}[1]{\@lefoot{#1}\@rofoot{#1}}
+\newcommand{\@@rfoot}[2][]{\@@lefoot[{#1}]{#2}\@@rofoot[{#1}]{#2}}
+\newcommand{\cfoot}{\kernel@ifnextchar[{\@@cfoot}{\@cfoot}}
+\newcommand{\@cfoot}[1]{\@cefoot{#1}\@cofoot{#1}}
+\newcommand{\@@cfoot}[2][]{\@@cefoot[{#1}]{#2}\@@cofoot[{#1}]{#2}}
+\newcommand{\lefoot}{\kernel@ifnextchar[{\@@lefoot}{\@lefoot}}
+\newcommand{\@lefoot}[1]{\renewcommand*{\scrheadings@even@left@foot}{#1}}
+\newcommand{\@@lefoot}[2][]{%
+ \renewcommand*{\scrplain@even@left@foot}{#1}%
+ \renewcommand*{\scrheadings@even@left@foot}{#2}}
+\newcommand{\lofoot}{\kernel@ifnextchar[{\@@lofoot}{\@lofoot}}
+\newcommand{\@lofoot}[1]{\renewcommand*{\scrheadings@odd@left@foot}{#1}}
+\newcommand{\@@lofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@left@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@left@foot}{#2}}
+\newcommand{\refoot}{\kernel@ifnextchar[{\@@refoot}{\@refoot}}
+\newcommand{\@refoot}[1]{\renewcommand*{\scrheadings@even@right@foot}{#1}}
+\newcommand{\@@refoot}[2][]{%
+ \renewcommand*{\scrplain@even@right@foot}{#1}%
+ \renewcommand*{\scrheadings@even@right@foot}{#2}}
+\newcommand{\rofoot}{\kernel@ifnextchar[{\@@rofoot}{\@rofoot}}
+\newcommand{\@rofoot}[1]{\renewcommand*{\scrheadings@odd@right@foot}{#1}}
+\newcommand{\@@rofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@right@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@right@foot}{#2}}
+\newcommand{\cefoot}{\kernel@ifnextchar[{\@@cefoot}{\@cefoot}}
+\newcommand{\@cefoot}[1]{\renewcommand*{\scrheadings@even@middle@foot}{#1}}
+\newcommand{\@@cefoot}[2][]{%
+ \renewcommand*{\scrplain@even@middle@foot}{#1}%
+ \renewcommand*{\scrheadings@even@middle@foot}{#2}}
+\newcommand{\cofoot}{\kernel@ifnextchar[{\@@cofoot}{\@cofoot}}
+\newcommand{\@cofoot}[1]{\renewcommand*{\scrheadings@odd@middle@foot}{#1}}
+\newcommand{\@@cofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@middle@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@middle@foot}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\clearscrheadings}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{macro}{\clearscrheadfoot}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{macro}{\clearscrpain}
+% \changes{v2.0j}{2001/08/18}{New}
+% Maybe you want to clear the currently defined head and foot. First
+% let's clear only scrheadings pagestyle but not scrplain pagestyle.
+% We do this simply using the already known command:
+% \begin{macrocode}
+\newcommand*{\clearscrheadings}{%
+ \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}}
+% \end{macrocode}
+% We can do almost the same to clear scrheadings pagestyle and
+% scrplain pagestyle together:
+% \begin{macrocode}
+\newcommand*{\clearscrheadfoot}{%
+ \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}}
+% \end{macrocode}
+% But, for only clearing the scrplain pagestyle, we have to do the
+% redefinition directly:
+% \begin{macrocode}
+\newcommand*{\clearscrplain}{%
+ \renewcommand*{\scrplain@even@left@head}{}%
+ \renewcommand*{\scrplain@even@middle@head}{}%
+ \renewcommand*{\scrplain@even@right@head}{}%
+ \renewcommand*{\scrplain@odd@left@head}{}%
+ \renewcommand*{\scrplain@odd@middle@head}{}%
+ \renewcommand*{\scrplain@odd@right@head}{}%
+ \renewcommand*{\scrplain@even@left@foot}{}%
+ \renewcommand*{\scrplain@even@middle@foot}{}%
+ \renewcommand*{\scrplain@even@right@foot}{}%
+ \renewcommand*{\scrplain@odd@left@foot}{}%
+ \renewcommand*{\scrplain@odd@middle@foot}{}%
+ \renewcommand*{\scrplain@odd@right@foot}{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% Let's do the default setting:
+% \changes{v2.0m}{2002/02/05}{Active support for new letter class
+% \texttt{scrlttr2}}
+% \changes{v3.12}{2013/12/14}{fix \cs{rohead} if page number left at head}
+% \begin{macrocode}
+\def\@tempa{koma}\ifx\scrheadings@style\@tempa
+ \@ifclassloaded{scrlttr2}{%
+ \ifcase\@pageat
+ \lehead[\pagemark]{\pagemark}\lohead[\pagemark]{\pagemark}%
+ \chead{\rightmark}%
+ \rehead{\leftmark}\rohead{\leftmark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \chead[\pagemark]{\pagemark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \chead{\rightmark}%
+ \rehead[\pagemark]{\pagemark}\rohead[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \lefoot[\pagemark]{\pagemark}\lofoot[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \cfoot[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \refoot[\pagemark]{\pagemark}\rofoot[\pagemark]{\pagemark}%
+ \fi
+ \let\ps@save@myheadings=\ps@save@headings
+ }{%
+ \ohead{\if@twoside\headmark\fi}%
+ \chead{\if@twoside\else\headmark\fi}%
+ \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}%
+ \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}%
+ }%
+\else\def\@tempa{standard}\ifx\scrheadings@style\@tempa
+ \ihead{\headmark}
+ \ohead{\pagemark}
+ \cfoot[\pagemark]{}
+ \else\PackageErrorNoLine{scrpage2}{unknown scrheadings style}%
+ {Somehow \string\scrheadings@style was
+ defined\MessageBreak
+ as ``\scrheadings@style''.\MessageBreak
+ scrpage2 doesn't know what to do.
+ If you'll continue, pagestyle
+ ``scrheadings''\MessageBreak
+ will be predefined empty}
+\fi\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup\expandafter
+\ifx\csname chaptermark\endcsname\relax
+ \begingroup\expandafter\expandafter\expandafter\endgroup\expandafter
+ \ifx\csname sectionmark\endcsname\relax
+ \ifx\@mkboth\markboth\@automarktrue\fi
+ \else
+% \end{macrocode}
+% \changes{v2.5a}{2012/11/02}{\cs{@gobble} is long, but \cs{sectionmark} and
+% \cs{chaptermark} may be short}
+% \begin{macrocode}
+ \ifx\sectionmark\@gobble\else
+ \begingroup
+ \def\@gobble#1{}\ifx\sectionmark\@gobble\else
+ \aftergroup\@automarktrue
+ \fi
+ \endgroup
+ \fi
+ \fi
+\else
+ \ifx\chaptermark\@gobble\else
+ \begingroup
+ \def\@gobble#1{}\ifx\chaptermark\@gobble\else
+ \aftergroup\@automarktrue
+ \fi
+ \endgroup
+ \fi
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{Configurationfile}
+% Not last and not least we include the local configuration-file
+% \texttt{scrpage.cfg}, if it exists.
+% \begin{macrocode}
+\InputIfFileExists{scrpage.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file scrpage.cfg used^^J%
+ *************************************}}
+ {}
+% \end{macrocode}
+%
+%
+% \subsection{Some checks}
+% \changes{v2.0}{2001/04/20}{\cs{headheight}-check}
+% Last but not least we do some checks at version 2. Some means one at
+% the moment. And the one is a check, if the \cs{headheight} should be
+% increased.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifdim\headheight=12pt
+ \PackageWarningNoLine{scrpage2}%
+ {seems you are using a constant headheight.\MessageBreak
+ If you get overfull \string\vbox\space warnings at almost every%
+ \MessageBreak
+ page, you should increase headheight e.g. writing\MessageBreak
+ \space\string\setlength{\string\headheight}{%
+ 1.1\string\baselineskip}\MessageBreak
+ into the preamble of your document.\MessageBreak
+ A better solution would be to use typearea package}%
+ \else\ifdim\headheight<1.07\baselineskip
+ \PackageWarningNoLine{scrpage2}%
+ {seems you are using a very small headheight.\MessageBreak
+ If you get overfull \string\vbox\space warnings at almost every%
+ \MessageBreak
+ page, you should increase headheight e.g. writing\MessageBreak
+ \space\string\setlength{\string\headheight}{%
+ 1.1\string\baselineskip}\MessageBreak
+ into the preamble of your document.\MessageBreak
+ A better solution would be to use typearea package}%
+ \fi\fi}
+% \end{macrocode}
+%
+% \subsection{End}
+% \begin{macrocode}
+%</scrpage>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrpage.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrsource.tex b/macros/latex/contrib/koma-script/source/scrsource.tex
new file mode 100644
index 0000000000..f7cbbbda1e
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrsource.tex
@@ -0,0 +1,137 @@
+% ======================================================================
+% scrsource.tex
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrsource.tex
+% Copyright (c) Markus Kohm, 2002-2018
+%
+% 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.
+% ======================================================================
+
+% Try to get the version of KOMA-Script from scrkernel-version.dtx.
+\begingroup
+ \def\ProvidesFile#1[#2]{\csname endinput\endcsname}%
+ \input scrkernel-version.dtx
+ \newcommand*{\ParseKOMAScriptVersion}{}
+ \def\ParseKOMAScriptVersion#1/#2/#3 v#4 #5\ParseKOMAScriptVersion{%
+ \gdef\filedate{#1\kern1pt-\kern0pt#2\kern1pt-\kern0pt#3}%
+ \gdef\fileversion{#4}%
+ }
+ \expandafter
+ \ParseKOMAScriptVersion\KOMAScriptVersion\ParseKOMAScriptVersion
+ \gdef\filename{\jobname}
+\endgroup
+
+\ProvidesFile{scrsource.tex}[\KOMAScriptVersion (source)]
+\documentclass{scrdoc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\newcommand*{\Environment}[1]{\texttt{\mbox{#1}}}
+\CodelineIndex
+\RecordChanges\setcounter{GlossaryColumns}{1}
+\title{\KOMAScript{} -- The Source\footnote{Ich weiß natürlich, dass ein
+ Englischer Titel eines vorwiegend deutschsprachigen Dokuments ein
+ wenig eigentümlich ist, aber "`\KOMAScript{} -- Der
+ Quelltext"' wollte mir einfach nicht gefallen.}%
+}
+\date{\filedate\\[1ex] Version \fileversion}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \begin{abstract}\noindent
+ In diesem Dokument finden Sie \emph{nicht} die Anleitung zu
+ \KOMAScript{}. Wenn Sie diese suchen, dann suchen Sie bitte nach
+ \texttt{scrguide} (Deutsch) oder \texttt{scrguien} (Englisch). In
+ diesem Dokument ist die Implementierung von \KOMAScript{} -- in
+ erster Linie der \KOMAScript{}-Klassen -- dokumentiert.
+ \end{abstract}
+ \tableofcontents
+
+ \clearpage
+ \addsec{Vorwort}
+
+ Sie finden im Folgenden die Dokumentation der Implementierung von
+ \KOMAScript. Diese kann für Paketautoren von Interesse sein. Bevor
+ ein Paketautor ein Makro umdefiniert oder ein internes Makro
+ verwendet, sollte er jedoch Rücksprache mit dem Autor von
+ \KOMAScript{} halten, damit so weit wie möglich sichergestellt ist,
+ dass bei zukünftigen Versionen von \KOMAScript{} die notwendige
+ Kompatibilität erhalten bleibt oder der Paketautor über notwendige
+ Änderungen an den entsprechenden Makros informiert wird.
+
+ Teile der Dokumentation sind in Englisch. Der größte Teil ist jedoch
+ in Deutsch.
+
+ Der Quelltext ist in logische Gruppen eingeteilt und in dieser Form
+ dokumentiert. Die Reihenfolge in der Dokumentation entspricht jedoch
+ \emph{nicht} der Reihenfolge des Codes in den Klassen und Paketen.
+
+ \DocInclude{scrkernel-version}
+ \DocInclude{scrkernel-basics}
+% \DocInclude{tocbasic}
+ \DocInclude{scrkernel-miscellaneous}
+ \DocInclude{scrkernel-language}
+ \DocInclude{scrkernel-fonts}
+ \DocInclude{scrkernel-typearea}
+ \DocInclude{scrkernel-floats}
+ \DocInclude{scrkernel-footnotes}
+ \DocInclude{scrkernel-pagestyles}
+ \DocInclude{scrkernel-paragraphs}
+ \DocInclude{scrkernel-title}
+ \DocInclude{scrkernel-sections}
+ \DocInclude{scrkernel-listsof}
+ \IfFileExists{scrkernel-tocstyle.dtx}{\DocInclude{scrkernel-tocstyle}}{}
+ \DocInclude{scrkernel-bibliography}
+ \DocInclude{scrkernel-index}
+ \DocInclude{scrkernel-listsandtabulars}
+ \DocInclude{scrlfile}
+ \DocInclude{scrlogo}
+ \DocInclude{scrkernel-compatibility}
+ \DocInclude{scrkernel-notepaper}
+ \DocInclude{scrkernel-variables}
+ \DocInclude{scrkernel-pseudolengths}
+ \DocInclude{scrkernel-letterclassoptions}
+ \DocInclude{japanlco}
+ \DocInclude{scrkernel-circularletters}
+ \DocInclude{scrextend}
+ \DocInclude{scrhack}
+
+ \PrintIndex
+ \PrintChanges
+\end{document}
+%
+% end of file `scrsource.tex'
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrstrip.inc b/macros/latex/contrib/koma-script/source/scrstrip.inc
new file mode 100644
index 0000000000..01cbfbcfb8
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrstrip.inc
@@ -0,0 +1,119 @@
+% ======================================================================
+% scrstrip.inc
+% Copyright (c) Markus Kohm, 2002-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.
+%
+% In particular, NO PERMISSION is granted to modify the contents of this
+% file since it contains the legal notices that are placed in the files
+% it generates.
+%
+% This work consists of all files listed in manifest.txt.
+% ----------------------------------------------------------------------
+% scrstrip.inc
+% Copyright (c) Markus Kohm, 2002-2017
+%
+% Diese Datei ist Teil des LaTeX2e-KOMA-Script-Pakets.
+%
+% 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.
+%
+% Als Besonderheit: Es NICHT GESTATTET den Inhalt dieser Datei zu
+% aendern, da sie rechtliche Hinweise enthaelt, die in die erzeugten
+% Dateien eingefuegt werden.
+%
+% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+%
+% This file will be included at startup of every KOMA-Script
+% docstrip batch file.
+%
+
+% ---------- start of docstrip -----------------------------------------
+
+\KOMAdefVariable{AUTHOR}{Markus Kohm}
+\KOMAdefVariable{EMAIL}{[komascript at gmx info]}
+\KOMAdefVariable{COPYRIGHTFROM}{1994}
+\KOMAdefVariable{COPYRIGHTTILL}{2017}
+
+\let\ifbeta=\iffalse % with = will be replaced by release process
+
+\ifToplevel{%
+ \Msg{+======================================================================}
+ \Msg{| KOMA-Script}
+ \Msg{| a versatile LaTeX2e bundle}
+ \Msg{+----------------------------------------------------------------------}
+ \Msg{| This batchfile will unpack some or all parts of KOMA-Script.}
+ \Msg{| On errors press either `h' or ask an expert for help after reading}
+ \Msg{| `README'.}
+ \Msg{+----------------------------------------------------------------------}
+% ---------- some docstrip switchs -------------------------------------
+ \keepsilent
+ \askforoverwritefalse
+% ---------- validity --------------------------------------------------
+ \KOMAvalidityTest{manifest.txt}
+}
+
+% ---------- defining preambles ----------------------------------------
+
+\preamble
+
+\noexpand\KOMAuseVariable{COPYRIGHT}
+
+This file was generated from file(s) of the KOMA-Script bundle.
+---------------------------------------------------------------
+
+It may be distributed under the conditions of the
+LaTeX Project Public License in the version distributed together
+with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+
+This file may only be distributed together with a copy of the
+KOMA-Script bundle. You may however distribute the
+KOMA-Script bundle without all such generated files. See also
+`lppl.txt' or `lppl-de.txt' for additional information.
+
+The list of files belonging to KOMA-Script distribution is given in
+the file `manifest.txt'. See also `lppl.txt' or `lppl-de.txt' for
+additional information.
+
+If this file is a beta version, you may not be allowed to distribute
+it. Look at the comments below to see if this is the case.
+
+English and German manuals are part of KOMA-Script bundle.
+----------------------------------------------------------
+
+See `README'.
+
+The KOMA-Script bundle (but maybe not this file) was based upon the
+LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
+standard classes created by The LaTeX3 Project 1994-1996. You may
+find a complete unmodified copy of LaTeX2e at
+<http://mirror.ctan.org/tex-archive/macros/latex/base/>.
+
+\endpreamble
+
+\endinput
+
+%%% Local Variables:
+%%% mode: latex
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrstrop.inc b/macros/latex/contrib/koma-script/source/scrstrop.inc
new file mode 100644
index 0000000000..715acaedaa
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrstrop.inc
@@ -0,0 +1,67 @@
+% ======================================================================
+% scrstrop.inc
+% Copyright (c) Markus Kohm, 2002-2012
+%
+% 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.
+% ----------------------------------------------------------------------
+% scrstrop.inc
+% Copyright (c) Markus Kohm, 2002-2012
+%
+% 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.
+% ======================================================================
+%
+% This file will be included at end of every KOMA-Script
+% docstrip batch file.
+%
+
+% ---------- end of docstrip -----------------------------------------
+
+\ifToplevel{%
+ \Msg{| Unpacking finished successfully.}
+ \Msg{+----------------------------------------------------------------------}
+ \ifbeta
+ \Msg{| YOU SHOULD NOTE, THAT THIS IS NOT AN OFFICIAL RELEASE!}
+ \Msg{| THIS VERSION IS INTENDED TO BE USED FOR TESTING ONLY!}
+ \Msg{| USAGE FOR PURPOSES OTHER THAN INDENTED IS DANGEROUS!}
+ \Msg{| DON'T EXPECT ANY SUPPORT FOR THIS VERSION!}
+ \else
+ \Msg{| To finish the installation you have to move some files into}
+ \Msg{| a directory searched by TeX, e.g., `tex/latex/koma-script/'}
+ \Msg{| of a local or personal TEXMF tree.}
+ \Msg{| See `INSTALL.txt' (English) or `INSTALLD.txt' (German)}
+ \Msg{| for additional information about the installation and}
+ \Msg{| the user manual.}
+ \fi
+ \Msg{+======================================================================}
+}
+
+\endinput
+
+%%% Local Variables:
+%%% mode: latex
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrtime.dtx b/macros/latex/contrib/koma-script/source/scrtime.dtx
new file mode 100644
index 0000000000..a301769a38
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrtime.dtx
@@ -0,0 +1,785 @@
+% \CheckSum{311}
+% \iffalse
+% ======================================================================
+% scrtime.dtx
+% Copyright (c) Markus Kohm, 1995-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.
+% ----------------------------------------------------------------------
+% scrtime.dtx
+% Copyright (c) Markus Kohm, 1995-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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrtime.dtx 2649 2017-05-29 09:39:43Z kohm $
+%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<*driver>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2017-05-29 11:39:43 +0200 (Mon, 29 May 2017) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 2649 $
+\endgroup
+\ProvidesFile{scrtime.dtx}[\filedate\space\filerevision\space
+%</driver>
+%<*driver|package>
+%<identify&scrtime>\ProvidesPackage{scrtime}[%
+%<identify&scrdate>\ProvidesPackage{scrdate}[%
+%<*driver|identify>
+%!KOMAScriptVersion
+ package
+%</driver|identify>
+%<identify&scrtime> (time of LaTeX run)%
+%<identify&scrdate> (day of the week)%
+%<*driver|identify>
+]
+%</driver|identify>
+%</driver|package>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHFROM}{1995}
+ \generate{\usepreamble\defaultpreamble
+ \file{scrtime.sty}{%
+ \from{scrkernel-version.dtx}{package,scrtime}%
+ \from{scrtime.dtx}{package,scrtime,identify}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrtime.dtx}{package,scrtime,option}%
+ \from{scrtime.dtx}{package,scrtime,body}%
+ \from{scrlogo.dtx}{logo}%
+ } %
+ \file{scrdate.sty}{%
+ \from{scrkernel-version.dtx}{package,scrdate}%
+ \from{scrtime.dtx}{package,scrdate,identify}%
+ \from{scrkernel-basics.dtx}{load}%
+ \from{scrtime.dtx}{package,scrdate,option}%
+ \from{scrtime.dtx}{package,scrdate,body}%
+ \from{scrlogo.dtx}{logo}%
+ } %
+ }
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</dtx>
+%<*driver>
+\documentclass{scrdoc}
+\usepackage[german,english]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrtime.dtx}
+\title{The \textsf{KOMA}-timedate-bundle\thanks{This file has
+ revision number \fileversion, last revised \filedate.}}
+\author{Markus Kohm}
+\date{\filedate}
+\begin{document}
+ \maketitle
+ \begin{abstract}
+ This bundle includes a package \texttt{scrtime} defining some macros to
+ handle compilation-time. It's a very simple implementation similar to
+ \texttt{time.sty}. I've tried to use no additional register.
+
+ The second package \texttt{scrdate} defines some macros to handle the name
+ of the day!
+ \end{abstract}
+ \tableofcontents
+ \DocInput{scrtime.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% See the \KOMAScript{} guide for informations about how to use the package.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+%
+% \subsection{Options}
+%
+% \iffalse
+%<*option>
+% \fi
+% Since version~1.2 both packages use \textsf{scrkbase} for options and
+% additional features.
+%
+%
+% \subsubsection{Options of \textsf{scrtime}}
+%
+% \iffalse
+%<*scrtime>
+% \fi
+%
+% \begin{option}{12h}
+% \changes{v1.1b}{1995/02/15}{Option \texttt{12h} added.}
+% \changes{v1.2}{2010/03/10}{Option uses \textsf{scrkbase}.}
+% \begin{option}{24h}
+% \changes{v1.1b}{1995/02/15}{Option \texttt{24h} added.}
+% \changes{v1.2}{2010/03/10}{Option is deprecated.}
+% \begin{macro}{\if@Hxii}
+% \changes{v1.1b}{1995/02/15}{new switch}
+% There are two the two Options |24h| and |12h|. We need a switch to
+% distinguish.
+% \begin{macrocode}
+\newif\if@Hxii
+% \end{macrocode}
+% \end{macro}
+%
+% So the Options are simple.
+% \begin{macrocode}
+\KOMA@ifkey{12h}{@Hxii}
+\KOMA@DeclareDeprecatedOption[scrtime]{24h}{12h=false}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% Currently only \textsf{scrtime} uses options, so only \textsf{scrtime} needs
+% to process them.
+% \begin{macrocode}
+\KOMAProcessOptions\relax
+% \end{macrocode}
+%
+% \iffalse
+%</scrtime>
+%</option>
+% \fi
+%
+% \subsection{Macros}
+%
+% \iffalse
+%<*body>
+% \fi
+%
+% \subsubsection{Macros of \textsf{scrtime}}
+% \iffalse
+%<*scrtime>
+% \fi
+% We use |\@tempcnta| and |\@tempcntb| but we know, that this is not
+% a very good idea.
+%
+% \begin{macro}{\thistime}
+% \changes{v1.1b}{1995/02/15}{{\cmd\thistime*} added.}^^A
+% \changes{v1.1b}{1995/02/15}{{\cmd\thistime} works.}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% First we have to decide, is it a star-version ore not.
+% \begin{macrocode}
+\def\thistime{%
+ \kernel@ifstar
+ {\let\@tempif\iffalse\@thistime}
+ {\let\@tempif\iftrue\@thistime}}
+% \end{macrocode}
+% Know we have to calculate the hours and minutes. |\@tempcnta| are the
+% hours and |\@tempcntb| are the minutes.
+% \begin{macrocode}
+\newcommand*{\@thistime}[1][:]{%
+ \begingroup
+ \@tempcnta\time\divide\@tempcnta60\multiply\@tempcnta60
+ \@tempcntb\time\advance\@tempcntb-\@tempcnta
+ \divide\@tempcnta60
+% \end{macrocode}
+% If we use 12h-mode, we have to cut the houres.
+% \changes{v1.1d}{1996/01/14}{Space added at \cs{@thistime} between -12
+% and \cs{fi} (Martin Schroeder).}
+% \begin{macrocode}
+ \if@Hxii\ifnum\@tempcnta>12 \advance\@tempcnta-12 \fi\fi
+% \end{macrocode}
+% Know we have to compose the value. If the minutes are less than 10
+% maybe there has to be an additional 0.
+% \begin{macrocode}
+ \the\@tempcnta{#1}\@tempif\ifnum\@tempcntb<10 0\fi\fi\the\@tempcntb%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\settime}
+% \changes{v1.1b}{1995/02/15}{{\cmd\settime} redefines {\cmd\@thistime}}
+% \changes{v1.1c}{1995/05/24}{missing macrocode-environment inserted}
+% We simply have to set |\thistime|.
+% \begin{macrocode}
+\newcommand*{\settime}[1]{\renewcommand*{\@thistime}[1][]{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \iffalse
+%</scrtime>
+% \fi
+%
+%
+% \subsubsection{Macros of \textsf{scrdate}}
+%
+% \iffalse
+%<*scrdate>
+% \fi
+%
+% \changes{v1.1a}{1995/02/12}{Changed simply all but the user-interface.}
+% \changes{v3.05a}{2010/03/10}{Changed simply everything.}
+% Since version~3.05a \textsf{scrdate} was rewritten. First step was to make
+% more macros full expandable to provide \cs{MakeUppercase} and
+% \cs{MakeLowercase}. Second was to extend the user interface by some new
+% functionality.
+%
+% \begin{macro}{\CenturyPart}
+% \changes{v3.05a}{2010/03/10}{New}
+% This is the century part of a year number and so only a shortcut to
+% |\XdivY{...}{100}|, that is defined at \textsf{scrbase}.
+% \begin{macrocode}
+\newcommand*{\CenturyPart}[1]{\XdivY{#1}{100}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DecadePart}
+% \changes{v3.05a}{2010/03/10}{New}
+% This is the year number withoud the century part and therefrso only a
+% shortcut to |\XmodY{...}{100}|, that is defined at \textsf{scrbase}.
+% \begin{macrocode}
+\newcommand*{\DecadePart}[1]{\XmodY{#1}{100}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@GaussYear}
+% \changes{v3.05a}{2010/03/10}{New (internal)}
+% At the Gauss calculation of the day of the week January and February relates
+% to the year before. This macro does the correction for any date.
+% \begin{macrocode}
+\newcommand*{\@GaussYear}[3]{%
+ \ifcase #2
+ \PackageError{scrdate}{month out of range}{%
+ You've asked for the Gauss year of ISO date #1-#2-#3,\MessageBreak
+ this means, that month hat invalid value '#2'.}%
+ \or
+ \numexpr #1 - 1\relax
+ \or
+ \numexpr #1 - 1\relax
+ \else
+ #1
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DayNumber}
+% \changes{v3.05a}{2010/03/10}{New}
+% Returns the numerical value of the day of week. Note, that Sunday is 0,
+% Monday is 1, \dots, Saturday is 6. We use the Gauss calculation of the day
+% of the week. First argument is the year, second the month and last the day
+% of the month.
+% \begin{macrocode}
+\newcommand*{\DayNumber}[3]{%
+ \XmodY{%
+ \numexpr #3
+ + \ifcase #2
+ \PackageError{scrdate}{month out of range}{%
+ You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak
+ this means, that month hat invalid value '#2'.}%
+ \or 28 \or 31 \or 2 \or 5 \or 7 \or 10 \or 12 \or 15 \or 18
+ \or 20 \or 23 \or 25
+ \else
+ \PackageError{scrdate}{month out of range}{%
+ You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak
+ this means, that month hat invalid value '#2'.}%
+ \fi
+ + \DecadePart{\@GaussYear{#1}{#2}{#3}}
+ + \XdivY{\DecadePart{\@GaussYear{#1}{#2}{#3}}}{4}
+ + \XdivY{\CenturyPart{\@GaussYear{#1}{#2}{#3}}}{4}
+ - 2 * \CenturyPart{\@GaussYear{#1}{#2}{#3}} \relax
+ }{7}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ISODayNumber}
+% \changes{v3.05a}{2010/03/10}{New}
+% Das gleiche wie \cs{DayNumber} aber mit einem ISO-Datum als Argument.
+% \begin{macrocode}
+\newcommand*{\ISODayNumber}[1]{\expandafter\@IsoDayNumber#1\@nil}
+% \end{macrocode}
+% \begin{macro}{\@IsoDayNumber}
+% \changes{v3.05a}{2010/03/10}{New (internal)}
+% \begin{macrocode}
+\newcommand*{\@IsoDayNumber}{}
+\def\@IsoDayNumber#1-#2-#3\@nil{\DayNumber{#1}{#2}{#3}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DayName}
+% \changes{v3.05a}{2010/03/10}{New}
+% Returns the name of the day of the week. Arguments like \cs{DayNumber}.
+% \begin{macrocode}
+\newcommand*{\DayName}[3]{\@dayname{\DayNumber{#1}{#2}{#3}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ISODayName}
+% \changes{v3.05a}{2010/03/10}{New}
+% Das gleiche wie \cs{DayName} aber mit einem ISO-Datum als Argument.
+% \begin{macrocode}
+\newcommand*{\ISODayName}[1]{\@dayname{\ISODayNumber{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DayNameByNumber}
+% \changes{v3.05a}{2010/03/10}{New}
+% Returns the name of the day of the week. The argument is a number that will
+% be transposed to the range 0..6.
+% \begin{macrocode}
+\newcommand*{\DayNameByNumber}[1]{%
+ \@dayname{\XmodY{#1}{7}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ISOToday}
+% \changes{v3.05a}{2010/03/10}{New}
+% Returns the ISO date.
+% \begin{macrocode}
+\newcommand*{\ISOToday}{%
+ \the\year-\ifnum \month<10 0\fi\the\month-\ifnum \day<10 0\fi\the\day%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IsoToday}
+% \changes{v3.05a}{2010/03/10}{New}
+% Returns the ISO date.
+% \begin{macrocode}
+\newcommand*{\IsoToday}{%
+ \the\year-\the\month-\the\day%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\todaysname}
+% \changes{v3.05a}{2010/03/10}{Rewritten}
+% Using \cs{DayName} this is very, very simple.
+% \begin{macrocode}
+\newcommand*{\todaysname}{\DayName{\year}{\month}{\day}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\todaysnumber}
+% \changes{v3.05a}{2010/03/11}{New}
+% Using \cs{DayNumber} this is very, very simple.
+% \begin{macrocode}
+\newcommand*{\todaysnumber}{\DayNumber{\year}{\month}{\day}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\nameday}
+% \changes{v3.05a}{2010/03/10}{Not longer \cs{long}}
+% We simply have to redefine |\todaysname|
+% \begin{macrocode}
+\newcommand\nameday[1]{\renewcommand*{\todaysname}{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newdaylanguage}
+% \changes{v3.05a}{2010/03/10}{Sunday is 0}
+% We write a macro to define the name of the days.
+% \begin{macro}{\scrdate@languagenamewarning}
+% But before this, we have to define a once only warning.
+% \begin{macrocode}
+\newcommand*\scrdate@languagenamewarning{%
+ \PackageWarningNoLine{scrdate}
+ {\string\languagename\space not
+ defined, using \string\language.\MessageBreak
+ This may result in use of wrong language!\MessageBreak
+ You should use a compatible language
+ package\MessageBreak
+ (e.g. `babel', `german', `french', ...)}%
+ \let\scrdate@languagenamewarning\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcommand\newdaylanguage[8]{%
+% \end{macrocode}
+% First we check, if the language is defined at the format, the user uses.
+% If it is not defined, we do not define the name of the days and warn.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{l@#1}{%
+ \PackageInfoNoLine{scrdate}{Language #1\space not defined.\MessageBreak
+ \protect\dayname@#1\space skipped}%
+% \end{macrocode}
+% \changes{v1.1c}{1995/05/24}{missing \cs{end\{macrocode\}} added.}
+% If it is defined, we define the name-selection-macro
+% |\dayname@|\emph{language}.
+% First we define the new macro |\dayname@|\emph{language}:
+% \changes{v3.05a}{2010/03/10}{Group removed.}
+% \changes{v3.15}{2014/12/11}{more robust \cs{ifcase}}
+% \begin{macrocode}
+ }{%
+ \@namedef{dayname@#1}##1{%
+ \ifcase\numexpr \XmodY{##1}{7}\relax
+ #8\or #2\or #3\or #4\or #5\or #6\or #7\fi%
+ }%
+% \end{macrocode}
+% Then we define, what to do at |\begin{document}|:
+% \begin{macrocode}
+ \AtBeginDocument{%
+% \end{macrocode}
+% There we first have to test, if |\date|\emph{language} is defined
+% (e.g. using |german.sty|). If not, we have to warn once more.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{date#1}{%
+ \PackageInfoNoLine{scrdate}
+ {\protect\date#1\space not defined.\MessageBreak
+ \protect\todaysname\space probably cannot use
+ \protect\dayname@#1}%
+% \end{macrocode}
+% But if it is defined, we can use it
+% \begin{macrocode}
+ }{%
+% \end{macrocode}
+% There we first save |\date|\emph{language} as |\D@date|\emph{language}.
+% This is a bit tricky, but I think, you'll understand it.
+% \begin{macrocode}
+ \expandafter\let\csname D@date#1\expandafter\endcsname
+ \csname date#1\endcsname
+% \end{macrocode}
+% Now we redefine |\date|\emph{language}. It first defines |\@dayname| and
+% then calls saved macro. If you've understand the definition before, you'll
+% understand this tricky one, too.
+% \begin{macrocode}
+ \@namedef{date#1}{%
+ \expandafter\let\expandafter\@dayname\csname dayname@#1\endcsname
+ \@nameuse{D@date#1}}%
+% \end{macrocode}
+% Last we have to select this new |\date|\emph{language}.
+% \changes{v1.1j}{2000/01/20}{use of \cs{languagename} if defined}
+% \changes{v3.08b}{2011/03/31}{one \% added}
+% \begin{macrocode}
+ \@ifundefined{languagename}{%
+ \scrdate@languagenamewarning
+ \ifnum\language=\@nameuse{l@#1}
+ \@nameuse{date#1}%
+ \fi
+ }{%
+ \@ifundefined{date\languagename}%
+ {}%
+ {\@nameuse{date\languagename}}%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@dayname}
+% This should be named selecting the language. Since I changed the definitions
+% |german.sty| and equal may be loaded before or after |scrdate.sty| or not.
+%
+% First we define the usual languages using |\newdaylanguage|:
+% \begin{macro}{\dayname@german}
+% \begin{macrocode}
+\newdaylanguage{german}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@ngerman}
+% \changes{v1.1i}{1999/10/09}{new language ``ngerman''.}
+% \begin{macrocode}
+\newdaylanguage{ngerman}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@naustrian}
+% \changes{v3.08b}{2011/02/22}{new language ``naustrian''.}
+% \begin{macrocode}
+\newdaylanguage{naustrian}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@austrian}
+% \changes{v3.08b}{2011/02/22}{new language ``austrian''.}
+% \begin{macrocode}
+\newdaylanguage{austrian}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@swissgerman}
+% \changes{v3.13}{2014/01/23}{new language ``swissgerman''.}
+% \begin{macrocode}
+\newdaylanguage{swissgerman}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@nswissgerman}
+% \changes{v3.13}{2014/01/23}{new language ``nswissgerman''.}
+% \begin{macrocode}
+\newdaylanguage{nswissgerman}{Montag}{Dienstag}{Mittwoch}
+ {Donnerstag}{Freitag}{Samstag}{Sonntag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@american}
+% \changes{v3.13}{2014/01/23}{new language ``american''.}
+% \begin{macrocode}
+\newdaylanguage{american}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@australian}
+% \changes{v3.13}{2014/01/23}{new language ``australian''.}
+% \begin{macrocode}
+\newdaylanguage{australian}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@british}
+% \changes{v3.13}{2014/01/23}{new language ``british''.}
+% \begin{macrocode}
+\newdaylanguage{british}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@canadian}
+% \changes{v3.13}{2014/01/23}{new language ``canadian''.}
+% \begin{macrocode}
+\newdaylanguage{canadian}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@english}
+% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''.}
+% \begin{macrocode}
+\newdaylanguage{english}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@newzealand}
+% \changes{v3.13}{2014/01/23}{new language ``newzealand''.}
+% \begin{macrocode}
+\newdaylanguage{newzealand}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@UKenglish}
+% \changes{v3.13}{2014/01/23}{new language ``UKenglish''.}
+% \begin{macrocode}
+\newdaylanguage{UKenglish}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@ukenglish}
+% \changes{v3.24}{2017/05/29}{new language ``ukenglish''.}
+% \begin{macrocode}
+\newdaylanguage{ukenglish}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@USenglish}
+% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''.}
+% \begin{macrocode}
+\newdaylanguage{USenglish}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@usenglish}
+% \changes{v3.24}{2017/05/29}{new language ``usenglish''.}
+% \begin{macrocode}
+\newdaylanguage{usenglish}{Monday}{Tuesday}{Wednesday}
+ {Thursday}{Friday}{Saturday}{Sunday}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@acadian}
+% \changes{v3.13}{2014/01/23}{new language ``acadian''.}
+% \begin{macrocode}
+\newdaylanguage{acadian}{Lundi}{Mardi}{Mercredi}
+ {Jeudi}{Vendredi}{Samedi}{Dimanche}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@canadien}
+% \changes{v3.13}{2014/01/23}{new language ``canadien''.}
+% \begin{macrocode}
+\newdaylanguage{canadien}{Lundi}{Mardi}{Mercredi}
+ {Jeudi}{Vendredi}{Samedi}{Dimanche}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@francais}
+% \changes{v3.13}{2014/01/23}{new language ``francais''.}
+% \begin{macrocode}
+\newdaylanguage{francais}{Lundi}{Mardi}{Mercredi}
+ {Jeudi}{Vendredi}{Samedi}{Dimanche}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@french}
+% \begin{macrocode}
+\newdaylanguage{french}{Lundi}{Mardi}{Mercredi}
+ {Jeudi}{Vendredi}{Samedi}{Dimanche}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@italian}
+% \changes{v1.1f}{1997/06/06}{New (thanks to Lorenzo M.\ Catucci)}
+% \begin{macrocode}
+\newdaylanguage{italian}{Luned\`\i}{Marted\`\i}{Mercoled\`\i}
+ {Gioved\`\i}{Venerd\`\i}{Sabato}{Domenica}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@spanish}
+% \changes{v1.1h}{1997/07/26}{New (thanks to Ralph J.\ Hangleiter)}
+% \begin{macrocode}
+\newdaylanguage{spanish}{Lunes}{Martes}{Mi\'ercoles}
+ {Jueves}{Viernes}{S\'abado}{Domingo}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@croatian}
+% \changes{v1.1l}{2001/10/05}{New (thanks to Branka Lon\v{c}arevi\'{c})}
+% \begin{macrocode}
+\newdaylanguage{croatian}{Ponedjeljak}{Utorak}{Srijeda}
+ {\v{C}etvrtak}{Petak}{Subota}{Nedjelja}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dayname@dutch}
+% \changes{v1.1m}{2002/02/02}{New (thanks to Henk Jongbloets)}
+% \changes{v1.1p}{2009/01/01}{fixed to upper case}
+% \begin{macrocode}
+\newdaylanguage{dutch}{Maandag}{Dinsdag}{Woensdag}
+ {Donderdag}{Vrijdag}{Zaterdag}{Zondag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@finnish}
+% \changes{v1.1n}{2005/02/07}{New (thanks to Hannu V\"ais\"anen)}
+% \begin{macrocode}
+\newdaylanguage{finnish}{Maanantai}{Tiistai}{Keskiviikko}
+ {Torstai}{Perjantai}{Lauantai}{Sunnuntai}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@norsk}
+% \changes{v1.1p}{2009/01/01}{New (thank to Sveinung Heggen)}
+% \begin{macrocode}
+\newdaylanguage{norsk}{Mandag}{Tirsdag}{Onsdag}
+ {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@danish}
+% \changes{v3.08}{2011/01/18}{New (thanks to Benjamin Hell)}
+% \begin{macrocode}
+\newdaylanguage{danish}{Mandag}{Tirsdag}{Onsdag}
+ {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@swedish}
+% \changes{v3.08}{2011/01/18}{New (thanks to Benjamin Hell)}
+% \begin{macrocode}
+\newdaylanguage{swedish}{M\aa{}ndag}{Tisdag}{Onsdag}
+ {Torsdag}{Fredag}{L\"ordag}{S\"ondag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@polish}
+% \changes{v3.13}{2014/01/07}{New (thanks to Blandyna Bogdol)}
+% \changes{v3.13}{2014/01/23}{Fixed (thanks to Elke Schubert)}
+% \begin{macrocode}
+\newdaylanguage{polish}{Poniedzia\l{}ek}{Wtorek}{\'Sroda}
+ {Czwartek}{Pi\aob{}tek}{Sobota}{Niedziela}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@czech}
+% \changes{v3.13}{2014/01/23}{New (thanks to Elke Schubert)}
+% \begin{macrocode}
+\newdaylanguage{czech}{Pond\v{e}l\'\i}{\'Uter\'y}{St\v{r}eda}
+ {\v{C}tvrtek}{P\'atek}{Sobota}{Ned\v{e}le}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dayname@slovak}
+% \changes{v3.13}{2014/02/26}{New (thanks to Elke Schubert)}
+% \begin{macrocode}
+\newdaylanguage{slovak}{Pondelok}{Utorok}{Streda}
+ {\v{S}tvrtok}{Piatok}{Sobota}{Nede\v{l}a}
+% \end{macrocode}
+% \end{macro}
+%
+% If there are no language-definitions, we simply want the US-english names
+% of the days.
+% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''.}
+% \changes{v3.15}{2014/12/11}{default language definition fixed.}
+% \begin{macrocode}
+\let\@dayname\dayname@english
+% \end{macrocode}
+% \end{macro}
+%
+% Last but not least file \texttt{scrdate.cfg} has to be included,
+% if it exists.
+% \begin{macrocode}
+\InputIfFileExists{scrdate.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file scrdate.cfg used^^J%
+ *************************************}}
+ {}
+% \end{macrocode}
+%
+% \iffalse
+%</scrdate>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% Ende der Datei `scrtime.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/scrwfile.dtx b/macros/latex/contrib/koma-script/source/scrwfile.dtx
new file mode 100644
index 0000000000..453d708d8e
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/scrwfile.dtx
@@ -0,0 +1,515 @@
+% \CheckSum{306}
+% \iffalse meta-comment
+% ======================================================================
+% scrwfile.dtx
+% Copyright (c) Markus Kohm, 2010-2014
+%
+% 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 and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% The KOMA-Script bundle consists of all files listed in manifest.txt.
+% The work `scrwfile' consists of the files `scrwfile.dtx' and
+% `scrlogo.dtx'.
+%
+% If you're missing the installation batch file `scrwfile.ins', try
+% tex scrwfile.dtx
+% to unpack all files.
+% The package documentation may be produced repeating
+% latex scrwfile.dtx
+% at least three times.
+% ----------------------------------------------------------------------
+% scrwfile.dtx
+% Copyright (c) Markus Kohm, 2010-2014
+%
+% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
+%
+% 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.
+%
+% Das KOMA-Script-Paket besteht aus allen Dateien, die in manifest.txt
+% genannt sind.
+% Das Werk `scrwfile' besteht aus den Dateien `scrwfile.dtx' und
+% `scrlogo.dtx'.
+%
+% Falls Sie die Installations-Batch-Datei `scrwfile.ins' vermissen,
+% probieren Sie einfach einmal
+% tex scrwfile.dtx
+% um alle Dateien auszupacken. Zur englischen Anleitung siehe den
+% englischen Kommentar oben.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrwfile.dtx 1805 2014-10-13 08:55:20Z kohm $
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{scrwfile.dtx}
+%</dtx>
+%<(package&identify)|driver>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package&identify>\ProvidesPackage{scrwfile}
+%<driver>\ProvidesFile{scrwfile.drv}
+%<*dtx|(package&identify)|driver>
+ [2013/08/05 v0.1f-alpha KOMA-Script package (write and clone files)]
+%</dtx|(package&identify)|driver>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2010}
+
+ \generate{\usepreamble\defaultpreamble
+ \file{scrwfile.sty}{%
+ \from{scrwfile.dtx}{package,trace,scrwfile,identify,option,body}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }
+
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+%</dtx>
+%<*driver>
+ \documentclass{scrdoc}
+ \usepackage[ngerman,english]{babel}
+ \usepackage{listings}
+ \lstnewenvironment{lstcode}[1][]{%
+ \lstset{language=[LaTeX]TeX,basicstyle=\ttfamily\small,#1}%
+ }{}
+
+ \CodelineIndex
+ \RecordChanges
+ \GetFileInfo{scrwfile.dtx}
+ \title{The \KOMAScript{} package \texttt{scrwfile}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+ \date{\filedate}
+ \author{Markus Kohm}
+
+ \newenvironment{Explain}{\par}{\par}
+ \let\Macro\cs
+ \let\Package\textsf
+ \let\File\texttt
+ \let\Option\texttt
+ \let\Counter\texttt
+ \let\ShowOutput\quote
+ \let\endShowOutput\endquote
+ \let\Parameter\marg
+ \let\OParameter\oarg
+ \providecommand\PParameter[1]{\mbox{\texttt{\{#1\}}}}
+ \let\PName\meta
+ \let\PValue\texttt
+ \providecommand*{\important}[1]{}
+ \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}%
+ }
+ \providecommand*{\IndexCmd}[2][]{}
+ \providecommand*{\textnote}[2][]{}
+ \makeatother
+
+ \begin{document}
+ \maketitle
+ \DocInput{\filename}
+ \end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{english}
+%
+% \changes{v0.1}{2010/10/01}{start of new package}
+% \changes{v0.1g}{2014/10/13}{manual moved to \KOMAScript{} manual}
+%
+% \StopEventually{%
+% \clearpage
+% \PrintIndex\PrintChanges}
+%
+%
+% \section{Implementation of \Package{scrwfile}}
+%
+% \iffalse
+%<*package>
+%<*identify>
+% \fi
+%
+% \begin{macrocode}
+\PackageWarningNoLine{scrwfile}{%
+ THIS IS AN ALPHA VERSION!\MessageBreak
+ USAGE OF THIS VERSION IS ON YOUR OWN RISK!\MessageBreak
+ EVERYTHING MAY HAPPEN!\MessageBreak
+ EVERYTHING MAY CHANGE IN FUTURE!\MessageBreak
+ THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!\MessageBreak
+ Maybe, it would be better not to load this package.%
+}
+% \end{macrocode}
+%\iffalse
+%</identify>
+%\fi
+%
+% \subsection{Options}
+% \iffalse
+%<*option>
+% \fi
+%
+% Currently we don't need options.
+%
+% \iffalse
+%</option>
+% \fi
+%
+% \subsection{Body}
+% \iffalse
+%<*body>
+% \fi
+%
+% \subsubsection{Needed Packages}
+%
+% Package \textsf{scrbase} is needed, because of using several \KOMAScript{}
+% basic commands.
+% \begin{macrocode}
+\RequirePackage{scrbase}[2010/09/17]
+% \end{macrocode}
+%
+% Package \textsf{tocbasic} is needed for the lists of cloned TOCs.
+% \begin{macrocode}
+\RequirePackage{tocbasic}[2010/10/01]
+% \end{macrocode}
+%
+% Package \textsf{scrlfile} is needed because of the \texttt{aux} file
+% handling and \verb|\protected@immediate@write|.
+% \begin{macrocode}
+\RequirePackage{scrlfile}[2010/09/30]
+% \end{macrocode}
+%
+% \subsubsection{\LaTeX{} Kernel Patchs}
+%
+% For some features we need to patch \LaTeX{} kernel macros. Those features
+% and macros are:
+% \begin{description}
+% \item[Single handle feature] means, that \LaTeX{} will no longer need a file
+% handle for every help file, but only one for all files. We will patch
+% |\@starttoc| and |\@writefile| to do so.
+% \item[Clone file feature] means, that every write to one file may be done to
+% another file, too. We will patch |\@writefile| to do so.
+% \end{description}
+% Every patch should be minimum invasive, so that files, that are not under
+% \textsf{scrwfile}'s control are changed as little as possible.
+%
+% \begin{macro}{\scrwfile@if@only}
+% First of all we check, if the file should be handled by \textsf{scrwfile}.
+% \begin{macrocode}
+\newcommand*{\scrwfile@if@only}[1]{%
+ \begingroup
+ \scr@ifundefinedorrelax{scrwfile@only}{\@tempswatrue}{%
+ \@tempswafalse
+ \edef\reserved@b{#1}%
+ \@for\reserved@a:=\scrwfile@only\do
+ {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
+ }%
+ \if@tempswa
+ \scr@ifundefinedorrelax{scrwfile@never}{}{%
+ \edef\reserved@b{#1}%
+ \@for\reserved@a:=\scrwfile@only\do
+ {\ifx\reserved@a\reserved@b\@tempswafalse\fi}%
+ }%
+ \fi
+ \expandafter\endgroup
+ \if@tempswa
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrwfile@starttoc}
+% \begin{macro}{\scrwfile@@starttoc}
+% This is the internal redefinition of |\@starttoc|. First of all test, if it
+% should be used, then use it or not.
+% \begin{macrocode}
+\newcommand*{\scrwfile@starttoc}[1]{%
+ \scrwfile@if@only{#1}{\scrwfile@@starttoc}{\scrwfile@saved@starttoc}{#1}%
+}
+\newcommand*{\scrwfile@@starttoc}[1]{%
+%<trace> \typeout{Use my own \string\@starttoc\space for #1}%
+ \begingroup
+ \if@filesw
+ \xdef\scrwfile@writefilelist{\scrwfile@writefilelist,#1}%
+ \fi
+ \@fileswfalse
+ \scrwfile@saved@starttoc{#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scrwfile@writefile}
+% \begin{macro}{\scrwfile@@writefile}
+% \begin{macro}{\scrwfile@wrtout}
+% \begin{macro}{\scrwfile@writefilelist}
+% This is the internal redefinition of |\@writefile|. First of all test, if it
+% should be used, then use it or not.
+% \begin{macrocode}
+\newcommand*{\scrwfile@writefile}[1]{%
+ \scrwfile@if@only{#1}{\scrwfile@@writefile}{\scrwfile@saved@writefile}{#1}%
+}
+\newcommand{\scrwfile@@writefile}[2]{%
+%<trace> \typeout{Use my own \string\@writefile\space for #1}%
+ \ifnum\scrwfile@wrtout>0
+ \begingroup
+ \@temptokena{#2}%
+ \immediate\write\scrwfile@wrtout{%
+ \string\@writefile{#1}{\the\@temptokena}%
+ }%
+% \end{macrocode}
+% This was the entry for the real file. But we also may have clone files:
+% \begin{macrocode}
+ \scrwfile@process@clones{#1}%
+ \endgroup
+ \fi
+}
+\chardef\scrwfile@wrtout\z@
+\newcommand*{\scrwfile@writefilelist}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@writefile}
+% We have to add the single handle feature and the clone file feature to this.
+% \begin{macro}{\scrwfile@saved@writefile}
+% This is the original definition, that will be used, if the file is not under
+% \texttt{scrwfile}'s control.
+% \begin{macrocode}
+\newcommand*{\scrwfile@saved@writefile}{}
+\BeforeClosingMainAux{%
+ \ifx\scrwfile@writefilelist\@empty\else
+ \let\scrwfile@saved@writefile\@writefile
+ \let\scrwfile@wrtout\@partaux
+ \immediate\openout\scrwfile@wrtout \jobname.wrt
+ \let\@writefile\scrwfile@writefile
+ \fi
+}
+\AfterReadingMainAux{%
+ \ifx\scrwfile@writefilelist\@empty\else
+ \immediate\closeout\scrwfile@wrtout
+ \chardef\scrwfile@wrtout\z@
+ \begingroup
+ \let\@writefile\scrwfile@saved@writefile
+ \@for\@currext:=\scrwfile@writefilelist\do{%
+ \begingroup
+ \ifx\@currext\@empty\else
+ \scr@ifundefinedorrelax{tf@\@currext}{%
+%<trace> \typeout{Process extension: `\@currext'}
+ \immediate\openout\@partaux \jobname.\@currext
+ \expandafter\let\csname tf@\@currext\endcsname\@partaux
+ \@input@{\jobname.wrt}%
+ \immediate\closeout\@partaux
+ }{}%
+ \fi
+ \endgroup
+ }%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@starttoc}
+% We have to add the single handle feature to this.
+% \begin{macro}{\scrwfile@saved@starttoc}
+% \changes{v0.1e}{2013/07/24}{take care for unfriendly \textsl{hyperref}}
+% This is the original definition, that will be used, if the file is not under
+% \texttt{scrwfile}'s control. Because of package \textsl{hyperref}, that does
+% a hard redefinition without any care for changed definitions, we have to
+% take care for that unfriendly package and cannot do a simple
+% \begin{verbatim}
+% \let\scrwfile@saved@starttoc\@starttoc
+% \let\@starttoc\scrwfile@starttoc
+% \end{verbatim}
+% \begin{macrocode}
+\newcommand*{\scrwfile@saved@starttoc}{}
+\AtBeginDocument{%
+ \begingroup
+ \@ifpackageloaded{hyperref}{%
+ \scr@ifundefinedorrelax{Hy@AtBeginDocument}{%
+ \PackageWarning{scrwfile}{%
+ Incompatible `hyperref` package detected!\MessageBreak
+ You are using a `hyperref` version, that\MessageBreak
+ doesn't provide `\string\Hy@AtBeginDocument`.\MessageBreak
+ This may or may not work.\MessageBreak
+ Using immediate redefinition%
+ }%
+ \aftergroup\@firstofone
+ }{%
+ \def\reserved@a{\AtBeginDocument}%
+ \ifx\Hy@AtBeginDocumentHook\@undefined
+ \PackageInfo{scrwfile}{%
+ Using immediate redefinition%
+ }%
+ \aftergroup\@firstofone
+ \else
+ \PackageInfo{scrwfile}{%
+ Using `\string\Hy@AtBeginDocument`%
+ }%
+ \aftergroup\Hy@AtBeginDocument
+ \fi
+ }%
+ }{%
+ \aftergroup\@firstofone
+ }%
+ \endgroup
+ {%
+ \PackageInfo{scrwfile}{%
+ Extending `\string\@starttoc`
+ }%
+ \let\scrwfile@saved@starttoc\@starttoc
+ \let\@starttoc\scrwfile@starttoc
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Clone TOC Feature}
+%
+% \textsf{scrwfile} may clone a TOC, that means, every entry to one file will
+% be copied to other files, too. You must not clone recursively!
+%
+% \begin{macro}{\scrwfile@process@clones}
+% \begin{macrocode}
+\newcommand*{\scrwfile@process@clones}[1]{%
+ \scr@ifundefinedorrelax{scrwfile@clone@#1}{}{%
+ \begingroup
+ \let\@@protect\protect\let\protect\@empty\afterassignment\restore@protect
+ \edef\reserved@b{\csname scrwfile@clone@#1\endcsname}%
+ \edef\reserved@c{,#1}%
+ \@for \reserved@a:=\reserved@b\do {%
+ \@tempswatrue
+ \@for \reserved@d:=\reserved@c\do {%
+ \ifx\reserved@d\reserved@a\@tempswafalse\fi
+ }%
+ \if@tempswa
+%<trace> \typeout{clone entry from `#1' to `\reserved@a'}%
+ \immediate\write\scrwfile@wrtout{%
+ \string\@writefile{\reserved@a}{\the\@temptokena}%
+ }%
+ \edef\reserved@c{\reserved@c,\reserved@a}%
+ \fi
+ }%
+ \endgroup
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TOCclone}
+% Clone the entries from the second (first mandatory) argument TOC to the
+% third (second mandatory) argument TOC. If the first (optional) argument was
+% given, define |\listof#3name| to this and also define |\listof#3| and clone
+% the toc features \texttt{leveldown}, \texttt{numbered}, \texttt{onecolumn}
+% and \texttt{totoc} of |#2| to |#3|. The toc feature \texttt{nobabel} will
+% always be set, because the babel entries at TOC |#3| will be cloned from TOC
+% |#2|. \textbf{Note:} We use owner \texttt{TOCclone} for all cloned
+% extensions.
+% \begin{macrocode}
+\newcommand*{\TOCclone}[3][]{%
+ \scr@ifundefinedorrelax{scrwfile@clone@#2}{%
+ \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{%
+ #3,\protect\csname scrwfile@clone@#3\endcsname
+ }%
+ }{%
+ \edef\reserved@b{\csname scrwfile@clone@#2\endcsname}%
+ \expandafter\protected@edef\csname scrwfile@clone@#2\endcsname{%
+ \csname scrwfile@clone@#2\endcsname,%
+ #3,%
+ \protect\csname scrwfile@clone@#3\endcsname
+ }%
+ }%
+ \scr@ifundefinedorrelax{scrwfile@clone@#3}{%
+ \expandafter\let\csname scrwfile@clone@#3\endcsname\@empty
+ }{}%
+ \ifattoclist{#3}{%
+ \PackageWarning{scrwfile}{`#3' already under control of
+ tocbasic.\MessageBreak
+ Nevertheless features will be set
+ }%
+ }{%
+ \addtotoclist[TOCclone]{#3}%
+ }%
+ \setuptoc{#3}{nobabel}%
+ \ifstr{#1}{}{%
+ }{%
+ \@namedef{listof#3name}{#1}%
+ \@namedef{listof#3}{\listoftoc{#3}}%
+ \iftocfeature{#2}{leveldown}{\setuptoc{#3}{leveldown}}{}%
+ \iftocfeature{#2}{numbered}{\setuptoc{#3}{numbered}}{}%
+ \iftocfeature{#2}{onecolumn}{\setuptoc{#3}{leveldownonecolumn}}{}%
+ \iftocfeature{#2}{totoc}{\setuptoc{#3}{totoc}}{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%</body>
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrwfile.dtx'
+
+%%% Local Variables:
+%%% mode: doctex
+%%% mode: flyspell
+%%% ispell-local-dictionary: "english"
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/tocbasic.dtx b/macros/latex/contrib/koma-script/source/tocbasic.dtx
new file mode 100644
index 0000000000..aa133bb834
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/tocbasic.dtx
@@ -0,0 +1,1961 @@
+% \CheckSum{1592}
+% \iffalse meta-comment
+% ======================================================================
+% tocbasic.dtx
+% Copyright (c) Markus Kohm, 2008-2018
+%
+% 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.
+% ----------------------------------------------------------------------
+% tocbasic.dtx
+% Copyright (c) Markus Kohm, 2008-2018
+%
+% 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.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: tocbasic.dtx 3050 2018-12-30 14:36:55Z kohm $
+%<identify>%%% (run: identify)
+%<prepare>%%% (run: prepare)
+%<option>%%% (run: option)
+%<execoption>%%% (run: execoption)
+%<body>%%% (run: body)
+%<exit>%%% (run: exit)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2018-12-30 15:36:55 +0100 (Sun, 30 Dec 2018) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 1962 $
+\endgroup
+\ProvidesFile{tocbasic.dtx}[\filedate\space\filerevision\space
+%</dtx>
+%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<package&identify>\ProvidesPackage{tocbasic}[%
+%<*dtx|(package&identify)>
+%!KOMAScriptVersion
+ package
+%<*dtx>
+ source
+%</dtx>
+%</dtx|(package&identify)>
+%<package&identify> (handling toc-files)%
+%<*dtx>
+ (dtx)%
+%</dtx>
+%<*dtx|(package&identify)>
+]
+%</dtx|(package&identify)>
+%<*dtx>
+\ifx\documentclass\undefined
+ \input scrdocstrip.tex
+ \@@input scrkernel-version.dtx
+ \@@input scrstrip.inc
+ \KOMAdefVariable{COPYRIGHTFROM}{2008}
+ \generate{\usepreamble\defaultpreamble
+ \file{tocbasic.sty}{%
+ \from{tocbasic.dtx}{package,identify}%
+ \from{tocbasic.dtx}{package,prepare}%
+ \from{scrkernel-tocstyle.dtx}{package,prepare}%
+ \from{tocbasic.dtx}{package,option}%
+ \from{scrkernel-tocstyle.dtx}{package,option}%
+ \from{tocbasic.dtx}{package,body}%
+ \from{scrkernel-tocstyle.dtx}{package,body}%
+ \from{scrkernel-tocstyle.dtx}{package,style,gobble}%
+ \from{scrkernel-tocstyle.dtx}{package,style,dottedtocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,undottedtocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,largetocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,tocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,default}%
+ \from{tocbasic.dtx}{package,exit}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+ }%
+ \@@input scrstrop.inc
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass[parskip=half-]{scrdoc}
+\usepackage[latin1]{inputenc}
+\usepackage[english]{babel}
+\usepackage{array}
+\usepackage{listings}
+\lstset{breaklines,prebreak=\mbox{$\hookleftarrow$},language=[LaTeX]TeX,
+ basicstyle=\small}
+\lstnewenvironment{lstcode}[1][]{%
+ \lstset{breaklines,prebreak=\mbox{$\hookleftarrow$},language=[LaTeX]TeX,
+ basicstyle=\ttfamily\small,#1}%
+}{}
+\lstnewenvironment{lstoutput}[1][]{}{}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tocbasic.dtx}
+\sloppy
+\DocInput{\filename}
+\end{document}
+% \fi
+%
+% \begin{document}
+% \title{\KOMAScript{} \partname\ \texttt{\filename}%
+% \thanks{Diese Datei ist Version \fileversion\ von \texttt{\filename}.}}
+% \date{\filedate}
+% \author{Markus Kohm\thanks{mailto:komascript(at)gmx.info}}
+% \maketitle
+% \begin{abstract}
+% The main purpose of package \textsf{tocbasic} is to provide features for
+% authors of classes and packages to create own tables or lists of contents
+% like the list of figures and the list of tables and thereby allow other
+% classes or packages some types of control over these. For examples package
+% \textsf{tocbasic} delegates language control of all these tables and lists
+% of contents to package \textsf{babel}. So automatic change of language
+% will be provided inside all these tables and lists of contents. Using
+% \textsf{tocbasic} will exculpate authors of classes and packages from
+% implementation of such features.
+%
+% \KOMAScript{} itself uses \textsf{tocbasic} not only for the table of
+% contents but also for the already mentioned lists of figures and tables.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \iffalse
+%</dtx>
+% \fi
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+%
+% \section{Implementation}
+% \label{sec:implementation}
+%
+% All macros with prefix \texttt{tb@} or \texttt{@} are internal macros and
+% should not be used by package and class authors. Macros with prefix
+% \texttt{tocbasic@} are internal macros, that may be used by class and
+% packages authors. Macros without \texttt{@} are interface macros and may be
+% used by class and package authors and users.
+%
+% Note: Parts of the implementation of package \textsf{tocbasic} are
+% out-sourced into file \texttt{scrkernel-tocbasic.dtx}.
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \subsection{Options}
+% \label{sec:options}
+%
+% There are no options because the package should be used by class and package
+% authors not by users. So the package will be loaded using
+% \cs{RequiresPackage}. Using different options by different packages would
+% result in an option clash.
+% \begin{macrocode}
+%<*option>
+\ProcessOptions\relax
+%</option>
+% \end{macrocode}
+%
+%
+% \subsection{Required Packages}
+% \label{sec:packages}
+%
+% Package \textsf{scrbase} is needed to process all macro options. As long as
+% no package options are provided, the \texttt{body}-run is early enough to
+% load it.
+% \begin{macrocode}
+%<*body>
+\RequirePackage{scrbase}
+%</body>
+% \end{macrocode}
+% We load it after processing the options, because we don't need it for
+% processing options.
+%
+%
+%
+% \subsection{Unwanted Packages}
+% \label{sec:unpackages}
+%
+% There are packages, that are not recommended to be used together with
+% \textsf{tocbasic}:
+% \begin{macrocode}
+%<*body>
+% \end{macrocode}
+% \begin{description}
+% \item[\textsf{multitoc}:] This package implements multi-column ToCs using
+% \textsf{multicol}. Unfortunately there is a bug in that package, that
+% disables all extensions but \texttt{toc}, \texttt{lof} and \texttt{lot} and
+% even these if the corresponding option has not been set.
+% \begin{macrocode}
+\AfterPackage*{multitoc}{%
+ \@ifpackagelater{multitoc}{2018/08/31}{}{%
+ \PackageWarningNoLine{tocbasic}{%
+ Usage of package `multitoc' is not recommended!\MessageBreak
+ Note, this package generally results in empty ToCs\MessageBreak
+ for all extension but `toc', `lof' and `lot' and\MessageBreak
+ even for these extensions if you do not use the\MessageBreak
+ corresponding multitoc options.\MessageBreak
+ It is recommended to use:\MessageBreak
+ \space\space\string\usepackage{multicol}\MessageBreak
+ \space\space\string\BeforeStartingTOC{\string\begin{multicols}{2}}%
+ \MessageBreak
+ \space\space\string\AfterStartingTOC{\string\end{multicols}}%
+ \MessageBreak
+ instead of loading package `multitoc'.\MessageBreak
+ See the KOMA-Script manual for more information\MessageBreak
+ about using \string\BeforeStartingTOC\space and
+ \string\AfterStartingTOC\MessageBreak
+ and the multicol manual for more information\MessageBreak
+ about the `multicols' environment%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{description}
+% \begin{macrocode}
+%</body>
+% \end{macrocode}
+%
+%
+% \subsection{Having a List of All Tocs}
+% \label{sec:listoftocs}
+%
+% If we have a list of all toc-files we may do commands for all
+% toc-files. Somethimes it may be usefull to known the package, that created
+% the toc-file, so this information will be stored additionally.
+%
+% \begin{macro}{\tb@listoftocs}
+% This is the list of toc-files. The list will be:
+% \begin{quote}
+% \cs{do}\marg{extension}\marg{class or
+% package}\cs{do}\marg{extension}\marg{class or package}\dots
+% \end{quote}
+% With this, adding and processing the list will be very fast but removing
+% an element will be very slow.
+%
+% The initial state of the list will be \emph{empty}.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\tb@listoftocs}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifattoclist}
+% This command tests, if an extension is already at the list of
+% toc-files. The extension has to be the first argument. The second argument
+% will be done, if the extension is already at the list of toc-files. The
+% third argument will be done, if the extension is at the list of toc-files
+% not yet.
+% \begin{macrocode}
+\newcommand{\ifattoclist}[1]{%
+ \begingroup
+ \def\do##1##2{%
+ \edef\reserved@a{##1}%
+ \ifx\reserved@a\reserved@b\@tempswatrue\fi
+ }%
+ \edef\reserved@b{#1}\@tempswafalse\tb@listoftocs
+ \if@tempswa\aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtotoclist}
+% \changes{v1.0a}{2008/11/11}{internal \cs{@addtotoclist} renamed to
+% \cs{scr@addtotoclist} because of package \textsf{floatfram}}.^^A
+% \changes{v1.0a}{2008/11/11}{internal \cs{@@addtotoclist} renamed to
+% \cs{scr@@addtotoclist} because of package \textsf{floatfram}}.^^A
+% \changes{v3.06a}{2010/09/14}{expand the arguments while adding them to the
+% internal list}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% This command adds an extension to the list of toc-files. The first,
+% optional argument is the class or package name with the corresponding
+% extension of class or package files. If this argument was omitted
+% \textsf{tocbasic} tries to get it automatically. This should be
+% successfull while loading a class or package but not while processing any
+% command of a class or package after loading the class or package. The
+% second, mandatory argument is the extension of the toc-file. NOTE: An
+% empty first argument is not the same like omitting the first argument!
+% \begin{macrocode}
+\newcommand*{\addtotoclist}{%
+ \kernel@ifnextchar [%]
+ \scr@@addtotoclist\scr@addtotoclist
+}
+\newcommand*{\scr@addtotoclist}{%
+ \ifx\@currname\@empty
+ \def\reserved@a{\scr@@addtotoclist[]}%
+ \else
+ \edef\reserved@a{\noexpand\scr@@addtotoclist[\@currname.\@currext]}%
+ \fi
+ \reserved@a
+}
+\newcommand*{\scr@@addtotoclist}[2][]{%
+ \ifattoclist{#2}{%
+ \PackageError{tocbasic}{%
+ file extension `#2' cannot be used twice
+ }{%
+ File extension `#2' is already used by a toc-file, while
+ \ifx\relax#1\relax someone\else #2\fi\MessageBreak
+ tried to use it again for a toc-file.\MessageBreak
+ This may be either an incompatibility of packages, an error at a
+ package,\MessageBreak
+ or a mistake by the user.\MessageBreak
+ }%
+ }{%
+ \begingroup
+ \protected@edef\reserved@a{%
+ \noexpand\g@addto@macro\noexpand\tb@listoftocs{%
+ \noexpand\do{#2}{#1}}}\reserved@a
+ \endgroup
+ \ifx\relax #1\relax\else
+ \@ifundefined{tb@#1@add@hook}{}{%
+ \edef\reserved@a{%
+ \noexpand\def\noexpand\@currext{#2}%
+ \noexpand\@nameuse{tb@#1@add@hook}%
+ \noexpand\def\noexpand\@currext{\@currext}%
+ }\reserved@a
+ }%
+ \fi
+ \edef\reserved@a{%
+ \noexpand\def\noexpand\@currext{#2}%
+ \noexpand\@nameuse{tb@@add@hook}%
+ \noexpand\def\noexpand\@currext{\@currext}%
+ }\reserved@a
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\owneroftoc}
+% \changes{v3.22}{2016/08/09}{new}
+% Returns the owner of a TOC or uses the owner of a TOC as argument of the
+% optional argument, if it exists.
+% \begin{macrocode}
+\newcommand*{\owneroftoc}[2][\@firstofone]{%
+ \begingroup
+ \let\reserved@a\endgroup
+ \def\do##1##2{\ifstr{#2}{##1}{\def\reserved@a{\endgroup#1{##2}}}{}}%
+ \tb@listoftocs
+ \reserved@a
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AtAddToTocList}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Action to be done, when adding a toc-file of a known owner. The first
+% optional argument is the owner. The second, mandatory argument is the
+% action. While doing the action \cs{@currext} will be the extension of the
+% added toc-file. If the first argument was omitted \textsf{tocbasic} tries
+% to get it automatically. This should be successfull while loading a class
+% or package but not while processing any command of a class or package
+% after loading the class or package. The second, mandatory argument is the
+% extension of the toc-file. NOTE: An empty first argument is not the same
+% like omitting the first argument, but set's up the general hook. The
+% general hook will be done for every adding after the individual hook (this
+% means, you may dactivate features at the individual hook before processing
+% the general hook). But the individual hook will not be processed for
+% toc-files without any owner!
+% \begin{macrocode}
+\newcommand*{\AtAddToTocList}{%
+ \kernel@ifnextchar [%]
+ \@@AtAddToTocList\@AtAddToTocList
+}
+\newcommand*{\@AtAddToTocList}{%
+ \ifx\@currname\@empty
+ \def\reserved@a{\@@AtAddToTocList[]}%
+ \else
+ \edef\reserved@a{\noexpand\@@AtAddToTocList[\@currname.\@currext]}%
+ \fi
+ \reserved@a
+}
+\newcommand*{\@@AtAddToTocList}[1][]{%
+ \@ifundefined{tb@#1@add@hook}{\@namedef{tb@#1@add@hook}{}}{}%
+ \expandafter\g@addto@macro\csname tb@#1@add@hook\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocbasic@extend@babel}
+% NOTE: To extend the original \cs{bbl@set@language} the argument of
+% \cs{tocbasic@extend@babel} must not be a local macro (like \cs{@currext})
+% \begin{macrocode}
+\newcommand*{\tocbasic@extend@babel}[1]{%
+ \scr@ifundefinedorrelax{bbl@set@language}{%
+ \PackageInfo{tocbasic}{babel extension for `#1' omitted\MessageBreak
+ because of missing \string\bbl@set@language}%
+ }{%
+ \iftocfeature{#1}{nobabel}{%
+ \PackageInfo{tocbasic}{omitting babel extension for `#1'\MessageBreak
+ because of feature `nobabel' available\MessageBreak
+ for `#1'}%
+ }{%
+% \end{macrocode}
+% \changes{v3.23}{2017/02/23}{using \cs{BabelContentsFiles} if available}^^A
+% Since version 3.9a provides adding extensions to the language switch
+% preparation. So it is used if it is available.
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{BabelContentsFiles}{%
+ \PackageInfo{tocbasic}{setting babel extension for `#1'}%
+ \expandafter\gdef\expandafter\bbl@set@language
+ \expandafter##\expandafter1%
+ \expandafter{%
+ \bbl@set@language{##1}%
+ \addtocontents{#1}{\xstring\select@language{\languagename}}%
+ }%
+ }{%
+ \@expandtwoargs\in@{,#1,}{,\BabelContentsFiles,}%
+ \ifin@
+ \PackageInfo{tocbasic}{omitting babel extension for
+ `#1'\MessageBreak
+ because it is already in \string\BabelContentsFiles}%
+ \else
+ \PackageInfo{tocbasic}{setting babel extension for `#1'}%
+ \xdef\BabelContentsFiles{\BabelContentsFiles,#1}%
+ \fi
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% This feature should be used for all toc-files (unless feature
+% \texttt{nobabel} was set for the toc-file.
+% \begin{macrocode}
+\AtAddToTocList[]{\expandafter\tocbasic@extend@babel\expandafter{\@currext}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\removefromtoclist}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@removefromtoclist}
+% \changes{v3.22}{2016/09/06}{missing \cs{global} added}^^A
+% \begin{macro}{\@@removefromtoclist}
+% \changes{v3.22}{2016/09/06}{missing \cs{global} added}^^A
+% This command will remove an extension from the list of toc-files. If the
+% first, optional argument is given, the extension will only be removed, if
+% it was added by the given owner. NOTE: An empty first argument is not the
+% same like omitting the first argument!
+% \begin{macrocode}
+\newcommand*{\removefromtoclist}{%
+ \kernel@ifnextchar [%]
+ \@removefromtoclist\@@removefromtoclist
+}
+\newcommand*{\@removefromtoclist}[2][]{%
+ \begingroup
+ \let\tb@oldlist\tb@listoftocs
+ \def\do##1##2{%
+ \edef\reserved@a{##1}%
+ \ifx\reserved@a\reserved@b
+ \begingroup
+ \edef\@currext{##2}%
+ \edef\reserved@b{#1}%
+ \ifx\@currext\reserved@b
+ \else
+ \g@addto@macro\tb@listoftocs{\do{##1}{##2}}%
+ \fi
+ \endgroup
+ \else
+ \g@addto@macro\tb@listoftocs{\do{##1}{##2}}%
+ \fi
+ }%
+ \edef\reserved@b{#2}\global\let\tb@listoftocs\@empty
+ \tb@oldlist
+ \endgroup
+}
+\newcommand*{\@@removefromtoclist}[1]{%
+ \begingroup
+ \let\tb@oldlist\tb@listoftocs
+ \def\do##1##2{%
+ \edef\reserved@a{##1}%
+ \ifx\reserved@a\reserved@b
+ \else
+ \g@addto@macro\tb@listoftocs{\do{##1}{##2}}%
+ \fi
+ }%
+ \edef\reserved@b{#1}\global\let\tb@listoftocs\@empty
+ \tb@oldlist
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\doforeachtocfile}
+% \changes{v3.09}{2011/03/01}{\cs{@currext} defined using \cs{edef} instead
+% of \cs{def}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% This command does the second, mandatory argument for each toc-file at the
+% list of toc-files. If the first, optional argument was given this will be
+% done only for the toc-files of that owner. NOTE: An empty first argument
+% is not the same like omitting the first argument!
+%
+% While processing the second argument \cs{@currext} is the extension of
+% the toc-file. The second argument will be processed with increased group
+% level!
+%
+% See \cs{addtoeachtocfile} for an example of usage of
+% \cs{doforeachtocfile}.
+% \begin{macrocode}
+\newcommand{\doforeachtocfile}{%
+ \kernel@ifnextchar [%]
+ \@doforeachtocfile\@@doforeachtocfile
+}
+\newcommand{\@doforeachtocfile}[2][]{%
+ \def\do##1##2{%
+ \edef\reserved@a{#1}\edef\reserved@b{##2}\ifx\reserved@a\reserved@b
+ \edef\@currext{##1}#2%
+ \fi
+ }%
+ \edef\reserved@a{%
+ \noexpand\tb@listoftocs
+ \noexpand\def\noexpand\@currext{\@currext}%
+ }\reserved@a
+ \let\do\relax
+}
+\newcommand{\@@doforeachtocfile}[1]{%
+ \def\do##1##2{%
+ \edef\@currext{##1}#1%
+ }%
+ \edef\reserved@a{%
+ \noexpand\tb@listoftocs
+ \noexpand\def\noexpand\@currext{\@currext}%
+ }\reserved@a
+ \let\do\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtoeachtocfile}
+% \begin{macro}{\@addtoeachtocfile}
+% \begin{macro}{\@@addtoeachtocfile}
+% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% This command calls \cs{addtocontents} with the section, mandatory
+% argument for each toc-file at the list of toc-files. If the first,
+% optional argument was given this will be done only for the toc-files of
+% that owener. NOTE: An empty first argument is not the same like omitting
+% the first argument! And don't forget to protect the commands, that should
+% not be expanded, at the mandatory argument.
+% \begin{macrocode}
+\newcommand{\addtoeachtocfile}{%
+ \kernel@ifnextchar [%]
+ \@addtoeachtocfile\@@addtoeachtocfile
+}
+\newcommand{\@addtoeachtocfile}[2][]{%
+ \doforeachtocfile[{#1}]{\addtocontents{\@currext}{#2}}%
+}
+\newcommand{\@@addtoeachtocfile}[1]{%
+ \doforeachtocfile{\addtocontents{\@currext}{#1}}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Adding Entries into Toc-Files}
+%
+% We have a new general command to add entries to several toc-files at
+% once. And we have some special commands for the table of contents.
+%
+% \begin{macro}{\addcontentslinetoeachtocfile}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Something like a combination of \cs{addtoeachtocfile} and
+% \cs{addcontentsline}.
+% \begin{macrocode}
+%<*body>
+\newcommand{\addcontentslinetoeachtocfile}{%
+ \kernel@ifnextchar [%]
+ \@addcontentslinetoeachtocfile\@@addcontentslinetoeachtocfile
+}
+\newcommand{\@addcontentslinetoeachtocfile}[3][]{%
+ \doforeachtocfile[{#1}]{\addcontentsline{\@currext}{#2}{#3}}%
+}
+\newcommand{\@@addcontentslinetoeachtocfile}[2]{%
+ \doforeachtocfile{\addcontentsline{\@currext}{#1}{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addxcontentsline}
+% \changes{v3.12}{2013/09/24}{new}
+% \changes{v3.12}{2013/09/24}{Take care of new feature \texttt{numberline}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@addxcontentsline}
+% \changes{v3.12}{2013/09/24}{new (internal)}
+% This will be used instead of \cs{addcontentsline} to generate numbered or
+% not numbered entries to a toc-file. First argument is the toc-file, second
+% the entry type, e.g., \texttt{chapter}, the third is the entry number or
+% empty and the fourth and last is the entry text.
+% \begin{macrocode}
+\newcommand*{\addxcontentsline}[2]{%
+ \kernel@ifnextchar [%]
+ {\@addxcontentsline{#1}{#2}}%
+ {\@addxcontentsline{#1}{#2}[]}%
+}
+\newcommand*{\@addxcontentsline}{}
+\def\@addxcontentsline#1#2[#3]#4{%
+ \scr@ifundefinedorrelax{add#2#1entry}{%
+ \tocbasic@addxcontentsline{#1}{#2}{#3}{#4}%
+ }{%
+ \@nameuse{add#2#1entry}{#3}{#4}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\nonumberline}
+% \changes{v3.12}{2013/09/24}{new}
+% Either \cs{relax} or \cs{numberline} depending on the feature
+% \texttt{numberline}.
+% \begin{macrocode}
+\newcommand*{\nonumberline}{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\addxcontentsline}
+% This may be used to either use a heading type command or the general default
+% one. You are not allowed to use it in the definition of a heading type
+% command like \cs{addchaptertocentry}! You may use
+% \cs{tocbasic@addxcontentsline} at the definition of those commands.
+% \begin{macrocode}
+\newcommand*{\tocbasic@addxcontentsline}[4]{%
+ \if\relax\detokenize{#3}\relax
+ \addcontentsline{#1}{#2}{\protect\nonumberline#4}%
+ \else
+ \addcontentsline{#1}{#2}{\protect\numberline{#3}#4}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addxcontentslinetoeachtocfile}
+% \changes{v3.12}{2013/09/24}{new}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@addxcontentslinetoeachtocfile}
+% \changes{v3.12}{2013/09/24}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@addxcontentslinetoeachtocfile}
+% \changes{v3.12}{2013/09/24}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \begin{macro}{\@@@addxcontentslinetoeachtocfile}
+% \changes{v3.12}{2013/09/24}{new (internal)}
+% \begin{macro}{\@@@@addxcontentslinetoeachtocfile}
+% \changes{v3.12}{2013/09/24}{new (internal)}
+% Similar to \cs{addcontentslinetoeachtocfile} using
+% \cs{addxcontentsline} instead of \cs{addcontentsline}.
+% \begin{macrocode}
+\newcommand{\addxcontentslinetoeachtocfile}{%
+ \kernel@ifnextchar [%]
+ \@addxcontentslinetoeachtocfile\@@addxcontentslinetoeachtocfile
+}
+\newcommand{\@addxcontentslinetoeachtocfile}[2][]{%
+ \kernel@ifnextchar [%]
+ {\@@@addxcontentslinetoeachtocfile[{#1}]{#2}}%
+ {\@@@addxcontentslinetoeachtocfile[{#1}]{#2}[]}
+}
+\newcommand*{\@@@addxcontentslinetoeachtocfile}{}
+\def\@@@addxcontentslinetoeachtocfile[#1]#2[#3]#4{%
+ \doforeachtocfile[{#1}]{\addxcontentsline{\@currext}{#2}[#3]{#4}}%
+}
+\newcommand{\@@addxcontentslinetoeachtocfile}[1]{%
+ \kernel@ifnextchar [%]
+ {\@@@@addxcontentslinetoeachtocfile{#1}}%
+ {\@@@@addxcontentslinetoeachtocfile{#1}[]}%
+}
+\newcommand*{\@@@@addxcontentslinetoeachtocfile}{}
+\def\@@@@addxcontentslinetoeachtocfile#1[#2]#3{%
+ \doforeachtocfile{\addxcontentsline{\@currext}{#1}[{#2}]{#3}}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Show List of Toc-File}
+% \label{sec:showlistoftocfile}
+%
+% If you have a toc-file you want a list-of-command for this toc-file,
+% too. Here are basics and high level commands for this.
+%
+% \begin{macro}{\tocbasic@starttoc}
+% \changes{v3.17}{2015/03/23}{usage of feature \texttt{noparskipfake}}^^A
+% Some basics are done like setting up \cs{parskip}, \cs{parindent} and
+% \cs{parfillskip}, a general hook will be called, an individual hook will
+% be called, the toc will be started, an individual hook will be called, an
+% general hook wil be called, that's it.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\tocbasic@starttoc}[1]{%
+ \begingroup
+ \edef\@currext{#1}%
+ \iftocfeature{\@currext}{noparskipfake}{}{%
+ \ifvmode
+ \@tempskipa\lastskip
+ \vskip-\lastskip
+ \addtolength{\@tempskipa}{\parskip}%
+ \vskip\@tempskipa
+ \fi
+ }%
+ \setlength{\parskip}{\z@}%
+ \setlength{\parindent}{\z@}%
+ \setlength{\parfillskip}{\z@\@plus 1fil}%
+ \csname tocbasic@@before@hook\endcsname
+ \csname tb@#1@before@hook\endcsname
+ \@starttoc{#1}%
+ \csname tb@#1@after@hook\endcsname
+ \csname tocbasic@@after@hook\endcsname
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\tocbasic@@before@hook}
+% \begin{macro}{\tocbasic@@after@hook}
+% These are the general hooks. They may be used by classes and packages for
+% commands, that should be used for all lists of not only the own lists of,
+% e.\,g., \KOMAScript{} may use it to handle option \texttt{tocleft}.
+% \begin{macrocode}
+\newcommand*{\tocbasic@@before@hook}{}
+\newcommand*{\tocbasic@@after@hook}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\BeforeStartingTOC}
+% \changes{v3.04b}{2010/01/05}{fix: define the hook if not already defined}^^A
+% \changes{v3.06}{2010/06/09}{fix: using \cs{@ifundefined} instead of
+% undefined \cs{scr@ifundefinedorrelax}}^^A
+% \changes{v3.26}{2018/08/10}{message moved to \texttt{trace}}^^A
+% \begin{macro}{\AfterStartingTOC}
+% \changes{v3.04b}{2010/01/05}{fix:define the hook if not already defined}^^A
+% \changes{v3.06}{2010/06/09}{fix: using \cs{@ifundefined} instead of
+% undefined \cs{scr@ifundefinedorrelax}}^^A
+% \changes{v3.26}{2018/08/10}{message moved to \texttt{trace}}^^A
+% These are the commands to add code to the general or individual hooks. If
+% the first, optional argument was given, the second, mandatory argument
+% will be added to the individual hook, otherwise the general hook will be
+% extended.
+% \begin{macrocode}
+\newcommand{\BeforeStartingTOC}[2][]{%
+ \ifx\relax#1\relax
+ \g@addto@macro\tocbasic@@before@hook{#2}%
+ \else
+ \@ifundefined{tb@#1@before@hook}{%
+%<trace> \PackageInfo{tocbasic}{defining new hook before starting `#1'}%
+ \expandafter\global\expandafter\let\csname tb@#1@before@hook\endcsname
+ \@empty
+ }{}%
+ \expandafter\g@addto@macro\csname tb@#1@before@hook\endcsname{#2}%
+ \fi
+}
+\newcommand{\AfterStartingTOC}[2][]{%
+ \ifx\relax#1\relax
+ \g@addto@macro\tocbasic@@after@hook{#2}%
+ \else
+ \@ifundefined{tb@#1@after@hook}{%
+%<trace> \PackageInfo{tocbasic}{defining new hook after starting `#1'}%
+ \expandafter\global\expandafter\let\csname tb@#1@after@hook\endcsname
+ \@empty
+ }{}%
+ \expandafter\g@addto@macro\csname tb@#1@after@hook\endcsname{#2}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\listoftoc}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@listoftoc}
+% \changes{v1.0a}{2008/11/12}{\cs{twocolumn} fixed}^^A
+% \changes{v1.01}{2008/11/13}{new feature \texttt{onecolumn}}^^A
+% \changes{v3.09}{2011/03/01}{\cs{@currext} defined using \cs{edef} instead
+% of \cs{def}}^^A
+% Command to handle the hole list of something. There are additional hooks
+% for this. The first optional argument is the title for this list. If the
+% optional argument was omitted \cs{listof\#2name} will be used. The star
+% version does not set up a heading or switch the column number!
+% \begin{macrocode}
+\newcommand*{\listoftoc}{%
+ \kernel@ifstar \tocbasic@starttoc\@listoftoc
+}
+\newcommand*{\@listoftoc}[2][\list@fname]{%
+ \begingroup
+ \@ifundefined{listof#2name}{%
+ \let\list@fname\relax
+ \ifx\relax#1\relax
+ \PackageWarning{tocbasic}{%
+ You should either define \expandafter\string\csname
+ listof#2name\endcsname\MessageBreak
+ or use the optional argument of \string\listoftoc\space\MessageBreak
+ to set the term to be used for the\MessageBreak
+ heading of list of #2}%
+ \def\list@fname{\listofname~#2}%
+ \fi
+ }{%
+ \expandafter\let\expandafter\list@fname\csname listof#2name\endcsname
+ }%
+ \edef\@currext{#2}%
+ \iftocfeature{\@currext}{onecolumn}{%
+ \iftocfeature{\@currext}{leveldown}{}{%
+ \if@twocolumn
+ \aftergroup\twocolumn\onecolumn
+ \fi
+ }%
+ }{}%
+ \iftocfeature{\@currext}{numberline}{\def\nonumberline{\numberline{}}}{}%
+ \tocbasic@listhead{#1}%
+ \scr@ifundefinedorrelax{microtypesetup}{}{%
+ \iftocfeature{\@currext}{noprotrusion}{}{%
+ \microtypesetup{protrusion=false}%
+ \PackageInfo{tocbasic}{%
+ character protrusion at \@currext\space deactivated}%
+ }%
+ }%
+ \tocbasic@starttoc{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.25}{2017/11/21}{\textsf{tocbibind} warning added}^^A
+% Using \textsf{tocbibind} and \textsf{tocbasic} together can break features
+% either of \textsf{tocbibind} or \textsf{tocbasic}. Here we add at least a
+% warning:
+% \begin{macrocode}
+\@ifpackageloaded{tocbibind}{}{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{tocbibind}{%
+ \PackageInfo{tocbasic}{usage of `tocbibind' detected}%
+ \newcommand*{\tb@tocbibindpatch}[3]{%
+ \long\def\reserved@a{\tocfile{#2}{#1} }%
+ \ifx #3\reserved@a
+ \PackageWarningNoLine{tocbasic}{%
+ `tocbibind' redefinition of `\string#3'\MessageBreak
+ detected.\MessageBreak
+ Note: Loading `tocbibind' without option `not#1'\MessageBreak
+ can break several features of `tocbasic'%
+ \scr@ifundefinedorrelax{KOMAClassName}{%
+ .\MessageBreak
+ Loading `tocbibind' before `tocbasic' would avoid\MessageBreak
+ this warning message%
+ }{}%
+ }%
+ \fi
+ }%
+ \tb@tocbibindpatch{toc}{\contentsname}{\tableofcontents}%
+ \tb@tocbibindpatch{lof}{\listfigurename}{\listoffigures}%
+ \tb@tocbibindpatch{lot}{\listtablename}{\listoftables}%
+ }{}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\listofname}
+% While this is only an emergancy command, we don't support languages.
+% \begin{macrocode}
+\newcommand*{\listofname}{List of}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listofeachtoc}
+% \begin{macro}{\@listofeachtoc}
+% \begin{macro}{\@@listofeachtoc}
+% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% Another example of using \cs{doforeachtocfile}.
+% \begin{macrocode}
+\newcommand*{\listofeachtoc}{%
+ \kernel@ifnextchar [%]
+ \@listofeachtoc\@@listofeachtoc
+}
+\newcommand{\@listofeachtoc}[1][]{%
+ \doforeachtocfile[{#1}]{\listoftoc{\@currext}}%
+}
+\newcommand{\@@listofeachtoc}[1]{%
+ \doforeachtocfile{\listoftoc{\@currext}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ext@toc}
+% \changes{v3.23}{2017/02/23}{use indirect extension for toc}^^A
+% We do not longer hard code extension \texttt{toc} for the table of
+% contents. This allowes users to change it. Classes or other packages may
+% also define it. So it seems to be better to \cs{providecommand} instead of
+% \cs{newcommand} here.
+% \begin{macrocode}
+\providecommand*{\ext@toc}{toc}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocbasic@listhead}
+% \changes{v3.02a}{2009/01/20}{no explicite marks if ``numbered''}%
+% \changes{v3.09a}{2011/04/12}{again no explicite marks if ``numbered''}%
+% \changes{v3.12}{2013/09/24}{usage of new
+% \cs{tocbasic@addxcontentsline}}%
+% \changes{v3.15}{2014/12/10}{moved \cs{@mkboth} inside \cs{chapter*}}^^A
+% \changes{v3.15}{2014/12/10}{usage of \cs{addsec} if available}^^A
+% \changes{v3.15}{2014/12/10}{usage of \cs{@mkright} if available}^^A
+% \changes{v3.17}{2015/03/08}{moved \cs{@mkboth} outside \cs{chapter*}}^^A
+% \changes{v3.17}{2015/03/08}{usage of \cs{@mkdouble} if available}^^A
+% \changes{v3.17}{2015/03/25}{penalty and skip reconstruction after
+% \cs{@mkright}, \cs{@mkboth}, or \cs{@mkdouble}}^^A
+% \changes{v3.26}{2018/06/22}{removed spurious group}^^A
+% \changes{v3.26}{2018/09/03}{usage of \cs{addsecmark} or \cs{sectionmark}
+% instead of \cs{@mkright} or \cs{markright}}^^A
+% Setting the headings of a list of something. The heading is the only
+% argument.
+% \begin{macrocode}
+\newcommand*{\tocbasic@listhead}[1]{%
+ \@ifundefined{tocbasic@listhead@\@currext}{%
+ \scr@ifundefinedorrelax{chapter}{%
+ \expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{%
+ \iftocfeature{\@currext}{leveldown}{%
+ \iftocfeature{\@currext}{numbered}{%
+ \subsection[##1]{##1}%
+ }{%
+ \subsection*{##1}%
+ \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi
+ \begingroup
+ \iftocfeature{\@currext}{totoc}{%
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {subsection}{##1}%
+ }{}%
+ \c@secnumdepth=-\maxdimen
+ \subsectionmark{##1}%
+ \endgroup
+ \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi
+ }%
+ }{%
+ \iftocfeature{\@currext}{numbered}{%
+ \section[##1]{##1}%
+ }{%
+ \section*{##1}%
+ \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi
+ \begingroup
+ \iftocfeature{\@currext}{totoc}{%
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {section}{##1}%
+ }{}%
+ \@ifundefined{@mkdouble}{%
+ \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}%
+ }{%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ }%
+ \endgroup
+ \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi
+ }%
+ }%
+ }%
+ }{%
+ \expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{%
+ \iftocfeature{\@currext}{leveldown}{%
+ \iftocfeature{\@currext}{numbered}{%
+ \section{##1}%
+ }{%
+ \iftocfeature{\@currext}{totoc}{%
+ \@ifundefined{addsec}{%
+ \section*{##1}%
+ \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi
+ \begingroup
+ \@ifundefined{@mkright}{%
+ \IfActiveMkBoth{\markright{\MakeMarkcase{##1}}}{}%
+ }{%
+ \@mkright{\MakeMarkcase{##1}}%
+ }%
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {section}{##1}%
+ \endgroup
+ \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi
+ }{%
+ \addsec{##1}%
+ }%
+ }{%
+ \section*{##1}%
+ \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi
+ \begingroup
+ \@ifundefined{addsecmark}{%
+ \c@secnumdepth=-\maxdimen
+ \sectionmark{##1}%
+ }{%
+ \addsecmark{##1}%
+ }%
+ \endgroup
+ \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi
+ }%
+ }%
+ }{%
+ \iftocfeature{\@currext}{numbered}{%
+ \chapter[##1]{##1}%
+ }{%
+ \chapter*{##1}%
+ \ifvmode\@tempcnta\lastpenalty\@tempskipa\lastskip\unskip\fi
+ \begingroup
+ \@ifundefined{@mkdouble}{%
+ \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}%
+ }{%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ }%
+ \iftocfeature{\@currext}{totoc}{%
+ \expandafter\addxcontentsline\expandafter{\ext@toc}%
+ {chapter}{##1}%
+ }{}%
+ \endgroup
+ \ifvmode\penalty\@tempcnta\vskip\@tempskipa\fi
+ }%
+ }%
+ }%
+ }%
+ }{}%
+ \csname tb@@beforehead@hook\endcsname
+ \csname tb@\@currext @beforehead@hook\endcsname
+ \csname tocbasic@listhead@\@currext\endcsname{#1}%
+ \csname tb@\@currext @afterhead@hook\endcsname
+ \csname tb@@afterhead@hook\endcsname
+}
+% \end{macrocode}
+% \begin{macro}{\BeforeTOCHead}
+% \changes{v3.04b}{2010/01/05}{fix: define the hook if not already defined}^^A
+% \changes{v3.06}{2010/06/09}{fix: using \cs{@ifundefined} instead of
+% undefined \cs{scr@ifundefinedorrelax}}^^A
+% \changes{v3.26}{2018/08/10}{message moved to \texttt{trace}}^^A
+% \begin{macro}{\AfterTOCHead}
+% \changes{v3.04b}{2010/01/05}{fix: define the hook if not already defined}^^A
+% \changes{v3.06}{2010/06/09}{fix: using \cs{@ifundefined} instead of
+% undefined \cs{scr@ifundefinedorrelax}}^^A
+% \changes{v3.26}{2018/08/10}{message moved to \texttt{trace}}^^A
+% These are the commands to add code to the general or individual hooks. If
+% the first, optional argument was given, the second, mandatory argument
+% will be added to the individual hook, otherwise the general hook will be
+% extended.
+% \begin{macrocode}
+\newcommand{\BeforeTOCHead}[2][]{%
+ \@ifundefined{tb@#1@beforehead@hook}{%
+%<trace> \PackageInfo{tocbasic}{defining new hook before heading of `#1'}%
+ \expandafter\global\expandafter\let\csname tb@#1@beforehead@hook\endcsname
+ \@empty
+ }{}%
+ \expandafter\g@addto@macro\csname tb@#1@beforehead@hook\endcsname{#2}%
+}
+\newcommand{\AfterTOCHead}[2][]{%
+ \@ifundefined{tb@#1@afterhead@hook}{%
+%<trace> \PackageInfo{tocbasic}{defining new hook after heading of `#1'}%
+ \expandafter\global\expandafter\let\csname tb@#1@afterhead@hook\endcsname
+ \@empty
+ }{}%
+ \expandafter\g@addto@macro\csname tb@#1@afterhead@hook\endcsname{#2}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\MakeMarkcase}
+% Use upper-case or not?
+% \begin{macrocode}
+%<*exit>
+\AtBeginDocument{%
+ \@ifundefined{MakeMarkcase}{%
+ \scr@ifundefinedorrelax{KOMAClassName}{%
+ \let\MakeMarkcase\MakeUppercase
+ }{%
+ \let\MakeMarkcase\@firstofone
+ }%
+ }{}%
+}
+%</exit>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\deftocheading}
+% Define a toc headings command with one argument (the title).
+% \begin{macrocode}
+%<*body>
+\newcommand*{\deftocheading}[1]{%
+ \@namedef{tocbasic@listhead@#1}##1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setuptoc}
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@trim@spaces} statt
+% \cs{tb@@sp@def}}^^A
+% \begin{macro}{\unsettoc}
+% \changes{v3.26}{2018/08/29}{Verwendung von \cs{scr@trim@spaces} statt
+% \cs{tb@@sp@def}}^^A
+% Known features are:
+% \begin{description}
+% \item[\texttt{totoc}] writes the title of the list of to the table of
+% contents
+% \item[\texttt{numberline}] redefines \cs{nonumberline} to use
+% \cs{numberline}
+% \item[\texttt{numbered}] uses a numbered headings for the list of
+% \item[\texttt{leveldown}] uses not the top level heading (e.\,g.,
+% \cs{chapter} with book) but the first sub level (e.\,g., \cs{section} with
+% book).
+% \item[\texttt{nobabel}] prevents the extension to be added to the babel
+% handling of toc-files. To make this work, you have to set the feature
+% before adding the extension to the list of known extension.
+% \item[[\texttt{noprotrusion}]] prevents disabling character protrusion at
+% the toc.
+% \end{description}
+% Other features may be package dependent. You may test the feature using:
+% \begin{quote}
+% \cs{@ifundefined}\texttt{\{tocbasic@\meta{toc}@feature@\meta{feature}\}}\\
+% \phantom{\cs{@ifundefined}}\marg{do if feature not set}\\
+% \phantom{\cs{@ifundefined}}\marg{do if feature set}
+% \end{quote}
+% See \cs{tocbasic@listhead} for an example of this.
+% \begin{macrocode}
+\newcommand*{\setuptoc}[2]{%
+ \@for\@tempa:=#2\do{%
+ \scr@trim@spaces\@tempa
+ \@namedef{tocbasic@#1@feature@\@tempa}{}%
+ }%
+}
+\newcommand*{\unsettoc}[2]{%
+ \@for\@tempa:=#2\do{%
+ \scr@trim@spaces\@tempa
+ \expandafter\let\csname tocbasic@#1@feature@\@tempa\endcsname\relax
+ }%
+}
+% \end{macrocode}
+% Do not add the files, that babel handles by default.
+% \begin{macrocode}
+\setuptoc{toc}{nobabel}
+\setuptoc{lof}{nobabel}
+\setuptoc{lot}{nobabel}
+% \end{macrocode}
+% \begin{macro}{\iftocfeature}
+% We need a test for the features
+% \begin{macrocode}
+\newcommand*{\iftocfeature}[2]{%
+ \scr@ifundefinedorrelax{tocbasic@#1@feature@#2}{%
+ \expandafter\@secondoftwo
+ }{%
+ \expandafter\@firstoftwo
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocbasicautomode}
+% \changes{v1.0a}{2008/11/11}{use of \cs{addtotoclist} instead of internal}%
+% \changes{v3.07a}{2010/11/25}{fix: added missing
+% \cs{let}\cs{@starttoc}\cs{tocbasic@starttoc}}%
+% \textsf{tocbasic} can overtake \cs{@starttoc} to automaticly add all
+% used extensions to the list of known extensions and use
+% \cs{tocbasic@starttoc} instead of \cs{@starttoc} from \LaTeX{}
+% kernel. Please note, that we don't need a fix for the unfriendly
+% redefinition of \cs{@starttoc} by \textsf{hyperref}, because hyperref
+% does it only at the first \LaTeX{} run. So this action of \textsf{hyperref}
+% may only result in the need of one more \LaTeX{} run, but not in a permanent
+% mistake.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\tocbasicautomode}{%
+ \let\tb@saved@starttoc\@starttoc
+ \let\@starttoc\tocbasic@starttoc
+ \BeforeStartingTOC{%
+ \let\@starttoc\tb@saved@starttoc
+ \expandafter\ifattoclist\expandafter{\@currext}{}{%
+ \addtotoclist[tocbasicautomode]{\@currext}%
+ }%
+ }%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{High Level Interface for Generating New TOCs and Floats}
+% \label{sec:newfloats}
+%
+% \begin{macro}{\DeclareNewTOC}
+% \changes{v3.06}{2010/06/01}{new high level command}^^A
+% \changes{v3.18}{2015/06/20}{\cs{tb@nt@types} and \cs{tb@nt@listname} are
+% initialised \cs{relax}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+% \changes{v3.26a}{2018/12/30}{fixed usage of \cs{kernel@ifnextchar}}^^A
+% This command defines only a new TOC and a new caption command for this
+% TOC. It does not define a new foat unless option float was set! It does
+% not define a new nonfloat unless option nonfloat was set! The optional
+% argument is used to set up several settings using \textsf{keyval}. The
+% mandatory argument is the shortcut. The default type is the shortcut.
+% The extension is the shortcut. The default owner is ``\texttt{float}''.
+% \begin{macrocode}
+%<*body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.toc]{KOMAarg}
+\newcommand*{\DeclareNewTOC}[2][]{%
+ \newif\iftb@nt@float
+ \newif\iftb@nt@nonfloat
+ \newif\iftb@nt@forcenames
+ \def\tb@nt@floattype{\tb@nt@autofloattype}%
+ \def\tb@nt@floatpos{tbp}%
+ \def\tb@nt@ext{#2}%
+ \edef\tb@nt@type{#2}%
+ \let\tb@nt@types\relax
+ \def\tb@nt@owner{float}%
+ \def\tb@nt@name{\expandafter\protect\expandafter\MakeUppercase\tb@nt@type}%
+ \let\tb@nt@listname\relax
+ \let\tb@nt@counterwithin\@empty
+ \let\tb@nt@atbegin\@empty
+ \let\tb@nt@atend\@empty
+ \def\tb@nt@tocentrystyle{default}%
+% \end{macrocode}
+% \changes{v3.20}{2016/04/29}{need more initialization for empty optional
+% argument}^^A
+% \begin{macrocode}
+ \def\tb@nt@tocstyle@options{level=1}%
+ \IfArgIsEmpty{#1}{%
+% \end{macrocode}
+% Also need to call the style init code, to set the defaults for options
+% \texttt{numwidth} and \texttt{indent}.
+% \begin{macrocode}
+ \begingroup
+ \let\scr@dte@current\tb@nt@type
+ \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}%
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \ifstr{##1}{numwidth}{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,numwidth=1.5em}%
+ }%
+ }{%
+ \ifstr{##1}{indent}{%
+%<trace>\typeout{TRACE \string\DeclareNewTOC[...]{#2}: set default indent 1em}%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,indent=1em}%
+ }%
+ }{}%
+ }%
+ \kernel@ifnextchar[%]
+ {\@dodefault}%
+ {}%
+ }%
+ \def\@dodefault[##1]{}%
+ \scr@dte@doopts
+ \do@endgroup
+ }{%
+ \let\tb@nt@extra@relax@opts\@empty
+% \end{macrocode}
+% After initialisation of the local values we need to know the style of the
+% toc entry, to define style dependend options.
+% \begin{macro}{\tb@nt@type}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% The type of list is used for environment and counter names and as part of
+% several internal and user macros. It is needed before defining the style
+% dependend options. So we use a first run to set it up.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{type}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@type{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@tocentrystyle}
+% \changes{v3.20}{2015/12/16}{neu (intern)}
+% The style of the toc entry. It is needed before defining the style
+% dependend options. So we use a first run to set it up.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}[default]{%
+ \IfArgIsEmpty{##1}{%
+ \edef\tb@nt@tocentrystyle{##1}%
+ \FamilyKeyStateProcessed
+ }{%
+ \scr@ifundefinedorrelax{scr@dte@def@l@##1}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \edef\tb@nt@tocentrystyle{##1}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@ext}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% \changes{v3.25}{2017/11/20}{moved to pass 1}^^A
+% Don't tell the user, that the mandatory argument of the command may be
+% overloaded by this option. This was only done to simplify the definition.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{extension}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@ext{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@owner}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% \changes{v3.26}{2018/06/09}{moved to pass 1}^^A
+% The owner of the new list extension.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{owner}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@owner{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% After this we define pseudo option \texttt{@else@} to ignore all currently
+% not needed options. After this we do the first option execution run.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}%
+ \FamilyExecuteOptions[.toc]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{@else@}%
+% \end{macrocode}
+% \changes{v3.26}{2018/06/09}{add extension already after first pass}^^A
+% First of all, every TOC needs an extension, that should be added to the
+% list of known extensions. This has to be done also, if no options has been
+% given!
+% \begin{macrocode}
+ }%
+ \expandafter\newcommand\csname ext@\tb@nt@type\endcsname{}%
+ \expandafter\let\csname ext@\tb@nt@type\endcsname\tb@nt@ext
+ \addtotoclist[\tb@nt@owner]{\csname ext@\tb@nt@type\endcsname}%
+ \IfArgIsEmpty{#1}{}{%
+% \end{macrocode}
+% For the second option pass we do not need to set up these options
+% again. So define it as no-opt.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{type}{\FamilyKeyStateProcessed}%
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}{\FamilyKeyStateProcessed}%
+ \DefineFamilyKey[.toc]{KOMAarg}{extension}{\FamilyKeyStateProcessed}%
+ \DefineFamilyKey[.toc]{KOMAarg}{owner}{\FamilyKeyStateProcessed}%
+% \end{macrocode}
+% \changes{v3.20}{2015/12/16}{defining toc style depending options}^^A
+% \changes{v3.20}{2016/06/12}{using prefix \texttt{tocentry} instead of
+% \texttt{toc}}^^A
+% If the toc style is empty we won't define any \cs{l@\dots}. Otherwise we
+% need to define additional options.
+% \begin{macrocode}
+ \ifstr{\tb@nt@tocentrystyle}{}{}{%
+ \begingroup
+ \let\scr@dte@current\tb@nt@type
+ \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}%
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro\tb@nt@extra@relax@opts{%
+ \RelaxFamilyKey[.toc]{KOMAarg}{toc##1}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{tocentry##1}%
+ }%
+ }%
+ \kernel@ifnextchar[%]
+ {\@dodefault{##1}}%
+ {\@donodefault{##1}}%
+ }%
+ \def\@donodefault##1{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.toc]{KOMAarg}{toc##1}{%
+ \PackageWarning{tocbasic}{you should use `tocentry##1'
+ instead\MessageBreak
+ of `toc##1'}%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1}{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \def\@dodefault##1[##2]{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.toc]{KOMAarg}{toc##1}[##2]{%
+ \PackageWarning{tocbasic}{you should use `tocentry##1'
+ instead\MessageBreak
+ of `toc##1'}%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentry##1}[##2]{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \scr@dte@doopts
+ \do@endgroup
+ }%
+% \end{macrocode}
+% After this, we need to define all the other options and do the real option
+% execution.
+% \begin{macro}{\tb@nt@atbegin}
+% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbegin}}
+% \changes{v3.11c}{2013/02/01}{\texttt{atbegin} argument may be empty}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Additional code executed at the begin of a new defined environment.
+% \begin{macrocode}
+ \FamilyStringKey[.toc]{KOMAarg}{atbegin}{\tb@nt@atbegin}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@atend}
+% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbend}}
+% \changes{v3.11c}{2013/02/01}{\texttt{atend} argument may be empty}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Additional code executed at the end of a new defined environment.
+% \begin{macrocode}
+ \FamilyStringKey[.toc]{KOMAarg}{atend}{\tb@nt@atend}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@counterwithin}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% If a counter will be defined, this counter may depend on another counter
+% (like figure counter depends on chapter counter at book classes). If the
+% value is empty, the counter does not depend on any other counter.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{counterwithin}{%
+ \edef\tb@nt@counterwithin{##1}\FamilyKeyStateProcessed
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\iftb@nt@float}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% \changes{v3.06}{2010/06/01}{new internal}
+% This boolean indicates, that float environments should also be defined.
+% \begin{macrocode}
+ \FamilyBoolKey[.toc]{KOMAarg}{float}{tb@nt@float}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@floatpos}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Simply the value for the |\fps@...| macro.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{floatpos}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@floatpos{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@floattype}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Simply the value for the |\ftype@...| macro. It has to be
+% $1<=\textrm{value}<=31$.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{floattype}{%
+ \FamilySetCounterMacro{KOMAarg}{floattype}{\reserved@d}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifnum 0=
+ \ifnum\reserved@d<1 0 \else\ifnum\reserved@d>31 0 \else 1 \fi\fi
+ \FamilyKeyStateUnknownValue
+ \else
+ \let\tb@nt@floattype\reserved@d
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\iftb@nt@forcenames}
+% \changes{v3.06}{2010/06/01}{new internal}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% The |\...name| commands will only be defined, if they are not already
+% defined. But some users may want to define their own names even if there
+% are already definitions. So this boolean option may switch to force the
+% definition.
+% \begin{macrocode}
+ \FamilyBoolKey[.toc]{KOMAarg}{forcenames}{tb@nt@forcenames}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@hang}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Earch entry of a TOC/list of is idented on the left side. This is the
+% amount of the indention of the text of the entry.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{hang}{%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `hang'.\MessageBreak
+ Option will be ignored, because toc entry style\MessageBreak
+ `\tb@nt@tocentrystyle' does not provide option `numwidth'%
+ }%
+ }{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `hang'.\MessageBreak
+ You should replace option `hang' by option\MessageBreak
+ `tocentrynumwidth'%
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,numwidth={##1}}%
+ }%
+ \FamilyKeyStateProcessed
+ }%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{}{%
+ \l@addto@macro\tb@nt@tocstyle@options{,numwidth=1.5em}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@indent}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Earch entry of a TOC/list of is idented on the left side. This is the
+% amount of the indention of the number part.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{indent}{%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `indent'.\MessageBreak
+ Option will be ignored, because toc entry style\MessageBreak
+ `\tb@nt@tocentrystyle' does not provide option `indent'%
+ }%
+ }{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `indent'.\MessageBreak
+ You should replace option `indent' by option\MessageBreak
+ `tocentryindent'%
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,indent={##1}}%
+ }%
+ \FamilyKeyStateProcessed
+ }%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{}{%
+%<trace>\typeout{TRACE \string\DeclareNewTOC[...]{#2}: set default indent 1em}%
+ \l@addto@macro\tb@nt@tocstyle@options{,indent=1em}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@level}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Each entry to a TOC/list of has a numeric level. You may set up your own
+% level.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{level}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `level'.\MessageBreak
+ You should replace option `level' by option\MessageBreak
+ `tocentrylevel'
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,level={##1}}%
+ \FamilyKeyStateProcessed
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@listname}
+% \changes{v3.18}{2015/06/20}{using \cs{def} instead of \cs{edef}}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% The list itself has a heading. A |\list<type>name| will also be defined.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{listname}{%
+ \tb@ifvalueisnotempty{##1}{\def\tb@nt@listname{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@name}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% We need a name/term for the entries of the new list. This may e.\,g. be used
+% for |caption| output. A |\<type>name| will also be defined.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{name}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@name{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\iftb@nt@nonfloat}
+% \changes{v3.06}{2010/06/01}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% This boolean indicates, that non-float environment should also be
+% defined. The environment has the postfix ``-''.
+% \begin{macrocode}
+ \FamilyBoolKey[.toc]{KOMAarg}{nonfloat}{tb@nt@nonfloat}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@types}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Sometimes the plural of the type is needed and may be defined by a
+% seperate option.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{types}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@types{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \changes{v3.25}{2017/11/20}{new (internal)}
+% The new option \texttt{setup} allowes to setup ToC features provided by
+% \cs{setuptoc}. Note, currently there is no test whether or not a feature
+% does exist!
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{setup}{%
+ \setuptoc\tb@nt@ext{##1}%
+ }%
+% \end{macrocode}
+% \changes{v3.25}{2017/11/20}{new (internal)}
+% The new option \texttt{unset} allowes to unset ToC features provided
+% by \cs{unsettoc}. Note, currently there is no test whether or not a
+% feature does exist!
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{unset}{%
+ \unsettoc\tb@nt@ext{##1}%
+ }%
+% \end{macrocode}
+% Last but not least we have to execute the options and reset the option
+% definitions.
+% \changes{v3.25}{2017/09/27}{\texttt{nonfloat} fixed}^^A
+% \changes{v3.26}{2018/06/09}{added missing reset of \texttt{unset} and
+% \texttt{setup}}^^A
+% \begin{macrocode}
+ \FamilyExecuteOptions[.toc]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{unset}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{setup}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{types}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{nonfloat}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{name}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{listname}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{level}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{indent}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{hang}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{forcenames}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{floatpos}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{float}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{counterwithin}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{atend}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{atbegin}%
+ \tb@nt@extra@relax@opts
+ \RelaxFamilyKey[.toc]{KOMAarg}{owner}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{extension}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{tocentrystyle}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{type}%
+ }%
+% \end{macrocode}
+% We save the type of the extension at \cs{tb@nt@type@\meta{extension}}
+% for later usage.
+% \begin{macrocode}
+ \expandafter\let\csname tb@nt@type@\tb@nt@ext\endcsname\tb@nt@type
+% \end{macrocode}
+% Then we need the TOC itself with a name:
+% \changes{v3.25}{2017/10/10}{use \cs{ext@\dots} instead of the extension
+% itself in definition of \cs{listof\dots}}^^A
+% \begin{macrocode}
+ \scr@ifundefinedorrelax{tb@nt@types}{%
+ \edef\tb@nt@types{\tb@nt@type s}%
+ }{}%
+ \scr@ifundefinedorrelax{tb@nt@listname}{%
+ \protected@edef\tb@nt@listname{List of \protect\MakeUppercase\tb@nt@types}%
+ }{}%
+ \@ifundefined{\tb@nt@type name}{%
+ \expandafter\protected@edef\csname \tb@nt@type name\endcsname{\tb@nt@name}%
+ }{%
+ \iftb@nt@forcenames
+ \expandafter\protected@edef\csname \tb@nt@type name\endcsname
+ {\tb@nt@name}%
+ \fi
+ }%
+ \@ifundefined{list\tb@nt@type name}{%
+ \expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname
+ }{%
+ \iftb@nt@forcenames
+ \expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname
+ \fi
+ }%
+ \expandafter\newcommand\csname listof\tb@nt@ext name\expandafter\endcsname
+ \expandafter{\csname list\tb@nt@type name\endcsname}%
+ \begingroup\edef\@tempa{\endgroup
+ \noexpand\newcommand*\csname listof\tb@nt@types\endcsname{%
+ \noexpand\listoftoc{%
+ \expandafter\noexpand\csname ext@\tb@nt@type\endcsname}%
+ }%
+ }\@tempa
+% \end{macrocode}
+% The list entry:
+% \changes{v3.20}{2016/04/05}{warning if \cs{l@\dots} is undefined}^^A
+% \begin{macrocode}
+ \ifstr{\tb@nt@tocentrystyle}{}{%
+ \@ifundefined{l@\tb@nt@type}{%
+ \PackageWarning{tocbasic}{%
+ \expandafter\string\csname l@\tb@nt@type\endcsname\space
+ undefined!\MessageBreak
+ I hope you know, what you are doing, but\MessageBreak
+ maybe it would be better to use proper\MessageBreak
+ `tocentrystyle` settings%
+ }%
+ }{}%
+ }{%
+ \edef\reserved@a{%
+ \noexpand\DeclareTOCStyleEntry[%
+ {\unexpanded\expandafter{\tb@nt@tocstyle@options}}%
+ ]{\tb@nt@tocentrystyle}{\tb@nt@type}%
+ }%
+ \reserved@a
+ }%
+% \end{macrocode}
+% \changes{v3.12}{2013/05/03}{fixed: definition of
+% \cs{listof\meta{type}entryname} added as explained in the manual}
+% \begin{macrocode}
+ \@ifundefined{listof\tb@nt@ext entryname}{%
+ \expandafter\let\csname listof\tb@nt@ext entryname\endcsname\tb@nt@name
+ }{}%
+% \end{macrocode}
+% The setup command:
+% \begin{macrocode}
+ \begingroup\edef\@tempa{\endgroup
+ \noexpand\newcommand*\csname setup\tb@nt@types\endcsname{%
+ \noexpand\setuptoc{\tb@nt@ext}%
+ }%
+ }\@tempa
+ \@tempswafalse
+% \end{macrocode}
+% The float environments:
+% \changes{v3.09a}{2011/05/30}{fixed: floats may have an optional argument}
+% \changes{v3.12}{2013/12/10}{fixed: usage of default placement}
+% \begin{macrocode}
+ \iftb@nt@float
+ \expandafter\newcommand\expandafter*\csname fps@\tb@nt@type\expandafter
+ \endcsname\expandafter{\tb@nt@floatpos}%
+ \expandafter\newcommand\expandafter*\csname ftype@\tb@nt@type\expandafter
+ \endcsname\expandafter{\tb@nt@floattype}%
+ \begingroup
+ \edef\@tempa{%
+ \noexpand\endgroup
+ \noexpand\newenvironment{\tb@nt@type}{%
+ \noexpand\kernel@ifnextchar[%]
+ {\noexpand\tb@atbegin@after\noexpand\@float{\tb@nt@type}}%
+ {\noexpand\edef\noexpand\reserved@a{%
+ \noexpand\noexpand\noexpand\tb@atbegin@after
+ \noexpand\noexpand\noexpand\@float{\tb@nt@type}%
+ [\noexpand\csname fps@\tb@nt@type\noexpand\endcsname]}%
+ \noexpand\reserved@a}%
+ }{%
+ \noexpand\csname \tb@nt@type @atend\noexpand\endcsname
+ \noexpand\end@float
+ }%
+ \noexpand\newenvironment{\tb@nt@type*}{%
+ \noexpand\kernel@ifnextchar[%]
+ {\noexpand\tb@atbegin@after\noexpand\@dblfloat{\tb@nt@type}}%
+ {\noexpand\edef\noexpand\reserved@a{%
+ \noexpand\noexpand\noexpand\tb@atbegin@after
+ \noexpand\noexpand\noexpand\@dblfloat{\tb@nt@type}%
+ [\noexpand\csname fps@\tb@nt@type\noexpand\endcsname]}%
+ \noexpand\reserved@a}%
+ }{%
+ \noexpand\csname \tb@nt@type @atend\noexpand\endcsname
+ \noexpand\end@dblfloat
+ }%
+ }%
+ \@tempa
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% The nonfloat environment:
+% \begin{macrocode}
+ \iftb@nt@nonfloat
+ \begingroup
+ \edef\@tempa{%
+ \noexpand\endgroup
+ \noexpand\newenvironment{\tb@nt@type-}{%
+ \noexpand\trivlist\noexpand\item\noexpand\relax
+ \noexpand\minipage{\noexpand\linewidth}%
+ \noexpand\def\noexpand\@captype{\tb@nt@type}%
+ \noexpand\csname \tb@nt@type @atbegin\noexpand\endcsname
+ }{%
+ \noexpand\csname \tb@nt@type @atend\noexpand\endcsname
+ \noexpand\endminipage\noexpand\endtrivlist
+ }%
+ }%
+ \@tempa
+ \@tempswatrue
+ \fi
+% \end{macrocode}
+% The counter and hooks of float and nonfloat environments:
+% \changes{v3.10b}{2012/04/04}{\cs{noexpand} added to fix problems using
+% \cs{autodot}}^^A
+% \changes{v3.13}{2014/07/31}{add \cs{autodot} only to hierachical
+% counters}^^A
+% \begin{macrocode}
+ \if@tempswa
+ \@ifundefined{c@\tb@nt@type}{%
+ \newcounter{\tb@nt@type}%
+ }{%
+ \PackageWarning{tocbasic}{using already defined counter `\tb@nt@type'}%
+ }%
+ \ifx\tb@nt@counterwithin\@empty\else
+ \@addtoreset{\tb@nt@type}{\tb@nt@counterwithin}%
+ \begingroup\edef\@tempa{%
+ \noexpand\endgroup
+ \noexpand\renewcommand*\expandafter\noexpand
+ \csname the\tb@nt@type\endcsname{%
+ \expandafter\noexpand\csname the\tb@nt@counterwithin\endcsname
+ .\noexpand\arabic{\tb@nt@type}%
+ }%
+ }\@tempa
+ \fi
+ \begingroup
+ \edef\@tempa{%
+ \noexpand\endgroup
+ \noexpand\newcommand*\expandafter\noexpand
+ \csname \tb@nt@type format\endcsname{%
+ \expandafter\noexpand\csname \tb@nt@type name\endcsname
+ \noexpand\nobreakspace
+ \expandafter\noexpand\csname the\tb@nt@type\endcsname
+ \ifx\tb@nt@counterwithin\@empty\else
+ \noexpand\csname autodot\endcsname
+ \fi
+ }%
+ \noexpand\newcommand*\expandafter\noexpand
+ \csname fnum@\tb@nt@type\endcsname{%
+ \expandafter\noexpand\csname \tb@nt@type format\endcsname
+ }%
+ }%
+ \@tempa
+ \expandafter\newcommand\expandafter*\csname \tb@nt@type @atbegin\expandafter
+ \endcsname\expandafter{\tb@nt@atbegin}%
+ \expandafter\newcommand\expandafter*\csname \tb@nt@type @atend\expandafter
+ \endcsname\expandafter{\tb@nt@atend}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\tb@atbegin@after}
+% \changes{v3.09a}{2011/05/30}{new internal}%
+% Processes command \#1 with argument \#2 and optional argument \#3 and than
+% \verb|\csname #2@atbegin\endcsname|. This is used to add
+% \verb|csname #2@atbegin\endcsname| at begin part of a float (but after
+% optional argument of the float).
+% \begin{macrocode}
+\newcommand*{\tb@atbegin@after}[3]{}
+\def\tb@atbegin@after#1#2[#3]{%
+ #1{#2}[#3]%
+ \csname #2@atbegin\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@ifvalueisnotempty}
+% \changes{v3.06}{2010/05/21}{new internal}^^A
+% \changes{v3.20}{2015/12/16}{simpler definition}^^A
+% This is only a helper for defining some of the keys.
+% \begin{macrocode}
+\newcommand*{\tb@ifvalueisnotempty}[1]{%
+ \ifstr{#1}{}{%
+ \FamilyKeyStateUnknownValue
+ \expandafter\@gobble
+ }{%
+ \FamilyKeyStateProcessed
+ \expandafter\@firstofone
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@boolkey}
+% \changes{v3.06}{2010/05/21}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \end{macro}
+% \begin{macro}{\tb@dimkey}
+% \changes{v3.06}{2010/05/21}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \end{macro}
+% \begin{macro}{\tb@numkey}
+% \changes{v3.06}{2010/05/21}{new internal}%
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \end{macro}
+% \begin{macro}{\tb@nt@autofloattype}
+% \changes{v3.06}{2010/06/01}{new internal}
+% This macro saves the float type for auto generated float types.
+% \begin{macrocode}
+\newcommand*{\tb@nt@autofloattype}{16}
+%</body>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \iffalse
+%</package>
+%<*load>
+% Used at \KOMAScript{} packages and classes to load the package.
+% \begin{macrocode}
+\RequirePackage{tocbasic}[%
+%!KOMAScriptVersion
+]
+% \end{macrocode}
+%
+%<*class>
+% \KOMAScript{} classes need some additional initialization.
+%
+% \changes{v1.00}{auto-activation of feature \texttt{onecolumn}}
+% Set feature \texttt{onecolumn} for every toc file if feature
+% \texttt{leveldown} was not used.
+% \begin{macrocode}
+%<*chapter>
+\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}%
+\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}%
+%</chapter>
+% \end{macrocode}
+% Tell the package, what files are used:
+% \changes{v3.25}{2017/10/10}{extension \texttt{lof} not added explicitely}^^A
+% \changes{v3.25}{2017/10/10}{extension \texttt{lot} not added explicitely}^^A
+% \begin{macrocode}
+\addtotoclist{toc}
+\ifstr{\ext@toc}{toc}{}{\expandafter\addtotoclist\expandafter{\ext@toc}}
+% \end{macrocode}
+%</class>
+%</load>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `tocbasic.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% coding: iso-latin-1
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/koma-script/source/tocstyle.dtx b/macros/latex/contrib/koma-script/source/tocstyle.dtx
new file mode 100644
index 0000000000..eda5188828
--- /dev/null
+++ b/macros/latex/contrib/koma-script/source/tocstyle.dtx
@@ -0,0 +1,2327 @@
+% \CheckSum{1867}
+% \iffalse meta-comment
+% ======================================================================
+% tocstyle.dtx
+% Copyright (c) Markus Kohm, 2007-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 and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% The KOMA-Script bundle consists of all files listed in manifest.txt.
+% The work `tocstyle' consists of the files `tocstyle.dtx' and
+% `scrlogo.dtx'.
+%
+% If you're missing the installation batch file `tocstyle.ins', try
+% tex tocstyle.dtx
+% to unpack all files.
+% The package documentation may be produced repeating
+% latex tocstyle.dtx
+% at least three times.
+% ----------------------------------------------------------------------
+% tocstyle.dtx
+% Copyright (c) Markus Kohm, 2007-2017
+%
+% Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets.
+%
+% 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.
+%
+% Das KOMA-Script-Paket besteht aus allen Dateien, die in manifest.txt
+% genannt sind.
+% Das Werk `tocstyle' besteht aus den Dateien `tocstyle.dtx' und
+% `scrlogo.dtx'.
+%
+% Falls Sie die Installations-Batch-Datei `tocstyle.ins' vermissen,
+% probieren Sie einfach einmal
+% tex tocstyle.dtx
+% um alle Dateien auszupacken. Zur englischen Anleitung siehe den
+% englischen Kommentar oben.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: tocstyle.dtx 2600 2017-02-23 12:07:58Z kohm $
+%<*dtx>
+% \fi
+\def\LaTeXformat{LaTeX2e}
+\let\ifbeta=\iffalse %^^A with = will be replaced by release process
+\ifx\fmtname\LaTeXformat\else
+% \iffalse
+%</dtx>
+%<*insfile>
+% \fi
+\def\batchfile{tocstyle.dtx}
+\input docstrip.tex
+\ifToplevel{%
+ \Msg{**********************************************************************}
+ \Msg{*}
+ \Msg{* KOMA-Script presents tocstyle}
+ \Msg{* a package to define, configure and several different styles for}
+ \Msg{* table of contents, list of floats and comparables.}
+ \Msg{*}
+ \Msg{* This is `\batchfile', a batchfile to unpack the package tocstyle,}
+ \Msg{* the documentation of the package, and an archive of all these files.}
+ \Msg{*}
+ \Msg{**********************************************************************}
+ \keepsilent
+ \askforoverwritefalse
+}
+
+\preamble
+
+Copyright (c) 2007-2017 by Markus Kohm <komascript(at)gmx.info>
+
+This file was generated from file(s) of the 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 file may only be distributed together with the file
+`tocstyle.dtx' and `scrlogo.dtx'. You may however distribute the files
+`tocstyle.dtx' and `scrlogo.dtx' without this file.
+
+If this file is a beta version, you are not allowed to distribute it.
+
+English and German manuals are part of KOMA-Script bundle.
+----------------------------------------------------------
+
+The english manual is in `tocstyle.dtx', too.
+
+The KOMA-Script bundle (but not this file) was based upon the LaTeX2.09
+Script family created by Frank Neukam 1993 and the LaTeX2e standard
+classes created by The LaTeX3 Project 1994-1996.
+
+THIS IS AN ALPHA VERSION!
+USAGE OF THIS VERSION IS ON YOUR OWN RISK!
+EVERYTHING MAY HAPPEN!
+EVERYTHING MAY CHANGE IN FUTURE!
+THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!
+
+\endpreamble
+
+\generate{\usepreamble\defaultpreamble
+ \file{tocstyle.sty}{%
+ \from{tocstyle.dtx}{package,trace,tocstyle}%
+ \from{scrlogo.dtx}{logo}%
+ }%
+}
+
+\ifToplevel{%
+ \generate{\usepreamble\defaultpreamble
+ \file{tocstyle.ins}{%
+ \from{tocstyle.dtx}{insfile}%
+ }%
+ \file{tocstyle.tex}{%
+ \from{tocstyle.dtx}{doc}%
+ }%
+ \file{tocstyle.drv}{%
+ \from{tocstyle.dtx}{driver}%
+ }%
+ }%
+}
+
+\ifToplevel{%
+ \Msg{**********************************************************************}
+ \Msg{*}
+ \ifbeta
+ \Msg{* THIS IS A BETA VERSION. YOU SHOULD NOT INSTALL OR USE IT!}
+ \Msg{* THERE MAY BE A LOT OF BUGS AT THIS VERSION!}
+ \Msg{* PLEASE INSTALL THE RELEASE YOU MAY FIND AT CTAN!}
+ \else
+ \Msg{* To finish the installation you have to copy the file `tocstyle.sty'}
+ \Msg{* to folder `tex/latex/tocstyle/' of one of your TEXMF trees.}
+ \Msg{* You should also produce the documentation using}
+ \Msg{*\space\space pdflatex tocstyle.dtx}
+ \Msg{* and copy it to folder `doc/latex/tocstyle/' of one of your}
+ \Msg{* TEXMF trees.}
+ \Msg{*}
+ \Msg{* See the manual of your TeX distribution for more informations about}
+ \Msg{* package installation.}
+ \fi
+ \Msg{*}
+ \Msg{**********************************************************************}
+}
+% \iffalse
+%</insfile>
+%<*dtx>
+% \fi
+ \def\ProvidesFile{\csname fi\endcsname\csname endinput\endcsname}
+\fi
+\ProvidesFile{tocstyle.dtx}
+% \iffalse
+%</dtx>
+%<package|driver>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package>\ProvidesPackage{tocstyle}
+%<driver>\ProvidesFile{tocstyle.drv}
+%<doc>\ProvidesFile{tocstyle.tex}
+%<*dtx|package|driver|doc>
+ [2017/02/23 v0.2i-alpha KOMA-Script package (versatile toc styles)]
+%</dtx|package|driver|doc>
+%<*driver>
+\documentclass{scrdoc}
+\usepackage[ngerman,english]{babel}
+\usepackage{listings}
+\lstnewenvironment{lstcode}[1][]{%
+ \lstset{language=[LaTeX]TeX,basicstyle=\ttfamily\small,#1}%
+}{}
+
+\usepackage{tocstyle}
+\usetocstyle[toc]{nopagecolumn}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{tocstyle.dtx}
+\title{The \KOMAScript{} package \texttt{tocstyle}%
+ \footnote{This is version \fileversion\ of file \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\let\Macro\cs
+\let\Package\textsf
+\let\File\texttt
+\let\Option\texttt
+\let\Counter\texttt
+\let\ShowOutput\quote
+\let\endShowOutput\endquote
+\let\Parameter\marg
+\let\OParameter\oarg
+\newcommand\PParameter[1]{\mbox{\texttt{\{#1\}}}}
+\let\PName\meta
+\let\PValue\texttt
+\newlength\descwidth
+\newenvironment{desctabular}{%
+ \setlength{\descwidth}{\linewidth}
+ \addtolength{\descwidth}{-1em}
+ \addtolength{\descwidth}{-2\tabcolsep}
+ \tabular{@{}lp{\descwidth}@{}}
+ \hline
+}{%
+ \hline
+ \endtabular
+}
+\newcommand{\pventry}[2]{%
+ \multicolumn{2}{@{}l@{}}{\PValue{#1}}\\
+ ~ & #2 \\ }
+\providecommand*{\autoref}[1]{\expandafter\AUTOREF#1:}
+\newcommand*{\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
+
+\begin{document}
+ \maketitle
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{english}
+%
+% \changes{v0.1}{2007/06/23}{start of new package}^^A
+% \changes{v0.2h}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
+%
+%\iffalse
+%<doc>\chapter{Other Styles for Table of Contents and Lists of Floats}
+%<doc>\labelbase{tocstyle}
+%<doc>\BeginIndex{Package}{tocstyle}
+%\fi
+%
+% \begin{abstract}
+%\iffalse
+%<*doc>
+%\fi
+While the main classes of the \KOMAScript\ bundle were made, there where
+several ideas for formating the table of contents and lists of floats, but
+almost none of them where implemented. One reason was, that the \KOMAScript\
+author didn't like to change the \LaTeX\ kernel at a class, because this may
+result in serveral problems with other packages. The package
+\Package{tocstyle} will fill the gap. If it conflicts with another package,
+you simply may decide not to use it.
+
+Since \KOMAScript~3.20 most of the features of \Package{tocstyle} are also
+provided by other \KOMAScript{} packages like \Package{tocbasic}.
+%\iffalse
+%</doc>
+%\fi
+% \end{abstract}
+%
+% \def\appendixtocdepth{\value{tocdepth}}
+% \tableofcontents
+% \def\appendixtocdepth{2}
+%
+%\iffalse
+%<*doc>
+%\fi
+%
+\section{Package Status}
+\label{sec:tocstyle.status}
+
+Package \Package{tocstyle} has alpha status for a very long time (since
+2007), despite the fact that it was very stable all over the years. The main
+reason for this is that it was an experiment and I always intended to make a
+better successor. Another reason was, that there are known issues, which are
+hardly to fix. So \Package{tocstyle} never became an official part of
+\KOMAScript. Nevertheless it has been published with \KOMAScript, because I
+thought it would be an useful addition. I never thought that the interim
+status of the package would be for more than eight years.
+
+With \KOMAScript~3.20 several features of \Package{tocstyle} can be found also
+in \Package{tocbasic}. I recommend to use that official and essential part of
+\KOMAScript{} instead of \Package{tocstyle} whenever possible. Nevertheless, I
+plan to ensure the compatibility of \Package{tocstyle} with new releases of
+\KOMAScript{} for at least already existing, unchanged documents as long as it
+is possible. But expect that \Package{tocstyle} will move from
+\KOMAScript{} bundle to another package, e.\,g., \KOMAScript-obsolete or a
+stand-alone package.
+
+\section{How It Works}
+\label{sec:tocstyle.howitworks}
+
+Loading the package \Package{tocstyle} will redefine the kernel macro
+\Macro{@starttoc}. Using the redefined \Macro{@starttoc} will redefine
+\Macro{@dottedtocline}, \Macro{l@part} down to \Macro{l@subparagraph},
+\Macro{l@figure}, and \Macro{l@table}, if and only if \Package{tocstyle}
+wasn't deactivated for all TOCs or this TOC. Usage the redefined
+\Macro{@dottedtocline} will redefine \Macro{numberline}.
+
+Redefining \Macro{@starttoc}, \Macro{@dottedtocline}, and \Macro{numberline}
+will activate the features of \Package{tocstyle} for all lists that uses
+these, e.g. table of contents, list of figures and list of tables at the
+standard or the \KOMAScript{} classes. But while not all classes uses
+\Macro{@dottedtocline} and \Macro{@numberline} for all entries to table of
+contents and list of floats the package redefines some other macros that are
+typically used for those entries. These are e.g. \Macro{l@part},
+\Macro{l@chapter} and some more. If the class even does not use those macros,
+you may not use \Package{tocstyle} to change the lists. The term TOC will be
+used for all kind of list, that may be processed by \Package{tocstyle}. The
+package tests wether the original kernel macros \Macro{@starttoc},
+\Macro{@dottedtocline}, and \Macro{numberline} were used or not and warns if
+not.
+
+Package \Package{tocstyle} needs some more information. For the standard and
+the \KOMAScript{} classes these informations may be detected by the
+package. If the result is not the expected, you may configure these
+informations manually.
+
+The entries of every TOC hat a depth. See the counter \Counter{tocdepth} for
+more information about the depth. You may change several settings for the
+entries of either all depths of all TOCs, all depths of one TOC, or one depth
+of one TOC.
+
+But most users will not need to set up \Package{tocstyle} at this low
+level. They simply will select one of the predefined styles and maybe select
+one of the optional features.
+
+\section{Optional Features}
+\label{sec:tocstyle.options}
+
+Optional features will be selected using a package option while loading the
+package or using the package option as a global option loading the class using
+\Macro{documentclass}. Optional features change generall behaviour of all
+TOCs.
+
+%\iffalse
+\begin{Description}
+ \Option{tocindentauto}
+ \Option{tocindentmanual}
+\end{Description}
+\BeginIndex{Option}{tocindentauto}\BeginIndex{Option}{tocindentmanual}
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{tocindentauto}
+\DescribeMacro{tocindentmanual}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+With option \Option{tocindentauto} all widths at the TOCs are calculated by
+\Package{tocstyle}. The calculation of the width needs at least one \LaTeX{}
+run with all TOC entries. So you need at least three \LaTeX{} runs:
+\begin{itemize}
+\item one to write all the TOC entries to the TOC file
+\item one with the known TOC entries from the TOC file but unknown widths
+\item one with the known TOC entries from the TOC file and known widths
+\end{itemize}
+If the TOC entries changed between the second and the third
+run\,---\,e.g. because of page numbers changed\,---\,you'll need one more run
+(and so on).
+
+Note: The widths of all entries of same depth and same TOC are same. Don't ask
+for less width of page numbers at the first than the last TOC page!
+%\iffalse
+\EndIndex{Option}{tocindentauto}\EndIndex{Option}{tocindentmanual}
+%\fi
+%
+%\iffalse
+\begin{Description}
+ \Option{tocgraduated}
+ \Option{tocflat}
+ \Option{tocfullflat}
+\end{Description}%
+\BeginIndex{Option}{tocgraduated}\BeginIndex{Option}{tocflat}%
+\BeginIndex{Option}{tocfullflat}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{tocgraduated}
+\DescribeMacro{tocflat}
+\DescribeMacro{tocfullflat}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+The option \Option{tocgraduated} selects the graduated version of all
+TOCs. You know the graduated version from the standard classes. Entries of lower
+depth are indented against entries of higher depth. This may e.g. look like:
+\begin{ShowOutput}
+ \showtoc[{%
+ \aliastoc{\tocstyleTOC}{toc}%
+ \usetocstyle[toc]{standard}%
+ \settocfeature[toc]{raggedhook}{\raggedright}%
+ \selecttocstyleoption{tocgraduated}%
+ }]{toc}
+\end{ShowOutput}
+The option \Option{tocflat} selects the flat\,---\,aka left
+aligned\,---\,version of all TOCs. You know the flat version from the
+\KOMAScript{} classes using option \Option{tocleft}. This may e.g. look like:
+\begin{ShowOutput}
+ \showtoc[{%
+ \aliastoc{\tocstyleTOC}{toc}%
+ \usetocstyle[toc]{standard}%
+ \selecttocstyleoption{tocflat}%
+ }]{toc}%
+\end{ShowOutput}
+The option \Option{tocfullflat} is similar to flat version of all
+TOCs, but there is even no box of same width for the numbers of all entries.
+This may e.g. look like:
+\begin{ShowOutput}
+ \showtoc[{%
+ \aliastoc{\tocstyleTOC}{toc}%
+ \usetocstyle[toc]{standard}%
+ \selecttocstyleoption{tocfullflat}%
+ }]{toc}%
+\end{ShowOutput}
+Default is option \Option{tocgraduated}.
+%\iffalse
+\EndIndex{Option}{tocgraduated}\EndIndex{Option}{tocflat}%
+\EndIndex{Option}{tocfullflat}%
+%\fi
+%
+%\iffalse
+\begin{Description}
+ \Option{tocbreaksstrict}\\
+ \Option{tocbreakscareless}
+\end{Description}%
+\BeginIndex{Option}{tocbreaksstrict}%
+\BeginIndex{Option}{tocbreakscareless}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{tocbreaksstrict}
+\DescribeMacro{tocbreakscareless}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+Default option \Option{tocbreaksstrict} sets a lot of penalties before and
+after TOC entries to avoid page break between a TOC entry and it's parent. But
+sometimes you may like to allow more page breaks. You may use option
+\Option{tocbreakscareless} for this.
+%\iffalse
+\EndIndex{Option}{tocbreaksstrict}\EndIndex{Option}{tocbreakscareless}%
+%\fi
+%
+%\iffalse
+\begin{Description}
+ \Option{toctextentriesindented}\\
+ \Option{toctextentriesleft}
+\end{Description}%
+\BeginIndex{Option}{toctextentriesindented}%
+\BeginIndex{Option}{toctextentriesleft}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{toctextentriesindented}
+\DescribeMacro{toctextentriesleft}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+With default option \Option{toctextentriesleft} unnumbered TOC entries,
+e.g. from \KOMAScript{} command \Macro{addchap}, are indented only as wide as
+the number of numbered TOC entries of the same level are. But with option
+\Option{toctextentriesindented} these are indented as if they have an empty
+number.
+%\iffalse
+\EndIndex{Option}{toctextentriesindented}%
+\EndIndex{Option}{toctextentriesleft}%
+%\fi
+%
+\section{Using TOC Styles}
+\label{sec:tocstyle.usestyles}
+
+Package \Package{tocstyle} hat several predefined toc styles. Most users will
+never need to define their own toc style but only select one of the
+predefined and maybe configure it by one of the options described at the
+previsous section.
+
+%\iffalse
+\begin{Description}
+ \Macro{usetocstyle}\OParameter{TOC}\Parameter{style}
+\end{Description}%
+\BeginIndex{Macro}{usetocstyle}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\usetocstyle}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+You may set the style of one or all TOCs. If you want to set the style of all
+TOCs, you'd simply say \Macro{usetocstyle}\Parameter{style}. This will set
+all settings of the given style to all TOCs. Individual settings will
+overwrite this generall setting.
+
+If you use \Macro{usetocstyle}\OParameter{TOC}\Parameter{style}, only the
+style of the given TOC will be set. This will be done \emph{after} the general
+setting. Only individual settings of single features may overwrite the setting
+of the style.
+
+The \autoref{tab:tocstyle.styles} shows the predefined styles, that may be
+used as mandatory argument of \Macro{tocstyle}. The optional argument
+\PName{TOC} is the shortcut (file extension) of the TOC. Examples of known
+shortcuts are shown at \autoref{tab:tocstyle.shortcuts}.
+
+\begin{table}
+ \centering
+ \caption{Predefined TOC Styles}
+ \label{tab:tocstyle.styles}
+ \begin{desctabular}
+ \pventry{standard}{A style similar to the standard classes. All width are
+ predefined to the width of the standard classes, but may be overwritten
+ by the general options (see \autoref{sec:tocstyle.options}). The depth -1
+ (part) and 0 (chapter) are set in bold face (\Macro{bfseries}). If no
+ depth 0 was found at the TOC, depth 1 (section) will be set in bold
+ face, too. All other depth will be set in normal font. Depth -1 (part)
+ will be set using \Macro{large}. The font changes are valid for the
+ page numbers, too.}%
+ \pventry{KOMAlike}{A style similar to the \KOMAScript{} classes. This is
+ almost the same like \PValue{standard}, but instead of bold face
+ \Macro{usekomafont}\PParameter{disposition} will be used if
+ \Macro{usekomafont} was defined and sans serif, bold face
+ (\Macro{sffamily}\Macro{bfseries}) if not.}%
+ \pventry{classic}{Like \PValue{KOMAlike} but all page numbers are set
+ using normal font.}%
+ \pventry{allwithdot}{Like \PValue{classic} but dots between entry text and
+ page numbers are used at all depths.}%
+ \pventry{noonewithdot}{Like \PValue{classic} but not dots between entry
+ text and page numbers are used.}%
+ \pventry{nopagecolumn}{Like \PValue{noonewithdot} but also the gap
+ between text and page numbers is omited. This means, that the page
+ numbers are set 1\,em after the text.}%
+ \end{desctabular}
+\end{table}
+
+Note: Before you're setting a style the style of the TOCs are
+unspecified. This means that some entries may be set using \Package{tocstyle}
+others may not.
+
+\begin{table}
+ \centering
+ \caption{Known TOC Shortcuts}
+ \label{tab:tocstyle.shortcuts}
+ \begin{desctabular}
+ \pventry{toc}{Table of contents of almost all known classes.}
+ \pventry{lof}{List of figures of almost all known classes.}
+ \pventry{lot}{List of tables of almost all known classes.}
+ \pventry{lol}{List of listings of package \Package{listings}. Currently
+ the usability of \Package{listings} with \Package{tocstyle} is not
+ recomended. Maybe it works, maybe not. Maybe you should try
+ \Macro{deactivatetocstyle[lol]}.}
+ \end{desctabular}
+\end{table}
+%\iffalse
+\EndIndex{Macro}{usetocstyle}%
+%\fi
+%
+%\iffalse
+\begin{Description}
+ \Macro{deactivatetocstyle}\OParameter{TOC}\\
+ \Macro{reactivatetocstyle}\OParameter{TOC}
+\end{Description}%
+\BeginIndex{Macro}{\deactivatetocstyle}\BeginIndex{Macro}{\reactivatetocstyle}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\deactivatetocstyle}\DescribeMacro{\reactivatetocstyle}
+Both commands have one optional argument \PName{TOC}.
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+You may deactive the influence of \Package{tocstyle} for a TOC and reactivate
+it. If you use \Macro{deactivatetocstyle} without the optional argument or
+empty optional argument, the influence of \Package{tocstyle} for all TOCs will
+be deactivated and may reactivated only using \Macro{reactivatetocstyle}
+without the optional argument or empty optional argument too.
+
+After deactivation of \Package{tocstyle} for one TOC or all TOCs you may
+continue configuring TOCs. All these changes will be used after reactivation.
+%\iffalse
+\EndIndex{Macro}{\deactivatetocstyle}\EndIndex{Macro}{\reactivatetocstyle}%
+%\fi
+
+%
+
+\section{Setting-up Single Features}
+\label{sec:tocstyle.singlefeatures}
+
+At the previous section you've learned how to select a predefined TOC
+style. You were also told, that you may change one ore more features against
+the used predefined TOC style for one or all depth of one ore all TOCs. Now
+you will learn how to do this.
+
+%\iffalse
+\begin{Description}
+ \Macro{settocfeature}%
+ \OParameter{TOC}\OParameter{depth}\Parameter{feature}\Parameter{commands}\\
+ \Macro{settocstylefeature}%
+ \OParameter{depth}\Parameter{feature}\Parameter{commands}
+\end{Description}%
+\BeginIndex{Macro}{settocfeature}\BeginIndex{Macro}{settocstylefeature}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\settocfeature}
+\DescribeMacro{\settocstylefeature}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+These commands are used to set a single feature eiher of all depth of all TOCs
+(\Macro{settocfeature} \Parameter{feature} \Parameter{command} or
+\Macro{settocstylefeature} \Parameter{feature} \Parameter{commands}), or of
+all depth of a single TOC (\Macro{settocfeature}
+\OParameter{TOC} \Parameter{feature} \Parameter{commands}), or of a single
+depth of all TOCs (\Macro{settocstylefeature}
+\OParameter{depth} \Parameter{feature} \Parameter{commands}), or of a single
+depth of a single TOC (\Macro{settocfeature} \OParameter{TOC}
+\OParameter{depth} \Parameter{feature} \Parameter{commands}).
+
+Parameter \PName{commands} is a list of commands. In most cases these must not
+be commands, that need an argument. So you should e.g. not use \Macro{textbf}
+but \Macro{bfseries} to switch to bold face. Parameter \PName{feature} is
+the feature, that may be configured with parameter \PName{commands}. All known
+features are show at \autoref{tab:tocstyle.features}.
+
+\begin{table}
+ \centering
+ \caption{Features that May Be Set}
+ \label{tab:tocstyle.features}
+ \begin{desctabular}
+ \pventry{dothook}{will be executed before any dot of the dot line}%
+ \pventry{entryhook}{hook before the entry will be set}%
+ \pventry{entryvskip}{initial vertical skip amount (if not set 0pt plus
+ .2pt will be used)}%
+ \pventry{leaders}{commands for fillin the gap between entry text and page
+ number (if not set the default leaders command with dots will be used)}%
+ \pventry{pagenumberbox}{the box command for setting the page number (if
+ not set the default box of with \Macro{@pnumwidth} will be used); note,
+ that this has to be a command with exactly one argument}%
+ \pventry{pagenumberhook}{hook before the page number will be set at the
+ page number box}%
+ \pventry{parfillskip}{add this amount to the default value of
+ \Macro{parfillskip} after setting up all lengths}%
+ \pventry{raggedhook}{the only allowed values here are \Macro{raggedright}
+ or nothing}%
+ \pventry{spaceafternumber}{amount of minimum space after the entry number,
+ if the needed width will be calculated automaticly}%
+ \end{desctabular}
+\end{table}
+
+The order of used commands for a feature is
+\begin{enumerate}
+\item commands for all depths of all TOCs,
+\item commands for all depth of a single TOC,
+\item commands for a single depth of all TOCs,
+\item commands for a single depth of a single TOC,
+\end{enumerate}
+and settings of \Macro{usetocstyle} may be overwritten by
+\Macro{settocfeature} und \Macro{settocstylefeature}.
+%\iffalse
+\EndIndex{Macro}{settocfeature}\EndIndex{Macro}{settocstylefeature}%
+%\fi
+%
+
+\section{Defining New TOC Styles}
+\label{sec:tocstyle.define}
+
+Now you know how to select a prefedined TOC style and how to change single
+features. But wouldn't it be nice to define your own TOC style?
+
+%\iffalse
+\begin{Description}
+ \Macro{newtocstyle}\OParameter{parent style}\OParameter{exclude features}%
+ \Parameter{new style}%
+ \Parameter{\Macro{settocstylefeature}-commands}
+\end{Description}%
+\BeginIndex{Macro}{\newtocstyle}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\newtocstyle}
+You may do this using \Macro{newtocstyle}\OParameter{parent
+ style} \OParameter{exclude features} \Parameter{style
+ name} \Parameter{\Macro{settocstylefeature}-commands}.
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+If you used the optional argument \PName{parent style} all features of the
+parent style will be part of the new style, before overwriting them with the
+features of the \PName{\Macro{settocstylefeature}-commands}. You should not
+use any other commands at the last argument. But at \Macro{newtocstyle} the
+command \Macro{settocfeature} becomes an alias for \Macro{settocstylefeature}
+to avoid to much mistakes.
+
+The second optional argument is a comma seperated list of feature names. If it
+is used, these features of the parent style (and all ancestors of the parent)
+will not be part of the new style.
+%\iffalse
+\EndIndex{Macro}{\newtocstyle}%
+%\fi
+
+%\iffalse
+\begin{Description}
+ \Macro{aliastoc}\Parameter{original-TOC}\Parameter{alias-TOC}
+\end{Description}%
+\BeginIndex{Macro}{\aliastoc}%
+You
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\aliastoc}
+Using \Macro{aliastoc}\Parameter{original-TOC}\Parameter{alias-TOC} you
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+may define an alias for a TOC. The first argument is the original TOC for that
+the second argument should be the alias. An alias-TOC will be processed
+with all settings, that were done for the original-TOC. Internally this
+command is used as default for the optional, first argument of
+\Macro{showtoc}.%
+%\iffalse
+\EndIndex{Macro}{\aliastoc}
+%\fi
+
+\section{Processing a TOC}
+\label{sec:tocstyle.processing}
+
+While \LaTeX{} inputs a toc file it processes the commands of the TOC. These
+commands mainly produce the entries of the toc. Some commands are only
+available or valid while a TOC is processed. But be carefull: Some of these
+are read-only commands. Changing such a read-only command may result in
+various errors!
+
+%\iffalse
+\begin{Description}
+ \Macro{@starttoc}\Parameter{TOC}\\
+ \Macro{showtoc}\OParameter{preprocession}\Parameter{TOC}
+\end{Description}%
+\BeginIndex{Macro}{\@starttoc}%
+\BeginIndex{Macro}{\showtoc}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\@starttoc}%
+\DescribeMacro{\showtoc}%
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+The internal comand \Macro{@startoc} is defined by the \LaTeX{} kernel. It is
+used by package and class authors to build commands like
+\Macro{tableofcontents} or \Macro{listoffigures}. Without using it you will
+not get a toc file. \Package{tocstyle} redefines it, to add pre- and
+post-processing commands. The original definition found by \Package{tocstyle}
+will be used inside the redefinition.
+
+\Macro{showtoc}%
+%\iffalse
+%</doc>
+%<*dtx>
+%\fi
+\OParameter{preprocession}\Parameter{TOC}%
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+\ is an addition of \texttt{tocstyle}. Using it will procude a copy of TOC and
+process this copy. The copy will be done just after creating the original
+TOC. The copy will be an alias for the original file. The extension of the
+copy is the generated alias if \PName{TOC}. You may generate the alias using
+\Macro{aliastoc} at the optional argument of \Macro{showtoc}. The default for
+this optional argument will be
+\Macro{aliastoc}\Macro{tocstyleTOC}\Macro{tocstyleAliasTOC} and the default
+alias \Macro{tocstyleAliasTOC} will be \Macro{tocstyleTOC} extended by a
+number.
+%\iffalse
+\begin{example}
+%\fi
+The first TOC example at \autoref{sec:tocstyle.options} was made using
+\begin{lstcode}
+ \showtoc[{%
+ \aliastoc{\tocstyleTOC}{toc}%
+ \usetocstyle[toc]{standard}%
+ \settocfeature[toc]{raggedhook}{\raggedright}%
+ \selecttocstyleoption{tocgraduated}%
+ }]{toc}
+\end{lstcode}
+If you want to show a copy of the table of contents, that shows only depth~1 of
+the headlines you may simply use:
+\begin{lstcode}
+ \showtoc[{%
+ \expandafter\value{tocdepth}=1\relax
+ \aliastoc{\tocstyleTOC}{toc}%
+ }]{toc}
+\end{lstcode}
+or
+\begin{lstcode}
+ \newcounter{savedtocdepth}
+ \setcounter{savedtocdepth}{\value{tocdepth}}
+ \setcounter{tocdepth}{1}
+ \showtoc{toc}
+ \setcounter{tocdepth}{\value{savedtocdepth}}
+\end{lstcode}
+%\iffalse
+\end{example}%
+\EndIndex{Macro}{\showtoc}
+%\fi
+
+%\iffalse
+\begin{Description}
+ \Macro{tocstyleTOC}\\
+ \Macro{tocstyleAliasTOC}
+\end{Description}%
+\BeginIndex{Macro}{\tocstyleTOC}%
+\BeginIndex{Macro}{\tocstyleAliasTOC}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\tocstyleTOC}%
+\DescribeMacro{\tocstyleAliasTOC}%
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+These are read-only macros. While processing a TOC using \Macro{@starttoc} or
+\Macro{showtoc}, \Macro{tocstyleAliasTOC} is the shortcut, that is valid for
+the features and \Macro{tocstyleTOC} is valid for the file extension to be
+used.%
+%\iffalse
+\EndIndex{Macro}{\tocstyleAliasTOC}%
+\EndIndex{Macro}{\tocstyleTOC}
+%\fi
+
+%\iffalse
+\begin{Description}
+ \Macro{tocstyledepth}
+\end{Description}%
+\BeginIndex{Macro}{\tocstyledepth}%
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\tocstyledepth}
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+This is a read-only macro. While processing a single toc entry with
+\Macro{@dottedtocline} this is the depth (first argument of
+\Macro{@dottedtocline}) of this entry. Most users will never need this, but it
+is often used internaly. Because of this \emph{you should never change it!}%
+%\iffalse
+\EndIndex{Macro}{\tocstyledepth}
+%\fi
+
+%\iffalse
+\begin{Description}
+ \Macro{iftochasdepth}\Parameter{TOC}\Parameter{depth}\Parameter{true}%
+ \Parameter{false}
+\end{Description}
+\BeginIndex{Macro}{\iftochasdepth}%
+You
+%</doc>
+%<*dtx>
+%\fi
+\DescribeMacro{\iftochasdepth}
+Using \Macro{iftochasdepth}\Parameter{TOC}\Parameter{depth}\Parameter{true}%
+ \Parameter{false} you
+%\iffalse
+%</dtx>
+%<*doc>
+%\fi
+may test, if an entry of a given depth was already output to a TOC. If so
+the commands of argument \PName{true} will be processed. If not so the
+commands of argument \PName{false} will be processed.%
+%\iffalse
+\EndIndex{Macro}{\iftochasdepth}
+%\fi
+
+\section{Configuration file}
+\label{sec:tocstyle.cfg}
+
+There's another feature for new toc styles. If there's a file
+\File{tocstyle.cfg} it will be loaded at the end of the package. This is
+usefull to define your own toc styles.
+
+%
+%\iffalse
+%</doc>
+%\fi
+%
+% \StopEventually{%
+% \clearpage
+% \appendix
+% \addtocontents{toc}{%
+% \value{tocdepth}=\protect\appendixtocdepth\relax}
+% \section{Examples for the Different TOC Styles}
+% Here you will find the table of contents of this document set in the
+% different TOC styles. All are set with option \Option{tocindentauto}.
+%^^A The appendix will be omitted.
+% \subsection{Graduated Versions}
+% First of all all graduated versions of the table of contents
+% \selecttocstyleoption{tocgraduated}%
+% \subsubsection{\PValue{standard} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{standard}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{KOMAlike} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{KOMAlike}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{classic} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{classic}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{allwithdot} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{allwithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{noonewithdot} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{noonewithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{nopagecolumn} with Option \Option{tocgraduated}}
+% \usetocstyle[toc]{nopagecolumn}
+% \showtoc{toc}\clearpage
+% \subsection{Flat Versions}
+% Now, all flat versions of the table of contents
+% \selecttocstyleoption{tocflat}%
+% \subsubsection{\PValue{standard} with Option \Option{tocflat}}
+% \usetocstyle[toc]{standard}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{KOMAlike} with Option \Option{tocflat}}
+% \usetocstyle[toc]{KOMAlike}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{classic} with Option \Option{tocflat}}
+% \usetocstyle[toc]{classic}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{allwithdot} with Option \Option{tocflat}}
+% \usetocstyle[toc]{allwithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{noonewithdot} with Option
+% \Option{tocflat}}
+% \usetocstyle[toc]{noonewithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{nopagecolumn} with Option
+% \Option{tocflat}}
+% \usetocstyle[toc]{nopagecolumn}
+% \showtoc{toc}\clearpage
+% \subsection{Fullflat Versions}
+% Now, all full-flat versions of the table of contents
+% \selecttocstyleoption{tocfullflat}%
+% \subsubsection{\PValue{standard} with Option \Option{tocfullflat}}
+% \usetocstyle[toc]{standard}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{KOMAlike} with Option \Option{tocfullflat}}
+% \usetocstyle[toc]{KOMAlike}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{classic} with Option \Option{tocfullflat}}
+% \usetocstyle[toc]{classic}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{allwithdot} with Option \Option{tocfullflat}}
+% \usetocstyle[toc]{allwithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{noonewithdot} with Option
+% \Option{tocfullflat}}
+% \usetocstyle[toc]{noonewithdot}
+% \showtoc{toc}\clearpage
+% \subsubsection{\PValue{nopagecolumn} with Option
+% \Option{tocfullflat}}
+% \usetocstyle[toc]{nopagecolumn}
+% \showtoc{toc}\clearpage
+% \PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macrocode}
+\PackageWarningNoLine{tocstyle}{%
+ THIS IS AN ALPHA VERSION!\MessageBreak
+ USAGE OF THIS VERSION IS ON YOUR OWN RISK!\MessageBreak
+ EVERYTHING MAY HAPPEN!\MessageBreak
+ EVERYTHING MAY CHANGE IN FUTURE!\MessageBreak
+ THERE IS NO SUPPORT, IF YOU USE THIS PACKAGE!\MessageBreak
+ Maybe it would be better, not to load this package%
+}
+% \end{macrocode}
+%
+% \subsection{Option}
+%
+% Options change general behaviour of TOCs.
+%
+% \begin{macro}{\selecttocstyleoption}
+% \begin{macrocode}
+\newif\if@tocstyle@penalties
+\newif\iftocstyle@autolength
+\newif\iftocstyle@indentnotnumbered
+\newcount\tocstyle@indentstyle\tocstyle@indentstyle=\z@
+\newcommand*{\selecttocstyleoption}[1]{%
+ \begingroup
+ \edef\@tempa{#1}%
+ \edef\@tempb{tocbreaksstrict}%
+ \ifx\@tempa\@tempb\aftergroup\@tocstyle@penaltiestrue\else
+ \edef\@tempb{tocbreakscareless}%
+ \ifx\@tempa\@tempb\aftergroup\@tocstyle@penaltiesfalse\else
+ \edef\@tempb{tocindentauto}
+ \ifx\@tempa\@tempb\aftergroup\tocstyle@autolengthtrue\else
+ \edef\@tempb{tocindentmanual}%
+ \ifx\@tempa\@tempb\aftergroup\tocstyle@autolengthfalse\else
+ \edef\@tempb{tocgraduated}%
+ \ifx\@tempa\@tempb
+ \aftergroup\tocstyle@indentstyle\aftergroup\z@
+ \else
+ \edef\@tempb{tocflat}%
+ \ifx\@tempa\@tempb
+ \aftergroup\tocstyle@indentstyle\aftergroup\@ne
+ \aftergroup\relax
+ \else
+ \edef\@tempb{tocfullflat}%
+ \ifx\@tempa\@tempb
+ \aftergroup\tocstyle@indentstyle\aftergroup\tw@
+ \aftergroup\relax
+ \else
+ \edef\@tempb{toctextentriesindented}%
+ \ifx\@tempa\@tempb\aftergroup\tocstyle@indentnotnumberedtrue
+ \else
+ \edef\@tempb{toctextentriesleft}%
+ \ifx\@tempa\@tempb
+ \aftergroup\tocstyle@indentnotnumberedfalse
+ \else
+ \PackageError{tocstyle}{unknown option `#1'}{%
+ You've told me to select toc style option
+ `#1',\MessageBreak
+ but tocstyle doesn't know an option named `#1'}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{option}{chapter}
+% \changes{v0.2d}{2009/11/11}{New}
+% \begin{option}{nochapter}
+% \changes{v0.2d}{2009/11/11}{New}
+% \begin{macro}{\iftochaschapter}
+% \changes{v0.2d}{2009/11/11}{New}
+% Do we have \cs{chapter} and \cs{l@chapter}?
+% \begin{macrocode}
+\newif\iftochaschapter\tochaschapterfalse
+\ifcsname l@chapter\endcsname
+ \ifcsname chapter\endcsname
+ \tochaschaptertrue
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{tocbreaksstrict}
+% \begin{option}{tocbreakscareless}
+% Switch on extended pernalties.
+% \begin{macrocode}
+\DeclareOption{tocbreaksstrict}{\selecttocstyleoption\CurrentOption}
+\DeclareOption{tocbreakscareless}{\selecttocstyleoption\CurrentOption}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{tocindentauto}
+% \begin{option}{tocindentmanual}
+% \begin{macrocode}
+\DeclareOption{tocindentauto}{\selecttocstyleoption\CurrentOption}
+\DeclareOption{tocindentmanual}{\selecttocstyleoption\CurrentOption}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{toctextentriesindented}
+% \begin{option}{toctextentriesleft}
+% \begin{macrocode}
+\DeclareOption{toctextentriesindented}{\selecttocstyleoption\CurrentOption}
+\DeclareOption{toctextentriesleft}{\selecttocstyleoption\CurrentOption}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{tocgraduated}
+% \begin{option}{tocflat}
+% \begin{option}{tocfullflat}
+% \begin{macrocode}
+\DeclareOption{tocgraduated}{\selecttocstyleoption\CurrentOption}
+\DeclareOption{tocflat}{\selecttocstyleoption\CurrentOption}
+\DeclareOption{tocfullflat}{\selecttocstyleoption\CurrentOption}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+%
+% Defaults and others:
+% \begin{macrocode}
+\ExecuteOptions{tocbreaksstrict,tocindentauto,tocgraduated,%
+ toctextentriesleft}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifcsname if@tocleft\endcsname
+ \expandafter\let\csname if@tempswa\expandafter\endcsname
+ \csname if@tocleft\endcsname
+\else
+ \@tempswafalse
+\fi
+\if@tempswa
+ \PackageWarningNoLine{tocstyle}{%
+ You should not use class option `toc=flat'!\MessageBreak
+ This may result in errors or unexpected results.\MessageBreak
+ I'll try to deactivate `toc=flat', now.\MessageBreak
+ You may use package options `tocflat' and\MessageBreak
+ `tocindentauto' instead of `toc=flat'}%
+ \csname @tocleftfalse\endcsname
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{Body}
+%
+% There are two parts at \Package{tocstyle}:
+% \begin{itemize}
+% \item redefining internal \LaTeX{} kernel macros,
+% \item defining new macros and redefining class macros.
+% \end{itemize}
+% Redefining \LaTeX{} kernel macros may not be switched of. But redefining
+% class macros will only be on demand.
+%
+% \subsubsection{Redefining \LaTeX{} Kernel Macros}
+%
+% Some \LaTeX{} kernel macros must be redefined to add the new
+% functionality. Before redefining them, we test against the definition at
+% kernel 2005/12/01
+%
+% \begin{macro}{\@starttoc}
+% \begin{macro}{\tocstyle@saved@@starttoc}
+% The original definition will be extended by defaults for \cs{parskip},
+% \cs{parindent} and % \cs{parfillskip} and storage of the shortcut of the
+% current TOC.
+% \begin{macrocode}
+\newcommand*\tocstyle@saved@starttoc{}
+\let\tocstyle@saved@starttoc\@starttoc
+\renewcommand*{\@starttoc}[1]{%
+ \tocstyle@pre@starttoc{#1}%
+ \tocstyle@saved@starttoc{#1}%
+ \tocstyle@post@starttoc{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@saved@dottedtocline}
+% For saving the unchanged definition (at \cs{begin{document}}):
+% \begin{macrocode}
+\newcommand*{\tocstyle@saved@dottedtocline}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tocstyle@dottedtocline}
+% Implement new definition and redefine:
+%^^A ------ Help me to find the \renecommand*{\@dottedtocline} ----------------
+% \begin{macrocode}
+\newcommand*{\tocstyle@dottedtocline}[5]{%
+ \let\numberline\tocstyle@numberline
+ \ifnum #1>\c@tocdepth \else
+% \end{macrocode}
+% Penalty feature: no page break between higher and lower depths.
+% \begin{macrocode}
+ \if@tocstyle@penalties
+ \begingroup
+ \@tempcnta 20010
+ \advance \@tempcnta by -#1
+ \ifnum \@tempcnta>\lastpenalty
+ \aftergroup\penalty\aftergroup\@lowpenalty
+ \fi
+ \endgroup
+ \fi
+% \end{macrocode}
+% Activation of all features for this TOC and depth:
+% \begin{macrocode}
+ \edef\tocstyledepth{#1}%
+ \tocstyle@activate@features
+% \end{macrocode}
+% Similar to kernel command but if feature \texttt{entryvskip} was set use
+% \cs{addvspace}:
+% \begin{macrocode}
+ \ifx\tocstyle@feature@entryvskip\relax
+ \vskip \z@ \@plus.2\p@
+ \else
+ \addvspace{\tocstyle@feature@entryvskip}%
+ \fi
+ {%
+% \end{macrocode}
+% Preinitialization of lengths and skips and then call a hook
+% \begin{macrocode}
+ \parskip \z@ \parindent \z@ \leftskip \z@ \rightskip \z@
+ \tocstyle@feature@raggedhook
+% \end{macrocode}
+% Set number indent to \cs{@tempdimb} and text indent to \cs{@tempdima}.
+% \begin{macrocode}
+ \@tempdima #3\relax
+ \@tempdimb #2\relax
+%<trace> \typeout{number indent by \string\l@... (\tocstyleTOC, \tocstyledepth): \space\the\@tempdimb}%
+%<trace> \typeout{text indent by \string\l@... (\tocstyleTOC, \tocstyledepth): \space\the\@tempdima}%
+% \end{macrocode}
+% \changes{v0.2d}{2009/11/09}{fix: use of max-values}
+% Calc auto lengths. Use max. of last run of parents if available.
+% \begin{macrocode}
+ \ifnum #1>\z@\relax
+ \@tempcnta #1\relax \advance\@tempcnta \m@ne
+ \ifcsname tocstyle@maxskipwidth@\tocstyleTOC @\the\@tempcnta\endcsname
+ \ifcsname tocstyle@maxnumwidth@\tocstyleTOC @\the\@tempcnta\endcsname
+ \@tempdimb
+ \csname tocstyle@maxskipwidth@\tocstyleTOC @\the\@tempcnta\endcsname
+ \advance\@tempdimb
+ \csname tocstyle@maxnumwidth@\tocstyleTOC @\the\@tempcnta\endcsname
+ \fi
+ \fi
+ \fi
+%<trace> \typeout{number indent by parent (\tocstyleTOC, \tocstyledepth): \space\the\@tempdimb}%
+ \ifcsname tocstyle@skipwidth@\tocstyleTOC @#1\endcsname
+ \ifdim \@tempdimb>
+ \csname tocstyle@skipwidth@\tocstyleTOC @#1\endcsname\relax
+ \expandafter\xdef\csname tocstyle@skipwidth@\tocstyleTOC
+ @#1\endcsname{\the\@tempdimb}%
+ \fi
+ \else
+ \expandafter\xdef\csname tocstyle@skipwidth@\tocstyleTOC
+ @#1\endcsname{\the\@tempdimb}%
+ \fi
+ \iftocstyle@autolength
+ \ifcsname tocstyle@maxskipwidth@\tocstyleTOC @#1\endcsname
+ \@tempdimb \csname tocstyle@maxskipwidth@\tocstyleTOC @#1\endcsname
+ \relax
+ \fi
+ \ifcsname tocstyle@maxnumwidth@\tocstyleTOC @#1\endcsname
+ \@tempdima \csname tocstyle@maxnumwidth@\tocstyleTOC @#1\endcsname
+ \relax
+ \fi
+%<trace> \typeout{text indent calculated (\tocstyleTOC, \tocstyledepth): \the\@tempdima}%
+%<trace> \typeout{number indent calculated (\tocstyleTOC, \tocstyledepth): \the\@tempdimb}%
+ \else
+ \@tempdimb #2\relax
+%<trace> \typeout{number indent explicite (\tocstyleTOC, \tocstyledepth): \the\@tempdimb}%
+ \fi
+ \ifcsname tocstyle@unumwidth@\tocstyleTOC @\endcsname
+ \ifdim \@tempdima>
+ \csname tocstyle@unumwidth@\tocstyleTOC @\endcsname\relax
+ \expandafter\xdef\csname tocstyle@unumwidth@\tocstyleTOC
+ @\endcsname{\the\@tempdima}%
+ \fi
+ \else
+ \expandafter\xdef\csname tocstyle@unumwidth@\tocstyleTOC
+ @\endcsname{\the\@tempdima}%
+ \fi
+ \ifcase\tocstyle@indentstyle\relax\else
+ \@tempdimb \z@
+ \ifcsname tocstyle@maxunumwidth@\tocstyleTOC @\endcsname
+ \@tempdima \csname tocstyle@maxunumwidth@\tocstyleTOC @\endcsname
+ \relax
+ \fi
+%<trace> \typeout{text noindent (\tocstyleTOC, \tocstyledepth): \the\@tempdima}%
+%<trace> \typeout{number noindent (\tocstyleTOC, \tocstyledepth): \the\@tempdimb}%
+ \fi
+% \end{macrocode}
+% Advance instead of set, because of the hook above:
+% \begin{macrocode}
+ \advance\parindent \@tempdimb\@afterindenttrue
+ \advance\leftskip \parindent
+ \advance\rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \ifx\tocstyle@feature@parfillskip\relax\else
+ \advance\parfillskip \tocstyle@feature@parfillskip\relax
+ \fi
+ \interlinepenalty\@M
+ \leavevmode
+ \advance\leftskip \@tempdima
+ \null\nobreak
+% \end{macrocode}
+% \cs{hskip}\cs{-leftskip} optional moved to \cs{numberline}
+% \begin{macrocode}
+ \iftocstyle@indentnotnumbered\else
+ \hskip -\leftskip
+ \fi
+% \end{macrocode}
+% Change at start of the entry
+% \begin{macrocode}
+ \tocstyle@feature@entryhook
+% \end{macrocode}
+% Similar to kernel command but if feature \texttt{leaders} was set use
+% this instead of the default leaders. And if feature \texttt{dothook} was set
+% (default is \cs{normalfont}) use this at the default leaders.
+% \begin{macrocode}
+ {#4}\nobreak
+ \ifx\tocstyle@feature@leaders\relax
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{\tocstyle@feature@dothook .}%
+ \mkern \@dotsep mu$}\hfill
+ \else
+ \tocstyle@feature@leaders
+ \fi
+ \nobreak
+ \ifx\tocstyle@feature@pagenumberbox\relax
+ \hb@xt@\@pnumwidth{\hfil\tocstyle@feature@pagenumberhook #5}%
+ \else
+ \tocstyle@feature@pagenumberbox{\tocstyle@feature@pagenumberhook #5}%
+ \fi
+ \par
+ }%
+% \end{macrocode}
+% Last change is, another penalty change:
+% \begin{macrocode}
+ \if@tocstyle@penalties
+ \bgroup
+ \@tempcnta 20009
+ \advance\@tempcnta by -#1
+ \edef\reserved@a{\egroup\penalty\the\@tempcnta\relax}%
+ \reserved@a
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@saved@numberline}
+% \begin{macro}{\tocstyle@numberline}
+% Define a new \cs{numberline}, that will do all the job after
+% \cs{begin{document}} and one to save the original definition.
+%^^A----------------------- \renewcommand*\numberline ------------------------
+% \begin{macrocode}
+\newcommand*{\tocstyle@saved@numberline}{}
+\newcommand*{\tocstyle@numberline}[1]{%
+ \begingroup
+ \ifx\tocstyle@feature@spaceafternumber\relax
+ \settowidth\@tempdima{\tocstyle@@numberline{#1}\enskip}%
+ \else
+ \settowidth\@tempdima{\tocstyle@@numberline{#1}}%
+ \advance \@tempdima \tocstyle@feature@spaceafternumber\relax
+ \fi
+ \ifcsname tocstyle@numwidth@\tocstyleTOC @\tocstyledepth\endcsname
+ \ifdim \@tempdima >
+ \csname tocstyle@numwidth@\tocstyleTOC @\tocstyledepth\endcsname\relax
+ \expandafter\xdef\csname tocstyle@numwidth@\tocstyleTOC
+ @\tocstyledepth\endcsname{\the\@tempdima}%
+ \fi
+ \else
+ \expandafter\xdef\csname tocstyle@numwidth@\tocstyleTOC
+ @\tocstyledepth\endcsname{\the\@tempdima}%
+ \fi
+ \endgroup
+ \iftocstyle@indentnotnumbered
+ \hskip -\leftskip
+ \fi
+ \ifcase \tocstyle@indentstyle
+ \hb@xt@\@tempdima{\tocstyle@@numberline{#1}\hfil}%
+ \or
+ \hb@xt@\@tempdima{\tocstyle@@numberline{#1}\hfil}%
+ \else
+ \ifx\tocstyle@feature@spaceafternumber\relax
+ \hbox{\tocstyle@@numberline{#1}\enskip}%
+ \else
+ \hbox{\tocstyle@@numberline{#1}\hskip
+ \tocstyle@feature@spaceafternumber\relax}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\tocstyle@@numberline}
+% Do the main work!
+% \begin{macrocode}
+\newcommand*{\tocstyle@@numberline}[1]{%
+ #1\csname autodot\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Redefining Class Macros}
+%
+% \begin{macro}{\l@part}
+% \changes{v0.2d}{2009/11/11}{part level is always -1}
+% \begin{macro}{\l@chapter}
+% \begin{macro}{\l@section}
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% \begin{macro}{\l@table}
+% \begin{macro}{\l@figure}
+% Try to redefine the toc commands at startup.
+% \changes{v0.2f}{2016/03/22}{recognize all subs of part, chapter,
+% section and paragraph}^^A
+% \changes{v0.2g}{2016/03/23}{warning for usage of not recommended package
+% combinations}^^A
+% \changes{v0.2h}{2016/04/24}{lokal \cs{normalcolor} auf \cs{relax}
+% setzen}^^A
+% \changes{v0.2h}{2016/04/24}{lokal \cs{color} auf \cs{@gobble} setzen}^^A
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{tocbasic}{%
+ \@ifpackagelater{tocbasic}{2016/03/01}{%
+ \PackageWarningNoLine{tocstyle}{%
+ Usage of `tocstyle' with new `tocbasic' detected.\MessageBreak
+ This is not an error! You can do this.\MessageBreak
+ Nevertheless, you should note, combining `tocstyle'\MessageBreak
+ with this version of `tocbasic' will break several\MessageBreak
+ features of `tocbasic'. You should use `tocstyle'\MessageBreak
+ features instead of `tocbasic' attributes for all\MessageBreak
+ entry changes you want.\MessageBreak
+ You may also get additional warnings because of\MessageBreak
+ redefined `\string\numberline'. Ignore them}%
+ }{}%
+ }{}%
+ \@ifpackageloaded{etoc}{%
+ \PackageWarningNoLine{tocstyle}{%
+ Usage of `tocstyle' with `etoc' detected.\MessageBreak
+ I suggest to use either `tocstyle' or `etoc'\MessageBreak
+ but not both of them together}%
+ }{}%
+ \@ifpackageloaded{titletoc}{%
+ \PackageWarningNoLine{tocstyle}{%
+ Usage of `tocstyle' with `titletoc' detected.\MessageBreak
+ I suggest to use either `tocstyle' or `titletoc'\MessageBreak
+ but not both of them together. I expect even\MessageBreak
+ error messages because of this combination}%
+ }{}%
+ \def\tocstyle@test@level{-1}%
+ \def\tocstyle@test@levelname{part}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+ \ifnum\tocstyle@test@level<\z@
+ \def\tocstyle@test@level{0}%
+ \fi
+ \def\tocstyle@test@levelname{chapter}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+ \ifnum\tocstyle@test@level<\@ne
+ \def\tocstyle@test@level{1}%
+ \fi
+ \def\tocstyle@test@levelname{section}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+ \def\tocstyle@test@levelname{paragraph}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+ \def\tocstyle@test@level{1}%
+ \def\tocstyle@test@levelname{table}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+ \def\tocstyle@test@level{1}%
+ \def\tocstyle@test@levelname{figure}%
+ \@whilesw\ifcsname l@\tocstyle@test@levelname\endcsname\fi{%
+ \setbox\@tempboxa\vbox{\hsize\maxdimen
+ \let\normalcolor\relax
+ \let\color\@gobble
+ \edef\reserved@a{%
+ \expandafter\noexpand\csname l@\tocstyle@test@levelname\endcsname{%
+ \noexpand\tocstyle@l@define{\tocstyle@test@levelname}%
+ {\tocstyle@test@level}%
+ }{}%
+ }%
+ \reserved@a
+ }%
+ \edef\tocstyle@test@levelname{sub\tocstyle@test@levelname}%
+ \edef\tocstyle@test@level{\the\numexpr\tocstyle@test@level+1}%
+ }%
+% \end{macrocode}
+% \begin{macro}{\@dottedtocline}
+% This will be used even for undotted toc lines. First check the definition,
+% then redefine.
+% \begin{macrocode}
+ \def\@tempa#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil \normalfont \normalcolor #5}%
+ \par}%
+ \fi}%
+ \ifx\@dottedtocline\@tempa\else
+ \tocstyle@macrochangewarning\@dottedtocline
+ \fi
+ \let\tocstyle@saved@dottedtocline\@dottedtocline
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\numberline}
+% This macro needed to be redefined to calculate the with of the numbers.
+% First of all: check the definition. This is a bit more difficult, because
+% of respecting \KOMAScript:
+% \begin{macrocode}
+ \def\@tempa#1{\hb@xt@\@tempdima{#1\autodot\hfil}}%
+ \ifx\numberline\@tempa\else
+ \def\@tempa#1{\hb@xt@\@tempdima{#1\hfil}}%
+ \ifx\numberline@tempa\else
+ \tocstyle@macrochangewarning\numberline
+ \fi
+ \fi
+ \let\tocstyle@saved@numberline\numberline
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@macrochangewarning}
+% \begin{macrocode}
+\newcommand*{\tocstyle@macrochangewarning}[1]{%
+ \PackageWarningNoLine{tocstyle}{%
+ unexpected \string#1\space definition!\MessageBreak
+ You are either using an unknown LaTeX kernel\MessageBreak
+ version, an unknown class or package, that redefines\MessageBreak
+ \string#1, or a \string#1\space
+ redefinition\MessageBreak
+ at the document preamble.\MessageBreak
+ Because of this you may get unexpected results!\MessageBreak
+ Maybe it would be better not to use package tocstyle}%
+ \PackageInfo{tocstyle}{Unexpected definition is:\MessageBreak
+ \meaning#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@l@define}
+% \begin{macro}{\tocstyle@activate@all@l}
+% \begin{macrocode}
+\newcommand*{\tocstyle@activate@all@l}{}
+\newcommand*{\tocstyle@l@define}[2]{%
+ \advance\leftskip-\@tempdima
+ \edef\@tempa{%
+ \noexpand\global\noexpand\let
+ \expandafter\noexpand\csname tocstyle@saved@l@#1\endcsname
+ \expandafter\noexpand\csname l@#1\endcsname
+ \noexpand\gdef
+ \expandafter\noexpand\csname tocstyle@l@#1\endcsname{%
+ \noexpand\@dottedtocline{#2}{\the\leftskip}{\the\@tempdima}}%
+ \noexpand\g@addto@macro\noexpand\tocstyle@activate@all@l{%
+ \noexpand\let\expandafter\noexpand\csname l@#1\endcsname
+ \expandafter\noexpand\csname tocstyle@l@#1\endcsname
+ }%
+ }%
+ \PackageInfo{tocstyle}{prepare \expandafter\string
+ \csname l@#1\endcsname\space for redefinition}%
+ \@tempa
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{New Macros}
+%
+% \begin{macro}{\showtoc}
+% \begin{macrocode}
+\newcommand*{\showtoc}[2][\aliastoc\tocstyleTOC\tocstyleAliasTOC]{%
+ \ifcsname tocstyle@copyname@#2\endcsname
+ \@tempcnta \csname tocstyle@copyname@#2\endcsname\relax
+ \advance\@tempcnta \@ne
+ \expandafter\xdef\csname tocstyle@copyname@#2\endcsname{\the\@tempcnta}%
+ \else
+ \expandafter\xdef\csname tocstyle@copyname@#2\endcsname{1}%
+ \fi
+ \ifx\@dofilelist\relax\let\@dofilelist\@empty\fi
+ \edef\@tempa{\noexpand\g@addto@macro\noexpand\@dofilelist{%
+ \noexpand\tocstyle@copy@toc{#2}{\csname
+ tocstyle@copyname@#2\endcsname}}%
+ }\@tempa%
+ \begingroup
+ \edef\tocstyleAliasTOC{#2}%
+ \edef\tocstyleTOC{#2\csname tocstyle@copyname@#2\endcsname}%
+ #1
+ \tocstyle@pre@starttoc{#2\csname tocstyle@copyname@#2\endcsname}%
+ \makeatletter
+ \@input{\jobname.#2\csname tocstyle@copyname@#2\endcsname}%
+ \@nobreakfalse
+ \tocstyle@post@starttoc{#2\csname tocstyle@copyname@#2\endcsname}%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\tocstyle@copy@toc}
+% \begin{macrocode}
+\newcommand*{\tocstyle@copy@toc}[2]{%
+ \if@filesw
+ \begingroup
+ \endlinechar=\m@ne
+% \end{macrocode}
+% While \LaTeX{} does not close the files, we have to do it know.
+% \begin{macrocode}
+ \immediate\closeout\csname tf@#1\endcsname
+ \immediate\openin\@inputcheck \jobname.#1
+ \immediate\openout\@partaux \jobname.#1#2
+ \loop\unless\ifeof\@inputcheck
+ \immediate\readline\@inputcheck to \@tempa
+ \immediate\write\@partaux{\@tempa}%
+ \repeat
+ \immediate\closeout\@partaux
+ \immediate\closein\@inputcheck
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\aliastoc}
+% Internal use not the real TOC shortcut but another one.
+% \begin{macrocode}
+\newcommand*{\aliastoc}[2]{%
+ \expandafter\edef\csname tocstyle@alias@TOC@#1\endcsname{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@pre@starttoc}
+% \begin{macro}{\tocstyle@post@starttoc}
+% Commands before and after the original \cs{@starttoc}.
+% \begin{macrocode}
+\newcommand*{\tocstyle@pre@starttoc}[1]{%
+ \begingroup
+ \expandafter\ifx\csname tocstyle@deactivated@\endcsname\relax
+ \expandafter\ifx\csname tocstyle@deactivated@#1\endcsname\relax\relax
+ \tocstyle@activetrue
+ \else
+ \tocstyle@activefalse
+ \fi
+ \else
+ \tocstyle@activefalse
+ \fi
+ \iftocstyle@active
+ \let\@dottedtocline\tocstyle@dottedtocline
+ \parskip \z@
+ \parindent \z@
+ \parfillskip \z@\@plus 1fil
+ \ifcsname tocstyle@alias@TOC@#1\endcsname
+ \edef\tocstyleAliasTOC{\csname tocstyle@alias@TOC@#1\endcsname}%
+ \else
+ \edef\tocstyleAliasTOC{#1}%
+ \fi
+ \edef\tocstyleTOC{#1}%
+ \tocstyle@activate@all@l
+ \fi
+}
+\newcommand*{\tocstyle@post@starttoc}[1]{%
+ \iftocstyle@active
+ \if@filesw
+ \ifcsname tocstyle@unumwidth@#1@\endcsname
+ \protected@write\@auxout{}{%
+ \protect\tocstyle@set@width{unum}{#1}{}{%
+ \csname tocstyle@unumwidth@#1@\endcsname}%
+ }%
+ \fi
+ \expandafter\let\expandafter\@tempa
+ \csname tocstyle@depthlist@#1\endcsname
+ \ifx\@tempa\relax\else
+ \expandafter\@for \expandafter\@tempa\expandafter:\expandafter=\@tempa
+ \do {%
+ \ifcsname tocstyle@numwidth@#1@\@tempa\endcsname
+ \protected@write\@auxout{}{%
+ \protect\tocstyle@set@width{num}{#1}{\@tempa}{%
+ \csname tocstyle@numwidth@#1@\@tempa\endcsname}%
+ }%
+ \fi
+ \ifcsname tocstyle@skipwidth@#1@\@tempa\endcsname
+ \protected@write\@auxout{}{%
+ \protect\tocstyle@set@width{skip}{#1}{\@tempa}{%
+ \csname tocstyle@skipwidth@#1@\@tempa\endcsname}%
+ }%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@set@width}
+% \changes{v0.2d}{2009/11/11}{improve handling of standard classes}^^A
+% \changes{v0.2h}{2016/03/25}{use after definition in \texttt{aux}-file}^^A
+% Some classes do not use \cs{numberline}. This may result in negativ widths
+% (esp. negativ skips). Following special handling of negativ values improves
+% the toc handling of the standard classes. Nevertheless indentation of not
+% numbered entries does not work with such classes!
+% \begin{macrocode}
+\newcommand*{\tocstyle@set@width}[4]{%
+ \iftocstyle@indentnotnumbered
+ \ifdim #4<\z@
+ \expandafter\gdef\csname tocstyle@max#1width@#2@#3\endcsname{%
+ \dimexpr #4/2\relax}%
+ \else
+ \expandafter\gdef\csname tocstyle@max#1width@#2@#3\endcsname{#4}%
+ \fi
+ \else
+ \ifdim #4<\z@
+ \expandafter\gdef\csname tocstyle@max#1width@#2@#3\endcsname{\z@}%
+ \else
+ \expandafter\gdef\csname tocstyle@max#1width@#2@#3\endcsname{#4}%
+ \fi
+ \fi
+}
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand*\string\tocstyle@set@width[4]{}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocstyleTOC}
+% \begin{macro}{\tocstyleAliasTOC}
+% Shortcut of the current processed TOC. Empty outside of TOCs.
+% \begin{macrocode}
+\newcommand*{\tocstyleTOC}{}
+\newcommand*{\tocstyleAliasTOC}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocstyledepth}
+% Current depth of the current processed TOC entry.
+% \begin{macrocode}
+\newcommand*{\tocstyledepth}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\deactivatetocstyle}%
+% \begin{macro}{\reactivatetocstyle}%
+% You may (de)activate all influence of tocstyle either for one or all TOCs.
+% \begin{macrocode}
+\newif\iftocstyle@active
+\newcommand*{\deactivatetocstyle}[1][]{%
+ \expandafter\let\csname tocstyle@deactivated@#1\endcsname\@empty}
+\newcommand*{\reactivatetocstyle}[1][]{%
+ \expandafter\let\csname tocstyle@deactivated@#1\endcsname\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\settocfeature}
+% \begin{macro}{\@settocfeature}
+% \begin{macro}{\@@@settocfeature}
+% The primary command to set the features of a depth of a TOC.
+% \begin{macrocode}
+\newcommand*{\@settocfeature}[1][]{%
+ \kernel@ifnextchar[ {\@@settocfeature[{#1}]}{\@@settocfeature[{#1}][]}
+}
+\def\@@settocfeature[#1][#2]#3#4{%
+%<trace> \typeout{exclude: \tocstyle@feature@excludelist}%
+ \@expandtwoargs\in@{,#3,}{,\tocstyle@feature@excludelist,}%
+ \ifin@\else
+ \expandafter\ifcsname tocstyle@feature@#3\endcsname
+ \@namedef{tocstyle@feature@#3@#1@#2}{#4}%
+ \begingroup
+ \expandafter\let\expandafter\@tempa
+ \csname tocstyle@commandlist@#1\endcsname
+ \@expandtwoargs\in@{,tocstyle@feature@#3@#1@#2,}{,\@tempa,}%
+ \ifin@\let\@tempa\endgroup\else
+ \edef\@tempa{\endgroup
+ \noexpand\expandafter\noexpand\ifx
+ \noexpand\csname tocstyle@commandlist@#1\noexpand\endcsname\relax
+ \noexpand\expandafter\noexpand\expandafter\noexpand\expandafter
+ \noexpand\def
+ \noexpand\else
+ \noexpand\expandafter\noexpand\expandafter\noexpand\expandafter
+ \noexpand\l@addto@macro
+ \noexpand\fi
+ \noexpand\csname tocstyle@commandlist@#1\noexpand\endcsname%
+ {tocstyle@feature@#3@#1@#2,}}%
+ \fi
+ \@tempa
+ \else
+ \PackageError{tocstyle}{unkown feature `#3'}{%
+ You've told me to set up toc style feature `#3',\MessageBreak
+ but I don't know this feature.\MessageBreak
+ See the tocstyle manual for all known feature.\MessageBreak
+ }%
+ \fi
+ \fi
+}
+\newcommand*{\settocfeature}{}
+\let\settocfeature\@settocfeature
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\l@addto@macro}
+% Something like \cs{g@addto@macro} but only with local effect. While other
+% packages or classes may also define this, \cs{providecommand} will be used.
+% \begin{macrocode}
+\providecommand{\l@addto@macro}[2]{%
+ \edef#1{\unexpanded\expandafter{#1#2}}%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\settocstylefeature}
+% \begin{macro}{\@settocstylefeature}
+% Same as above without TOC argument.
+% \begin{macrocode}
+\newcommand*{\@settocstylefeature}{%
+ \kernel@ifnextchar[ {\@settocfeature[]}{\@settocfeature[][]}%
+}
+\newcommand*{\settocstylefeature}{}
+\let\settocstylefeature\@settocstylefeature
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Different commands will be defined:
+% \begin{macro}{\tocstyle@feature@!<feature!>@@}
+% Global feature (all TOCs all depths).
+% \end{macro}
+% \begin{macro}{\tocstyle@feature@@!<feature!>@!<TOC!>@}
+% All depth feature for one TOC.
+% \end{macro}
+% \begin{macro}{\tocstyle@feature@@!<feature!>@@!<depth!>}
+% All TOCs feature for one depth.
+% \end{macro}
+% \begin{macro}{\tocstyle@feature@@!<feature!>@!<TOC!>@!<depth!>}
+% One depth of one TOC feature.
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@activate@features}
+% Activates the features
+% \begin{macrocode}
+\newcommand*{\tocstyle@activate@features}{%
+ \expandafter\ifx\csname tocstyle@depthlist@\tocstyleTOC\endcsname\relax
+ \expandafter\xdef\csname tocstyle@depthlist@\tocstyleTOC\endcsname{%
+ \tocstyledepth}%
+ \else
+ \expandafter\let\expandafter\@tempa
+ \csname tocstyle@depthlist@\tocstyleTOC\endcsname
+ \@expandtwoargs\in@{,\tocstyledepth,}{,\@tempa,}%
+ \ifin@\else
+ \expandafter\xdef\csname tocstyle@depthlist@\tocstyleTOC\endcsname{%
+ \csname tocstyle@depthlist@\tocstyleTOC\endcsname,\tocstyledepth}%
+ \fi
+ \fi
+ \expandafter\@for \expandafter\@tempa
+ \expandafter:\expandafter=\tocstyle@featurelist \do
+ {%
+ \@ifundefined{tocstyle@feature@\@tempa @\tocstyleAliasTOC @\tocstyledepth}{%
+ \@ifundefined{tocstyle@feature@\@tempa @@\tocstyledepth}{%
+ \@ifundefined{tocstyle@feature@\@tempa @\tocstyleAliasTOC @}{%
+ \@ifundefined{tocstyle@feature@\@tempa @@}{%
+ \expandafter\let\csname tocstyle@feature@\@tempa\endcsname\relax
+ }{%
+ \expandafter\let\csname tocstyle@feature@\@tempa
+ \expandafter\endcsname
+ \csname tocstyle@feature@\@tempa @@\endcsname
+ }%
+ }{%
+ \expandafter\let\csname tocstyle@feature@\@tempa
+ \expandafter\endcsname
+ \csname tocstyle@feature@\@tempa @\tocstyleAliasTOC @\endcsname
+ }%
+ }{%
+ \expandafter\let\csname tocstyle@feature@\@tempa
+ \expandafter\endcsname
+ \csname tocstyle@feature@\@tempa @@\tocstyledepth\endcsname
+ }%
+ }{%
+ \expandafter\let\csname tocstyle@feature@\@tempa
+ \expandafter\endcsname
+ \csname tocstyle@feature@\@tempa @\tocstyleAliasTOC @\tocstyledepth\endcsname
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newtocstyle}
+% Defining a new TOC style. First optional argument is a TOC style, that
+% will be activated before the new definitions. Note that all new
+% definitions will overwirte the parent's definitions. So a new TOC style,
+% that defines all features doesn't need a parent.
+% \begin{macrocode}
+\newcommand*{\newtocstyle}{%
+ \kernel@ifnextchar [{\@newtocstyle}{\@newtocstyle[]}}
+\newcommand*{\@newtocstyle}{}
+\def\@newtocstyle[#1]{%
+ \kernel@ifnextchar [{\@@newtocstyle[{#1}]}{\@newtocstyle[{#1}][]}}
+\newcommand*{\@@newtocstyle}{}
+\def\@@newtocstyle[#1][#2]#3#4{%
+ \@ifundefined{tocstyle@style@#3}{%
+ \@ifundefined{tocstyle@style@#1}{%
+ \ifx \relax#1\relax\else
+ \PackageError{tocstyle}{unknown parent TOC style `#1'}{%
+ You've told me to inheritate parent TOC style `#1',\MessageBreak
+ but there's no TOC style `#1' defined.}%
+ \fi
+ \expandafter\def\csname tocstyle@style@#3\endcsname{#4}%
+ }{%
+ \expandafter\def\csname tocstyle@style@#3\endcsname{%
+ \edef\reserved@a{%
+ \noexpand\l@addto@macro\noexpand\tocstyle@feature@excludelist{#2}%
+ \noexpand\@usetocstyle{#1}%
+ \noexpand\def\noexpand\tocstyle@feature@excludelist{%
+ \tocstyle@feature@excludelist}%
+ }\reserved@a
+ #4%
+ }%
+ }%
+ }{%
+ \PackageError{tocstyle}{TOC style `#3' already defined}{%
+ You've tried to define a new TOC style `#3',\MessageBreak
+ but there's already a TOC style named `#3'.}%
+ }%
+}
+\newcommand*{\tocstyle@feature@excludelist}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usetocstyle}
+% \begin{macro}{\@usetocstyle}
+% \changes{v0.2a}{2008/02/14}{extended for deprecated TOC styles}
+% Use the predefined TOC style. You may define
+% |\tocstyle@deprecated@style@foo| to mark TOC style |foo| to be
+% deprecated. If |\tocstyle@deprecated@style@foo| is |\@empty| TOC style
+% |deprecated@foo| will be used instead almost silently. Otherwise TOC
+% style |\tocstyle@deprecated@style@foo| will be used instead and the user
+% will be told about this change.
+% \begin{macrocode}
+\newcommand*{\usetocstyle}[2][]{%
+ \@ifundefined{tocstyle@deprecated@style@#2}{%
+ \@ifundefined{tocstyle@style@#2}{%
+ \PackageError{tocstyle}{unknown TOC style `#2'}{%
+ You've told me to use TOC style `#2',\MessageBreak
+ but there's no TOC style `#2' defined.}%
+ }{%
+ \def\settocfeature{%
+ \kernel@ifnextchar[ %]
+ {\@@settocfeature[{#1}]}{\@@settocfeature[{#1}][]}%
+ }%
+ \let\settocstylefeature\settocfeature
+% \end{macrocode}
+% Deactivate all known features for this TOC
+% \begin{macrocode}
+ \expandafter\ifx\csname tocstyle@commandlist@#1\endcsname\relax
+ \else
+ \expandafter\expandafter\expandafter\@for
+ \expandafter\expandafter\expandafter\@tempa
+ \expandafter\expandafter\expandafter:%
+ \expandafter\expandafter\expandafter=%
+ \csname tocstyle@commandlist@#1\endcsname
+ \do{%
+ \expandafter\let\csname \@tempa\endcsname\relax
+ }%
+% \end{macrocode}
+% So there are no more known features for this TOC.
+% \begin{macrocode}
+ \expandafter\let\csname tocstyle@commandlist@#1\endcsname\relax
+ \fi
+% \end{macrocode}
+% Activate all known features for this style and TOC
+% \begin{macrocode}
+ \@usetocstyle{#2}%
+ \let\settocfeature\@settocfeature
+ \let\settocstylefeature\@settocstylefeature
+ }%
+ }{%
+ \expandafter\ifx\csname tocstyle@deprecated@style@#2\endcsname\@empty
+ \PackageWarning{tocstyle}{%
+ deprecated TOC style `#2'!\MessageBreak
+ You should not longer use this style,\MessageBreak
+ because it will be removed soon.\MessageBreak
+ You should select another TOC style}%
+ \usetocstyle[{#1}]{deprecated@#2}%
+ \else
+ \PackageWarning{tocstyle}{%
+ deprecated TOC style `#2'!\MessageBreak
+ You should use TOC style '\csname
+ tocstyle@deprecated@style@#2\endcsname'\MessageBreak
+ instead of `#2'}%
+ \fi
+ }%
+}
+\newcommand*{\@usetocstyle}[1]{%
+ \csname tocstyle@style@#1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@featurelist}
+% Comma seperated list of all known features
+% \begin{macrocode}
+\newcommand*{\tocstyle@featurelist}{%
+ pagenumberhook,entryhook,dothook,entryvskip,leaders,raggedhook,%
+ spaceafternumber,parfillskip,pagenumberbox,%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tocstyle@feature@pagenumberhook}
+% \begin{macro}{\tocstyle@feature@pagenumberhook}
+% \begin{macro}{\tocstyle@feature@entryhook}
+% \begin{macro}{\tocstyle@feature@dothook}
+% \begin{macro}{\tocstyle@feature@entryvskip}
+% \begin{macro}{\tocstyle@feature@leaders}
+% \begin{macro}{\tocstyle@feature@parfillskip}
+% \begin{macro}{\tocstyle@feature@raggedhook}
+% \begin{macro}{\tocstyle@feature@spaceafternumber}
+% \begin{macrocode}
+\newcommand*{\tocstyle@feature@pagenumberhook}{}
+\let\tocstyle@feature@pagenumberhook\relax
+\newcommand*{\tocstyle@feature@pagenumberbox}{}
+\let\tocstyle@feature@pagenumberbox\relax
+\newcommand*{\tocstye@feature@entryhook}{}
+\let\tocstyle@feature@entryhook\relax
+\newcommand*{\tocstye@feature@dothook}{}
+\let\tocstyle@feature@dothook\relax
+\newcommand*{\tocstye@feature@entryvskip}{}
+\let\tocstyle@feature@entryvskip\relax
+\newcommand*{\tocstye@feature@leaders}{}
+\let\tocstyle@feature@leaders\relax
+\newcommand*{\tocstye@feature@parfillskip}{}
+\let\tocstyle@feature@parfillskip\relax
+\newcommand*{\tocstye@feature@raggedhook}{}
+\let\tocstyle@feature@raggedhook\relax
+\newcommand*{\tocstye@feature@spaceafternumber}{}
+\let\tocstyle@feature@spaceafternumber\relax
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\iftochasdepth}
+% Uses \Macro{tocstyle@depthlist@}\meta{TOC} to test, if the TOC has the depth
+% already.
+% \begin{macrocode}
+\newcommand*{\iftochasdepth}[2]{%
+ \begingroup
+ \expandafter\let\expandafter\@tempa\csname tocstyle@depthlist@#1\endcsname
+ \ifx\@tempa\relax
+ \aftergroup\@secondoftwo
+ \else
+ \@expandtwoargs\in@{,#2,}{,\@tempa}%
+ \expandafter\aftergroup\ifin@
+ \@firstoftwo
+ \else
+ \@secondoftwo
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Defining Some TOC Styles}
+% \changes{v0.2e}{2013/08/11}{usage of new font elements of \KOMAScript\space
+% at \texttt{KOMAlike}}
+%
+% \begin{macro}{\ext@toc}
+% \changes{v0.2i}{2017/02/23}{use indirect extensions}
+% From version 0.2i the indirect extension for the auxiliary file of the
+% table of contents is used like the KOMA-Script classes do.
+% \begin{macrocode}
+\providecommand*{\ext@toc}{toc}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newtocstyle{standard}{%
+ \settocfeature{dothook}{\normalfont}%
+ \settocfeature[-1]{entryhook}{\bfseries}%
+ \settocfeature[-1]{entryvskip}{2.25em\@plus\p@}%
+ \settocfeature[-1]{leaders}{\hfill}%
+ \settocfeature[0]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[0]{leaders}{\hfill}%
+ \settocfeature[0]{entryhook}{\bfseries}
+ \iftochaschapter\else
+ \settocfeature[1]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[1]{leaders}{\hfill}%
+ \settocfeature[1]{entryhook}{%
+ \ifx\tocstyleAliasTOC\ext@toc\bfseries\fi
+ }%
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname KOMAClassName\endcsname\relax
+ \newtocstyle{KOMAlike}{%
+ \settocfeature{dothook}{\normalfont}%
+ \settocfeature[-1]{entryhook}{\sffamily\bfseries}%
+ \settocfeature[-1]{entryvskip}{2.25em\@plus\p@}%
+ \settocfeature[-1]{leaders}{\hfill}%
+ \settocfeature[-1]{pagenumberhook}{\sffamily\bfseries}%
+ \settocfeature[0]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[0]{leaders}{\hfill}%
+ \settocfeature[0]{entryhook}{\sffamily\bfseries}
+ \settocfeature[0]{pagenumberhook}{\sffamily\bfseries}%
+ \iftochaschapter\else
+ \settocfeature[1]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[1]{leaders}{\hfill}%
+ \settocfeature[1]{entryhook}{%
+ \ifx\tocstyleAliasTOC\ext@toc\sffamily\bfseries\fi
+ }%
+ \settocfeature[1]{pagenumberhook}{%
+ \ifx\tocstyleAliasTOC\ext@toc\sffamily\bfseries\fi
+ }%
+ \fi
+ }
+\else
+ \newtocstyle{KOMAlike}{%
+ \settocfeature{dothook}{\normalfont}%
+ \settocfeature[-1]{entryhook}{\usekomafont{partentry}}%
+ \settocfeature[-1]{entryvskip}{2.25em\@plus\p@}%
+ \settocfeature[-1]{leaders}{\hfill}%
+ \settocfeature[-1]{pagenumberhook}{\usekomafont{partentrypagenumber}}%
+ \settocfeature[0]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[0]{leaders}{\hfill}%
+ \settocfeature[0]{entryhook}{\usekomafont{chapterentry}}%
+ \settocfeature[0]{pagenumberhook}{\usekomafont{chapterentrypagenumber}}%
+ \iftochaschapter\else
+ \settocfeature[1]{entryvskip}{1em\@plus\p@}%
+ \settocfeature[1]{leaders}{\hfill}%
+ \settocfeature[1]{entryhook}{%
+ \begingroup
+ \ifx\tocstyleAliasTOC\ext@toc
+ \def\@tempa{\endgroup\usekomafont{sectionentry}}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+ }%
+ \settocfeature[1]{pagenumberhook}{%
+ \begingroup
+ \ifx\tocstyleAliasTOC\ext@toc
+ \def\@tempa{\endgroup\usekomafont{sectionentrypagenumber}}%
+ \else
+ \let\@tempa\endgroup
+ \fi
+ \@tempa
+ }%
+ \fi
+ }
+\fi
+\newcommand*{\tocstyle@deprecated@style@KOMAScript}{KOMAlike}%
+\newtocstyle[KOMAlike]{classic}{%
+ \settocfeature[-1]{pagenumberhook}{\normalfont\normalcolor}%
+ \settocfeature[0]{pagenumberhook}{\normalfont\normalcolor}%
+ \iftochaschapter\else
+ \settocfeature[1]{pagenumberhook}{\normalfont\normalcolor}%
+ \fi
+ \settocfeature{pagenumberhook}{\normalfont\normalcolor}%
+ \settocfeature{raggedhook}{\raggedright}%
+}
+\newtocstyle[classic][leaders]{allwithdot}{}
+\newtocstyle[allwithdot]{noonewithdot}{%
+ \settocfeature{leaders}{\hfill}%
+}
+\newtocstyle[classic][leaders]{nopagecolumn}{%
+ \settocfeature{leaders}{\quad}%
+ \settocfeature{parfillskip}{\z@ plus 1fil}%
+ \settocfeature{pagenumberbox}{\hbox}%
+}
+% \end{macrocode}
+%
+% \subsubsection{Defining Some TOC Styles}
+%
+% Loading a optional configuration file.
+% \begin{macrocode}
+\InputIfFileExists{tocstyle.cfg}{%
+ \PackageInfo{tocstyle}{using tocstyle.cfg}%
+}{%
+ \PackageInfo{tocstyle}{no tocstyle.cfg found}%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `tocstyle.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: