%% %% A DANTE-Edition example %% %% Beispiel 06-00-32 auf Seite 196. %% %% Copyright (C) 2010 H. Voss %% %% It may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% %% See http://www.latex-project.org/lppl.txt for details. %% %%Run also: >> << % Show page(s) 1,2 \documentclass[]{article} \pagestyle{empty} \setlength\textwidth{173.82971pt} \usepackage[utf8]{inputenc}% adapt maybe \usepackage[paper=70mm:88mm,pagesize]{typearea} \usepackage[utf8]{inputenc}% eventuell anpassen \usepackage[ngerman]{babel} \setlength\parindent{0pt} \usepackage{etex} % Damit Marken verwendet werden koennen \usepackage{ltxtable} \usepackage[savepos,user]{zref} % Um die aktuelle Position zu merken \usepackage{fltpoint} % Rechnen mit Komma-Zahlen \usepackage{calc} % Fuer das Makro \widthof \usepackage{numprint} % Zahlen formatiert ausgeben \usepackage{eurosym} % Das Euro-Zeichen % Globale Einstellungen fuer numprint \npstylegerman % Deutsche Zahlenformatierung \nprounddigits{2} % Zwei Nachkommasstellen \npreplacenull{---} % Buchhalter-Strich statt Nachkomma-Nullen %%%%%%%%%%%%%%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]{\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]{% \printwert{#1}% Ausgabe des Werts vor Ort \addlaufsumme{#1}% Den uebergebenen Wert zur Laufsumme addieren \expandafter\ltm@setmarks\expandafter{\laufsumme}% 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{ \euro}][r]{% \printwert{#1} \euro}}% } \color@endgroup }% }% } % 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 \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 des Euro-Zeichens verschoben. \hbox{\makebox[\widthof{ \euro}][r]{% \printwert{#1} \euro}}% } \color@endgroup }% }% } \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 } \makeatother % Das at-Zeichen in Variablen wieder verbieten %%%%%%%%%%%%%%%%%%%%Ende plaintex-Hack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{longtable} \begin{document} \resetlaufsumme \begin{longtable}{p{0.7\linewidth}r} links & rechts \endfirsthead Übertrag & \\ \endhead Zwischensumme: & \MarkZwsumPos \\ \endfoot Summe: &\MarkZwsumPos \\ \endlastfoot Ein beliebiger einleitender Text zu Beginn der Spalte \ldots. & \Wert{1,00} \\ b & \Wert{2,1} \\ c & \Wert{3,4} \\ d & \Wert{4,5} \\ e & \Wert{5,6} \\ f & \Wert{6,7} \\ g & \Wert{7,8} \\ h & \Wert{8,9} \\ i & \Wert{9,42} \\ j & \Wert{10,88}\\ k & \Wert{15,76} \end{longtable} \end{document}