% \CheckSum{611} % \iffalse meta-comment % ====================================================================== % scrkernel-miscellaneous.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-miscellaneous.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-miscellaneous.dtx 2605 2017-02-23 19:27:27Z 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: 2017-02-23 20:27:27 +0100 (Thu, 23 Feb 2017) $ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}} \filerevision$Revision: 2605 $ \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} % % \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} % % \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 % 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 % \begin{macro}{\do@renewforletter@list} % \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A % Die do-Liste der später umzudefinierenden Anweisungen. % \begin{macro}{\do@renewforletter} % \changes{v3.20}{2014/04/10}{neu Anweisung (intern)}^^A % Definiert die in der do-Liste gespeicherten Anweisungen um. % \begin{macrocode} \newcommand*{\scr@renewforletter}{% \kernel@ifstar {\@renewforletter*}% {\@renewforletter{}}% } \newcommand*{\@renewforletter}[2]{% \g@addto@macro\do@renewforletter@list{\do#2}% \edef\reserved@a{% \noexpand\newcommand\noexpand#1\expandafter\noexpand \csname scrletter@extra@\string#2\endcsname }% \expandafter\reserved@a } \newcommand*{\do@renewforletter@list}{} \newcommand*{\do@renewforletter}{% \begingroup \def\do##1{% \aftergroup\let\aftergroup##1 \expandafter\aftergroup\csname scrletter@extra@\string##1\endcsname }% \do@renewforletter@list \endgroup \let\do@renewforletter@list\@empty } % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \iffalse % %<*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 % \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{.% % \KOMAClassFileName % scrextend.\scr@pkgextension }{draft}{@tempswa}% \setlength{\overfullrule}{5pt}% \else \KOMA@kav@replacebool{.% % \KOMAClassFileName % scrextend.\scr@pkgextension }{draft}{@tempswa}% \setlength{\overfullrule}{\z@}% \fi \fi } %\KOMA@kav@add{.\KOMAClassFileName}{draft}{false} %<*package&extend> \KOMA@kav@xadd{.scrextend.\scr@pkgextension}{draft}{% \ifdim\overfullrule>\z@ true\else false\fi } % \KOMA@DeclareStandardOption %[scrextend] {final}{draft=false} % % \end{macrocode} % \end{option} % \end{option} % % % \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}} % % \end{macrocode} % \end{option} % \end{option} % % \iffalse % % \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 } % % \end{macrocode} % \end{macro}^^A \@gr@gsffamily % \end{option}^^A egregdoesnotlikesansseriftitles % % \iffalse % %<*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,% % headings=big% } % \KOMAProcessOptions\relax % \end{macrocode} % % % \iffalse % %<*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> \scr@ifundefinedorrelax{if@restonecol}{% \expandafter\newif\csname if@restonecol\endcsname \@restonecolfalse }{} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \iffalse % % \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 % % \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@} % % \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> %\@addtoreset{equation}{chapter} \renewcommand*\theequation{% %<*book> \expandafter\ifnum\scr@v@is@gt{2.97d}\relax \if@mainmatter\thechapter.\fi \else % % \thechapter.% % \fi \@arabic\c@equation } % % \end{macrocode} % \end{macro} % % \iffalse % % \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 % \ClassWarning{\KOMAClassName}{% % \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 } % % \end{macrocode} % \end{macro} % % % \subsection{Definitionen für tiefer gestellten Text} % % \begin{macro}{\textsubscript} % \changes{v2.8h}{2001/07/19}{neu}% % \begin{macro}{\@textsubscript} % \changes{v2.8h}{2001/07/19}{neu (intern)}% % \changes{v3.10}{2011/09/05}{\cs{providecommand} statt \cs{newcommand}, % damit das auch noch funktioniert, wenn \textsf{scrextend} nach % \textsf{fixltx2e} geladen wird}% % 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> \DeclareRobustCommand*\textsubscript[1]{% \@textsubscript{\selectfont#1}% } \providecommand*{\@textsubscript}[1]{% {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}% } % % \end{macrocode} % \end{macro} % \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{macrocode} %<*class> \newcommand*{\scr@package@not@recommended}[2]{% \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} % \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{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} % \textsf{fancyhdr} verwendet veraltete Font-Befehle und beachtet die % Font-Einstellungen und diverse andere Befehle und Optionen von \KOMAScript{} % nicht. % \begin{macrocode} \scr@package@not@recommended{fancyhdr}{% \MessageBreak package `scrlayer-scrpage'} % \end{macrocode} % \textsf{titlesec} beschädigt diverse \KOMAScript{} Erweiterungen und % benötigt eigene Workarounds (siehe Abschnitt~\ref{sec:packageworarounds}), % so dass es einfach nicht gut mit \KOMAScript{} harmoniert. % \begin{macrocode} \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} % \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} % \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}. % \begin{macrocode} \scr@package@not@recommended{minitoc}{} % % \end{macrocode} % \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 } % % % \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 }% } % % % \end{macrocode} % % % \iffalse % % \fi % % \Finale % \endinput % % end of file `scrkernel-miscellaneous.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: