|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Makros zur Berechnung und Ausgabe einer Zwischensumme bei langen Tabellen
|
|
% Der Hack der longtable Ausgabe ist von Heiko Oberdiek, das Paket zref auch.
|
|
% ---<(kaimartin)>---(August, 2007)
|
|
%
|
|
% - Dezimaltrennzeichenn nur noch "." by scripts_at_gpl.coulmann.de 2010-12
|
|
% (raw_numbers patch)
|
|
% - \Wert -> default Wert 0, by scripts_at_gpl.coulmann.de 2009-08
|
|
% wenn kein Wert uebergebenn wird, dies
|
|
% ermoeglicht das Ausgeben von Tabellen ohne
|
|
% Preise (z.b. Lieferscheine)
|
|
% - keine Ausgabe der Zwischensumme, wenn 0
|
|
% - neu: \brutto zur Ausgabe von Bruttopreisen by scripts_at_gpl.coulmann.de 2009-07
|
|
% - Anpassungen fuer fancy LaTeX by scripts_at_gpl.coulmann.de 2009-03
|
|
%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Diese Datei steht unter der GPL-Lizenz, Version 3
|
|
% siehe http://www.gnu.de/licenses/gpl-3.0.html
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\usepackage{etex} % Damit Marken verwendet werden koennen
|
|
\usepackage[savepos,user]{zref} % Um die jeweils aktuelle Position zu merken
|
|
\usepackage{fltpoint} % Rechnen mit Komma-Zahlen
|
|
\usepackage{numprint} % Zahlen formatiert ausgeben
|
|
\usepackage{eurosym} % Das Euro-Zeichen
|
|
\usepackage{calc} % Fuer das Makro \widthof{}
|
|
|
|
% Vorlagen sind auf raw_num Patch ausgelegt daher nur noch . als Trennzeichen
|
|
\newcommand{\DecimalSign}{.}
|
|
\fpDecimalSign{\DecimalSign}
|
|
|
|
% Globale Einstellungen fuer numprint
|
|
\npstylegerman % Deutsche Zahlenformatierung, in der Ausgabe
|
|
\nprounddigits{2} % Zwei Nachkommasstellen
|
|
|
|
% \leer ist bereits in letter.tex definiert, wenn nicht muss es hier passieren
|
|
% \newcommand{\leer}{}
|
|
|
|
%%%%%%%%%%%%%%Befehle zur Berechnung der Zwischensumme%%%%%%%%%%%%%%%%%%%%%%%
|
|
\newcommand*\laufsumme{0}
|
|
\newcommand*\resetlaufsumme{\global\def\laufsumme{0}}
|
|
\newcommand*\addlaufsumme[1]{\fpAdd{\laufsumme}{\laufsumme}{#1}%
|
|
\global\let\laufsumme\laufsumme}
|
|
\newcommand*\printwert[1]{
|
|
\ifthenelse{\NoValue > 0}{
|
|
}{
|
|
\numprint{#1}
|
|
}
|
|
}
|
|
|
|
|
|
%%%%%%%%Plaintex-Hack fuer Positionierung der Zwischensummen%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
\makeatletter % Das at-Zeichen in Variablen zulassen
|
|
|
|
% Variablen bereit stellen
|
|
\newdimen\drx
|
|
\newdimen\dry
|
|
|
|
\newmarks\ltm@marks
|
|
\def\ltm@setmarks#1{%
|
|
\marks\ltm@marks{#1}%
|
|
}
|
|
\def\ltm@getmarks{%
|
|
\botmarks\ltm@marks
|
|
}
|
|
|
|
|
|
% Den aktuellen Wert der Laufsumme berechnen und merken
|
|
\newcommand*{\Wert}[1]{%
|
|
\ifthenelse{\equal{#1}{\leer}}{
|
|
\addlaufsumme{0}% Den uebergebenen Wert zur Laufsumme addieren
|
|
\expandafter\ltm@setmarks\expandafter{\laufsumme}% Die Laufsumme merken
|
|
}{
|
|
\printwert{#1}% Ausgabe des Werts vor Ort
|
|
\addlaufsumme{#1}% Den uebergebenen Wert zur Laufsumme addieren
|
|
\expandafter\ltm@setmarks\expandafter{\laufsumme}% Die Laufsumme merken
|
|
}
|
|
}
|
|
|
|
% Merken der aktuellen Position
|
|
\newcommand*{\MarkZwsumPos}{%
|
|
\leavevmode
|
|
\zsavepos{zwsumpos\thepage}%
|
|
\zrefused{zwsumpos\thepage}%
|
|
}
|
|
|
|
|
|
% Ausgabe der Zwischensumme
|
|
\def\ltm@insertfoot#1{%
|
|
\vbox to\z@{%
|
|
\vss
|
|
\hb@xt@\z@{%
|
|
\color@begingroup
|
|
\zsavepos{tabende\thepage}% % Die aktuelle Position merken
|
|
\drx=0sp
|
|
\dry=0sp
|
|
% Die aktuelle Position abziehen und die gemerkte addieren
|
|
\advance \drx by -\zposx{tabende\thepage}sp
|
|
\advance \drx by \zposx{zwsumpos\thepage}sp
|
|
\advance \dry by -\zposy{tabende\thepage}sp
|
|
\advance \dry by \zposy{zwsumpos\thepage}sp
|
|
\smash{\kern\drx\raise\dry%
|
|
%\hbox{\makebox[\widthof{ \currency}][r]{\printwert{#1} \currency}}% % mit Waehrungszeichen
|
|
\hbox{\printwert{#1} }% % ohne Waehrungszeichen
|
|
}% end smash
|
|
\color@endgroup
|
|
}%
|
|
}%
|
|
\vspace{4mm}
|
|
}
|
|
|
|
% Ausgabe des Uebertrags
|
|
% Wie die Ausgabe der Zwischensumme, nur ohne neu gemerkte Position
|
|
\def\ltm@inserthead#1{%
|
|
\vbox to\z@{%
|
|
\vss
|
|
\hb@xt@\z@{%
|
|
\color@begingroup
|
|
\drx=0sp
|
|
\dry=0sp
|
|
% Die Position des Tabellenendes abziehen und zur gemerkten gehen
|
|
\advance \drx by -\zposx{tabende\thepage}sp
|
|
\advance \drx by \zposx{zwsumpos\thepage}sp
|
|
\advance \dry by -\zposy{tabende\thepage}sp
|
|
\advance \dry by \zposy{zwsumpos\thepage}sp
|
|
\smash{\kern\drx\raise\dry%
|
|
% Die eigentliche Ausgabe.
|
|
% Rechtsbuendig und um die Breite der Währung verschoben.
|
|
%\hbox{\makebox[\widthof{ \currency}][r]{\printwert{#1} \currency}}%
|
|
\hbox{\printwert{#1}}% % ohne Waehrungszeichen
|
|
%\hbox{\makebox[\widthof{ \printwert{#1}}][r]{\printwert{#1}\rule{0mm}{10mm} }}% % ohne Waehrungszeichen
|
|
}% end smash
|
|
\color@endgroup
|
|
}%
|
|
}%
|
|
\vspace{1mm}
|
|
}
|
|
|
|
|
|
\def\ltm@lastfoot{\ltm@insertfoot\ltm@getmarks}
|
|
\def\ltm@foot{\ltm@insertfoot{\ltm@getmarks}}
|
|
\def\ltm@head{\ltm@inserthead{\ltm@getmarks}}
|
|
|
|
|
|
% Ueberschreiben der Output-Routine von longtable
|
|
\def\LT@output{%
|
|
\ifnum\outputpenalty <-\@Mi
|
|
\ifnum\outputpenalty > -\LT@end@pen
|
|
\LT@err{floats and marginpars %
|
|
not allowed in a longtable}\@ehc
|
|
\else
|
|
\setbox\z@\vbox{\unvbox\@cclv}%
|
|
\ifdim \ht\LT@lastfoot>\ht\LT@foot
|
|
\dimen@\pagegoal
|
|
\advance\dimen@-\ht\LT@lastfoot
|
|
\ifdim\dimen@<\ht\z@
|
|
\setbox\@cclv\vbox{%
|
|
\unvbox\z@\copy\LT@foot\ltm@foot\vss
|
|
}%
|
|
\@makecol
|
|
\@outputpage
|
|
\setbox\z@\vbox{\box\LT@head}%
|
|
\fi
|
|
\fi
|
|
\global\@colroom\@colht
|
|
\global\vsize\@colht
|
|
\vbox{%
|
|
\unvbox\z@
|
|
\box\ifvoid\LT@lastfoot
|
|
\LT@foot\ltm@foot
|
|
\else
|
|
\LT@lastfoot\ltm@lastfoot
|
|
\fi
|
|
}%
|
|
\fi
|
|
\else
|
|
\setbox\@cclv\vbox{%
|
|
\unvbox\@cclv\copy\LT@foot\ltm@foot\vss
|
|
}%
|
|
\@makecol
|
|
\@outputpage
|
|
\global\vsize\@colroom
|
|
\copy\LT@head\ltm@head
|
|
\fi
|
|
}
|
|
|
|
\newcommand\BruttoSellPrice[2]{
|
|
\fpAdd{\tax}{#2}{100}
|
|
\fpDiv{\taxF}{\tax}{100}
|
|
\fpMul{\result}{#1}{\taxF}
|
|
\numprint{\result}
|
|
}
|
|
\newcommand\BruttoWert[2]{
|
|
\fpAdd{\tax}{#2}{100}
|
|
\fpDiv{\taxF}{\tax}{100}
|
|
\fpMul{\rawresult}{#1}{\taxF}
|
|
\Wert{\rawresult}
|
|
}
|
|
|
|
|
|
\newcommand\BruttoLineSum[4]{
|
|
\fpAdd{\tax}{#4}{100}
|
|
\fpDiv{\taxF}{\tax}{100}
|
|
\fpMul{\result}{#1}{\taxF}
|
|
\fpMul{\result}{#2}{\result}
|
|
\fpSub{\rabatt}{100}{#3}
|
|
\fpDiv{\rabatt}{\rabatt}{100}
|
|
\fpMul{\result}{\result}{\rabatt}
|
|
\Wert{\result}
|
|
}
|
|
|
|
% \ifthenelse{\equal{<%p_discount%>}{0}}{}{ -<%p_discount%>\%} &
|
|
% %<%sellprice%>
|
|
% \Wert{<%linetotal%>} % Zeilensumme
|
|
|
|
% \fpMul{\result}{#1}{1.19}
|
|
% \fpMul{\resultt}{#2}{\result}
|
|
% \fpSub{\rabatt}{100}{#3}
|
|
% \fpDiv{\rabattt}{\rabatt}{100}
|
|
% \fpMul{\resulttt}{\resultt}{\rabattt}
|
|
% %\fpRound{\roundresult}{\result}{3}
|
|
% %\roundresult
|
|
% \resulttt
|
|
|
|
\makeatother % Das at-Zeichen in Variablen wieder verbieten
|
|
%%%%%%%%%%%%%%%%%%%%Ende plaintex-Hack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|