diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/koma-script/source |
Initial commit
Diffstat (limited to 'macros/latex/contrib/koma-script/source')
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: |