1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 % Makros zur Berechnung und Ausgabe einer Zwischensumme bei langen Tabellen
3 % Der Hack der longtable Ausgabe ist von Heiko Oberdiek, das Paket zref auch.
4 % ---<(kaimartin)>---(August, 2007)
5 %Angepasst an 2.6.3 von n.simon@linet-services.de, 15. November 2011
6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7 % Diese Datei steht unter der GPL-Lizenz, Version 3
8 % siehe http://www.gnu.de/licenses/gpl-3.0.html
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 \usepackage{etex} % Damit Marken verwendet werden koennen
12 \usepackage[savepos,user]{zref} % Um die jeweils aktuelle Position zu merken
13 \usepackage{fltpoint} % Rechnen mit Komma-Zahlen
14 \usepackage{numprint} % Zahlen formatiert ausgeben
15 \usepackage{eurosym} % Das Euro-Zeichen
16 \usepackage{calc} % Fuer das Makro \widthof{}
18 % Globale Einstellungen fuer numprint
19 \nprounddigits{2} % Zwei Nachkommasstellen
20 %% ",00" nicht durch ",--" ersetzen
25 \newcommand{\lxNumberFormatGermanInput}{\makeatletter\renewcommand*\nprt@ignorelist{.}\renewcommand*\nprt@dotlist{,}\makeatother}
26 \newcommand{\lxNumberFormatEnglishInput}{\makeatletter\renewcommand*\nprt@ignorelist{,}\renewcommand*\nprt@dotlist{.}\makeatother}
28 \newcommand{\lxNumberFormatGerman}{\lxNumberFormatGermanInput\npthousandsep{.}\npdecimalsign{,}}
29 \newcommand{\lxNumberFormatGermanNoSeparator}{\lxNumberFormatGermanInput\npthousandsep{}\npdecimalsign{,}}
31 \newcommand{\lxNumberFormatEnglish}{\lxNumberFormatEnglishInput\npthousandsep{,}\npdecimalsign{.}}
32 \newcommand{\lxNumberFormatEnglishNoSeparator}{\lxNumberFormatEnglishInput\npthousandsep{}\npdecimalsign{.}}
34 \newcommand{\lxNumberFormatToUse}{\lxNumberFormatGerman}
36 % Paketoptionen: Dezimaltrennzeichen und Tausendertrennzeichen
37 \DeclareOption{german}{\renewcommand{\lxNumberFormatToUse}{\lxNumberFormatGerman}}
38 \DeclareOption{germannosep}{\renewcommand{\lxNumberFormatToUse}{\lxNumberFormatGermanNoSeparator}}
39 \DeclareOption{english}{\renewcommand{\lxNumberFormatToUse}{\lxNumberFormatEnglish}}
40 \DeclareOption{englishnosep}{\renewcommand{\lxNumberFormatToUse}{\lxNumberFormatEnglishNoSeparator}}
46 %%%%%%%%%%%%%%Befehle zur Berechnung der Zwischensumme%%%%%%%%%%%%%%%%%%%%%%%
47 \newcommand*\laufsumme{0}
48 \newcommand*\resetlaufsumme{\global\def\laufsumme{0}}
49 \newcommand*\addlaufsumme[1]{\fpAdd{\laufsumme}{\laufsumme}{#1}%
50 \global\let\laufsumme\laufsumme}
51 \newcommand*\printwert[1]{%
53 \lxNumberFormatEnglishInput%
57 %%%%%%%%Plaintex-Hack fuer Positionierung der Zwischensummen%%%%%%%%%%%%%%%%%%
60 \makeatletter % Das at-Zeichen in Variablen zulassen
62 % Variablen bereit stellen
75 % Den aktuellen Wert der Laufsumme berechnen und merken
76 \newcommand*{\Wert}[1]{%
77 \addlaufsumme{#1}% Den uebergebenen Wert zur Laufsumme addieren
78 \expandafter\ltm@setmarks\expandafter{\laufsumme}% Die Laufsumme merken
81 % Merken der aktuellen Position
82 \newcommand*{\MarkZwsumPos}{%
84 \zsavepos{zwsumpos\thepage}%
85 \zrefused{zwsumpos\thepage}%
88 \newcommand*{\MarkUebertrPos}{%
90 \zsavepos{uebertrpos\thepage}%
91 \zrefused{uebertrpos\thepage}%
95 % Ausgabe der Zwischensumme
96 \def\ltm@insertfoot#1{%
101 \zsavepos{tabende\thepage}% % Die aktuelle Position merken
104 % Die aktuelle Position abziehen und die gemerkte addieren
105 \advance \drx by -\zposx{tabende\thepage}sp
106 \advance \drx by \zposx{zwsumpos\thepage}sp
107 \advance \dry by -\zposy{tabende\thepage}sp
108 \advance \dry by \zposy{zwsumpos\thepage}sp
109 \smash{\kern\drx\raise\dry%
110 \hbox{\makebox[0cm][r]{Zwischensumme:\hspace*{2em}\printwert{#1} \currency}}%
117 % Ausgabe des Uebertrags
118 % Wie die Ausgabe der Zwischensumme, nur ohne neu gemerkte Position
119 \def\ltm@inserthead#1{%
124 \zsavepos{tabstart\thepage}% % Die aktuelle Position merken
127 % Die Position des Tabellenendes abziehen und zur gemerkten gehen
128 \advance \drx by -\zposx{tabstart\thepage}sp
129 \advance \drx by \zposx{uebertrpos\thepage}sp
130 \advance \dry by -\zposy{tabstart\thepage}sp
131 \advance \dry by \zposy{uebertrpos\thepage}sp
132 \smash{\kern\drx\raise\dry%
133 \hbox{\makebox[0cm][r]{Übertrag:\hspace*{2em}\printwert{#1} \currency}}%
141 \def\ltm@foot{\ltm@insertfoot{\ltm@getmarks}}
142 \def\ltm@head{\ltm@inserthead{\ltm@getmarks}}
145 % Ueberschreiben der Output-Routine von longtable
147 \ifnum\outputpenalty <-\@Mi
148 \ifnum\outputpenalty > -\LT@end@pen
149 \LT@err{floats and marginpars %
150 not allowed in a longtable}\@ehc
152 \setbox\z@\vbox{\unvbox\@cclv}%
153 \ifdim \ht\LT@lastfoot>\ht\LT@foot
155 \advance\dimen@-\ht\LT@lastfoot
158 \unvbox\z@\copy\LT@foot\ltm@foot\vss
162 \setbox\z@\vbox{\box\LT@head}%
165 \global\@colroom\@colht
169 \box\ifvoid\LT@lastfoot
172 \LT@lastfoot\ltm@lastfoot
178 \unvbox\@cclv\copy\LT@foot\ltm@foot\vss
182 \global\vsize\@colroom
183 \copy\LT@head\ltm@head
187 \makeatother % Das at-Zeichen in Variablen wieder verbieten
188 %%%%%%%%%%%%%%%%%%%%Ende plaintex-Hack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%