diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/tabulars-e/06-00-32.ltx2')
-rw-r--r-- | Master/texmf-dist/doc/latex/tabulars-e/06-00-32.ltx2 | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tabulars-e/06-00-32.ltx2 b/Master/texmf-dist/doc/latex/tabulars-e/06-00-32.ltx2 new file mode 100644 index 00000000000..f121e9baf9f --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabulars-e/06-00-32.ltx2 @@ -0,0 +1,190 @@ +%% +%% A DANTE-Edition example +%% +%% Example 06-00-32 on page 196. +%% +%% Copyright (C) 2010 Herbert 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. +%% +%% +%% ==== +% Show page(s) 1,2 +%% +\documentclass[]{article} +\pagestyle{empty} +\setlength\textwidth{183.78818pt} +\usepackage[utf8]{inputenc}% adapt maybe +\usepackage[paper=70mm:85mm,pagesize]{typearea} +\usepackage[utf8]{inputenc}% adapt maybe +\usepackage[english]{babel} +\setlength\parindent{0pt} +\usepackage{etex} % to be able to use labels +\usepackage{ltxtable} +\usepackage[savepos,user]{zref} % to save the current position +\usepackage{fltpoint} % floating point arithmetics +\usepackage{calc} % for the \widthof command +\usepackage{numprint} % formatted output of numbers +\usepackage{eurosym} % Euro sign +% global settings for numprint +\npstyleenglish % English number formatting +\nprounddigits{2} % two decimal places +\npreplacenull{---} % hyphen instead of decimal zeros + +%%%%%%%%%%%%%%commands to calculate the intermediate sums%%%%%%%%%%%%%%%%%%%% +\newcommand*\intsum{0} +\newcommand*\resetintsum{\global\def\intsum{0}} +\newcommand*\addintsum[1]{\fpAdd{\intsum}{\intsum}{#1}% + \global\let\intsum\intsum} +\newcommand*\printval[1]{\numprint{#1}} + +%%%%%%%%PlainTeX hack for positioning of intermediate sums%%%%%%%%%%%%%%% +\makeatletter % allow the at sign in variables +% provide variables + \newdimen\drx + \newdimen\dry + \newmarks\ltm@marks + \def\ltm@setmarks#1{\marks\ltm@marks{#1}} + \def\ltm@getmarks{\botmarks\ltm@marks} + +% calculate the current value of the intermediate sum and save it +\newcommand*{\Val}[1]{% + \printval{#1}% immediate output of the value + \addintsum{#1}% add the passed value to the intermediate sum + \expandafter\ltm@setmarks\expandafter{\intsum}% save intermediate sum +} + +% save current position +\newcommand*{\MarkIntSumPos}{% + \leavevmode + \zsavepos{zwsumpos\thepage}% + \zrefused{zwsumpos\thepage}} + +% output intermediate sum +\def\ltm@insertfoot#1{% + \vbox to\z@{% + \vss + \hb@xt@\z@{% + \color@begingroup + \zsavepos{tabende\thepage}% % save current position + \drx=0sp + \dry=0sp + % subtract current position and add saved one + \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]{% + \printval{#1} \euro}}% + } + \color@endgroup + }% + }% +} + +% output of the carry +% like output of the intermediate sum, but without saved position +\def\ltm@inserthead#1{% + \vbox to\z@{% + \vss + \hb@xt@\z@{% + \color@begingroup + \drx=0sp + \dry=0sp + % subtract position of end of table + \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% + % The actual output. Right-aligned and translated by the + % width of the Euro sign. + \hbox{\makebox[\widthof{ \euro}][r]{% + \printval{#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}} + +% overwrite the output routines of 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 % disallow at sign in variables +%%%%%%%%%%%%%%%%%%%%end plaintex hack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\usepackage{longtable} + +\begin{document} +\resetintsum +\begin{longtable}{p{0.7\linewidth}r} + left & right +\endfirsthead + carry & \\ +\endhead + intermediate sum: & \MarkIntSumPos \\ +\endfoot + sum: &\MarkIntSumPos \\ +\endlastfoot + An arbitrary introductory text at the start of the column\ldots. + & \Val{1,00} \\ + b & \Val{2,1} \\ + c & \Val{3,4} \\ + d & \Val{4,5} \\ + e & \Val{5,6} \\ + f & \Val{6,7} \\ + g & \Val{7,8} \\ + h & \Val{8,9} \\ + i & \Val{9,42} \\ + j & \Val{10,88}\\ + k & \Val{15,76} +\end{longtable} +\end{document} |