diff options
author | Karl Berry <karl@freefriends.org> | 2016-07-30 23:12:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-07-30 23:12:46 +0000 |
commit | 6b200dd5c2335baa8c78037d8f1c75d1295187f4 (patch) | |
tree | 45201aff662870ef1d337d24f7ce584320a633bf /Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx | |
parent | 4e2bc5d88938c53a614ca1efafe6680e25d24c76 (diff) |
tudscr (26jul16)
git-svn-id: svn://tug.org/texlive/trunk@41776 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx | 2120 |
1 files changed, 2120 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx b/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx new file mode 100644 index 00000000000..ecf888c4e2e --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/tudscr-area.dtx @@ -0,0 +1,2120 @@ +% \CheckSum{2198} +% \iffalse meta-comment +% +% ============================================================================ +% +% TUD-KOMA-Script +% Copyright (c) Falk Hanisch <tudscr@gmail.com>, 2012-2016 +% +% ============================================================================ +% +% 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 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 Falk Hanisch. +% +% ---------------------------------------------------------------------------- +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz +% in der Version 1.3c, verteilt und/oder veraendert werden. Die aktuelle +% Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und +% Version 1.3c oder spaeter ist Teil aller Verteilungen von LaTeX 2005/12/01 +% oder spaeter und dieses Werks. Dieses Werk hat den LPPL-Verwaltungs-Status +% "author-maintained", wird somit allein durch den Autor verwaltet. Der +% aktuelle Verwalter und Autor dieses Werkes ist Falk Hanisch. +% +% ============================================================================ +% +% \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: tudscr-area.dtx +%<*driver> +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi +\ProvidesFile{tudscr-area.dtx}[% + 2016/07/26 v2.05 TUD-KOMA-Script (type or page area)% +] +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\documentclass[english,ngerman,xindy]{tudscrdoc} +\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{tudscrfonts} % only load this package, if the fonts are installed +\KOMAoptions{parskip=half-} +\usepackage{microtype} +\usepackage{bookmark} +\CodelineIndex +\RecordChanges +\GetFileInfo{tudscr-area.dtx} +\begin{document} + \maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \selectlanguage{ngerman} +% +% \changes{v2.02}{2014/06/23}{Paket \pkg{titlepage} nicht weiter unterstützt}^^A +% \changes{v2.02}{2014/07/08}{\cs{FamilyKeyState} wird von Optionen genutzt}^^A +% \changes{v2.05}{2015/07/06}{Seitenstil für Poster}^^A +% +% \section{Der Satzspiegel für \TUDScript} +% +% Das \CD verlangt (eigentlich) einen fest vorgegebenen Satzspiegel. Für das +% Setzen längerer wissenschaftlicher Abhandlungen ist dieser jedoch alles +% andere als glücklich gewählt. Insbesondere für den doppelseitigen Satz ist +% das Standardlayout nicht gut nutzbar. Für die \TUDScript-Klassen wird +% deshalb die Abweichung vom sonst fest vorgegebenen Satzspiegel ermöglicht. +% \ToDo{Abhängigkeiten zwischen Satzspiegel und Seitenstilen beseitigen}[v2.07] +% \ToDo{DIV=calc vordefinieren?}[v2.07] +% +% \StopEventually{\PrintIndex\PrintChanges\PrintToDos} +% +% \subsection{Definition der konstanten Größen und Maße} +% +% Die Vorlagen sollen neben den vom \CD vorgegebenen Seitenrändern weitere +% Layouts ermöglichen und u.\,a. auch die Nutzung des Paketes \pkg{typearea} +% erlauben. Damit ein einheitliches Verfahren zur Wahl bzw. Umschaltung des +% Satzspiegels genutzt werden kann, wird das Paket \pkg{geometry} genutzt. +% Dabei werden entweder die gewünschten Maße der Seitenränder direkt gewählt +% oder aber die mit \pkg{typearea} berechneten Maße an \pkg{geometry} +% durchgereicht. +% +% \iffalse +%<*class&body> +% \fi +% +% \begin{length}{\tud@len@widemargin} +% \begin{length}{\tud@len@slimmargin} +% \begin{length}{\tud@len@both} +% Die Seitenränder für links und rechts sowie deren Summe, welche später für +% weitere Satzspiegeleinstelungen dazu verwendet wird, diese anteilig zu +% verteilen. +% \begin{macrocode} +\newlength\tud@len@widemargin +\newlength\tud@len@slimmargin +\newlength\tud@len@both +% \end{macrocode} +% \end{length}^^A \tud@len@both +% \end{length}^^A \tud@len@slimmargin +% \end{length}^^A \tud@len@widemargin +% \begin{length}{\tud@len@topmargin} +% \begin{length}{\tud@len@barheight} +% \begin{length}{\tud@len@headsep} +% \begin{length}{\tud@len@footsep} +% Es folgen die speziellen Maße für die Seiten mit dem TUD-Kopf, also die Höhe +% oberhalb des Querbalkens, die Höhe des Querbalkens selbst sowie der vertikale +% (Mindest"~)Abstand zwischen Querbalken und Textkörper sowie der Fußzeile. +% \begin{macrocode} +\newlength\tud@len@topmargin +\newlength\tud@len@barheight +\newlength\tud@len@headsep +\newlength\tud@len@footsep +% \end{macrocode} +% \end{length}^^A \tud@len@footsep +% \end{length}^^A \tud@len@headsep +% \end{length}^^A \tud@len@barheight +% \end{length}^^A \tud@len@topmargin +% \begin{length}{\tud@len@logox} +% \begin{length}{\tud@len@logoy} +% \begin{length}{\tud@len@logowidth} +% Außerdem müssen noch die Abmessungen und die Position des TUD-Logos definiert +% werden, nämlich der horizontale (Soll"~)Abstand zwischen linkem Seitenrand +% und Logo, der vertikale (Soll"~)Abstand zwischen oberem Seitenrand und Logo +% sowie die Breite und Höhe\footnote{Proportionen sind durch die Grafik +% vorgegeben} des Logos. +% \begin{macrocode} +\newlength\tud@len@logox +\newlength\tud@len@logoy +\newlength\tud@len@logowidth +% \end{macrocode} +% \end{length}^^A \tud@len@logowidth +% \end{length}^^A \tud@len@logoy +% \end{length}^^A \tud@len@logox +% \begin{length}{\tud@len@line} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{length}{\tud@len@heavyline} +% \begin{length}{\tud@len@thinline} +% Die Linienstärke der Outline im Kopf ist für ein monochromes Layout schmaler +% als im Layout mit farbigem Hintergrund.\footnote{% +% monochrom \cs{tud@len@thinline}, koloriert \cs{tud@len@heavyline}}% +% Da im Dokument beide Varianten vorkommen können, wird die Breite +% \cs{tud@len@line} durch den Seitenstil situativ entweder auf den Wert von +% \cs{tud@len@thinline} oder aber \cs{tud@len@heavyline} gesetzt. +% \begin{macrocode} +\newlength\tud@len@line +\newlength\tud@len@heavyline +\newlength\tud@len@thinline +% \end{macrocode} +% \end{length}^^A \tud@len@thinline +% \end{length}^^A \tud@len@heavyline +% \end{length}^^A \tud@len@line +% \begin{length}{\tud@len@areaheadvskip} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \begin{length}{\tud@len@areadiff} +% \begin{length}{\tud@len@areavskip} +% Die Längen für den vertikalen Standardversatz der Überschriften sowie die +% Differenz der Kopfhöhen von normalem und TUD-Kopf-Satzspiegel. Die Differenz +% zwischen den unterschiedlichen Kopfhöhen der Satzspiegelvarianten wird durch +% \cs{tud@cdgeometry@@process} berechnet und dabei in \cs{tud@len@areadiff} +% gespeichert. Dabei muss unterschieden werden, ober der Satzspiegel des \CDs +% oder der durch \pkg{typearea} berechnete respektive durch den Anwender mit +% \pkg{geometry} vorgegebene genutzt wird. Davon abhängig wird zum Ausgleich +% die Länge \cs{tud@len@areavskip} definiert. +% \begin{macrocode} +\newlength\tud@len@areaheadvskip +\newlength\tud@len@areadiff +\newlength\tud@len@areavskip +% \end{macrocode} +% \end{length}^^A \tud@len@areavskip +% \end{length}^^A \tud@len@areadiff +% \end{length}^^A \tud@len@areaheadvskip +% \begin{length}{\tud@len@ddcdiff} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Zu guter Letzt noch die Länge \cs{tud@len@ddcdiff} für den Höhenausgleich des +% Seitenfußes, welcher bei der Verwendung des \DDC-Logos in der Fußzeile bei +% Version~v2.02 für den Satzspiegel notwendig war. Dieser etwas verschrobene +% Satzspiegel wird im Kompatibilitätsmodus weiterhin angeboten. +% \begin{macrocode} +\tud@if@v@lower{2.03}{\newlength\tud@len@ddcdiff}{} +% \end{macrocode} +% \end{length}^^A \tud@len@ddcdiff +% \begin{macro}{\tud@cdgeometry@set} +% \changes{v2.03}{2015/01/23}{Längenberechnung für den Satzspiegel an +% Referenzlänge \cs{tud@len@widemargin} gekoppelt}^^A +% \changes{v2.05}{2015/07/15}{Fallunterscheidung an DIN-B-Reihe angepasst}^^A +% \changes{v2.05}{2016/04/03}{Option \opt{layout} von \pkg{geometry} möglich}^^A +% \begin{macro}{\if@tud@cdgeometry@adjust} +% \changes{v2.05}{2015/11/29}{neu}^^A +% \begin{length}{\tud@len@layoutheight} +% \changes{v2.05}{2016/04/03}{neu}^^A +% \begin{length}{\tud@len@layoutwidth} +% \changes{v2.05}{2016/04/03}{neu}^^A +% \begin{length}{\tud@len@layouthoffset} +% \changes{v2.05}{2016/04/03}{neu}^^A +% \begin{length}{\tud@len@layoutvoffset} +% \changes{v2.05}{2016/04/03}{neu}^^A +% Hiermit werden in Abhängigkeit der gewählten Papiergröße die Maße für die +% Größe der Kopfzeile, die Position des Logos, die Seitenränder sowie die +% Schriftgröße in der Kopfzeile definiert. Aufgerufen wird der Befehl durch +% \cs{tud@cdgeometry@@process}. Dabei fungiert \cs{tud@len@widemargin} als +% Bezugslänge. Die maßgebliche Papiergröße ist DIN~A4 bzw. DIN~B4. Die Längen +% für alle anderen Papiermaße unterscheiden sich um den Faktor~$\sqrt{2}$, +% wobei das Format DIN~A5 nach den Vorgaben des \CDs übersprungen wird. +% +% Um die Überschriften und den Satzspiegel auch in diesem Fall vertikal richtig +% zu positionieren, wird der Schalter \cs{if@tud@cdgeometry@adjust} benötigt. +% Mit dem Wert \val{adapted} für \opt{cdgeometry} wird auch das Format DIN~A5 +% mit den skalierten Seitenrändern erstellt. +% \begin{macrocode} +\newif\if@tud@cdgeometry@adjust +\newlength\tud@len@layoutheight +\newlength\tud@len@layoutwidth +\newlength\tud@len@layouthoffset +\newlength\tud@len@layoutvoffset +\newcommand*\tud@cdgeometry@set{% + \ifGm@layout% + \setlength\tud@len@layoutheight{\Gm@layoutheight}% + \setlength\tud@len@layoutwidth{\Gm@layoutwidth}% + \else% + \setlength\tud@len@layoutheight{\paperheight}% + \setlength\tud@len@layoutwidth{\paperwidth}% + \fi% + \setlength\tud@len@layouthoffset{\Gm@layouthoffset}% + \setlength\tud@len@layoutvoffset{\Gm@layoutvoffset}% + \tud@if@v@lower{2.05}{% + \ifdim\tud@len@layoutheight<\dimexpr105mm+1.5mm\relax% + \def\@tempa{0}% + \else\ifdim\tud@len@layoutheight<\dimexpr148mm+1.5mm\relax% + \def\@tempa{1}% + \else\ifdim\tud@len@layoutheight<\dimexpr229mm+2mm\relax% + \def\@tempa{2}% + \else\ifdim\tud@len@layoutheight<\dimexpr297mm+2mm\relax% + \def\@tempa{3}% + \else\ifdim\tud@len@layoutheight<\dimexpr420mm+2mm\relax% + \def\@tempa{4}% + \else\ifdim\tud@len@layoutheight<\dimexpr594mm+2mm\relax% + \def\@tempa{5}% + \else\ifdim\tud@len@layoutheight<\dimexpr841mm+3mm\relax% + \def\@tempa{6}% + \else\ifdim\tud@len@layoutheight<\dimexpr1189mm+3mm\relax% + \def\@tempa{7}% + \else% + \def\@tempa{8}% + \fi\fi\fi\fi\fi\fi\fi\fi% + }{% + \ifdim\tud@len@layoutheight<\dimexpr125mm+1.5mm\relax% + \def\@tempa{0}% + \else\ifdim\tud@len@layoutheight<\dimexpr176mm+2mm\relax% + \def\@tempa{1}% + \else\ifdim\tud@len@layoutheight<\dimexpr250mm+2mm\relax% + \def\@tempa{2}% + \else\ifdim\tud@len@layoutheight<\dimexpr353mm+2mm\relax% + \def\@tempa{3}% + \else\ifdim\tud@len@layoutheight<\dimexpr500mm+2mm\relax% + \def\@tempa{4}% + \else\ifdim\tud@len@layoutheight<\dimexpr707mm+3mm\relax% + \def\@tempa{5}% + \else\ifdim\tud@len@layoutheight<\dimexpr1000mm+3mm\relax% + \def\@tempa{6}% + \else\ifdim\tud@len@layoutheight<\dimexpr1414mm+3mm\relax% + \def\@tempa{7}% + \else% + \def\@tempa{8}% + \fi\fi\fi\fi\fi\fi\fi\fi% + }% +% \end{macrocode} +% In Abhängigkeit von der gefundenen Gestaltungshöhe wird nun der Satzspiegel +% definiert. Dabei wird geprüft, ob dieser im entweder innerhalb des durch das +% \CD vorgegebenen Rasters erzeugt oder anhand der Gestaltungshöhe berechnet +% werden soll. +% \begin{macrocode} + \@tud@cdgeometry@adjustfalse% +% \end{macrocode} +% Eine Berechnung des Satzspiegels findet in jedem Fall außerhalb des Rasters +% statt. Ansonsten wird DIN~A4 als Referenzformat ausgewählt. +% \begin{macrocode} + \ifnum\tud@cdgeometry@calc@num=\tw@\relax% + \ifnum\@tempa>\z@\relax% + \ifnum\@tempa<8\relax% + \def\@tempa{3}% + \fi% + \fi% + \fi% +% \end{macrocode} +% Bei Formaten, welche kleiner als das Raster sind, wird die Gestaltungshöhe +% für DIN~A6 als Referenz genommen, um den Satzspiegel zu brechnen. +% \begin{macrocode} + \ifcase\@tempa\relax% <=A7/B7 + \ifnum\tud@cdgeometry@calc@num=\tw@\relax\else% + \ClassWarning{\TUD@Class@Name}{% + There's no type area defined for such a\MessageBreak% + small paper height. It is recommended to increase\MessageBreak% + the paper size. Nevertheless, it will be tried to\MessageBreak% + calculate a proper type area% + }% + \fi% + \tud@divide\@tempa{\tud@len@layoutheight}{148mm}% + \setlength\tud@len@widemargin{15mm}% + \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% + \setlength\tud@len@heavyline{0.5pt}% + \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% + \setlength\tud@len@thinline{0.25pt}% + \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% + \setlength{\@tempdima}{4.5pt}% + \setlength{\@tempdima}{\@tempa\@tempdima}% + \edef\tud@head@fontsize{\strip@pt\@tempdima}% + \or% <=A6/B6 + \setlength\tud@len@widemargin{15mm}% + \setlength\tud@len@heavyline{0.5pt}% + \setlength\tud@len@thinline{0.25pt}% + \renewcommand*\tud@head@fontsize{4.5}% +% \end{macrocode} +% Für Formate der Klasse~5 gibt es zwei Varianten. Entweder, es wird sich an +% das Raster des \CDs geahtlen oder es wird ein eigener Satzspiegel für das +% Papierformat definiert. Wird das Raster gehalten, muss bei den Überschriften +% etwas getrickst werden, weshalb der Schalter \cs{if@tud@cdgeometry@adjust} +% gesetzt wird. +% \begin{macrocode} + \or% <=A5/B5 + \ifnum\tud@cdgeometry@calc@num=\z@\relax% restricted + \@tud@cdgeometry@adjusttrue% + \setlength\tud@len@widemargin{30mm}% + \setlength\tud@len@heavyline{1pt}% + \setlength\tud@len@thinline{0.5pt}% + \renewcommand*\tud@head@fontsize{9}% + \else% + \setlength\tud@len@widemargin{21.213203mm}% + \setlength\tud@len@heavyline{0.707107pt}% + \setlength\tud@len@thinline{0.353553pt}% + \renewcommand*\tud@head@fontsize{6.363961}% + \fi% + \or% <=A4/B4 + \setlength\tud@len@widemargin{30mm}% + \setlength\tud@len@heavyline{1pt}% + \setlength\tud@len@thinline{0.5pt}% + \renewcommand*\tud@head@fontsize{9}% + \or% <=A3/B3 + \setlength\tud@len@widemargin{42.426407mm}% + \setlength\tud@len@heavyline{1.414214pt}% + \setlength\tud@len@thinline{0.707107pt}% + \renewcommand*\tud@head@fontsize{12.727922}% + \or% <=A2/B2 + \setlength\tud@len@widemargin{60mm}% + \setlength\tud@len@heavyline{2pt}% + \setlength\tud@len@thinline{1pt}% + \renewcommand*\tud@head@fontsize{18}% + \or% <=A1/B1 + \setlength\tud@len@widemargin{84.852814mm}% + \setlength\tud@len@heavyline{2.828427pt}% + \setlength\tud@len@thinline{1.414214pt}% + \renewcommand*\tud@head@fontsize{25.455844}% + \or% <=A0/B0 + \setlength\tud@len@widemargin{120mm}% + \setlength\tud@len@heavyline{4pt}% + \setlength\tud@len@thinline{2pt}% + \renewcommand*\tud@head@fontsize{36}% + \else% >A0/B0 +% \end{macrocode} +% Wei bei zu kleinen Formaten wird auch bei Formaten oberhalb des Rasters die +% der Satzspiegel aus der Gestaltungshöhe berechnet, wobei hier DIN~A0 als +% Referenz verwendet wird. +% \begin{macrocode} + \ifnum\tud@cdgeometry@calc@num=\tw@\relax\else% + \ClassWarning{\TUD@Class@Name}{% + There's no type area defined for such a\MessageBreak% + huge paper height. It is recommended to reduce\MessageBreak% + the paper size. Nevertheless, it will be tried to\MessageBreak% + calculate a proper type area% + }% + \fi% + \tud@divide\@tempa{\tud@len@layoutheight}{1189mm}% + \setlength\tud@len@widemargin{120mm}% + \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% + \setlength\tud@len@heavyline{4pt}% + \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% + \setlength\tud@len@thinline{2pt}% + \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% + \setlength{\@tempdima}{36pt}% + \setlength{\@tempdima}{\@tempa\@tempdima}% + \edef\tud@head@fontsize{\strip@pt\@tempdima}% + \fi% +% \end{macrocode} +% Wurde die Berechnung aktiviert, dann erfolgt diese anhand der Referenz im +% Format DIN~A4. +% \begin{macrocode} + \ifnum\tud@cdgeometry@calc@num=\tw@\relax% + \tud@divide\@tempa{\tud@len@layoutheight}{297mm}% + \setlength\tud@len@widemargin{\@tempa\tud@len@widemargin}% + \setlength\tud@len@heavyline{\@tempa\tud@len@heavyline}% + \setlength\tud@len@thinline{\@tempa\tud@len@thinline}% + \setlength{\@tempdima}{\tud@head@fontsize pt}% + \setlength{\@tempdima}{\@tempa\@tempdima}% + \edef\tud@head@fontsize{\strip@pt\@tempdima}% + \fi% +% \end{macrocode} +% Zum Schluss werden die restlichen Längen aus der Referenzlänge berechnet und +% das Erstellen der Kopfzeile aufgrund der möglichen Änderung der Schriftgröße +% forciert. +% \begin{macrocode} + \global\@tud@head@font@settrue% + \setlength\tud@len@slimmargin{\dimexpr2\tud@len@widemargin/3\relax}% + \setlength\tud@len@both{\dimexpr5\tud@len@widemargin/3\relax}% + \setlength\tud@len@topmargin{\dimexpr7\tud@len@widemargin/6\relax}% + \setlength\tud@len@barheight{\dimexpr\tud@len@widemargin/6\relax}% + \setlength\tud@len@headsep{\dimexpr2\tud@len@widemargin/5\relax}% + \setlength\tud@len@logox{\dimexpr1.1\tud@len@widemargin/3\relax}% + \setlength\tud@len@logoy{\dimexpr0.45\tud@len@widemargin\relax}% + \setlength\tud@len@logowidth{\dimexpr1.9\tud@len@widemargin\relax}% + \setlength\tud@len@footsep{% + \dimexpr\tud@len@widemargin-.6\tud@len@topmargin\relax% + }% +% \end{macrocode} +% Wird die Gestaltungshöhe DIN~A5 im Raster verwendet, werden die Abstände +% zwischen Kopf- unf Fußzeile angepasst. +% \begin{macrocode} + \if@tud@cdgeometry@adjust% + \setlength\tud@len@headsep{\dimexpr.707107\tud@len@headsep\relax}% + \setlength\tud@len@footsep{\dimexpr.707107\tud@len@footsep\relax}% + \fi% +} +% \end{macrocode} +% \end{length}^^A \tud@len@layoutvoffset +% \end{length}^^A \tud@len@layouthoffset +% \end{length}^^A \tud@len@layoutwidth +% \end{length}^^A \tud@len@layoutheight +% \end{macro}^^A \if@tud@cdgeometry@adjust +% \end{macro}^^A \tud@cdgeometry@set +% +% \subsection{Unterstützung von Schnittmarken mit \pkg{geometry} und \pkg{crop}} +% +% \changes{v2.05}{2016/04/03}{Unterstützung von Schnittmarken mit +% \pkg{geometry} und \pkg{crop}}^^A +% +% Insbesondere für das Erstelen von Postern sollen häufig Schnittmarken auf dem +% ausgegebenen Papierbogen erscheinen. Dies kann mit den Paketen \pkg{geometry} +% und \pkg{crop} realisiert werden. +% \ToDo{% +% Unterstützung von PDF-Boxen für die Druckausgabe +%^^A\url{https://groups.google.com/forum/#!topic/de.comp.text.tex/1gouJ0Zov6o} +%^^A\url{http://tex.stackexchange.com/questions/248902/} +%^^A\url{https://wiki.scribus.net/canvas/PDF_Boxes_:_mediabox,_cropbox,_bleedbox,_trimbox,_artbox} +%^^A\url{http://www.prepressure.com/pdf/basics/page-boxes} +% }[v2.07] +% +% \begin{macro}{\if@tud@x@crop@center} +% \changes{v2.05}{2016/04/03}{neu}^^A +% \begin{macro}{\CROP@center} +% \changes{v2.05}{2016/04/03}{neu}^^A +% Das Paket \pkg{crop} bietet die Option, den Satzspiegel auf dem Papierbogen +% zu zentrieren. Diese Einstellung geht beim Laden eines neuen Satzspiegels mit +% \cs{loadgeometry} verloren. Dieser Patch wird definiert, um dieses Problem zu +% beheben. +% \begin{macrocode} +\newif\if@tud@x@crop@center +\AfterPackage{crop}{% + \CheckCommand*\CROP@center{% + \voffset\stockheight + \advance\voffset-\paperheight + \voffset.5\voffset + \hoffset\stockwidth + \advance\hoffset-\paperwidth + \hoffset.5\hoffset + }% + \pretocmd{\CROP@center}{% + \@tud@x@crop@centertrue% + }{}{\tud@patch@wrn{CROP@center}} +} +% \end{macrocode} +% \end{macro}^^A \CROP@center +% \end{macro}^^A \if@tud@x@crop@center +% +% \subsection{Unterstützung der \cls{standalone}-Klasse} +% +% \changes{v2.02}{2014/07/25}{Unterstützung der \cls{standalone}-Klasse}^^A +% +% Mit der Klasse~\cls{standalone} können insbesondere Grafiken als separate +% (PDF-)Dateien erzeugt und später im Dokument eingebunden werden. Diese Klasse +% ändert allerhand an den Einstellungen der Seitenränder. Damit sich diese bei +% der Verwendung mit den \TUDScript-Klassen nicht in die Quere kommen, müssen +% für einige Einstellungen unterdrückt werden. +% +% \begin{macro}{\if@tud@x@standalone@crop} +% \changes{v2.02}{2014/09/08}{neu}^^A +% Mit diesem Makro kann die Verwendung der Option \opt{crop} mit der Klasse +% \cls{standalone} geprüft werden. Das erste Argument wird ausgeführt, wenn +% die Klasse geladen und die Option aktiv ist. Das zweite Argument wird +% ausgeführt, wenn entweder die Option \opt{crop} deaktiviert ist oder die +% Klasse \cls{standalone} gar nicht geladen wurde. +% \begin{macrocode} +\newif\if@tud@x@standalone@crop +\AfterClass*{standalone}{\let\if@tud@x@standalone@crop\ifsa@crop} +% \end{macrocode} +% \end{macro}^^A \if@tud@x@standalone@crop +% +% \iffalse +%</class&body> +%<*class&option> +% \fi +% +% \begin{option}{cdgeometry} +% \changes{v2.05}{2016/03/06}{\val{custom} neu}^^A +% \begin{macro}{\tud@cdgeometry@num} +% \begin{macro}{\if@tud@cdgeometry@num@locked} +% \begin{macro}{\tud@cdgeometry@calc@num} +% \changes{v2.05}{2015/11/29}{neu}^^A +% Für das \CD sind standardmäßig feste Seitenränder vorgegeben. Diese sind +% jedoch leider nur aus gestalterischen Motiven und ohne die Beachtung +% typographischer Belange gewählt und festgelegt worden. Beispielweise ist ein +% doppelseitiger Satz einer Abschlussarbeit im \CD nur mit einem grauenhaften +% Satzspiegel möglich. Um dem Anwender einen gewissen Spielraum zu geben, wird +% alternativ zum asymmetrischen (\opt{geomery=on}) ein symmetrischer +% Satzspiegel bereitgestellt (\opt{geomery=normal}), welcher bei einseitigem +% Satz zentriert ist und bei zweiseitigem Satz den inneren Rand kleiner setzt +% als den äußeren. Des Weiteren kann die Satzspiegelberechnung auch direkt +% durch \pkg{typearea} aus dem \KOMAScript-Paket erfolgen (\opt{geomery=no}). +% Mit \cs{tud@cdgeometry@@process} werden alle getroffenen Satzspiegeloptionen +% umgesetzt und nachfolgend definiert. +% \begin{macrocode} +\cs@lock{tud@cdgeometry@num}{0} +\newcommand*\tud@cdgeometry@calc@num{0} +\TUD@key{cdgeometry}[true]{% + \let\@tempb\tud@cdgeometry@num% + \let\@tempc\tud@cdgeometry@calc@num% + \TUD@set@numkey{cdgeometry}{@tempa}{% + \TUD@numkey@bool,% + {typearea}{0},% + {cd}{1},{tud}{1},{asymmetric}{1},% + {symmetric}{2},{centred}{2},{centered}{2},% + {normal}{2},{standard}{2},{std}{2},% + {twoside}{3},{balanced}{3},% + {oneside}{4},% + {restricted}{5},% + {adapted}{6},{adapt}{6},{adapting}{6},{unrestricted}{6},% + {calculated}{7},{calc}{7},{calculate}{7},{calculating}{7},% + {custom}{8},{user}{8},{package}{8}% + }{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifcase\@tempa\relax% false/typearea + \cs@set@lock{tud@cdgeometry@num}{0}% + \or% true/cd + \cs@set@lock{tud@cdgeometry@num}{2}% + \or% symmetric + \cs@set@lock{tud@cdgeometry@num}{3}% + \or% twoside + \cs@set@lock{tud@cdgeometry@num}{4}% + \TUD@KOMAoptions{twoside=true}% + \or% oneside + \ifnum\tud@cdgeometry@num>\thr@@\relax% + \cs@set@lock{tud@cdgeometry@num}{3}% + \fi% + \TUD@KOMAoptions{twoside=false}% + \or% restricted + \cs@std@lock{tud@cdgeometry@num}{2}% + \renewcommand*\tud@cdgeometry@calc@num{0}% + \or% adapted + \cs@std@lock{tud@cdgeometry@num}{2}% + \renewcommand*\tud@cdgeometry@calc@num{1}% + \or% calculated + \cs@std@lock{tud@cdgeometry@num}{2}% + \renewcommand*\tud@cdgeometry@calc@num{2}% + \or% custom + \cs@set@lock{tud@cdgeometry@num}{1}% + \fi% + \@tempswafalse% + \ifx\@tempb\tud@cdgeometry@num\relax\@tempswatrue\fi% + \ifx\@tempc\tud@cdgeometry@calc@num\relax\@tempswatrue\fi% + \if@tempswa% + \TUD@SpecialOptionAtDocument{tud@cdgeometry@process}% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@calc@num +% \end{macro}^^A \if@tud@cdgeometry@num@locked +% \end{macro}^^A \tud@cdgeometry@num +% \end{option}^^A cdgeometry +% \begin{option}{extrabottommargin} +% \begin{macro}{\tud@dim@extrabottommargin} +% Diese Option dient dazu, die Höhe des Fußes anzupassen. Dies ist jedoch nur +% möglich, wenn der Satzspiegel des \CDs verwendet wird. Kommt \pkg{typearea} +% zum Einsatz, ist die Option wirkungslos. Da für die Länge ggf. auch Werte +% angegeben werden können, die abhängig von der Schriftgröße sind, wird die +% Ausführung dieser Option verzögert. +% \begin{macrocode} +\newcommand*\tud@dim@extrabottommargin{\z@} +\TUD@key{extrabottommargin}{% + \TUD@set@dimenkey{extrabottommargin}{\tud@dim@extrabottommargin}{#1}% + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \TUD@SpecialOptionAtDocument{tud@cdgeometry@@process}% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@dim@extrabottommargin +% \begin{option}{bleedmargin} +% \changes{v2.05}{2016/06/14}{neu}^^A +% \begin{macro}{\tud@dim@bleedmargin} +% \changes{v2.05}{2016/04/03}{neu}^^A +% Wird entweder das Paket \pkg{crop} oder aber die Option \opt{layout} des +% Paketes \pkg{geometry} für Schnittmarken verwendet, werden alle farbigen +% Elemente des Layouts dahingehend vergrößert, dass beim Zuschneiden des +% Papierbogens \emph{in die Farbe} geschnitten wird. Verantwortlich hierfür ist +% das Makro \cs{tud@dim@bleedmargin}, welches natürlich auch vom Anwender mit +% der Option \opt{bleedmargin} beliebig gesetzt werden kann. Als Standardwert +% werden 5\% der größten Randbreite gesetzt. +% \begin{macrocode} +\newcommand*\tud@dim@bleedmargin{.2in} +\TUD@key{bleedmargin}{% + \TUD@set@dimenkey{bleedmargin}{\tud@dim@bleedmargin}{#1}% +% \end{macrocode} +% Negative Werte sind nicht möglich, diese werden automatisch korrigiert. +% \begin{macrocode} + \ifx\FamilyKeyState\FamilyKeyStateProcessed% + \ifdim\dimexpr\tud@dim@bleedmargin\relax<\z@\relax% + \def\@tempa-##1\@nil{\def\tud@dim@bleedmargin{##1}}% + \@tempa#1\@nil% + \fi% + \fi% +} +% \end{macrocode} +% \end{macro}^^A \tud@dim@bleedmargin +% \end{option}^^A bleedmargin +% \end{option}^^A extrabottommargin +% \begin{option}{twoside} +% \begin{option}{twocolumn} +% Sollte einer der beiden \KOMAScript-Optionen im Dokument nach der Präambel +% verwendet werden, erfolgt die Anpassung des Satzspiegels. +% \begin{macrocode} +\DefineFamilyMember{KOMA} +\DefineFamilyKey{KOMA}{twoside}{% + \TUD@SpecialOptionAtDocument{tud@cdgeometry@@process}% + \FamilyKeyStateProcessed% +} +\DefineFamilyKey{KOMA}{twocolumn}{% + \TUD@SpecialOptionAtDocument{tud@cdgeometry@@process}% + \FamilyKeyStateProcessed% +} +% \end{macrocode} +% \end{option}^^A twocolumn +% \end{option}^^A twoside +% +% \begin{macro}{\tud@x@typearea@warnings@off} +% \changes{v2.05}{2016/07/26}{neu}^^A +% \begin{macro}{\tud@x@typearea@warnings@on} +% \changes{v2.05}{2016/07/26}{neu}^^A +% Sollte das Paket \pkg{silence} vorhanden sein wird es geladen, um die vom +% Paket \pkg{typearea} erzeugten Warnungen beim Laden einer \TUDScript-Klasse +% zu unterdrücken, da im Normalfall das Paket gar nicht für die Berechnung des +% Satzspiegels zum Einsatz kommt. Sollte dies vom Anwender so eingestellt +% werden, wird vor dem Beginn des Dokumentes \cs{recalctypearea} aufgerufen und +% die entsprechenden Warnungen werden etwas später und in Abhängigkeit der +% verwendeten Schriftart erzeugt. +% \begin{macrocode} +\newcommand*\tud@x@ta@warnings@off{} +\newcommand*\tud@x@ta@warnings@on{} +\IfFileExists{silence.sty}{% + \RequirePackage{silence}[2012/07/02]% + \WarningFilter[typearea]{typearea}{DIV for}% + \WarningFilter[typearea]{typearea}{Bad type area settings!}% + \WarningFilter[typearea]{typearea}{Maybe no optimal type area settings!}% + \WarningFilter[typearea]{typearea}{Very low DIV value!}% + \BeforePackage{typearea}{\ActivateWarningFilters[typearea]}% + \AfterPackage{typearea}{\DeactivateWarningFilters[typearea]}% + \renewcommand*\tud@x@ta@warnings@off{\ActivateWarningFilters[typearea]} + \renewcommand*\tud@x@ta@warnings@on{\DeactivateWarningFilters[typearea]} +}{} +% \end{macrocode} +% \end{macro}^^A \tud@x@ta@warnings@on +% \end{macro}^^A \tud@x@ta@warnings@off +% +% \iffalse +%</class&option> +%<*class&body> +% \fi +% +% Das Paket \pkg{geometry} erlaubt eine genaue Vorgabe des Satzspiegels und +% der Seitenränder, wie es vom \CD der \TnUD verlangt wird. +% \ToDo{Satzspiegel ohne \pkg{geometry}; besser über \cs{storeareas}}[v2.07]% +% \ToDo{Benutzerschnittstelle äquivalent zu \pkg{geometry}}[v2.07]% +% \begin{macrocode} +\newcommand*\tud@cdgeometry@process{} +\newcommand*\tud@cdgeometry@@process{} +\if@tud@x@standalone@crop + \PreventPackageFromLoading{geometry}% +\else + \RequirePackage{geometry}[2010/09/12]% +\fi +\AfterPackage*{geometry}{% + \CheckCommand*\Gm@initnewgm{% + \Gm@passfalse + \Gm@swap@papersizefalse + \Gm@dimlist={} + \Gm@hbodyfalse + \Gm@vbodyfalse + \Gm@heightroundedfalse + \Gm@includeheadfalse + \Gm@includefootfalse + \Gm@includempfalse + \let\Gm@width\@undefined + \let\Gm@height\@undefined + \let\Gm@textwidth\@undefined + \let\Gm@textheight\@undefined + \let\Gm@lines\@undefined + \let\Gm@hscale\@undefined + \let\Gm@vscale\@undefined + \let\Gm@hmarginratio\@undefined + \let\Gm@vmarginratio\@undefined + \let\Gm@lmargin\@undefined + \let\Gm@rmargin\@undefined + \let\Gm@tmargin\@undefined + \let\Gm@bmargin\@undefined + \Gm@layoutfalse + \Gm@layouthoffset\z@ + \Gm@layoutvoffset\z@ + \Gm@bindingoffset\z@ + }% + \expandafter\CheckCommand% + \csname\expandafter\@gobble\string\Gm@changelayout\space\endcsname{% + \setlength{\@colht}{\textheight} + \setlength{\@colroom}{\textheight}% + \setlength{\vsize}{\textheight} + \setlength{\columnwidth}{\textwidth}% + \if@twocolumn% + \advance\columnwidth-\columnsep + \divide\columnwidth\tw@% + \@firstcolumntrue% + \fi% + \setlength{\hsize}{\columnwidth}% + \setlength{\linewidth}{\hsize}% + }% + \CheckCommand*\Gm@@process{% + \Gm@expandlengths + \Gm@adjustpaper + \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}% + \Gm@adjustmp + \Gm@adjustbody + \Gm@detall{h}{width}{lmargin}{rmargin}% + \Gm@detall{v}{height}{tmargin}{bmargin}% + \setlength\textwidth{\Gm@width}% + \setlength\textheight{\Gm@height}% + \setlength\topmargin{\Gm@tmargin}% + \setlength\oddsidemargin{\Gm@lmargin}% + \addtolength\oddsidemargin{-1\Gm@truedimen in}% + \ifGm@includemp + \advance\textwidth-\Gm@wd@mp + \advance\oddsidemargin\Gm@odd@mp + \fi + \if@mparswitch + \setlength\evensidemargin{\Gm@rmargin}% + \addtolength\evensidemargin{-1\Gm@truedimen in}% + \ifGm@includemp + \advance\evensidemargin\Gm@even@mp + \fi + \else + \evensidemargin\oddsidemargin + \fi + \advance\oddsidemargin\Gm@bindingoffset + \addtolength\topmargin{-1\Gm@truedimen in}% + \ifGm@includehead + \addtolength\textheight{-\headheight}% + \addtolength\textheight{-\headsep}% + \else + \addtolength\topmargin{-\headheight}% + \addtolength\topmargin{-\headsep}% + \fi + \ifGm@includefoot + \addtolength\textheight{-\footskip}% + \fi + \ifGm@heightrounded + \setlength\@tempdima{\textheight}% + \addtolength\@tempdima{-\topskip}% + \@tempcnta\@tempdima + \@tempcntb\baselineskip + \divide\@tempcnta\@tempcntb + \setlength\@tempdimb{\baselineskip}% + \multiply\@tempdimb\@tempcnta + \advance\@tempdima-\@tempdimb + \multiply\@tempdima\tw@ + \ifdim\@tempdima>\baselineskip + \addtolength\@tempdimb{\baselineskip}% + \fi + \addtolength\@tempdimb{\topskip}% + \textheight\@tempdimb + \fi + \advance\oddsidemargin\Gm@layouthoffset% + \advance\evensidemargin\Gm@layouthoffset% + \advance\topmargin\Gm@layoutvoffset% + \addtolength\Gm@layoutwidth{\Gm@bindingoffset}% + }% + \CheckCommand\geometry[1]{% + \Gm@clean + \setkeys{Gm}{#1}% + \Gm@process% + }% + \CheckCommand\newgeometry[1]{% + \clearpage + \Gm@restore@org + \Gm@initnewgm + \Gm@newgmtrue + \setkeys{Gm}{#1}% + \Gm@newgmfalse + \Gm@process + \ifnum\mag=\@m\else\Gm@magtooffset\fi + \Gm@changelayout + \Gm@showparams{newgeometry}% + }% + \CheckCommand\restoregeometry{% + \clearpage + \Gm@restore@pkg + \Gm@changelayout% + }% + \CheckCommand*\savegeometry[1]{% + \Gm@save + \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}% + }% + \CheckCommand*\loadgeometry[1]{% + \clearpage + \@ifundefined{Gm@restore@@#1}{% + \PackageError{geometry}{% + \string\loadgeometry : name `#1' undefined}{% + The name `#1' should be predefined with \string\savegeometry}% + }{\@nameuse{Gm@restore@@#1}% + \Gm@changelayout}% + }% +% \end{macrocode} +% \begin{macro}{\tud@setgeometry} +% \changes{v2.04}{2015/03/12}{neu}^^A +% \begin{macro}{\tud@savegeometry} +% \changes{v2.05}{2016/04/03}{neu}^^A +% \begin{macro}{\tud@loadgeometry} +% \changes{v2.05}{2016/03/06}{neu}^^A +% \begin{macro}{\if@tud@x@geometry@enabled} +% \changes{v2.05}{2016/03/06}{neu}^^A +% Für einen benutzerdefinierten Satzspiegel ist es notwendig, die durch den +% Anwender in der Präambel getätigten Einstellungen zu sichern und am Ende der +% Präambel für die unterschiedlichen, durch die Klasse benötigten Satzspiegel +% der einzelnen Seitenstile umzusetzen. Dabei werden auch etwaige Optionen von +% \KOMAScript{} beachtet. Hierfür werden die originalen Befehle \cs{geometry} +% und \cs{newgeometry} angepasst, weshalb diese vorher gesichert werden. +% \begin{macrocode} + \tud@cmd@store{geometry} + \tud@cmd@store{newgeometry} +% \end{macrocode} +% Mit dem Befehl \cs{tud@setgeometry} wird abhängig davon, ob dieser in der +% Präambel oder im Dokument von \cs{tud@cdgeometry@@process} verwendet wird, +% entweder \cs{geometry} oder \cs{newgeometry} aufgerufen. Mit dem Schalter +% \cs{if@tud@x@geometry@enabled} wird im Fall, dass ein benutzerdefinierter +% Satzspiegel aktiviert wurde, das rekursive Aufrufen von \cs{geometry} bzw. +% \cs{newgeometry} und einer daraus resultierenden Endlosschleife unterbunden. +% \begin{macrocode} + \newif\if@tud@x@geometry@enabled% + \@tud@x@geometry@enabledtrue% + \newcommand*\tud@setgeometry[1]{% + \@tud@x@geometry@enabledfalse% +% \end{macrocode} +% Unabhängig von der gewählten Option \opt{cdgeometry} für den Satzspiegel +% sollen die von \pkg{geometry} bereitgestellten Möglichkieten für den +% Papierbogen nutzbar bleiben. +% \begin{macrocode} + \ifGm@pass% + \def\@tempb{}% + \else% + \edef\@tempb{layoutoffset={\the\Gm@layouthoffset,\the\Gm@layoutvoffset}}% + \ifGm@layout% + \eappto\@tempb{,layoutsize={\the\Gm@layoutwidth,\the\Gm@layoutheight}}% + \fi% + \fi% +% \end{macrocode} +% Um etwaige Änderungen am Papierformat innerhalb des Dokumentes beachten zu +% können, werden die aktuellen Maße für das Papierformat an \cs{Gm@restore@org} +% angehangen. +% \begin{macrocode} + \if@atdocument% + \edef\@tempa{\@tempb,#1}% + \tud@cmd@store{Gm@restore@org}% + \eappto\Gm@restore@org{% + \paperwidth=\the\paperwidth\relax% + \paperheight=\the\paperheight\relax% + }% + \def\@tempc{\tud@cmd@use{newgeometry}}% + \expandafter\@tempc\expandafter{\@tempa}% + \tud@cmd@restore{Gm@restore@org}% + \else% +% \end{macrocode} +% Zu Beginn des Dokumentes werden mit \cs{Gm@initnewgm} vor jedem Satzspiegel +% die zuvor gemachten Einstellungen zurückgesetzt. +% \begin{macrocode} + \Gm@initnewgm% + \edef\@tempa{% + paperwidth=\the\paperwidth,paperheight=\the\paperheight,\@tempb,#1% + }% + \def\@tempc{\tud@cmd@use{geometry}}% + \expandafter\@tempc\expandafter{\@tempa}% + \fi% + \@tud@x@geometry@enabledtrue% + }% +% \end{macrocode} +% Beim Speichern eines Satzspiegels sichert \pkg{geometry} tatsächlich nicht +% alle notwendigen Einstellungen und Befehle. Deshalb wird etwas nachgeholfen. +% \begin{macrocode} + \newcommand*\tud@savegeometry[1]{% + \def\Gm@restore{}% + \savegeometry{#1}% + \csepreto{Gm@restore@@#1}{% + \etex@unexpanded{\def\Gm@lmargin}{\Gm@lmargin}% + \etex@unexpanded{\def\Gm@rmargin}{\Gm@rmargin}% + \noexpand\Gm@bindingoffset=\the\Gm@bindingoffset% + \ifGm@includemp% + \noexpand\Gm@includemptrue% + \else% + \noexpand\Gm@includempfalse% + \fi% + \ifGm@layout% + \noexpand\Gm@layouttrue% + \else% + \noexpand\Gm@layoutfalse% + \fi% + }% + }% + \newcommand*\tud@loadgeometry[1]{% + \@tud@x@geometry@enabledfalse% + \loadgeometry{#1}% +% \end{macrocode} +% Die nächsten beiden Makros müssen nach der Satzspiegeländerung des ausgeführt +% werden, um den Durchschuss und eine etwaige Zentrierung durch das Paket +% \pkg{crop} wiederherzustellen. +% \begin{macrocode} + \@currsize% + \if@tud@x@crop@center\CROP@center\fi% + \@tud@x@geometry@enabledtrue% + }% +% \end{macrocode} +% \end{macro}^^A \if@tud@x@geometry@enabled +% \end{macro}^^A \tud@loadgeometry +% \end{macro}^^A \tud@savegeometry +% \end{macro}^^A \tud@setgeometry +% \begin{macro}{\geometry} +% \begin{macro}{\newgeometry} +% \begin{macro}{\tud@geometry} +% \changes{v2.05}{2016/03/06}{neu}^^A +% \begin{parameter}{paper} +% \begin{parameter}{papername} +% \begin{parameter}{paperwidth} +% \begin{parameter}{paperheight} +% \begin{parameter}{papersize} +% \begin{parameter}{layout} +% \begin{parameter}{layoutname} +% \begin{parameter}{layoutwidth} +% \begin{parameter}{layoutheight} +% \begin{parameter}{layoutsize} +% \begin{parameter}{bleedmargin} +% \begin{macro}{\tud@area@def} +% \changes{v2.05}{2016/03/06}{neu}^^A +% \begin{macro}{\tud@area@set} +% \changes{v2.05}{2016/03/06}{neu}^^A +% \begin{macro}{\tud@x@geometry@init} +% \changes{v2.05}{2016/03/06}{neu}^^A +% \begin{macro}{\tud@x@geometry@paper} +% \changes{v2.05}{2016/07/20}{neu}^^A +% \begin{macro}{\tud@x@geometry@layout} +% \changes{v2.05}{2016/07/20}{neu}^^A +% \begin{macro}{\tud@x@geometry@parameter} +% \changes{v2.05}{2016/07/20}{neu}^^A +% Das folgende Konstrukt ist aus der Idee entstanden, die Parameter \val{paper} +% sowie \val{layout} des Paketes \pkg{geometry} auf die passenden Optionen von +% \KOMAScript{} abbilden zu können und insbesondere Schnittmarken für alle +% Seitenstile bereitzustellen. % +% \ToDo{% +% Leider ist daraus ein ziemlich unübersichtliches Konstrukt geworden, +% weshalb das Ganze in einer folgenden Version mit \KOMAScript-Mitteln neu +% implementiert werden soll. +% }[v2.07] +% \begin{macrocode} + \TUD@parameter@family{geometry}{% + \TUD@parameter@def{paper}{\tud@area@def{paper}{#1}}% + \TUD@parameter@let{papername}{paper}% + \TUD@parameter@def{paperwidth}{\tud@area@def{paper}{#1:\the\paperheight}}% + \TUD@parameter@def{paperheight}{\tud@area@def{paper}{\the\paperwidth:#1}}% + \TUD@parameter@def{papersize}{% + \def\@tempa##1,##2,##3\@nil{% + \IfArgIsEmpty{##2}{% + \tud@area@def{paper}{##1:##1}% + }{% + \tud@area@def{paper}{##1:##2}% + }% + }% + \@tempa#1,,\@nil% + }% + \TUD@parameter@def{layout}{\tud@area@def{layout}{#1}}% + \TUD@parameter@let{layoutname}{layout}% + \TUD@parameter@def{layoutwidth}{% + \tud@area@def{layout}{#1:\the\tud@len@layoutheight}% + }% + \TUD@parameter@def{layoutheight}{% + \tud@area@def{layout}{\the\tud@len@layoutwidth:#1}% + }% + \TUD@parameter@def{layoutsize}{% + \def\@tempa##1,##2,##3\@nil{% + \IfArgIsEmpty{##2}{% + \tud@area@def{layout}{##1:##1}% + }{% + \tud@area@def{layout}{##1:##2}% + }% + }% + \@tempa#1,,\@nil% + }% + \TUD@parameter@def{bleedmargin}{\TUDoption{bleedmargin}{#1}}% + \TUD@parameter@handler@macro{% + \eappto\tud@x@geometry@parameter{% + \expandonce\kv@key=\expandonce\kv@value,% + }% + }{% + \tud@area@def{paper}{#2}% + }% + } +% \end{macrocode} +% Wenig Kommentar dazu, weil eigentlich schon wieder obsolet! Die möglichen +% Werte für \val{paper} und \val{layout} werden abgefangen und für die beiden +% Befehle \cs{geometry} und \cs{newgeometry} aufgearbeitet. Alle anderen werden +% einfach an \pkg{geometry} durchgereicht. Dies geschieht über die jeweiligen +% Hilfsmakros \cs{tud@x@geometry@\dots} für \val{paper}, \val{layout} sowie +% \val{parameter} für alles Übrige. +% \begin{macrocode} + \newcommand*\tud@area@def[2]{% + \tud@lowerstring{\@tempa}{#2}% + \def\@tempb##1paper##2\@nil{% + \ifstr{##2}{paper}{\def\@tempa{##1}}{}% + }% + \expandafter\@tempb\@tempa paper\@nil% + \@tempswafalse% + \ifstr{\@tempa}{seascape}{\@tempswatrue}{}% + \ifstr{\@tempa}{landscape}{\@tempswatrue}{}% + \ifstr{\@tempa}{portrait}{\@tempswatrue}{}% + \ifstr{\@tempa}{letter}{\@tempswatrue}{}% + \ifstr{\@tempa}{executive}{\@tempswatrue}{}% + \ifstr{\@tempa}{legal}{\@tempswatrue}{}% + \if@tempswa\else% + \ifx\@tempa\@empty\relax\else% + \def\@tempb##1##2\@nil{% + \if ##1a\@tempswatrue% + \else\if ##1b\@tempswatrue% + \else\if ##1c\@tempswatrue% + \else\if ##1d\@tempswatrue% + \fi\fi\fi\fi% + \if@tempswa% + \@tempswafalse% + \IfArgIsEmpty{##2}{}{\ifnumber{##2}{\@tempswatrue}{}}% + \fi% + }% + \expandafter\@tempb\@tempa\@nil% + \if@tempswa\else% + \def\@tempb##1:##2:##3\@nil{% + \IfArgIsEmpty{##2}{}{% + \@tempswatrue% + \def\@tempa{##1:##2}% + }% + }% + \expandafter\@tempb\@tempa::\@nil% + \fi% + \if@tempswa\else% + \def\tud@reserved##1:##2:##3:##4\@nil{% + \if@tempswa\else% + \ifstr{\@tempa}{##1}{% + \@tempswatrue% + \def\@tempa{##2##4:##3##4}% + }{}% + \fi% + }% + \tud@reserved b0j:1030:1456:mm\@nil% + \tud@reserved b1j:728:1030:mm\@nil% + \tud@reserved b2j:515:728:mm\@nil% + \tud@reserved b3j:364:515:mm\@nil% + \tud@reserved b4j:257:364:mm\@nil% + \tud@reserved b5j:182:257:mm\@nil% + \tud@reserved b6j:128:182:mm\@nil% + \tud@reserved ansia:8.5:11:in\@nil% + \tud@reserved ansib:11:17:in\@nil% + \tud@reserved ansic:17:22:in\@nil% + \tud@reserved ansid:22:34:in\@nil% + \tud@reserved ansie:34:44:in\@nil% + \tud@reserved screen:225:180:mm\@nil% + \fi% + \fi% + \fi% + \if@tempswa% + \cseappto{tud@x@geometry@#1}{\@tempa,}% + \def\@tempb##1:##2:##3\@nil{% + \IfArgIsEmpty{##2}{}{% + \ifstr{#1}{paper}{% + \setlength\paperwidth{##1}% + \setlength\paperheight{##2}% + }{% + \ifstr{#1}{layout}{% + \setlength\tud@len@layoutwidth{##1}% + \setlength\tud@len@layoutheight{##2}% + }{}% + }% + }% + }% + \expandafter\@tempb\@tempa::\@nil% + \else% + \appto\tud@x@geometry@parameter{#2,}% + \fi% + } +% \end{macrocode} +% Der Befehl \cs{tud@area@set} bewerkstelligt die korrekte Abarbeitung der +% zuvor gesammelten Schlüssel. +% \begin{macrocode} + \newcommand*\tud@area@set[1]{% + \letcs{\@tempa}{tud@x@geometry@#1}% + \ifdefvoid{\@tempa}{}{% + \def\@tempb##1:##2:##3\@nil{% + \tud@cmd@store{@tempa}% + \tud@cmd@store{@tempb}% + \tud@cmd@store{@tempc}% + \IfArgIsEmpty{##2}{% + \KOMAoption{paper}{##1}% + }{% + \if@landscape% + \KOMAoption{paper}{##2:##1}% + \else% + \KOMAoption{paper}{##1:##2}% + \fi% + }% + \tud@cmd@restore{@tempa}% + \tud@cmd@restore{@tempb}% + \tud@cmd@restore{@tempc}% + }% + \def\@tempc##1{\@tempb##1::\@nil}% + \expandafter\forcsvlist\expandafter\@tempc\expandafter{\@tempa}% + }% + } +% \end{macrocode} +% Bei der redefinition von \cs{geometry} und \cs{newgeometry} kommt intern +% \cs{tud@geometry} zum Einsatz, womit kleinere Feinheiten zwischen den beiden +% Befehlen unterschieden werden können. +% \begin{macrocode} + \newcommand*\tud@x@geometry@init{} + \newcommand*\tud@x@geometry@paper{} + \newcommand*\tud@x@geometry@layout{} + \newcommand*\tud@x@geometry@parameter{} + \newcommand*\tud@geometry[2]{% + \ifGm@layout% + \setlength\tud@len@layoutheight{\Gm@layoutheight}% + \setlength\tud@len@layoutwidth{\Gm@layoutwidth}% + \else% + \setlength\tud@len@layoutheight{\paperheight}% + \setlength\tud@len@layoutwidth{\paperwidth}% + \fi% + \let\tud@x@geometry@paper\@empty% + \let\tud@x@geometry@layout\@empty% + \let\tud@x@geometry@parameter\@empty% + \TUD@parameter@set{geometry}{#1}% + \tud@area@set{paper}% + \ifstr{#2}{newgeometry}{% + \eappto\Gm@restore@org{% + \paperwidth=\the\paperwidth\relax% + \paperheight=\the\paperheight\relax% + }% + }{% + \etex@unexpanded{\epreto{\tud@x@geometry@parameter}}{% + paperwidth=\the\paperwidth,paperheight=\the\paperheight,% + }% + }% + \ifx\tud@x@geometry@layout\@empty\else% + \begingroup% + \setlength\paperwidth{\Gm@layoutwidth}% + \setlength\paperheight{\Gm@layoutheight}% + \tud@area@set{layout}% + \edef\tud@reserved{% + \endgroup% + \etex@unexpanded{\epreto{\tud@x@geometry@parameter}}{% + layoutwidth=\the\paperwidth,layoutheight=\the\paperheight,% + }% + }% + \tud@reserved% + \fi% + \def\@tempa{\tud@cmd@use{#2}}% + \expandafter\@tempa\expandafter{\tud@x@geometry@parameter}% + \ifstr{#2}{geometry}{% + \ifbool{@tud@x@geometry@enabled}{% + \eappto\tud@x@geometry@init{,\expandonce\tud@x@geometry@parameter}% + }{}% + }{}% + } + \renewcommand*\geometry[1]{\tud@geometry{#1}{geometry}} + \renewcommand*\newgeometry[1]{% + \tud@cmd@store{Gm@restore@org}% + \tud@geometry{#1}{newgeometry}% + \tud@cmd@restore{Gm@restore@org}% + } +% \end{macrocode} +% \end{macro}^^A \tud@x@geometry@parameter +% \end{macro}^^A \tud@x@geometry@layout +% \end{macro}^^A \tud@x@geometry@paper +% \end{macro}^^A \tud@x@geometry@init +% \end{macro}^^A \tud@area@set +% \end{macro}^^A \tud@area@def +% \end{parameter}^^A bleedmargin +% \end{parameter}^^A layoutsize +% \end{parameter}^^A layoutheight +% \end{parameter}^^A layoutwidth +% \end{parameter}^^A layoutname +% \end{parameter}^^A layout +% \end{parameter}^^A papersize +% \end{parameter}^^A paperheight +% \end{parameter}^^A paperwidth +% \end{parameter}^^A papername +% \end{parameter}^^A paper +% \end{macro}^^A \tud@geometry +% \end{macro}^^A \newgeometry +% \end{macro}^^A \geometry +% \begin{macro}{\restoregeometry} +% \begin{macro}{\Gm@changelayout} +% Sollte im Dokument durch den Anwender der Satzspiegel manuell geändert +% werden, muss darauf reagiert und die unterschiedlichen Satzspiegel der Klasse +% angepasst werden. Hierfür wird am Ende von \cs{Gm@changelayout} ein Patch +% eingehängt. +% \begin{macrocode} + \apptocmd{\Gm@changelayout}{% + \ifboolexpr{bool {@tud@x@geometry@enabled} and bool {@atdocument}}{% + \tud@cdgeometry@process% + }{}% + }{}{\tud@patch@wrn{Gm@changelayout}}% +% \end{macrocode} +% Bei der Verwendung von \cs{restoregeometry} wird der am Ende der Präambel +% der passend zur entsprechende Einstellung von \opt{cdgeometry} gesicherte +% Satzspiegel geladen. Über das optinale Argument kann der gewünschte Wert für +% die Option \opt{cdgeometry} angegeben werden. +% \begin{macrocode} + \renewcommand*\restoregeometry[1][]{% + \IfArgIsEmpty{#1}{}{% + \tud@cmd@store{TUD@SpecialOptionAtDocument}% + \let\TUD@SpecialOptionAtDocument\@gobble% + \TUDoption{cdgeometry}{#1}% + \tud@cmd@restore{TUD@SpecialOptionAtDocument}% + }% + \ifnum\tud@cdgeometry@num=\@ne\relax + \tud@loadgeometry{init@custom}% + \else% + \tud@loadgeometry{init@typearea}% + \fi% + \tud@AfterChangingArea% + }% +% \end{macrocode} +% \end{macro}^^A \Gm@changelayout +% \end{macro}^^A \restoregeometry +% \begin{macro}{\tud@cdgeometry@hmargin} +% \begin{macro}{\tud@cdgeometry@vmargin} +% \begin{macro}{\tud@cdgeometry@tudmargin} +% \begin{macro}{\tud@cdgeometry@ddcmargin} +% Dies sind Hilfsmakros für die Definition der unterschiedichen Seitenlayouts +% (horizontale und vertikale Ränder). Es handelt sich dabei um die Seitenränder +% für den normalen Textbereich sowie die angepassten vertikalen Einstellungen +% für die Seitenstilvarianten mit TUD-Kopf. Im Kompatibilitätsmodus für die +% Version~v2.02 gibt es außerdem einen separaten Satzspiegel für den \DDC-Fuß. +% Gesetzt werden diese in Abhängigkeit von der Option \opt{cdgeometry} im +% Makro \cs{tud@cdgeometry@@process} bzw. \cs{tud@cdgeometry@@@process}. +% \begin{macrocode} + \newcommand*\tud@cdgeometry@hmargin{}% + \newcommand*\tud@cdgeometry@vmargin{}% + \newcommand*\tud@cdgeometry@tudmargin{}% + \tud@if@v@lower{2.03}{\newcommand*\tud@cdgeometry@ddcmargin{}}{}% +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@ddcmargin +% \end{macro}^^A \tud@cdgeometry@tudmargin +% \end{macro}^^A \tud@cdgeometry@vmargin +% \end{macro}^^A \tud@cdgeometry@hmargin +% \begin{macro}{\tud@cdgeometry@process} +% \changes{v2.05}{2015/11/29}{neu}^^A +% Nur falls \pkg{typearea} zum Einsatz kommt, wird am Ende der Präambel die +% Satzspiegelberechnung mit \cs{recalctypearea} angestoßen, ansonsten wird +% bloß \cs{tud@AfterChangingArea} ausgeführt. +% \ToDo{Alles auf Anfang!}[v2.07] +% \begin{macrocode} + \renewcommand*\tud@cdgeometry@process{% +% \ifcase\tud@cdgeometry@num\relax% +% \csuse{@ta@usegeometryfalse}% +% \recalctypearea% +% \else% + \tud@AfterChangingArea% +% \fi% + }% +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@process +% \begin{macro}{\tud@cdgeometry@@process} +% \changes{v2.02}{2014/06/23}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A +% \changes{v2.03}{2015/01/09}{Satzspiegel des \CDs angepasst}^^A +% \changes{v2.03}{2015/01/09}{intiale Festlegung der Länge \cs{marginpar}}^^A +% \changes{v2.03}{2015/01/13}{Satzspiegel kompatibilitätsabhängig}^^A +% \begin{macro}{\tud@cdgeometry@@@process} +% Das Makro \cs{tud@cdgeometry@@process} setzt die Option für den gewünschten +% Satzspiegel um, sowohl für die Seitenränder als auch zur Einberechnung der +% Kopf- und/oder Fußzeile. Um mehrere Satzspiegel verwenden zu können~-- was +% für die unterschiedlichen Höhen für Kopf- und Fußzeile nötig ist~-- wird das +% Paket \pkg{geometry} verwendet. Soll \pkg{typearea} zur Satzspiegelerstellung +% genutzt werden, so werden die damit berechneten Werte an \pkg{geometry} +% weitergereicht. +% Es werden drei Layouts erstellt: normaler Satzspiegel, nur TUD-Kopf sowie +% TUD-Kopf und "~Fuß und mit \cs{savegeometry}\marg{Stil} gesichert. Damit kann +% innerhalb des Dokumentes mit dem Befehl \cs{loadgeometry}\marg{Stil} oberer +% sowie ggf. untere Seitenrand geändert werden. +% \begin{macrocode} + \renewcommand*\tud@cdgeometry@@process{% + \csuse{@ta@usegeometryfalse}% +% \end{macrocode} +% Die Maßvorgaben werden entsprechend der Seitengröße gesetzt. +% \begin{macrocode} + \tud@cdgeometry@set% +% \end{macrocode} +% Für den Fall, dass \pkg{typearea} die Satzspiegelberechnung übernimmt oder +% dieser durch den Benutzerdefiniert wurde, werden die Ergebnisse aus der +% Berechnung respektive die aktiven Einstellungen direkt an \pkg{geometry} +% weitergereicht. Dazu werden die berechneten Werte in die entsprechenden +% Hilfsmakros für die Erstellung der \pkg{geometry}-Satzspiegel übergeben. +% \begin{macrocode} + \ifnum\tud@cdgeometry@num<\tw@\relax% false/custom +% \end{macrocode} +% Anschließend erfolgen die horizontalen und vertikalen Randeinstellungen. +% Zunächst für \pkg{typearea}. Hierfür ist eine Sonderbehandlung notwendig, +% falls mit \cs{geometry} eine Größe für den Druckbereich/das Layout angegeben +% wurde. Dafür wird das Papierformat temporär auf die Größe des angegebenen +% Layouts geändert und der Satzspiegel neu berechnet. Damit diese Berechnung +% jedoch nicht umgesetzt wird, wird \cs{activateareas} unschädlich gemacht. +% \begin{macrocode} + \ifcase\tud@cdgeometry@num\relax% + \ifGm@layout% + \tud@skip@store{paperheight}% + \tud@skip@store{paperwidth}% + \setlength\paperheight{\tud@len@layoutheight}% + \setlength\paperwidth{\tud@len@layoutwidth}% + \fi% + \tud@cmd@store{activateareas}% + \tud@cmd@store{tud@AfterChangingArea}% + \let\activateareas\relax% + \let\tud@AfterChangingArea\relax% + \recalctypearea% + \ifGm@layout% + \tud@skip@restore{paperheight}% + \tud@skip@restore{paperwidth}% + \fi% + \tud@cmd@restore{activateareas}% + \tud@cmd@restore{tud@AfterChangingArea}% +% \end{macrocode} +% Nachdem der Satzspiegel im Zweifelsfall neu berechnet wurde, werden die von +% \pkg{typearea} berechneten Seitenränder an \pkg{geometry} weitergereicht. +% \begin{macrocode} + \edef\tud@cdgeometry@hmargin{% + left=\the\dimexpr\oddsidemargin+1in-\ta@bcor\relax,% + textwidth=\the\textwidth,% + \tud@cdgeometry@mpincl,% + marginparwidth=\the\marginparwidth,% + marginparsep=\the\marginparsep,% + \if@reversemargin% + reversemarginpar=true,% + \else% + reversemarginpar=false,% + \fi% + bindingoffset=\the\ta@bcor% + }% + \edef\tud@cdgeometry@vmargin{% + \if@hincl% + includehead=true,% + top=\the\dimexpr\topmargin+1in\relax,% + \else% + includehead=false,% + top=\the\dimexpr\topmargin% + +\headheight+\headsep+1in\relax,% + \fi% + headheight=\the\headheight,% + headsep=\the\headsep,% + textheight=\the\textheight,% + \tud@cdgeometry@fincl,% + footskip=\the\footskip% + }% +% \end{macrocode} +% Und nun für den benutzerdefinierten Satzspiegel. +% \begin{macrocode} + \else% custom + \ifGm@pass\else% + \edef\tud@cdgeometry@hmargin{% + left=\Gm@lmargin,% + right=\Gm@rmargin,% + \ifGm@includemp% + includemp=true,% + \else% + includemp=false,% + \fi% + marginparwidth=\the\marginparwidth,% + marginparsep=\the\marginparsep,% + \if@reversemargin% + reversemarginpar=true,% + \else% + reversemarginpar=false,% + \fi% + bindingoffset=\the\Gm@bindingoffset% + }% + \edef\tud@cdgeometry@vmargin{% + \ifGm@includehead% + includehead=true,% + top=\the\dimexpr\topmargin+1in\relax,% + \else% + includehead=false,% + top=\the\dimexpr\topmargin% + +\headheight+\headsep+1in\relax,% + \fi% + headheight=\the\headheight,% + headsep=\the\headsep,% + textheight=\the\textheight,% + \ifGm@includefoot% + includefoot=true,% + \else% + includefoot=false,% + \fi% + footskip=\the\footskip% + }% + \fi% + \fi% +% \end{macrocode} +% Es wird die Höhendifferenz zwischen TUD-Kopf und Standardkopfzeile für den +% benutzerdefnierten bzw. \pkg{typearea}-Satzspiegel berechnet. Für den +% Satzspiegel mit TUD-Kopf muss unterschieden werden, ob der Abstand zwischen +% Kopf und Textbereich vergrößert wurde. Ist dies der Fall, wird die Höhe des +% Textbereiches über \cs{@tempdima} entsprechend verkleinert. Sollte der +% benutzerdefinierten bzw. \pkg{typearea}-Satzspiegel noch unterhalb des +% TUD-Kopfes liegen, wird der Abstand zum Kopf vergrößert. +% \begin{macrocode} + \setlength\tud@len@areadiff{% + \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% + -\topmargin-\headheight-\headsep-1in\relax% + }% + \ifdim\tud@len@areadiff<\z@\relax% + \addtolength\tud@len@headsep{-\tud@len@areadiff}% + \setlength\@tempdima{\z@}% + \else% + \setlength\@tempdima{\tud@len@areadiff}% + \fi% + \edef\tud@cdgeometry@tudmargin{% + ignorehead=true,% + top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% + +\tud@len@headsep\relax,% + headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% + -\tud@len@logoy\relax,% + headsep=\the\tud@len@headsep,% + textheight=\the\dimexpr\textheight-\@tempdima\relax% + }% +% \end{macrocode} +% Für den Kompatibilitätsmodus der Version~v2.02 gibt es für den \DDC-Fuß einen +% separaten Satzspiegel. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% + \setlength\tud@len@ddcdiff{% + \dimexpr.6\tud@len@topmargin-\footskip+\tud@len@headsep% + +\footheight-1.25\baselineskip\relax% + }% + \edef\tud@cdgeometry@ddcmargin{% + textheight=\the\dimexpr\textheight-\tud@len@areadiff% + -\tud@len@ddcdiff\relax,% + footskip=\the\dimexpr\footskip+\tud@len@ddcdiff\relax% + }% + }{}% +% \end{macrocode} +% Sollte die Option \opt{extrabottommargin} verwendet worden sein, wird eine +% Warnung ausgegeben, dass diese für den \pkg{typearea}-Satzspiegel wirkungslos +% ist. +% \begin{macrocode} + \ifdim\dimexpr\tud@dim@extrabottommargin\relax=\z@\relax\else% + \ClassWarning{\TUD@Class@Name}{% + Option `extrabottommargin' is ineffective when\MessageBreak% + package typearea or custom layout is used\MessageBreak% + (`cdgeometry=false/custom')% + }% + \fi% +% \end{macrocode} +% Hier erfolgt die Definition der Hilfsmakros für das CD-konforme asymmetrische +% bzw. an das \CD angelehnte Layout für einseitigen und zweiseitigen Satz. +% Zuerst werden die verschiedenen unterschiedlichen horizontalen Ränder für die +% unterschiedlichen Optionen definiert. Dies betrifft im einzelnen den äußeren +% Seitenrand (\cs{@tempdima}), die Textbreite (\cs{@tempdimb}) sowie die Breite +% der Randnotizen (\cs{@tempdimc}). Danach kommt der Gleichanteil. +% \begin{macrocode} + \else% true/symmetric/twoside + \ifcase\tud@cdgeometry@num\relax\or\or% true + \setlength\@tempdima{\tud@len@widemargin}% + \if@reversemargin% + \setlength\@tempdimc{\tud@len@widemargin}% + \else% + \setlength\@tempdimc{\tud@len@slimmargin}% + \fi% +% \end{macrocode} +% Die zweite Variante ist eigentlich nicht konform mit dem \CD. Sie ist sowohl +% im einseitigen als auch im zweiseitgigen Satz symmetrisch. +% \begin{macrocode} + \or% symmetric + \setlength\@tempdima{.5\tud@len@both}% + \setlength\@tempdimc{.5\tud@len@both}% +% \end{macrocode} +% Eigentlich ist auch die dritte Variante nach dem \CD nicht zulässig. Sie ist +% im einseitigen Satz symmetrisch, im zweiseitgigen Satz wird die innere Seite +% schmaler gesetzt als die äußere, wobei hier auf das in den Seitenrand ragende +% TUD-Logo geachtet werden muss. +% \begin{macrocode} + \or% twoside + \if@twoside% + \setlength\@tempdima{.4\tud@len@both}% + \else% + \setlength\@tempdima{.5\tud@len@both}% + \fi% + \setlength\@tempdimc{.5\tud@len@both}% + \if@twoside% + \if@reversemargin% + \setlength\@tempdimc{.4\tud@len@both}% + \else% + \setlength\@tempdimc{.6\tud@len@both}% + \fi% + \fi% + \fi% +% \end{macrocode} +% Die \emph{Berechnung} der Textbreite ist für alle Varainten identisch. Danach +% erfolgt die Zuweisung zum Makro. +% \begin{macrocode} + \addtolength\@tempdimc{-\headsep}% + \setlength\@tempdimb{% + \dimexpr\tud@len@layoutwidth-\tud@len@both-\ta@bcor\relax% + }% + \if@mincl% + \addtolength\@tempdimb{-\@tempdimc}% + \fi% + \edef\tud@cdgeometry@hmargin{% + left=\the\@tempdima,% + textwidth=\the\@tempdimb,% + \tud@cdgeometry@mpincl,% + marginparwidth=\the\@tempdimc,% + marginparsep=\the\dimexpr.5\headsep\relax,% + \if@reversemargin% + reversemarginpar=true,% + \else% + reversemarginpar=false,% + \fi% + bindingoffset=\the\ta@bcor% + }% + \if@twoside% + \ifcase\tud@cdgeometry@num\relax\or\or% true + \appto\tud@cdgeometry@hmargin{,asymmetric}% + \else% symmetric/twoside + \appto\tud@cdgeometry@hmargin{,twoside}% + \fi% + \fi% + \if@twocolumn% + \appto\tud@cdgeometry@hmargin{,twocolumn}% + \fi% +% \end{macrocode} +% Für alle drei Varianten der vertikale Gleichanteil. Der Satzspiegel der +% Version~v2.02 wird aus Gründen der Kompatibilität weiterhin vorgehalten. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% + \edef\tud@cdgeometry@vmargin{% + \tud@cdgeometry@hincl,% + top=\the\dimexpr.5\tud@len@both\relax,% + headheight=\the\headheight,% + headsep=\the\tud@len@headsep,% + bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin\relax,% + \tud@cdgeometry@fincl,% + footskip=\the\dimexpr\tud@len@headsep+\footheight% + -1.25\baselineskip\relax% + }% + }{% + \edef\tud@cdgeometry@vmargin{% + \tud@cdgeometry@hincl,% + top=\the\tud@len@slimmargin,% + headheight=\the\headheight,% + headsep=\the\headsep,% + bottom=\the\dimexpr\tud@len@widemargin% + +\tud@dim@extrabottommargin\relax,% + \tud@cdgeometry@fincl,% + footskip=\the\dimexpr\tud@len@footsep+\footheight\relax% + }% + }% + \edef\tud@cdgeometry@tudmargin{% + ignorehead=true,% + top=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% + +\tud@len@headsep\relax,% + headheight=\the\dimexpr\tud@len@topmargin+\tud@len@barheight% + -\tud@len@logoy\relax,% + headsep=\the\tud@len@headsep% + }% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. +% \begin{macrocode} + \setlength\tud@len@areadiff{% + \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% + -\tud@len@slimmargin\relax% + }% +% \end{macrocode} +% Für die Kompatibilitätsvariante wieder mal die Extrawurst. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% + \setlength\tud@len@areadiff{% + \dimexpr\tud@len@topmargin+\tud@len@barheight+\tud@len@headsep% + -.5\tud@len@both\relax% + }% +% \end{macrocode} +% Wird die Fußzeile zum Satzspiegel gerechnet, ist für Seiten mit \DDC-Fuß +% etwas Handarbeit notwendig, damit dieser nicht allzu weit nach oben ragt. +% \begin{macrocode} + \setlength\tud@len@ddcdiff{.6\tud@len@topmargin}% + \edef\tud@cdgeometry@ddcmargin{% + \if@fincl% + bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin% + +\tud@len@ddcdiff+\tud@len@headsep+\footheight% + -1.25\baselineskip\relax,% + \else% + bottom=\the\dimexpr.5\tud@len@both+\tud@dim@extrabottommargin% + +\tud@len@ddcdiff\relax,% + \fi% + footskip=\the\dimexpr\tud@len@headsep+\footheight% + -1.25\baselineskip+\tud@len@ddcdiff\relax,% + }% + }{}% + \fi% +% \end{macrocode} +% Es wird die Differenz der Höhen zwischen TUD-Kopf und Standardkopfzeile +% für den Satzspiegel des \CDs berechnet. Außerdem wird die standardmäßige +% vertikale Verschiebung der Überschriften festgelegt, wobei hier insbesondere +% auf die Gestaltungshöhe DIN~A5 geachtet werden muss. +% \begin{macrocode} + \ifdim\tud@len@areadiff<\z@\relax\setlength\tud@len@areadiff{\z@}\fi% + \global\tud@len@areadiff=\tud@len@areadiff% + \if@tud@cdgeometry@adjust% + \setlength\tud@len@areaheadvskip{.3\tud@len@topmargin}% + \else% + \setlength\tud@len@areaheadvskip{.6\tud@len@topmargin}% + \fi% + \global\tud@len@areaheadvskip=\tud@len@areaheadvskip% +% \end{macrocode} +% Für den Satzspiegel der Version~v2.02 wird außerdem die Länge für den höheren +% Seitenfuß gesetzt. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% + \ifdim\tud@len@ddcdiff<\z@\relax\setlength\tud@len@ddcdiff{\z@}\fi% + \global\tud@len@ddcdiff=\tud@len@ddcdiff% + }{}% +% \end{macrocode} +% Es wird \cs{tud@cdgeometry@@@process} aufgerufen, was die zuvor definierten +% Hilfsmakros nutzt, um alle benötigten Seitenlayouts optionsabhängig zu +% erstellen. +% \begin{macrocode} + \tud@cdgeometry@@@process% + }% +% \end{macrocode} +% Der Befehl \cs{tud@cdgeometry@@@process} setzt mit den zuvor definierten +% Hilfsmakros die \pkg{geometry}-Optionen für sowohl die seitlichen als auch +% die oberen sowie unteren Seitenränder und inkludiert ggf. Kopf- und Fußzeile +% in den Satzspiegel. Die unterschiedlichen Layouts sind dabei \opt{tudddc} für +% TUD-Kopf und \DDC-Fuß, \opt{tudpage} für den alleinigen TUD-Kopf sowie +% \opt{tudarea} für den normalen bzw. mit \pkg{typearea} berechneten +% Satzspiegel. +% \begin{macrocode} + \newcommand*\tud@cdgeometry@@@process{% +% \end{macrocode} +% Für den Satzspiegel der Version~v2.02 wird als erstes der Satzspiegel für den +% TUD-Kopf zusammen mit dem \DDC-Fuß erstellt. Das Einbeziehen der Fußzeile in +% den Satzspiegel erfolgt nicht ggf. über die Option \opt{includefoot} sondern +% manuell bei der Definition von \cs{tud@cdgeometry@ddcmargin}. +% \begin{macrocode} + \eappto\tud@cdgeometry@hmargin{,layouthoffset=\the\Gm@layouthoffset}% + \eappto\tud@cdgeometry@vmargin{,layoutvoffset=\the\Gm@layoutvoffset}% + \tud@if@v@lower{2.03}{% + \edef\@tempa{% + \tud@cdgeometry@hmargin,% + \tud@cdgeometry@vmargin,% + \tud@cdgeometry@tudmargin,% + \tud@cdgeometry@ddcmargin,% + ignorehead,ignorefoot% + }% + \tud@setgeometry{\@tempa}% + \tud@savegeometry{tudareaddc}% + }{}% +% \end{macrocode} +% Danach folgt der Seitenstil, mit dem TUD-Kopf und der Standardfußzeile. +% \begin{macrocode} + \edef\@tempa{% + \tud@cdgeometry@hmargin,% + \tud@cdgeometry@vmargin,% + \tud@cdgeometry@tudmargin% + }% + \tud@setgeometry{\@tempa}% + \tud@savegeometry{tudarea}% +% \end{macrocode} +% Als letztes wird der Standardsatzspiegel erstellt. +% \begin{macrocode} + \edef\@tempa{% + \tud@cdgeometry@hmargin,% + \tud@cdgeometry@vmargin% + }% + \tud@setgeometry{\@tempa}% + \tud@savegeometry{stdarea}% +% \end{macrocode} +% Falls die (abermalige) Erstellung der Satzspiegel im Dokument erfolgt, sollte +% anschließend auch der richtige Satzspiegel wieder ausgewählt werden. +% \begin{macrocode} + \if@atdocument% + \ifstr{\tud@currentgeometry}{stdarea}{}{% + \expandafter\tud@loadgeometry\expandafter{\tud@currentgeometry}% + }% + \fi% + }% +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@@@process +% \end{macro}^^A \tud@cdgeometry@@process +% \begin{macro}{\tud@cdgeometry@hincl} +% \changes{v2.02}{2014/06/23}{geändert für das Paket \pkg{scrlayer-scrpage}}^^A +% \begin{macro}{\tud@cdgeometry@fincl} +% \begin{macro}{\tud@cdgeometry@mpincl} +% \changes{v2.04}{2015/03/09}{neu}^^A +% Diese Hilfsmakros werten die Optionen für das Einbeziehen von Kopf- und +% Fußzeile sowie der Randnotizen aus. +% \begin{macrocode} + \newcommand*\tud@cdgeometry@hincl{% + \if@hincl% + includehead=true% + \else% + includehead=false% + \fi% + }% + \newcommand*\tud@cdgeometry@fincl{% + \if@fincl% + includefoot=true% + \else% + includefoot=false% + \fi% + }% + \newcommand*\tud@cdgeometry@mpincl{% + \if@mincl% + includemp=true% + \else% + includemp=false% + \fi% + }% +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@mpincl +% \end{macro}^^A \tud@cdgeometry@fincl +% \end{macro}^^A \tud@cdgeometry@hincl +% Damit sind alle notwendigen Satzspiegel für die unterschiedlichen Seitenstile +% definiert. Im Normalfall werden durch \cs{tud@cdgeometry@@process} alle +% benötigten Satzspiegel erstellt. Mit dem Setzen des Seitenstils wird der +% jeweils richtige bzw. benötigte Satzspiegel ausgewählt. +% \begin{macrocode} +} +% \end{macrocode} +% \begin{macro}{\tud@BeforeSelectAnyPageStyle} +% \changes{v2.02}{2014/06/23}{neu}^^A +% \changes{v2.04}{2015/04/21}{Auswahl der Schriften für Fußbereich ergänzt}^^A +% \begin{macro}{\tud@currentgeometry} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Mit \cs{tud@BeforeSelectAnyPageStyle} wird beim Umschalten des Seitenstils +% gegebenenfalls der Satzspiegel geändert. Es wird der aktivierte Satzspiegel +% in dem Makro \cs{tud@currentgeometry} gesichert, um darauf zu einem späteren +% Zeitpunkt prüfen zu können. +% +% Für den Fall, dass das Dokument nicht ausschließlich mit dem Kopf im \CD +% auf jeder Seite gesetzt wird, muss der komplette vertikale Satzspiegel +% angepasst werden, sonst wäre der obere Rand optisch viel zu groß. Hierfür +% wird das Paket \pkg{geometry} genutzt. Durch \cs{tud@cdgeometry@@process} +% werden zwei~-- für die KOmpatibilitätsvariante drei~-- Layouts erstellt. +% Diese können mit \cs{loadgeometry}\marg{Stil} geladen werden. +% \begin{macrocode} +\newcommand*\tud@currentgeometry{} +\newcommand*\tud@BeforeSelectAnyPageStyle[1]{% +% \end{macrocode} +% Der \pgs{tudheadings}-Seitenstil wird mit dem Befehl \cs{newpairofpagestyles} +% derart definiert, dass zwischen \pgs{tudheadings} und \pgs{plain.tudheadings} +% auch mit \LaTeX-Standardseitenstilen \pgs{headings} bzw. \pgs{plain} +% umgeschaltet werden kann. Dies wird hiermit beachtet. +% \begin{macrocode} + \ifstr{#1}{\GetRealPageStyle{#1}}{% +% \end{macrocode} +% Für den Fall, das ein \pgs{tudheadings}-Seitenstil geladen werden soll, muss +% der dazugehörige Satzspiegel ausgewählt werden\dots +% \begin{macrocode} + \tud@if@tudheadings{#1}{% +% \end{macrocode} +% \dots wobei in der Version~v2.02 zwei unterschiedliche existierten, und +% abhängig von der Verwendung des \DDC-Logos im Fuß waren. +% \begin{macrocode} + \tud@if@v@lower{2.03}{% +% \end{macrocode} +% In diesem Fall werden die Seitenfußeinstellungen mit \cs{tud@ddc@check} in +% \cs{@tempb} geschrieben und abhängig davon der richtige Satzspiegel geladen. +% Dabei wird zuvor mit dem Wert aus \cs{tud@currentgeometry} geprüft, ob dies +% überhaupt notwendig ist. +% \begin{macrocode} + \tud@ddc@check% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist nicht aktiviert. +% \begin{macrocode} + \ifcase\@tempb\relax% \tud@ddc@foot@num=false + \ifstr{\tud@currentgeometry}{tudarea}{}{% + \tud@loadgeometry{tudarea}% + \gdef\tud@currentgeometry{tudarea}% + }% +% \end{macrocode} +% Das \DDC-Logo im Fuß ist aktiviert. +% \begin{macrocode} + \else% \tud@ddc@foot@num!=false + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@loadgeometry{tudareaddc}% + \gdef\tud@currentgeometry{tudareaddc}% + }% + \fi% +% \end{macrocode} +% Ab der Version~v2.03 ist nur noch ein Satzspiegel vonnöten. +% \begin{macrocode} + }{% + \ifstr{\tud@currentgeometry}{tudarea}{}{% + \tud@loadgeometry{tudarea}% + \gdef\tud@currentgeometry{tudarea}% + }% + }% +% \end{macrocode} +% Die Länge \cs{tud@len@areavskip} gibt an, wie groß die Differenz zwischen +% Kopfhöhe zwischen aktuellem und dem speziellen \pgs{tudheadings}-Seitenstil +% ist. Da diese in diesem Fall identisch sind, wird die Länge zu \cs{z@} +% gesetzt. +% \begin{macrocode} + \setlength\tud@len@areavskip{\z@}% +% \end{macrocode} +% Im Seitenfuß wird für die Seitenzahl und ggf. die Kolumnentitel die passende +% Schrift verwendet. +% \begin{macrocode} + \tud@font@koma@set{pagefoot}{\usekomafont{tudheadings}}% + \tud@font@koma@set{pagenumber}{\usekomafont{tudheadings}}% +% \end{macrocode} +% Dies ist der Fall, wenn kein \pgs{tudheadings}-Seitenstil geladen werden soll. +% Zusätzlich zum Satzspeigel wird außerdem der Seitenstil \pgs{empty} +% zurückgesetzt. +% \begin{macrocode} + }{% + \ifstr{\tud@currentgeometry}{stdarea}{}{% + \tud@loadgeometry{stdarea}% + \gdef\tud@currentgeometry{stdarea}% + }% +% \end{macrocode} +% Die Länge \cs{tud@len@areavskip} wird auf den berechneten Wert gesetzt. +% Nur für den Fall, dass die Kopfzeile zum Satzspiegel gerechnet wird und +% dieser nicht durch \pkg{typearea} berechnet wurde, muss diese Länge etwas +% angepasst werden. +% \begin{macrocode} + \setlength\tud@len@areavskip{\tud@len@areadiff}% + \ifnum\tud@cdgeometry@num>\@ne\relax% true/symmetric/twoside + \if@hincl% + \addtolength\tud@len@areavskip{% + \dimexpr-\headheight-\tud@len@headsep\relax% + }% + \fi% + \fi% +% \end{macrocode} +% Die Schriften für Seitenzahl und Kolumnentitel werden zurückgesetzt. +% \begin{macrocode} + \tud@font@koma@unset{pagefoot}% + \tud@font@koma@unset{pagenumber}% + }% +% \end{macrocode} +% Die Länge \cs{tud@len@areavskip} wird vorsichtshalber global gesetzt. +% \begin{macrocode} + \global\tud@len@areavskip=\tud@len@areavskip% + }{}% +} +% \end{macrocode} +% \end{macro}^^A \tud@currentgeometry +% \end{macro}^^A \tud@BeforeSelectAnyPageStyle +% \begin{macro}{\tud@AfterChangingArea} +% \changes{v2.04}{2015/03/10}{neu}^^A +% Der Befehl \cs{AfterCalculatingTypearea} wird durch das Paket \pkg{typearea} +% bereitgestellt. Die durch \pkg{typearea} berechneten Längenwerte für den +% Satzspiegel werden zur Weiterverarbeitung gesichert. Für die Erstellung des +% Satzspiegels wird das Paket \pkg{geometry} verwendet. Bei der entsprechenden +% Option (\opt{geometry=no}) wird jedoch der von \pkg{typearea} berechnete +% Satzspiegel an \pkg{geometry} weitergereicht. Somit wird es möglich, +% unabhängig vom genutzten Paket\footnote{\pkg{typearea} oder \pkg{geometry}} +% zur Festlegung des Satzspiegels, diesen innerhalb des Dokumentes zu ändern. +% \begin{macrocode} +\newcommand*\tud@AfterChangingArea{% + \tud@cdgeometry@@process% + \KOMAoptions{pagesize=\@pagesizelast}% +% \end{macrocode} +% Nachder Änderung des Satzspiegels werden alle Logoboxen neu erstellt. +% \begin{macrocode} + \global\@tud@mainlogo@settrue% +% \end{macrocode} +% Damit Änderungen am Satzspiegel im Dokument sicher übernommen werden, wird +% das Setzen des Satzspiegels forciert. Dafür wird \cs{tud@currentgeometry} +% zurückgesetzt und anschließend der aktuelle Seitenstil erneut geladen, um das +% erneute und korrekte Ausführen von \cs{tud@BeforeSelectAnyPageStyle} zu +% erzwingen. +% \begin{macrocode} + \gdef\tud@currentgeometry{}% + \expandafter\pagestyle\expandafter{\currentpagestyle}% +} +% \end{macrocode} +% \end{macro}^^A \tud@AfterChangingArea +% \begin{macro}{\tud@cdgeometry@init} +% \changes{v2.04}{2015/03/10}{neu}^^A +% Damit alle Satzspiegeleinstellungen korrekt vorgenommen und auch alle +% Klassenoptionen korrekt verarbeitet werden, wird die Berechnung erstmalig mit +% \cs{AtEndPreamble} am Ende der Präambel ausgeführt. Dies geschieht jedoch +% \emph{nicht}, wenn die \cls{standalone}-Klasse mit der Option \opt{crop} +% geladen wurde, um die Seitenränder nicht zu ändern. +% \begin{macrocode} +\newcommand*\tud@cdgeometry@init{% + \AtEndPreamble{% + \if@tud@x@standalone@crop% + \pagestyle{empty}% + \hoffset=-72.27pt% + \voffset=-72.27pt% + \topmargin=0pt% + \headheight=0pt% + \headsep=0pt% + \marginparsep=0pt% + \marginparwidth=0pt% + \footskip=0pt% + \marginparpush=0pt% + \oddsidemargin=0pt% + \evensidemargin=0pt% + \topskip=0pt% + \textheight=\maxdimen% + \let\tud@AfterChangingArea\relax% + \let\tud@cdgeometry@process\relax% + \else% +% \end{macrocode} +% Am Ende der Präambel wird der Satzspiegel des Dokumentes gesetzt. Dabei +% werden auch sowohl der benutzderdefinierte Satzspiegel als auch die durch +% \pkg{typearea} berechneten Einstellungen gesichert. +% \begin{macrocode} + \csuse{@ta@usegeometryfalse}% + \def\tud@reserved##1{% + \tud@setgeometry{% + \tud@cdgeometry@mpincl,% + \if@reversemargin% + reversemarginpar=true,% + \else% + reversemarginpar=false,% + \fi% + bindingoffset=\the\ta@bcor,% + \tud@cdgeometry@hincl,% + \tud@cdgeometry@fincl,% + \tud@x@geometry@init,% + driver=none% + }% + \addtolength\oddsidemargin{-\Gm@layouthoffset}% + \addtolength\evensidemargin{-\Gm@layouthoffset}% + \addtolength\topmargin{-\Gm@layoutvoffset}% + \tud@savegeometry{init@##1}% + }% +% \end{macrocode} +% Ist die Option \opt{geometry=custom} nicht aktiv, werden mit \cs{geometry} +% etwaig gemachte Einstellungen überschrieben. +% \begin{macrocode} + \begingroup% + \let\scr@grouplevel@test\@gobble% + \setlength\paperheight{\Gm@layoutheight}% + \setlength\paperwidth{\Gm@layoutwidth}% + \let\activateareas\relax% +% \end{macrocode} +% Der Kram ist dafür da, etwaige Warnungen von \pkg{typearea} aufgrund der +% fehlenden Wahl für die Satzspiegelaufteilung zu unterdrücken. +% \begin{macrocode} + \tud@x@ta@warnings@off% + \KOMAoptionOf[\def\@tempa]{typearea.\scr@pkgextension}{DIV}% + \def\@tempb{{0}}% + \ifx\@tempa\@tempb\relax% + \KOMAoptionOf[\def\@tempa]{typearea.\scr@pkgextension}{paper}% + \@for\@tempb:=\@tempa\do{% + \@tempswatrue% + \ifx\@tempb\defaultpapersize\relax% + \@tempswafalse% + \fi% + }% + \if@tempswa% + \KOMAoptions{DIV=11}% + \fi% + \fi% + \recalctypearea% + \tud@x@ta@warnings@on% + \edef\tud@x@geometry@init{% + left=\the\dimexpr\oddsidemargin+1in-\ta@bcor\relax,% + textwidth=\the\textwidth,% + marginparwidth=\the\marginparwidth,% + marginparsep=\the\marginparsep,% + bindingoffset=\the\ta@bcor,% + \if@hincl% + top=\the\dimexpr\topmargin+1in\relax,% + \else% + top=\the\dimexpr\topmargin% + +\headheight+\headsep+1in\relax,% + \fi% + headheight=\the\headheight,% + headsep=\the\headsep,% + textheight=\the\textheight,% + footskip=\the\footskip% + }% + \tud@reserved{typearea}% + \global\let\Gm@restore@@init@typearea\Gm@restore@@init@typearea% + \endgroup% +% \end{macrocode} +% Falls \opt{geometry=custom} aktiv ist, werden die Einstellungen übernommen. +% \begin{macrocode} + \tud@reserved{custom}% +% \end{macrocode} +% Nach einer Neuberechnung oder Änderung des Satzspiegels durch \pkg{typearea} +% werden die für die Seitenstile benötigten Satzspiegel mit \pkg{geometry} neu +% erstellt. +% \ToDo{Test für \cs{AfterRestoreareas} entfernen}[v3.18] +% \begin{macrocode} + \AfterCalculatingTypearea{\tud@AfterChangingArea}% + \AfterSettingArea{\tud@AfterChangingArea}% + \ifundef{\AfterRestoreareas}{}{% + \AfterRestoreareas{\tud@AfterChangingArea}% + }% +% \end{macrocode} +% Der Kopf im \CD der \TnUD erfordert einen eigenen Satzspiegel, der ggf. durch +% \cs{tud@BeforeSelectAnyPageStyle} aktiviert bzw. deaktiviert wird. +% \begin{macrocode} + \BeforeSelectAnyPageStyle{\tud@BeforeSelectAnyPageStyle{##1}}% + \tud@cdgeometry@process% + \fi + \let\tud@cdgeometry@init\relax% + }% +} +\AfterPackage!{scrlayer-scrpage}{\tud@cdgeometry@init} +% \end{macrocode} +% \end{macro}^^A \tud@cdgeometry@init +% Sollte das Laden des Paketes \pkg{geometry} verhindert werden, sind einige +% wenige Befehle vorzuhalten. +% \begin{macrocode} +\TUD@UnwindPackage{geometry}{% + \newif\ifGm@layout% + \newif\ifGm@showcrop% + \newif\ifGm@pass% + \let\Gm@layoutheight\paperheight% + \let\Gm@layoutwidth\paperwidth% + \let\Gm@layouthoffset\z@% + \let\Gm@layoutvoffset\z@% + \renewcommand*\tud@cdgeometry@@process{\tud@cdgeometry@set}% + \let\tud@BeforeSelectAnyPageStyle\@gobble% + \providecommand*\tud@setgeometry[1]{}% + \providecommand*\tud@savegeometry[1]{}% +} +% \end{macrocode} +% \begin{macro}{\cleardoubleoddpageusingstyle} +% \begin{macro}{\cleardoubleevenpageusingstyle} +% \begin{macro}{\cleardoublepageusingstyle} +% Damit die Satzspiegelumstellungen nicht durchgeführt werden, wenn durch die +% folgenden \KOMAScript-Befehle Leerseiten erzeugt werden, müssen diese minimal +% angepasst werden. +% \begin{macrocode} +\patchcmd{\cleardoubleoddpageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleoddpageusingstyle}} +\patchcmd{\cleardoubleevenpageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoubleevenpageusingstyle}} +\patchcmd{\cleardoublepageusingstyle}{\pagestyle}{% + \let\tud@BeforeSelectAnyPageStyle\@gobble\pagestyle% +}{}{\tud@patch@wrn{cleardoublepageusingstyle}} +% \end{macrocode} +% \end{macro}^^A \cleardoublepageusingstyle +% \end{macro}^^A \cleardoubleevenpageusingstyle +% \end{macro}^^A \cleardoubleoddpageusingstyle +% \begin{macro}{\tud@ddc@enlargepage} +% \changes{v2.02}{2014/06/23}{neu}^^A +% Der Befehl wird nur für den Kompatibilitätsmodus zur Version~v2.02 benötigt +% und für die Titelkopf- und Kapitelseiten verwendet. Er verkleinert die +% entsprechenden Seiten, wenn für diese mit dem Befehl \cs{thispagestyle} einer +% der \pgs{tudheadings}-Seitenstile gewählt wird \emph{und} das \DDC-Logo im +% Fuß gesetzt werden soll. Der entsprechende Seitenstil kann im optionalen +% Argument angegeben werden, wenn der Befehl bedingt ausgeführt werden soll. +% \begin{macrocode} +\tud@if@v@lower{2.03}{% + \newcommand*\tud@ddc@enlargepage[1][]{% + \tud@if@tudheadings{#1}{% + \ifstr{\tud@currentgeometry}{tudareaddc}{}{% + \tud@ddc@check% + \ifcase\@tempb\relax\else% \tud@ddc@foot@num!=false + \enlargethispage{-\tud@len@ddcdiff}% + \fi% + }% + }{}% + }% +}{} +% \end{macrocode} +% \end{macro}^^A \tud@ddc@enlargepage +% +% \iffalse +%</class&body> +% \fi +% +% \Finale +% +\endinput |