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)
6 % - Dezimaltrennzeichenn nur noch "." by scripts_at_gpl.coulmann.de 2010-12
8 % - \Wert -> default Wert 0, by scripts_at_gpl.coulmann.de 2009-08
9 % wenn kein Wert uebergebenn wird, dies
10 % ermoeglicht das Ausgeben von Tabellen ohne
11 % Preise (z.b. Lieferscheine)
12 % - keine Ausgabe der Zwischensumme, wenn 0
13 % - neu: \brutto zur Ausgabe von Bruttopreisen by scripts_at_gpl.coulmann.de 2009-07
14 % - Anpassungen fuer fancy LaTeX by scripts_at_gpl.coulmann.de 2009-03
16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17 % Diese Datei steht unter der GPL-Lizenz, Version 3
18 % siehe http://www.gnu.de/licenses/gpl-3.0.html
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21 \usepackage{etex} % Damit Marken verwendet werden koennen
22 \usepackage[savepos,user]{zref} % Um die jeweils aktuelle Position zu merken
23 \usepackage{fltpoint} % Rechnen mit Komma-Zahlen
24 \usepackage{numprint} % Zahlen formatiert ausgeben
25 \usepackage{eurosym} % Das Euro-Zeichen
26 \usepackage{calc} % Fuer das Makro \widthof{}
28 % Vorlagen sind auf raw_num Patch ausgelegt daher nur noch . als Trennzeichen
29 \newcommand{\DecimalSign}{.}
30 \fpDecimalSign{\DecimalSign}
32 % Globale Einstellungen fuer numprint
33 \npstylegerman % Deutsche Zahlenformatierung, in der Ausgabe
34 \nprounddigits{2} % Zwei Nachkommasstellen
36 % \leer ist bereits in letter.tex definiert, wenn nicht muss es hier passieren
37 % \newcommand{\leer}{}
39 %%%%%%%%%%%%%%Befehle zur Berechnung der Zwischensumme%%%%%%%%%%%%%%%%%%%%%%%
40 \newcommand*\laufsumme{0}
41 \newcommand*\resetlaufsumme{\global\def\laufsumme{0}}
42 \newcommand*\addlaufsumme[1]{\fpAdd{\laufsumme}{\laufsumme}{#1}%
43 \global\let\laufsumme\laufsumme}
44 \newcommand*\printwert[1]{
45 \ifthenelse{\NoValue > 0}{
52 %%%%%%%%Plaintex-Hack fuer Positionierung der Zwischensummen%%%%%%%%%%%%%%%%%%
55 \makeatletter % Das at-Zeichen in Variablen zulassen
57 % Variablen bereit stellen
70 % Den aktuellen Wert der Laufsumme berechnen und merken
71 \newcommand*{\Wert}[1]{%
72 \ifthenelse{\equal{#1}{\leer}}{
73 \addlaufsumme{0}% Den uebergebenen Wert zur Laufsumme addieren
74 \expandafter\ltm@setmarks\expandafter{\laufsumme}% Die Laufsumme merken
76 \printwert{#1}% Ausgabe des Werts vor Ort
77 \addlaufsumme{#1}% Den uebergebenen Wert zur Laufsumme addieren
78 \expandafter\ltm@setmarks\expandafter{\laufsumme}% Die Laufsumme merken
82 % Merken der aktuellen Position
83 \newcommand*{\MarkZwsumPos}{%
85 \zsavepos{zwsumpos\thepage}%
86 \zrefused{zwsumpos\thepage}%
90 % Ausgabe der Zwischensumme
91 \def\ltm@insertfoot#1{%
96 \zsavepos{tabende\thepage}% % Die aktuelle Position merken
99 % Die aktuelle Position abziehen und die gemerkte addieren
100 \advance \drx by -\zposx{tabende\thepage}sp
101 \advance \drx by \zposx{zwsumpos\thepage}sp
102 \advance \dry by -\zposy{tabende\thepage}sp
103 \advance \dry by \zposy{zwsumpos\thepage}sp
104 \smash{\kern\drx\raise\dry%
105 %\hbox{\makebox[\widthof{ \currency}][r]{\printwert{#1} \currency}}% % mit Waehrungszeichen
106 \hbox{\printwert{#1} }% % ohne Waehrungszeichen
114 % Ausgabe des Uebertrags
115 % Wie die Ausgabe der Zwischensumme, nur ohne neu gemerkte Position
116 \def\ltm@inserthead#1{%
123 % Die Position des Tabellenendes abziehen und zur gemerkten gehen
124 \advance \drx by -\zposx{tabende\thepage}sp
125 \advance \drx by \zposx{zwsumpos\thepage}sp
126 \advance \dry by -\zposy{tabende\thepage}sp
127 \advance \dry by \zposy{zwsumpos\thepage}sp
128 \smash{\kern\drx\raise\dry%
129 % Die eigentliche Ausgabe.
130 % Rechtsbuendig und um die Breite der Währung verschoben.
131 %\hbox{\makebox[\widthof{ \currency}][r]{\printwert{#1} \currency}}%
132 \hbox{\printwert{#1}}% % ohne Waehrungszeichen
133 %\hbox{\makebox[\widthof{ \printwert{#1}}][r]{\printwert{#1}\rule{0mm}{10mm} }}% % ohne Waehrungszeichen
142 \def\ltm@lastfoot{\ltm@insertfoot\ltm@getmarks}
143 \def\ltm@foot{\ltm@insertfoot{\ltm@getmarks}}
144 \def\ltm@head{\ltm@inserthead{\ltm@getmarks}}
147 % Ueberschreiben der Output-Routine von longtable
149 \ifnum\outputpenalty <-\@Mi
150 \ifnum\outputpenalty > -\LT@end@pen
151 \LT@err{floats and marginpars %
152 not allowed in a longtable}\@ehc
154 \setbox\z@\vbox{\unvbox\@cclv}%
155 \ifdim \ht\LT@lastfoot>\ht\LT@foot
157 \advance\dimen@-\ht\LT@lastfoot
160 \unvbox\z@\copy\LT@foot\ltm@foot\vss
164 \setbox\z@\vbox{\box\LT@head}%
167 \global\@colroom\@colht
171 \box\ifvoid\LT@lastfoot
174 \LT@lastfoot\ltm@lastfoot
180 \unvbox\@cclv\copy\LT@foot\ltm@foot\vss
184 \global\vsize\@colroom
185 \copy\LT@head\ltm@head
189 \newcommand\BruttoSellPrice[2]{
190 \fpAdd{\tax}{#2}{100}
191 \fpDiv{\taxF}{\tax}{100}
192 \fpMul{\result}{#1}{\taxF}
195 \newcommand\BruttoWert[2]{
196 \fpAdd{\tax}{#2}{100}
197 \fpDiv{\taxF}{\tax}{100}
198 \fpMul{\rawresult}{#1}{\taxF}
203 \newcommand\BruttoLineSum[4]{
204 \fpAdd{\tax}{#4}{100}
205 \fpDiv{\taxF}{\tax}{100}
206 \fpMul{\result}{#1}{\taxF}
207 \fpMul{\result}{#2}{\result}
208 \fpSub{\rabatt}{100}{#3}
209 \fpDiv{\rabatt}{\rabatt}{100}
210 \fpMul{\result}{\result}{\rabatt}
214 % \ifthenelse{\equal{<%p_discount%>}{0}}{}{ -<%p_discount%>\%} &
216 % \Wert{<%linetotal%>} % Zeilensumme
218 % \fpMul{\result}{#1}{1.19}
219 % \fpMul{\resultt}{#2}{\result}
220 % \fpSub{\rabatt}{100}{#3}
221 % \fpDiv{\rabattt}{\rabatt}{100}
222 % \fpMul{\resulttt}{\resultt}{\rabattt}
223 % %\fpRound{\roundresult}{\result}{3}
227 \makeatother % Das at-Zeichen in Variablen wieder verbieten
228 %%%%%%%%%%%%%%%%%%%%Ende plaintex-Hack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%