% \CheckSum{101}
% \iffalse meta-comment
% ======================================================================
% scrkernel-pseudolengths.dtx
% Copyright (c) Markus Kohm, 2006-2017
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% scrkernel-pseudolengths.dtx
% Copyright (c) Markus Kohm, 2006-2017
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
% Die neuste Version dieser Lizenz ist
% http://www.latex-project.org/lppl.txt
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
% Version 2005/12/01 oder spaeter und dieses Werks.
%
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
% (allein durch den Autor verwaltet).
%
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
%
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
% ======================================================================
% \fi
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
% Digits \0\1\2\3\4\5\6\7\8\9
% Exclamation \! Double quote \" Hash (number) \#
% Dollar \$ Percent \% Ampersand \&
% Acute accent \' Left paren \( Right paren \)
% Asterisk \* Plus \+ Comma \,
% Minus \- Point \. Solidus \/
% Colon \: Semicolon \; Less than \<
% Equals \= Greater than \> Question mark \?
% Commercial at \@ Left bracket \[ Backslash \\
% Right bracket \] Circumflex \^ Underscore \_
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
% \iffalse
%%% From File: $Id: scrkernel-pseudolengths.dtx 2640 2017-05-08 09:36:55Z kohm $
%
%<*body>
% \fi
%
% \subsection{Anweisungen für Pseudo-Längen}
%
% Zu Berechnung der Feldpositionen werden verschiedene Dimensions-Variablen
% benötigt. Um jedoch nicht unnötig viele Längenregister zu verbrauchen, wird
% hier mit einer Pseudo-Längen-Arithmetik gearbeitet.
%
% \begin{macro}{\@newplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% \changes{v2.8q}{2001/10/06}{Kompatibilität zu \texttt{scrlettr.cls}^^A
% aufgegeben}
% Dieses Makro definiert eine neue Pseude-Länge und setzt sie auf den
% Wert 0. Eine Pseudo-Länge ist ein Makro, das eine Länge enthält.
% \begin{macrocode}
\newcommand*{\@newplength}[1]{%
\@ifundefined{ltr@len@#1}{%
\expandafter\let\csname ltr@len@#1\endcsname=\z@%
}{%
% \ClassError{scrlttr2%
% \PackageError{scrletter%
}{%
pseudo-length \expandafter\string\csname ltr@len@#1\endcsname
already defined%
}{%
You tried to define a new pseudo-length using
\string\@newplength\MessageBreak
which is already defined. Try another name or
better\MessageBreak
Don't use this KOMA-Script internal macro}%
}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\useplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% \changes{v2.97c}{2007/09/17}{\cs{dimexpr} statt \cs{number} verwendet,
% wenn \eTeX{} verwendet wird}
% Natürlich muss auf eine solche Pseudo-Länge auch wieder lesend
% zugeriffen werden können. Wir definieren dies hier so, dass es
% außerdem möglich ist, ein Vorzeichen oder einen Faktor zu verwenden. Dafür
% wird allerdings \eTeX{} benötigt.
% \begin{macrocode}
\scr@ifundefinedorrelax{dimexpr}{%
\newcommand*{\useplength}[1]{%
\number \csname ltx@len@#1\endcsname\relax}%
}{%
\newcommand*{\useplength}[1]{%
\dimexpr \csname ltr@len@#1\endcsname\relax}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\setlengthtoplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% Eine echte Länge soll auf das Vielfache einer Pseudo-Länge gesetzt
% werden. Dabei wird der Faktor als optionaler Parameter übergeben.
% Der erste obligatorische Parameter ist die Länge, der zweite
% obligatorische Parameter ist die Pseudo-Länge.
% \begin{macrocode}
\newcommand*{\setlengthtoplength}[3][]{%
\setlength{#2}{\useplength{#3}}%
\setlength{#2}{#1#2}}
% \end{macrocode}
%
% \begin{macro}{\@setplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% Natürlich wird ebenfalls eine Möglichkeit benötigt, einer
% Pseudo-Länge einen Wert zuzuweisen. Dies geschieht unter lokaler
% Anwendung einer Länge, damit sichergestellt ist, dass eine
% Längenangabe übergeben wird. Dabei wird das zuvor definierte Makro
% \cs{setlengthtoplength} verwendet.
% \begin{macrocode}
\newcommand*{\@setplength}[3][]{%
\begingroup%
\setlength{\@tempskipa}{#3}%
\setlength{\@tempskipa}{#1\@tempskipa}%
\edef\@tempa{\noexpand\endgroup%
\noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
\noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
}%
\@tempa%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\addtolengthplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% Wenn wir schon dabei sind, soll statt dem Setzen auch das Addieren
% funktionieren. Hier ist die Erschwernis, dass der Faktor nur für
% die Pseudo-Länge und nicht für das Endergebnis gelten soll.
% \begin{macrocode}
\newcommand*{\addtolengthplength}[3][]{%
\begingroup%
\setlengthtoplength[{#1}]{\@tempskipa}{#3}%
\edef\@tempa{\endgroup%
\noexpand\addtolength{#2}{\the\@tempskipa}}%
\@tempa%
}
% \end{macrocode}
%
% \begin{macro}{\@addtoplength}
% \changes{v2.8q}{2001/10/06}{Neu}^^A
% Ebenso wird ein Makro benötigt, mit dem zu einer Pseudo-Länge das
% Vielfache eines Wertes addiert werden kann.
% \begin{macrocode}
\newcommand*{\@addtoplength}[3][]{%
\begingroup%
\setlength{\@tempskipa}{#3}%
\setlength{\@tempskipa}{#1\@tempskipa}%
\addtolengthplength{\@tempskipa}{#2}%
\edef\@tempa{\noexpand\endgroup%
\noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*%
\noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}%
}%
\@tempa%
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \iffalse
%
% \fi
%
% \iffalse
%
% \fi
%
% \Finale
%
\endinput
%
% end of file `scrkernel-pseudolengths.dtx'
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End: