diff options
author | Karl Berry <karl@freefriends.org> | 2015-04-24 23:19:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-04-24 23:19:31 +0000 |
commit | 0a00b3b492fd27dc12cddae602b2c43206a17d74 (patch) | |
tree | 40a09bf2208cc13bcd727626e1ee058e2caa68b1 /Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx | |
parent | 77b150bbd42aa48ba71627e09763785b26adfcfd (diff) |
koma-script (24apr15)
git-svn-id: svn://tug.org/texlive/trunk@37036 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx | 1355 |
1 files changed, 921 insertions, 434 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx index 5a8ba646219..4f0d0ef0aac 100644 --- a/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx +++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-sections.dtx @@ -1,4 +1,4 @@ -% \CheckSum{3337} +% \CheckSum{3673} % \iffalse meta-comment % ====================================================================== % scrkernel-sections.dtx @@ -55,18 +55,22 @@ % Right brace \} Tilde \~} % % \iffalse -%%% From File: $Id: scrkernel-sections.dtx 1919 2015-02-02 10:25:23Z kohm $ +%%% From File: $Id: scrkernel-sections.dtx 2079 2015-04-20 07:12:08Z kohm $ %<*driver> % \fi \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \begingroup \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}} - \filedate$Date: 2015-02-02 11:25:23 +0100 (Mon, 02 Feb 2015) $ + \filedate$Date: 2015-04-20 09:12:08 +0200 (Mon, 20 Apr 2015) $ \def\filerevision$#1: #2 ${\gdef\filerevision{#2}} - \filerevision$Revision: 1919 $ -\endgroup -\ProvidesFile{scrkernel-sections.dtx}[\filedate\space\filerevision\space - KOMA-Script (disposition)] + \filerevision$Revision: 2079 $ + \edef\reserved@a{% + \noexpand\endgroup + \noexpand\ProvidesFile{scrkernel-sections.dtx}% + [\filedate\space\filerevision\space + KOMA-Script (disposition)] + }% +\reserved@a % \iffalse \documentclass[halfparskip-]{scrdoc} \usepackage[english,ngerman]{babel} @@ -123,9 +127,10 @@ % ggf. Vakatseiten. % % \begin{option}{open} -% \changes{v2.98c}{2008/03/06}{Neue Option} +% \changes{v2.98c}{2008/03/06}{Neue Option}^^A % \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit -% \cs{FamilyKeyState}} +% \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. @@ -156,26 +161,37 @@ {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 } +%<book>\KOMA@kav@add{.\KOMAClassFileName}{open}{right} +%<report>\KOMA@kav@add{.\KOMAClassFileName}{open}{any} +%<book>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openright} +%<report>\KOMA@kav@add{.\KOMAClassFileName}{headings}{openany} % \end{macrocode} % \end{option} % \begin{option}{openright} -% \changes{v2.98c}{2008/03/05}{obsolet} -% \changes{v3.01a}{2008/11/21}{standard statt obsolet} +% \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} -% \changes{v3.01a}{2008/11/21}{standard statt obsolet} +% \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} @@ -195,14 +211,15 @@ % gemeinsam. % % \begin{option}{numbers} -% \changes{v2.98c}{2008/03/07}{Neue Option} +% \changes{v2.98c}{2008/03/07}{Neue Option}^^A % \changes{v3.12}{2013/03/05}{Verwendung der Status-Signalisierung mit -% \cs{FamilyKeyState}} +% \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)} +% \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 @@ -239,6 +256,7 @@ {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 @@ -254,26 +272,27 @@ \fi \fi } +\KOMA@kav@add{.\KOMAClassFileName}{numbers}{autoendperiod} %</option> % \end{macrocode} % \end{option} % % \begin{option}{pointednumbers} -% \changes{v2.3h}{1995/01/19}{neue Option} +% \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} -% \changes{v3.01a}{2008/11/20}{deprecated} +% \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} +% \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} -% \changes{v3.01a}{2008/11/20}{deprecated} +% \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} @@ -405,11 +424,11 @@ % \end{macro}^^A \@altsecnumformattrue % \end{macro}^^A \if@altsecnumformat % \begin{macro}{\scr@altsecnumhook} -% \changes{v2.98c}{2008/03/07}{Neu (intern)} +% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A % \begin{macro}{\scr@altsecnumhooktrue} -% \changes{v2.98c}{2008/03/07}{Neu (intern)} +% \changes{v2.98c}{2008/03/07}{Neu (intern)}^^A % \begin{macro}{\scr@altsecnumhookfalse} -% \changes{v2.98c}{2008/03/07}{Neu (intern)} +% \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 @@ -444,7 +463,7 @@ % \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} +% \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. @@ -478,11 +497,11 @@ % % \begin{macro}{\@startsection} % \changes{v3.13a}{2014/09/11}{Vollständige Neudefinition zur Optimierung -% der Erweiterung für das optionale Argument}%^^A +% der Erweiterung für das optionale Argument}^^A % \begin{macro}{\scr@startsection} -% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A +% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \begin{macro}{\scr@saved@startsection} -% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A +% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^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, @@ -567,7 +586,7 @@ % \end{macrocode} % \end{macro}^^A \At@startsection % \begin{macro}{\Before@ssect} -% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren} +% \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. @@ -579,7 +598,7 @@ % \end{macrocode} % \end{macro}^^A \Before@ssect % \begin{macro}{\Before@sect} -% \changes{v3.14}{2014/09/11}{Neue Anweisung für Paketautoren} +% \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. @@ -591,9 +610,9 @@ % \end{macrocode} % \end{macro}^^A \Before@sect % \begin{macro}{\scr@section@dblarg} -% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}%^^A +% \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 +% \changes{v3.13a}{2014/09/11}{Neue interne Anweisung}^^A % \begin{macrocode} \newcommand{\scr@section@dblarg}[1]{% \kernel@ifnextchar[%] @@ -813,7 +832,7 @@ % % % \begin{macro}{\raggedsection} -% \changes{v2.3h}{1996/01/20}{Überschriften werden \cs{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 @@ -829,7 +848,9 @@ % % % \begin{macro}{\DeclareSectionCommand} -% \changes{v3.15}{2014/11/21}{neue Anweisung} +% \changes{v3.15}{2014/11/21}{neue Anweisung}^^A +% \changes{v3.17}{2015/03/23}{Komplettumbau, um stilabhängige Optionen zu +% ermöglichen}^^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 @@ -838,252 +859,588 @@ % \begin{macrocode} \DefineFamily{KOMAarg} \DefineFamilyMember[.dsc]{KOMAarg} -\newcommand*{\DeclareSectionCommand}[2][]{% % \end{macrocode} -% \begin{description}\item[\texttt{style}] Stil der -% Gliederungsebene\end{description} -% \begin{macrocode} - \edef\reserved@a{% - \noexpand\FamilyStringKey[.dsc]{KOMAarg}{style}{% - \expandafter\noexpand\csname scr@#2@style\endcsname - }% - }\reserved@a +% \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]{% + \DeclareSectionCommandDummyOption{#2}% + \expandafter\g@addto@macro\csname scr@dsc@style@#1@options\endcsname{% + \DefineFamilyKey[.dsc]{KOMAarg}{#2}{#3}% + }% +} % \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}% +% \begin{macro}{\DeclareSectionCommandDummyOption} +% \changes{v3.17}{2015/03/23}{neue Anweisung (intern)}^^A +% \begin{macro}{\scr@dsc@dummyoptions} +% \changes{v3.17}{2015/03/23}{Neu (intern)}^^A +% Definiert eine neue Dummy-Option für einen Stil eines +% Gliederungsbefehls. Das einzige Argument ist der Name der Option. Die +% Dummy-Optionen werden in \cs{scr@dsc@dummyoptions} gesammelt. +% \begin{macrocode} +\newcommand*{\DeclareSectionCommandDummyOption}[1]{% + \@ifstar {% + \g@addto@macro{\scr@dsc@dummyoptions}{% + \DefineFamilyKey[.dsc]{KOMAarg}{#1}[]{\FamilyKeyStateProcessed}% + }% }{% - \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% - {\scr@local@levelincrease}% + \g@addto@macro{\scr@dsc@dummyoptions}{% + \DefineFamilyKey[.dsc]{KOMAarg}{#1}{\FamilyKeyStateProcessed}% + }% }% +} +\newcommand*{\scr@dsc@dummyoptions}{} +% \end{macrocode} +% \end{macro}^^A \scr@dsc@dummyoptions +% \end{macro}^^A \DeclareSectionCommandDummyOption +% \end{macro}^^A \DeclareSectionCommandStyleOption +% \begin{macro}{\DeclareSectionCommandStyleLengthOption} +% \changes{v3.17}{2015/03/23}{neue Anweisung}^^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}{% + \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% + \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} -% \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 #2numdepth\endcsname}% - }\reserved@a - }{% - \edef\reserved@a{% - \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{level}{% - \noexpand\FamilySetCounterMacro{KOMAarg}{level}{% - \expandafter\noexpand\csname #2numdepth\endcsname - }% - \unexpanded{% - {\numexpr ##1+\scr@local@leveloffset\relax}% - \edef\scr@local@leveloffset{% - \the\numexpr\scr@local@leveloffset+\scr@local@levelincrease\relax - }% - }% - }% - }\reserved@a +% \end{macro}^^A \DeclareSectionCommandStyleLengthOption +% \begin{macro}{\DeclareSectionCommandStyleNumberOption} +% \changes{v3.17}{2015/03/23}{neue Anweisung}^^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}{% + \FamilySetCounter{KOMAarg}{#2}{\@tempcnta}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \expandafter\edef\csname #3\scr@dsc@current#4 \endcsname{\the\@tempcnta}% + \fi }% +} +% \end{macrocode} +% \end{macro}^^A \DeclareSectionCommandStyleNumberOption +% \begin{macro}{\DeclareSectionCommandStyleFontOption} +% \changes{v3.17}{2015/03/23}{neue Anweisung}^^A +% Definiert eine 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 +% Es folgt die Initialisierung zunächst der Dummys für die Optionen, die es +% immer gibt. (Erklärung dieser Optionen folgt unten.) +% \begin{macrocode} +\DeclareSectionCommandDummyOption{style} +\DeclareSectionCommandDummyOption{expandtopt}* +\DeclareSectionCommandDummyOption{increaselevel} +\DeclareSectionCommandDummyOption{level} +\DeclareSectionCommandDummyOption{toclevel} +\DeclareSectionCommandDummyOption{tocindent} +\DeclareSectionCommandDummyOption{tocnumwidth} +% \end{macrocode} +% \begin{macro}{\scr@dsc@style@section@options} +% 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} - \edef\reserved@a{% - \noexpand\FamilyLengthMacroKey[.dsc]{KOMAarg}{indent}{% - \expandafter\noexpand\csname scr@#2@sectionindent\endcsname}% - }\reserved@a +\DeclareSectionCommandStyleLengthOption{section} + {indent}{scr@}{@sectionindent} % \end{macrocode} % \begin{description}\item[\texttt{beforeskip}] Der Absolutwert gibt den % vertikalen Abstand vor der Überschrift an. Negative Werte bedeuten, dass % der Absatzeinzug nach der Überschrift unterdrückt werden % soll.\end{description} % \begin{macrocode} - \edef\reserved@a{% - \noexpand\FamilyLengthMacroKey[.dsc]{KOMAarg}{beforeskip}{% - \expandafter\noexpand\csname scr@#2@sectionbeforeskip\endcsname}% - }\reserved@a +\DeclareSectionCommandStyleLengthOption{section} + {beforeskip}{scr@}{@beforeskip} % \end{macrocode} % \begin{description}\item[\texttt{afterskip}] Wenn der Wert positiv ist, % dann ist es der verikale Abstand nach der Überschrift. Ein negativer Wert % signalisiert hingegen eine Spitzmarke. Der Absolutwert ist dann der % horizontale Abstand nach der Spitzmarke.\end{description} % \begin{macrocode} - \edef\reserved@a{% - \noexpand\FamilyLengthMacroKey[.dsc]{KOMAarg}{afterskip}{% - \expandafter\noexpand\csname scr@#2@sectionafterskip\endcsname}% - }\reserved@a +\DeclareSectionCommandStyleLengthOption{section} + {afterskip}{scr@}{@afterskip} % \end{macrocode} % \begin{description}\item[\texttt{font}] Schrifteinstellungen für das -% Element.\end{description} +% Element.\end{description} % \begin{macrocode} - \edef\reserved@a{% - \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{font}{% - \noexpand\IfExistskomafont{#2}{% - \noexpand\setkomafont +\DeclareSectionCommandStyleFontOption{section}{font}{}{} +% \end{macrocode} +% \end{macro}^^A \scr@dsc@style@section@options +% +% \begin{macro}{\scr@dsc@style@chapter@options} +% 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{beforeskip}] Der Absolutwert gibt den vertikalen Abstand vor +% der Überschrift an. Negative Werte bedeuten, dass der Absatzeinzug nach +% der Überschrift unterdrückt werden soll. +% \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{font}] Schrifteinstellungen für die Präfixzeile des Elements. +% \end{description} +% \begin{macrocode} +\DeclareSectionCommandStyleFontOption{chapter}{prefixfont}{}{prefix} +%</book|report> +% \end{macrocode} +% \end{macro}^^A \scr@dsc@style@chapter@options +% +% \begin{macro}{\scr@dsc@style@part@options} +% Dann für die Optionen des Stils \texttt{part}: +% \begin{macrocode} +\newcommand*{\scr@dsc@style@part@options}{} +% \end{macrocode} +% \begin{description} +% \item[\texttt{beforeskip}] Der Absolutwert gibt den vertikalen Abstand vor +% der Überschrift an. Negative Werte bedeuten, dass der Absatzeinzug nach +% der Überschrift unterdrückt werden soll. +% \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}{}{number} +% \end{macrocode} +% \end{macro}^^A \scr@dsc@style@part@options +% +% \begin{macro}{\scr@dsc@style@section@neededoptionstest} +% \changes{v3.17}{2015/03/24}{Neu (intern)} +% 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}{% +%<trace> \typeout{TRACE: +%<trace> \string\scr@dsc@style@section@neededoptionstest\space for +%<trace> \scr@dsc@current}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @sectionindent}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{section indent}{indent}% + }{}% + \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@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{}% +} +% \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)} +% 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}{% +%<trace> \typeout{TRACE: +%<trace> \string\scr@dsc@style@chapter@neededoptionstest\space for +%<trace> \scr@dsc@current}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{inner chapter skip} + {innerskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{before chapter skip} + {beforeskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{after chaper skip} + {afterskip}% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{}% + \IfExistskomafont{\scr@dsc@current prefix}{}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{prefix line font} + {prefixfont}% + }{}% +} +%</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)} +% 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} +\newcommand*{\scr@dsc@style@part@neededoptionstest}{% +%<trace> \typeout{TRACE: +%<trace> \string\scr@dsc@style@part@neededoptionstest\space for +%<trace> \scr@dsc@current}% +%<*book|report> + \scr@ifundefinedorrelax{scr@\scr@dsc@current @innerskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{inner part skip} + {innerskip}% + }{}% +%</book|report> + \scr@ifundefinedorrelax{scr@\scr@dsc@current @beforeskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{before part skip} + {beforeskip}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @afterskip}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{after part skip} + {afterskip}% + }{}% + \IfExistskomafont{\scr@dsc@current}{}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{font}{font}% + }{}% + \IfExistskomafont{\scr@dsc@current number}{}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{number font} + {prefixfont}% + }{}% +} +% \end{macrocode} +% \end{macro}^^A \scr@dsc@style@part@neededoptionstest +% +% \begin{macro}{\ifscr@dsc@parametersonly} +% \changes{v3.17}{2015/03/24}{neu} +% Dieser Schalter wird verwendet, um die Einstellungen entsprechend dem +% aktuell gültigen Stil zu ändern, die zugehörige Anweisunge 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} +% Zunächst sind alle für Gliederungsbefehle bekannten Optionen nur +% dummy-Optionen. +% \begin{macrocode} + \scr@dsc@dummyoptions +% \end{macrocode} +% Die einzige Optionen, die wir direkt auswerten, ist der Stil: +% \begin{description}\item[\texttt{style}] Stil der +% Gliederungsebene\end{description} +% \begin{macrocode} + \scr@dsc@parametersonlyfalse + \DefineFamilyKey[.dsc]{KOMAarg}{style}{% + \ifstr{##1}{}{% + \ifscr@dsc@parametersonlytrue + \FamilyKeyStateProcessed + }{% + \scr@ifundefinedorrelax{scr@start##1}{% + \FamilyKeyStateUnknownValue }{% - \noexpand\newkomafont - }{#2}{####1}% - \noexpand\FamilyKeyStateProcessed + \@namedef{scr@\scr@dsc@current @style}{##1}% + \FamilyKeyStateProcessed + }% }% - }\reserved@a + }% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \begingroup + \scr@ifundefinedorrelax{scr@\scr@dsc@current @style}{% + \scr@declaresectioncommanderror{\scr@dsc@current} + {section command style}{style}% + }{}% + \endgroup + \@firstofone{% +% \end{macrocode} +% Nach nun der Stil für den Gliederungsbefehl bekannt ist, können wir dessen +% Optionen aktivieren: +% \begin{macrocode} + \scr@dsc@dummyoptions +%<trace> \typeout{TRACE: style=\@nameuse{scr@\scr@dsc@current @style}}% + \@nameuse{scr@dsc@style@\@nameuse{scr@\scr@dsc@current @style}@options}% % \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 + }% % \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 + \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)\end{description} % \begin{macrocode} - \scr@ifundefinedorrelax{scr@local@tocleveloffset}{% - \edef\reserved@a{% - \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{toclevel}{% - \expandafter\noexpand\csname #2tocdepth\endcsname}% - }\reserved@a - }{% - \edef\reserved@a{% - \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% - \noexpand\FamilySetCounterMacro{KOMAarg}{toclevel}{% - \expandafter\noexpand\csname #2tocdepth\endcsname - }% - \unexpanded{% - {\numexpr ##1+\scr@local@tocleveloffset\relax}% - \edef\scr@local@tocleveloffset{% - \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax + \scr@ifundefinedorrelax{scr@local@tocleveloffset}{% + \edef\reserved@a{% + \noexpand\FamilyCounterMacroKey[.dsc]{KOMAarg}{toclevel}{% + \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname}% + }\reserved@a + }{% + \edef\reserved@a{% + \noexpand\DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{% + \noexpand\FamilySetCounterMacro{KOMAarg}{toclevel}{% + \expandafter\noexpand\csname \scr@dsc@current tocdepth\endcsname + }% + \unexpanded{% + {\numexpr ##1+\scr@local@tocleveloffset\relax}% + \edef\scr@local@tocleveloffset{% + \the\numexpr\scr@local@tocleveloffset + +\scr@local@levelincrease\relax + }% }% }% - }% - }\reserved@a - }% + }\reserved@a + }% % \end{macrocode} % \begin{description}\item[\texttt{tocindent}] Einzug des % Inhaltsverzeichniseintrags\end{description} % \begin{macrocode} - \edef\reserved@a{% - \noexpand\FamilyLengthMacroKey[.dsc]{KOMAarg}{tocindent}{% - \expandafter\noexpand\csname scr@#2@tocindent\endcsname}% - }\reserved@a + \DefineFamilyKey[.dsc]{KOMAarg}{tocindent}{% + \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dsc@expandtopt + \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{% + \the\@tempskipa}% + \else + \expandafter\edef\csname scr@\scr@dsc@current @tocindent\endcsname{ + ##1}% + \fi + \fi + }% % \end{macrocode} % \begin{description}\item[\texttt{tocnumwidth}] Breite der Nummer des % Inhaltsverzeichniseintrags\end{description} % \begin{macrocode} - \edef\reserved@a{% - \noexpand\FamilyLengthMacroKey[.dsc]{KOMAarg}{tocnumwidth}{% - \expandafter\noexpand\csname scr@#2@tocnumwidth\endcsname}% - }\reserved@a + \DefineFamilyKey[.dsc]{KOMAarg}{tocnumwidth}{% + \FamilySetLength{KOMAarg}{#2}{\@tempskipa}{##1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed + \ifscr@dsc@expandtopt + \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% + \the\@tempskipa}% + \else + \expandafter\edef\csname scr@\scr@dsc@current @tocnumwidth\endcsname{% + ##1}% + \fi + \fi + }% % \end{macrocode} % Optionen ausführen: % \begin{macrocode} - \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% + \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% % \end{macrocode} % Testen, ob alle benötigten Optionen für die (Um-)Definierung des % Gliederungsbefehls gesetzt sind: % \begin{macrocode} - \begingroup - \scr@ifundefinedorrelax{#2numdepth}{% - \scr@declaresectioncommanderror{#2}{section level}{level}% - }{}% - \scr@ifundefinedorrelax{scr@#2@sectionindent}{% - \scr@declaresectioncommanderror{#2}{section indent}{indent}% - }{}% - \scr@ifundefinedorrelax{scr@#2@sectionbeforeskip}{% - \scr@declaresectioncommanderror{#2}{before section skip}{beforeskip}% - }{}% - \scr@ifundefinedorrelax{scr@#2@sectionafterskip}{% - \scr@declaresectioncommanderror{#2}{after section skip}{afterskip}% - }{}% - \IfExistskomafont{#2}{}{% - \scr@declaresectioncommanderror{#2}{font}{font}% - }{}% - \scr@ifundefinedorrelax{scr@#2@tocindent}{% - \scr@declaresectioncommanderror{#2}{toc entry indent}{tocindent}% - }{}% - \scr@ifundefinedorrelax{scr@#2@tocnumwidth}{% - \scr@declaresectioncommanderror{#2}{toc entry number - width}{tocnumwidth}% - }{}% - \endgroup + \begingroup + \scr@ifundefinedorrelax{\scr@dsc@current numdepth}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{section level}{level}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocindent}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry indent} + {tocindent}% + }{}% + \scr@ifundefinedorrelax{scr@\scr@dsc@current @tocnumwidth}{% + \scr@declaresectioncommanderror{\scr@dsc@current}{toc entry number + width}{tocnumwidth}% + }{}% + \@nameuse{scr@dsc@style@% + \@nameuse{scr@\scr@dsc@current @style}% + @neededoptionstest}% + \endgroup % \end{macrocode} % Wenn alle Informationen für die (Um-)Definierung des Gliederungsbefehls % zusammen sind \dots % \begin{macrocode} - \@firstofone{% + \@firstofone{% % \end{macrocode} % Zunächst sicherstellen, dass der Zähler existiert und ggf. dessen % Ausgabe anpassen: % \begin{macrocode} - \@ifundefined{c@#2}{\newcounter{#2}}{}% - \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{% - \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% + \@ifundefined{c@#2}{\newcounter{#2}}{}% + \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{% + \csname the\scr@local@counterwithin\endcsname.\arabic{#2}}% + \fi \fi - \fi - \@ifundefined{#2format}{% - \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% - }{}% + \@ifundefined{#2format}{% + \@namedef{#2format}{\csname the#2\endcsname\autodot\enskip}% + }{}% % \end{macrocode} % Dann den eigentlichen Gliederungsbefehl definieren: % \begin{macrocode} - \ifstr{\csname scr@#2@style\endcsname}{}{% - \ClassInfo{\KOMAClassName}{% - not defining `\expandafter\string\csname #2\endcsname' due - to\MessageBreak - empty section style% - }% - }{% - \scr@ifundefinedorrelax{scr@#2@style}{% - \ClassWarning{\KOMAClassName}{using default section style}% - \@namedef{scr@#2@style}{section}% - }{}% - \expandafter\edef\csname #2\endcsname{% - \noexpand\scr@ifundefinedorrelax{% - scr@start\csname scr@#2@style\endcsname}{% - \noexpand\ClassError{\noexpand\KOMAClassName}{% - section style `\csname scr@#2@style\endcsname' not defined}{% - A not yet defined section style `\csname scr@#2@style\endcsname' - has been setup for\MessageBreak - `\expandafter\string\csname #2\endcsname'. You should either setup - another style\MessageBreak - or define the style.\MessageBreak - If you'll continue, style `section' will be used as an emergency - fallback.% + \ifscr@dsc@parametersonly + \ClassInfo{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' due + to\MessageBreak + empty section style option% + }% + \else + \scr@ifundefinedorrelax{scr@start\@nameuse{scr@#2@style}}{% + \ClassWarning{\KOMAClassName}{% + not defining `\expandafter\string\csname #2\endcsname' + due\MessageBreak + to not yet defined section style\MessageBreak + `\@nameuse{scr@#2@style}'% }% -% \end{macro} -% Damit später der \textsf{titlesec}-Workaround funktioniert muss hier -% ggf. der Befehl für den Stil geändert werden. -% \begin{macro} - \noexpand\def\expandafter\noexpand\csname scr@#2@style\endcsname - {section}% - }{}% - \expandafter\noexpand - \csname scr@start\csname scr@#2@style\endcsname\endcsname - {#2}% - \expandafter\noexpand\csname #2numdepth\endcsname - \expandafter\noexpand\csname scr@#2@sectionindent\endcsname - \expandafter\noexpand\csname scr@#2@sectionbeforeskip\endcsname - \expandafter\noexpand\csname scr@#2@sectionafterskip\endcsname{% - \noexpand\ifdim\noexpand\glueexpr - \expandafter\noexpand\csname scr@#2@sectionbeforeskip\endcsname - <\noexpand\z@ - \unexpanded{% - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax - \setlength{\parfillskip}{\z@ plus 1fil}% - \fi + }{% + \expandafter\edef\csname #2\endcsname{% + \expandafter\noexpand + \csname scr@start\csname scr@#2@style\endcsname\endcsname + {#2}% + \expandafter\noexpand\csname #2numdepth\endcsname + \expandafter\noexpand\csname scr@#2@sectionindent\endcsname + \expandafter\noexpand\csname scr@#2@beforeskip\endcsname + \expandafter\noexpand\csname scr@#2@afterskip\endcsname{% + \noexpand\ifdim\noexpand\glueexpr + \expandafter\noexpand\csname scr@#2@beforeskip\endcsname + <\noexpand\z@ + \unexpanded{% + \expandafter\ifnum\scr@v@is@gt{2.96}\relax + \setlength{\parfillskip}{\z@ plus 1fil}% + \fi + }% + \noexpand\fi + \unexpanded{% + \raggedsection\normalfont\sectfont\nobreak\usekomafont{#2}% + }% }% - \noexpand\fi - \unexpanded{% - \raggedsection\normalfont\sectfont\nobreak\usekomafont{#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 @@ -1091,41 +1448,42 @@ % |\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}% - }% + \@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} - \scr@ifundefinedorrelax{#2tocdepth}{% - \expandafter\let\csname #2tocdepth\expandafter\endcsname - \csname #2numdepth\endcsname - }{}% - \expandafter\providecommand\expandafter*% - \csname add#2tocentry\endcsname[2]{% - \addtocentrydefault{#2}{##1}{##2}% - }% - \scr@ifundefinedorrelax{l@#2}{% - \expandafter\edef\csname l@#2\endcsname{% - \noexpand\bprot@dottedtocline - \expandafter\noexpand\csname #2tocdepth\endcsname - \expandafter\noexpand\csname scr@#2@tocindent\endcsname - \expandafter\noexpand\csname scr@#2@tocnumwidth\endcsname + \scr@ifundefinedorrelax{#2tocdepth}{% + \expandafter\let\csname #2tocdepth\expandafter\endcsname + \csname #2numdepth\endcsname + }{}% + \expandafter\providecommand\expandafter*% + \csname add#2tocentry\endcsname[2]{% + \addtocentrydefault{#2}{##1}{##2}% }% - }{}% + \scr@ifundefinedorrelax{l@#2}{% + \expandafter\edef\csname l@#2\endcsname{% + \noexpand\bprot@dottedtocline + \expandafter\noexpand\csname #2tocdepth\endcsname + \expandafter\noexpand\csname scr@#2@tocindent\endcsname + \expandafter\noexpand\csname scr@#2@tocnumwidth\endcsname + }% + }{}% + }% }% } % \end{macrocode} % \begin{macro}{\scr@declaresectioncommanderror} -% \changes{v3.15}{2014/11/21}{neue (interne) Anweisung} +% \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 @@ -1217,7 +1575,7 @@ % \end{macro}^^A \ProvideSectionCommand % % \begin{macro}{\DeclareSectionCommands} -% \changes{v3.15}{2014/12/03}{neue Anweisung} +% \changes{v3.15}{2014/12/03}{neue Anweisung}^^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 @@ -1243,7 +1601,7 @@ % \end{macro}^^A \DeclareSectionCommands % % \begin{macro}{\DeclareNewSectionCommands} -% \changes{v3.15}{2014/12/03}{neue Anweisung} +% \changes{v3.15}{2014/12/03}{neue Anweisung}^^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 @@ -1284,7 +1642,7 @@ % \end{macro}^^A \DeclareNewSectionCommands % % \begin{macro}{\RedeclareSectionCommands} -% \changes{v3.15}{2014/12/03}{neue Anweisung} +% \changes{v3.15}{2014/12/03}{neue Anweisung}^^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 @@ -1323,7 +1681,9 @@ % \end{macro}^^A \RedeclareSectionCommands % % \begin{macro}{\ProvideSectionCommands} -% \changes{v3.15}{2014/12/03}{neue Anweisung} +% \changes{v3.15}{2014/12/03}{neue Anweisung}^^A +% \changes{v3.17}{2015/03/23}{Umbau, um stilabhängige Optionen zu +% ermöglichen}^^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. @@ -1346,7 +1706,7 @@ % \texttt{increaselevel} eine Wirkung haben dürfen. Der Rest wird per % dummy-Optionen erledigt. % \begin{macrocode} - \DefineFamilyKey[.dsc]{KOMAarg}{style}{}% + \scr@dsc@dummyoptions \FamilyCounterMacroKey[.dsc]{KOMAarg}{increaselevel}[1]% {\scr@local@levelincrease}% \DefineFamilyKey[.dsc]{KOMAarg}{level}{% @@ -1358,14 +1718,6 @@ \the\numexpr\scr@local@tocleveloffset+\scr@local@levelincrease\relax }% }% - \DefineFamilyKey[.dsc]{KOMAarg}{indent}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{beforeskip}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{afterskip}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{font}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{counterwidthin}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{toclevel}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{tocindent}{}% - \DefineFamilyKey[.dsc]{KOMAarg}{tocnumwidth}{}% \FamilyExecuteOptions[.dsc]{KOMAarg}{#1}% }% }% @@ -1386,8 +1738,8 @@ % 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 +% \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 @@ -1404,9 +1756,9 @@ }% } % \end{macrocode} -% \end{macro} -% \begin{macro}{\set@preamble} -% \changes{v2.8p}{2001/09/25}{neu (intern)}^^A +% \end{macro} +% \begin{macro}{\set@preamble} +% \changes{v2.8p}{2001/09/25}{neu (intern)}^^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 @@ -1415,15 +1767,15 @@ % 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 -% \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 +% \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 +% \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} @@ -1602,8 +1954,8 @@ % 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)} +% \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. @@ -1611,7 +1963,7 @@ %<*class> %<*body> \newcommand*{\bprot@dottedtocline}[5]{% - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax + \expandafter\ifnum\scr@v@is@gt{2.96}\relax \ifnum #1>\c@tocdepth \else \begingroup \@tempcnta 20010 @@ -1634,7 +1986,7 @@ %</body> %</class> % \end{macrocode} -% \end{macro} +% \end{macro} % % % \subsection{Grobeinteilung von Büchern} @@ -1711,7 +2063,7 @@ % % Teile gibt es tatsächlich bei allen drei Hauptklassen. % -% \begin{macro}{\appendix} +% \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 @@ -1723,9 +2075,9 @@ % 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} +% \changes{v2.95}{2006/07/04}{Ausführung von \cs{appendixmore}^^A % vereinfacht}^^A -% \begin{macro}{\appendixmore} +% \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. @@ -1749,8 +2101,8 @@ %</body> %</class> % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} % % % \subsection{Teile} @@ -1782,7 +2134,7 @@ % % % \begin{macro}{\partnumdepth} -% \changes{v3.12}{2013/12/16}{new read only command} +% \changes{v3.12}{2013/12/16}{new read only command}^^A % Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die % Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit % der Verzeichnisebene der Gliederungsanweisungen). Dass sich die Ebene für @@ -1835,7 +2187,7 @@ % \changes{v3.10}{2011/08/30}{Wenn \cs{partmark} \cs{@gobble} ist, wird % stattdessen \cs{@mkboth}{}{} aufgerufen.}^^A % \begin{macro}{\@spart} -% \changes{v2.4n}{1997/05/28}{in der Sternvariante \cs{chaptermark} +% \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 @@ -1867,15 +2219,15 @@ % \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@sectionbeforeskip}}^^A +% \cs{scr@part@beforeskip}}^^A % \begin{macro}{\partheadmidvskip} -% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit} +% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A % \begin{macro}{\partheadendvskip} -% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit} +% \changes{v2.95a}{2006/07/10}{neue Konfiguratonsmöglichkeit}^^A % \changes{v3.15}{2014/11/24}{\textsf{scrartcl} definiert und verwendet -% \cs{scr@part@sectionafterskip}}^^A +% \cs{scr@part@afterskip}}^^A % \begin{macro}{\parheademptypage} -% \changes{v3.02}{2009/01/01}{neue Konfigurationsmöglichkeit} +% \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. @@ -1883,16 +2235,30 @@ % müssen diese Hilfsmakros nicht bereits vor den Optionen definiert werden. % \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} -\newcommand*{\scr@part@sectionbeforeskip}{% +\newcommand*{\scr@part@beforeskip}{% %<article> 4ex % \end{macrocode} % Hinweis: Das |+\baselineskip| wird benötigt, um Kompatibilitätsprobleme mit @@ -1904,11 +2270,12 @@ %<article> \addvspace{\@tempskipa}% %<report|book> \null\vskip-\baselineskip\vskip\@tempskipa } +%<book|report>\newcommand*{\scr@part@innerskip}{20\p@} \newcommand*{\partheadmidvskip}{% \par\nobreak -%<book|report> \vskip 20\p@ +%<book|report> \vskip\@tempskipa } -\newcommand*{\scr@part@sectionafterskip}{% +\newcommand*{\scr@part@afterskip}{% %<article> 3ex %<report|book> \z@ \@plus 1fil } @@ -1916,8 +2283,7 @@ %<article> \vskip\@tempskipa %<report|book> \vskip\@tempskipa\newpage } -\newcommand*{\scr@part@sectionindent}{\z@} -\newcommand*{\scr@part@style}{} +\newcommand*{\scr@part@style}{part} %<*report|book> \newcommand*{\partheademptypage}{% \if@twoside\if@openright @@ -1939,7 +2305,7 @@ % \begin{macrocode} %<*article> \newcommand\part{\par - \@tempskipa=\glueexpr\scr@part@sectionbeforeskip\relax + \@tempskipa=\glueexpr\scr@part@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadstartvskip% \@afterindentfalse @@ -1955,7 +2321,7 @@ \else \@tempswafalse \fi - \@tempskipa=\glueexpr\scr@part@sectionbeforeskip\relax + \@tempskipa=\glueexpr\scr@part@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadstartvskip \vbox to\z@{\vss\use@preamble{part@o}\strut\par}% @@ -2001,6 +2367,7 @@ \normalfont\sectfont\nobreak \ifnumbered{part}{% \size@partnumber{\partformat}% +%<book|report> \setlength{\@tempskipa}{\scr@part@innerskip}% \partheadmidvskip }{}% \size@part{#2}\strut @@ -2012,7 +2379,7 @@ \endgroup %<*article> \nobreak - \@tempskipa=\glueexpr\scr@part@sectionafterskip\relax + \@tempskipa=\glueexpr\scr@part@afterskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadendvskip \@afterheading @@ -2029,7 +2396,7 @@ \endgroup %<*article> \nobreak - \@tempskipa=\glueexpr\scr@part@sectionafterskip\relax + \@tempskipa=\glueexpr\scr@part@afterskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadendvskip \@afterheading @@ -2038,7 +2405,7 @@ } %<*book|report> \newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}% - \@tempskipa=\glueexpr\scr@part@sectionafterskip\relax + \@tempskipa=\glueexpr\scr@part@afterskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadendvskip \partheademptypage @@ -2074,12 +2441,12 @@ \let\part@o@preamble\relax %</book|report> % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\addparttocentry} -% \changes{v3.08}{2010/11/01}{Neu} +% \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 @@ -2114,6 +2481,8 @@ % 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 % \begin{macro}{\@saddpart} % \changes{v2.8c}{2001/06/29}{neu (intern)}^^A % \begin{macrocode} @@ -2132,7 +2501,7 @@ \else \@tempswafalse \fi - \@tempskipa=\glueexpr\scr@part@sectionbeforeskip\relax + \@tempskipa=\glueexpr\scr@part@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \partheadstartvskip \vbox to\z@{\vss\use@preamble{part@o}\strut\par}% @@ -2171,15 +2540,15 @@ \scr@ds@tocentry}% \fi \@spart{#2}% - \ifx\partmark\@gobble - \@mkboth{}{}% - \else - \expandafter\@mkboth\expandafter{% - \expandafter\MakeMarkcase\expandafter{\scr@ds@head}}{}% - \fi + \expandafter\addpartmark\expandafter{\scr@ds@head}% } +% \end{macrocode} +% Da bereits \cs{@spart} den Kolumnentitel mit \cs{@mkboth} löscht, brauchen +% wir hier im Gegensatz zu \cs{@saddchap} das nicht auch noch zu erledigen. +% \begin{macrocode} \newcommand*{\@saddpart}{\@spart} % \end{macrocode} +% % \begin{macro}{\partmark} % \changes{v2.9r}{2004/07/20}{neu (für \textsf{scrpage2})}^^A % \begin{macrocode} @@ -2187,6 +2556,25 @@ \let\partmark\@gobble % \end{macrocode} % \end{macro}^^A \partmark + +% \begin{macro}{\addpartmark} +% \changes{v3.17}{2015/04/20}{neue Anweisung}^^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=-2 + \partmark{#1}% + \endgroup +} +% \end{macrocode} +% \end{macro}^^A \addpartmark +% % \end{macro}^^A \@saddpart % \end{macro}^^A \@addpart % \end{macro}^^A \addpart @@ -2267,7 +2655,7 @@ % stattfinden kann. Ab Version~2.96a gilt das nur noch, wenn die nachfolgende % Überschrift wiederum eine \cs{part}-Überschrift ist. % \begin{macrocode} - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax + \expandafter\ifnum\scr@v@is@gt{2.96}\relax \endgroup \penalty20010 \else @@ -2296,7 +2684,7 @@ % \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} +% \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 @@ -2317,7 +2705,7 @@ % \begin{macrocode} \newcommand*\partname{Part} % \end{macrocode} -% \end{macro}^^A \partname +% \end{macro}^^A \partname % % % \begin{macro}{\raggedpart} @@ -2397,8 +2785,24 @@ %<*class> %<*book|report> %<*option> -\KOMA@ifkey{chapterprefix}{@chapterprefix} +\newif\if@chapterprefix +\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} @@ -2410,6 +2814,7 @@ % \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 @@ -2424,13 +2829,18 @@ \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}% }{% @@ -2460,22 +2870,24 @@ \newcommand*{\size@chapterprefix}{\size@chapter} %</prepare> % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} % % % \begin{macro}{\chapterheadstartvskip} -% \changes{v3.15}{2014/11/24}{\cs{scr@chapter@sectionbeforeskip} wird +% \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@sectionafterskip} wird +% \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} +% \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 @@ -2490,12 +2902,28 @@ % zunächst einige Hilfsanweisung definiert und verwendet. Das bedeutet jedoch % nicht, dass \cs{chapter} mit \cs{DeclareSectionCommand} den Stil von normalen % Gliederungsbefehlen erhalten kann! -% \begin{macro}{\scr@chapter@sectionbeforeskip} +% \begin{macro}{\scr@chapter@beforeskip} % \changes{v3.15}{2014/11/24}{neue (interne) Anweisung}^^A -% \begin{macro}{\scr@chapter@sectionafterskip} +% \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} @@ -2503,32 +2931,31 @@ % jedoch Einstellungen einiger Werte darüber erfolgen. % \begin{macrocode} %<*prepare> -\newcommand*{\scr@chapter@sectionbeforeskip}{\z@} -\let\scr@chapter@sectionbeforeskip\z@ -\newcommand*{\scr@chapter@sectionafterskip}{\z@} -\let\scr@chapter@sectionafterskip\z@ -\newcommand*{\scr@chapter@sectionindent}{\z@} +\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@sectionindent\z@ -\newcommand*{\scr@chapter@style}{} +\newcommand*{\scr@chapter@style}{chapter} % \end{macrocode} % \end{macro}^^A \scr@chapter@style % \end{macro}^^A \scr@chapter@sectionindent -% \end{macro}^^A \scr@chapter@sectionbeforeskip -% \end{macro}^^A \scr@chapter@sectionafterskip +% \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.5\baselineskip} +\newcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa} %</prepare> % \end{macrocode} % \end{macro}^^A \chapterheadmidvskip % \end{macro}^^A \chapterheadendvskip % \end{macro}^^A \chapterheadstartvskip % -% % \begin{macro}{\chapternumdepth} -% \changes{v3.12}{2013/12/16}{new read only command} -% Darf nur gelesen, sollten aber nie umdefiniert werden und geben die +% \changes{v3.12}{2013/12/16}{new read only command}^^A +% Darf nur gelesen, sollten aber nie umdefiniert werden und gibt die % Nummerierungsebene der Gliederungsanweisungen an (nicht zu verwechseln mit % der Verzeichnisebene der Gliederungsanweisungen): % \begin{macrocode} @@ -2613,17 +3040,17 @@ \newcommand*{\use@chapter@o@preamble}{% {% \settoheight{\@tempdima}{% - \@tempskipa=\glueexpr \scr@chapter@sectionbeforeskip\relax + \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \vbox{\chapterheadstartvskip}% }% \settodepth{\@tempdimb}{% - \@tempskipa=\glueexpr \scr@chapter@sectionbeforeskip\relax + \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \vbox{\chapterheadstartvskip}% }% \addtolength{\@tempdima}{\@tempdimb}% - \setbox0\vbox{% + \setbox\z@\vbox{% \use@preamble{chapter@o}% }% \setlength{\@tempdimb}{\ht0}% @@ -2632,7 +3059,7 @@ \vskip-\baselineskip \vbox to \@tempdima{% \vfill - \box0 + \box\z@ }% \vss }\vskip-\parskip\vskip-\baselineskip @@ -2711,7 +3138,7 @@ % \end{macrocode} % \changes{v3.15}{2014/11/20}{Resetliste des Kapitelzählers ausführen}^^A % \begin{macrocode} - \ifnum\scr@compatibility<\@nameuse{scr@v@3.15}\relax\else + \expandafter\ifnum\scr@v@is@lt{3.15}\relax\else \begingroup \let\@elt\@stpelt \csname cl@chapter\endcsname @@ -2762,14 +3189,16 @@ % \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*{\@@makechapterhead}[1]{% - \@tempskipa=\glueexpr \scr@chapter@sectionbeforeskip\relax + \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \chapterheadstartvskip {% \setlength{\parindent}{\z@}\setlength{\parfillskip}{\fill}% - \normalfont\sectfont\nobreak\nobreak\usekomafont{chapter}{}% + \normalfont\sectfont\nobreak\nobreak\usefontofkomafont{chapter}% %<book> \if@mainmatter \def\IfUseNumber{\ifnumbered{chapter}}% %<book> \else\let\IfUseNumber\@secondoftwo\fi @@ -2786,7 +3215,9 @@ \usekomafont{chapter}{% \IfUsePrefixLine{% {\usekomafont{chapterprefix}{% - \chapterformat\chapterheadmidvskip + \chapterformat + \setlength{\@tempskipa}{\scr@chapter@innerskip}% + \chapterheadmidvskip }}% }{% \chapterformat @@ -2801,7 +3232,7 @@ }% }% \nobreak\par\nobreak - \@tempskipa=\glueexpr \scr@chapter@sectionafterskip\relax + \@tempskipa=\glueexpr \scr@chapter@afterskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \chapterheadendvskip } @@ -2826,9 +3257,9 @@ \newcommand*{\chapter@o@preamble}{} \let\chapter@o@preamble\relax % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % \begin{macro}{\addchaptertocentry} % \changes{v3.08}{2010/11/01}{Neu}^^A % \changes{v3.12}{2013/09/24}{Behandlung von \cs{if@chaptertolists} hier}^^A @@ -2862,7 +3293,7 @@ % \begin{macro}{\@@makeschapterhead} % \changes{v2.8p}{2001/09/25}{neu (intern)}^^A % \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt}^^A -% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead} +% \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 @@ -2881,7 +3312,7 @@ \fi } \newcommand*{\@@makeschapterhead}[1]{% - \@tempskipa=\glueexpr \scr@chapter@sectionbeforeskip\relax + \@tempskipa=\glueexpr \scr@chapter@beforeskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \chapterheadstartvskip {% @@ -2890,7 +3321,7 @@ \raggedchapter \interlinepenalty \@M \usekomafont{chapter}{#1}\par }% \nobreak\par\nobreak - \@tempskipa=\glueexpr \scr@chapter@sectionafterskip\relax + \@tempskipa=\glueexpr \scr@chapter@afterskip\relax \ifdim\@tempskipa<\z@\@tempskipa-\@tempskipa\fi \chapterheadendvskip% } @@ -2914,7 +3345,7 @@ % \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} +% \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 @@ -2974,6 +3405,8 @@ % 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 % \begin{macro}{\@saddchap} % \changes{v3.12}{2013/02/26}{Verwendung von \cs{addchapmark}}^^A % \begin{macrocode} @@ -3021,7 +3454,7 @@ }% \fi \fi - \addchapmark{\scr@ds@head}% + \expandafter\addchapmark\expandafter{\scr@ds@head}% }% \newcommand*{\@saddchap}[1]{\@schapter{#1}\addchapmark{}}% % \end{macrocode} @@ -3033,10 +3466,10 @@ % 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} -% \changes{v2.7f}{2001/04/17}{fehlendes Klammerpaar ergänzt} -% \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur Überprüfung der +% \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> @@ -3100,7 +3533,7 @@ % \end{macrocode} % \end{macro} % \begin{option}{chapterentrydots} -% \changes{v3.15}{2014/12/10}{Neu} +% \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} @@ -3117,7 +3550,7 @@ \ifnum \lastpenalty<20010 \addpenalty{-\@highpenalty}% \fi - \ifnum \scr@compatibility<\@nameuse{scr@v@3.15}% + \expandafter\ifnum\scr@v@is@lt{3.15}% \vskip 1.0em \@plus\p@ \else \addvspace{1.0em \@plus\p@}% @@ -3139,7 +3572,7 @@ \usekomafont{chapterentry}{#1\nobreak \usekomafont{chapterentrypagenumber}{% % \end{macrocode} -% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag} +% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A % \begin{macrocode} {\usekomafont{chapterentrydots}{% \if@chapterentrywithdots @@ -3149,7 +3582,7 @@ \fi \hfill}}\nobreak \hb@xt@\@pnumwidth{\hss#2}}}\par - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax + \expandafter\ifnum\scr@v@is@gt{2.96}\relax \endgroup \penalty20009 \else @@ -3182,13 +3615,14 @@ % \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} +% \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 @@ -3207,7 +3641,8 @@ \newcounter{chapter} \renewcommand*{\thechapter}{\@arabic\c@chapter} \newcommand*{\chapterformat}{% - \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot\enskip}% + \mbox{\chapappifchapterprefix{\nobreakspace}\thechapter\autodot + \IfUsePrefixLine{}{\enskip}}% } \newcommand*\chaptermarkformat{\chapappifchapterprefix{\ }% \thechapter\autodot\enskip} @@ -3226,12 +3661,12 @@ % \end{macro}^^A \chaptername % % -% \begin{macro}{\appendixname} +% \begin{macro}{\appendixname} % Der Name des Anhangs. % \begin{macrocode} \newcommand*\appendixname{Appendix} % \end{macrocode} -% \end{macro}^^A \appendixname +% \end{macro}^^A \appendixname % % % \begin{macro}{\chapappifprefix} @@ -3269,7 +3704,7 @@ } \newcommand*{\chapapp}{\@chapapp} % \end{macrocode} -% \begin{macro}{\@chapapp} +% \begin{macro}{\@chapapp} % Dieses Makro enthält den Kapitelname (\cs{chaptername}), der sich im % Anhang üblicherweise ändert (\cs{appendixname}). % \begin{macrocode} @@ -3289,10 +3724,10 @@ % \begin{macrocode} \newcommand*\chaptermark[1]{} % \end{macrocode} -% \end{macro} +% \end{macro} % % \begin{macro}{\addchapmark} -% \changes{v3.12}{2013/03/26}{neue Anweisung} +% \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} @@ -3313,7 +3748,7 @@ % % % \begin{macro}{\raggedchapter} -% \changes{v3.15}{2014/12/09}{neu} +% \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. @@ -3427,7 +3862,7 @@ % der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier % stattdessen um eine normale Ebene. % \begin{option}{chapterentrydots} -% \changes{v3.15}{2014/12/10}{Neu} +% \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} @@ -3462,7 +3897,7 @@ \usekomafont{sectionentry}{#1\nobreak \usekomafont{sectionentrypagenumber}{% % \end{macrocode} -% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag} +% \changes{v3.15}{2014/10/12}{optionale Pünktchen im Eintrag}^^A % \begin{macrocode} {\usekomafont{sectionentrydots}{% \if@sectionentrywithdots @@ -3473,14 +3908,14 @@ \hfill}}\nobreak \hb@xt@\@pnumwidth{\hss#2}}}\par \endgroup - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax + \expandafter\ifnum\scr@v@is@gt{2.96}\relax \penalty20008 \fi \fi } % \end{macrocode} % \begin{macro}{\raggedsectionentry} -% \changes{v2.97c}{2007/06/21}{neue Anweisung} +% \changes{v2.97c}{2007/06/21}{neue Anweisung}^^A % Ausrichtung des Textes der Abschnittseinträge im Inhaltsverzeichnis. % \begin{macrocode} \newcommand*{\raggedsectionentry}{} @@ -3513,6 +3948,8 @@ % \changes{v3.12}{2013/02/26}{Verwendung von \cs{addsecmark}}^^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 @@ -3544,7 +3981,7 @@ \ifx\scr@ds@tocentry\@empty\else \addsectiontocentry{}{\scr@ds@tocentry}% \fi - \addsecmark{\scr@ds@head}% + \expandafter\addsecmark\expandafter{\scr@ds@head}% } \newcommand*{\@saddsec}[1]{\section*{#1}\addsecmark{}} % \end{macrocode} @@ -3560,7 +3997,7 @@ % 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} +% \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 @@ -3572,7 +4009,7 @@ % \begin{macrocode} \newkomafont{minisec}{} \newcommand\minisec[1]{% - \ifnum \scr@compatibility<\@nameuse{scr@v@3.13a}\relax + \expandafter\ifnum\scr@v@is@lt{3.13a}\relax \@afterindentfalse \vskip 1.5ex \else \if@noskipsec \leavevmode \fi @@ -3585,7 +4022,7 @@ \fi \fi {\parindent \z@ - \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax + \expandafter\ifnum\scr@v@is@gt{2.96}\relax \setlength{\parfillskip}{\z@ plus 1fil}\fi \raggedsection\normalfont\sectfont\nobreak \usekomafont{minisec}#1\par\nobreak}\nobreak% @@ -3639,20 +4076,20 @@ % % \begin{Counter}{section} % \begin{macro}{\thesection} -% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil} +% \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} -% \changes{v2.3c}{1995/08/06}{Duden Regel 6} +% 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} -% \changes{v2.3c}{1995/08/06}{Duden Regel 6} +% erhöht}^^A +% \changes{v2.3c}{1995/08/06}{Duden Regel 6}^^A % \begin{Counter}{subsubsection} % \begin{macro}{\thesubsubsection} % \begin{Counter}{paragraph} @@ -3703,14 +4140,18 @@ } % \end{macrocode} % \begin{macro}{\@seccntformat} -% \changes{v2.3c}{1995/08/06}{CJK erweitert} -% \changes{v2.9p}{2004/01/07}{\cs{protect} eingefügt} -% \changes{v2.97}{2007/01/24}{Workaround für das blöde \cs{protect}} +% \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} -% \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt} -% \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt} -% \changes{v2.97}{2007/01/24}{statt einem Argument jetzt drei} +% \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 @@ -3732,8 +4173,15 @@ % \begin{macrocode} \newcommand*{\othersectionlevelsformat}[3]{#3\autodot\enskip} \renewcommand*{\@seccntformat}[1]{% - \protect\othersectionlevelsformat{#1}{% - \expandafter\aftergroup\noexpand\@gobble}{\csname the#1\endcsname}% + \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 @@ -3789,7 +4237,7 @@ % \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} +% \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. @@ -3980,7 +4428,7 @@ %<article> tocnumwidth=5em% %<book|report> tocnumwidth=6em% ]{subparagraph} -\ifnum \scr@compatibility<\@nameuse{scr@v@3.15}\relax +\expandafter\ifnum\scr@v@is@lt{3.15}\relax \let\scr@subparagraph@sectionindent\parindent \else \def\scr@subparagraph@sectionindent{\scr@parindent}% @@ -4055,8 +4503,9 @@ % \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@sectionbeforeskip} und -% \cs{scr@chapter@sectionafterskip} werden verwendet}^^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 % 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} @@ -4090,7 +4539,12 @@ {standardclasses}{13}% }{#1}% \ifx\FamilyKeyState\FamilyKeyStateProcessed - \ifcase \@tempa\relax + \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 @@ -4105,16 +4559,17 @@ % |beforeskip=0pt| an den oberen Rand zu bekommen. % \begin{macrocode} %<*book|report> - \renewcommand*{\scr@chapter@sectionbeforeskip}{3.3\baselineskip+\parskip}% - \renewcommand*{\scr@chapter@sectionafterskip}{% + \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}{% - \ifnum \scr@compatibility<\@nameuse{scr@v@3.15}\vspace\@tempskipa + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% - \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip.5\baselineskip}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% %</book|report> \renewcommand*{\size@part}{\Huge}% \renewcommand*{\size@partnumber}{\huge}% @@ -4125,18 +4580,24 @@ \renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% - \or + \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@sectionbeforeskip}{3\baselineskip+\parskip}% - \renewcommand*{\scr@chapter@sectionafterskip}{% + \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}{% - \ifnum \scr@compatibility<\@nameuse{scr@v@3.15}\vspace\@tempskipa + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% - \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip.5\baselineskip}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% %</book|report> \renewcommand*{\size@part}{\huge}% \renewcommand*{\size@partnumber}{\huge}% @@ -4153,18 +4614,24 @@ \renewcommand*{\size@subsubsection}{\normalsize}% \renewcommand*{\size@paragraph}{\normalsize}% \renewcommand*{\size@subparagraph}{\normalsize}% - \or + \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@sectionbeforeskip}{2.8\baselineskip+\parskip}% - \renewcommand*{\scr@chapter@sectionafterskip}{% + \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}{% - \ifnum \scr@compatibility<\@nameuse{scr@v@3.15}\vspace\@tempskipa + \expandafter\ifnum\scr@v@is@lt{3.15}\vspace\@tempskipa \else\vskip\@tempskipa\fi }% - \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip.5\baselineskip}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% %</book|report> \renewcommand*{\size@part}{\LARGE}% \renewcommand*{\size@partnumber}{\LARGE}% @@ -4185,15 +4652,15 @@ % Möglichkeit, auch hierüber die Optionen \texttt{open=any}, % \texttt{open=right} und \texttt{open=left} zu setzen. % \begin{macrocode} - \or + \or % openany %<*book|report> \KOMAoptions{open=any}% %</book|report> - \or + \or % openright %<*book|report> \KOMAoptions{open=right}% %</book|report> - \or + \or % openleft %<*book|report> \KOMAoptions{open=left}% %</book|report> @@ -4202,19 +4669,19 @@ % Möglichkeit, auch hierüber die Optionen \texttt{chapterprefix} und % \texttt{appendixprefix} zu setzen. % \begin{macrocode} - \or + \or % twolinechapter %<*book|report> \KOMAoptions{chapterprefix=true}% %</book|report> - \or + \or % onelinechapter %<*book|report> \KOMAoptions{chapterprefix=false}% %</book|report> - \or + \or % twolineappendix %<*book|report> \KOMAoptions{appendixprefix=true}% %</book|report> - \or + \or % onelineappend %<*book|report> \KOMAoptions{appendixprefix=false}% %</book|report> @@ -4222,23 +4689,41 @@ % 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 + \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 + \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 + \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 + \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@sectionbeforeskip}{50\p@}% - \renewcommand*{\scr@chapter@sectionafterskip}{40\p@}% + \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 20\p@}% + \renewcommand*{\chapterheadmidvskip}{\par\nobreak\vskip\@tempskipa}% \renewcommand*{\size@part}{\Huge}% \renewcommand*{\size@partnumber}{\huge}% \renewcommand*{\size@chapter}{\Huge}% @@ -4258,36 +4743,38 @@ \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} +% \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} -% \changes{v2.98c}{2008/03/10}{obsolet} -% \changes{v3.01a}{2008/11/20}{deprecated} +% 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} +% \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{option}{normalheadings} -% \changes{v2.3h}{1996/01/20}{neue Option} +% \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} -% \changes{v2.98c}{2008/03/10}{obsolet} -% \changes{v3.01a}{2008/11/20}{deprecated} +% 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} +% \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{option}{smallheadings} -% \changes{v2.3h}{1996/01/20}{neue Option} +% \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} -% \changes{v2.98c}{2008/03/10}{obsolet} -% \changes{v3.01a}{2008/11/20}{deprecated} +% 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} +% \changes{v2.98c}{2008/03/10}{entfernt}^^A % \begin{macrocode} \KOMA@DeclareDeprecatedOption{bigheadings}{headings=big} \KOMA@DeclareDeprecatedOption{normalheadings}{headings=normal} @@ -4295,12 +4782,12 @@ %</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 +% \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 |