From 3b76089a8340f8a364673f1eb466a2e9f6d54e05 Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Mon, 20 Oct 2014 21:53:41 +0200 Subject: [PATCH 1/1] Remove invoice/realcalc, which is in texlive --- .texmf/tex/latex/invoice.def | 319 ----------- .texmf/tex/latex/invoice.sty | 1012 --------------------------------- .texmf/tex/latex/realcalc.tex | 581 ------------------- 3 files changed, 1912 deletions(-) delete mode 100644 .texmf/tex/latex/invoice.def delete mode 100644 .texmf/tex/latex/invoice.sty delete mode 100644 .texmf/tex/latex/realcalc.tex diff --git a/.texmf/tex/latex/invoice.def b/.texmf/tex/latex/invoice.def deleted file mode 100644 index f6be4f4..0000000 --- a/.texmf/tex/latex/invoice.def +++ /dev/null @@ -1,319 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% File: invoice.def -% Author: Oliver Corff -% Date: 2003-12-12 -% -% This file contains messages, labels etc. in English, German -% and other languages. -% -% This file cannot be used alone but is called by invoice.sty -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% This file is the only file of this package which may be -% modified without renaming it. -% -% Adding a new language to labels is simple. Follow the -% instructions at line 275 of this file, and, please!, -% do not forget to send the result to -% -% corff@zedat.fu-berlin.de or oliver.corff@email.de -% -% Credits for language contributions given in invoice.sty. -% -% Thank you very much for your support of "invoice". -% -% Oliver Corff, -% -% Berlin, Guangzhou, Ulaanbaatar, Zagreb, Shenyang, Shanghai 2003 -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% English definitions are default. Other -% languages are selected automatically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% Warning messages for non-fatal situations -% -\def\InvoiceCompleted {Invoice completed. Command ignored.}% -\def\FeeSTExists {You cannot print a fee subtotal twice!}% -\def\ProjectEmpty {Project empty. No subtotal possible!}% -\def\ProjectSTExists {You cannot print a project subtotal twice!}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% Error messages for fatal situations -% -\def\InternalError {Package `invoice': Internal error!}% -% -\def\NoInvoiceNesting {Invoices cannot be nested. - Close this invoice first!}% -% -\def\InvoiceCompletedNoExpense {Invoice closed. - No new expense item allowed. - Start a new invoice - first!}% -% -\def\InvoiceCompletedNoFee {Invoice closed. - No new fee item allowed. - Start a new invoice - first!}% -% -\def\InvoiceCompletedNoFeeST {Invoice closed. - No fee subtotal allowed. - Start a new invoice - first!}% -% -\def\InvoiceCompletedNoProject {Invoice closed. - No new project allowed. - Start a new invoice - first!}% -% -\def\InvoiceCompletedNoProjectST {Invoice closed. - No project subtotal allowed. - Start a new invoice - first!}% -% -\def\MissingFee {No fee given. - You must charge at least one fee!}% -% -\def\MissingInputData {Missing input data!}% -% -\def\MissingOpening {You must open an invoice!}% -% -\def\MissingProject {No project given. - Open a project first!}% -% -\def\FeeBeforeExpense {Fees are charged first. - Expenses follow.}% -% -\def\NoProjectNesting {Projects cannot be nested. - Close this project first!}% -% -\def\ProjectCompletedNoExpense {Project closed. - No new expense item allowed. - Start a new project - first!}% -% -\def\ProjectCompletedNoFee {Project closed. - No new fee item allowed. - Start a new project - first!}% -% -\def\KOMA {Users of KOMA-Script's scrlettr.cls% - ^^Jsay `invoiceno' for the scrlettr - invoice command,^^Jand `invoiceenv' - for the invoice environment!}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% Labels. These ones are available in translation, too. See below. -% -\def\Warning {Warning}% -\def\Error {Error}% -\def\Expense {Expense}% -\def\Amount {Amount}% -\def\Currency {Currency}% -\def\Factor {Factor}% -\def\Activity {Activity}% -\def\Count {Count}% -\def\UnitRate {Rate/Unit}% -\def\Fees {Fees}% -\def\VAT {VAT}% -\def\Expenses {Expenses}% -\def\SumFees {Sum \Fees}% -\def\SumVAT {Sum \VAT}% -\def\SumExpenses {Sum \Expenses}% -\def\SubtotalFee {Subtotal \Fees}% -\def\SubtotalExpenses {Subtotal \Expenses}% -\def\SubtotalProject {Subtotal \Project}% - -\def\Total {Total}% -% -% This is German. -% -\ifx\l@german\undefined - \message{^^J(invoice) \Warning: - Language \string\l@german\space unknown.^^J^^J} -\else -\ifnum\number\invoice@language=\number\l@german - \def\Warning {Warnung}% - \def\Error {Fehler}% - \def\Expense {Auslage}% - \def\Amount {Betrag}% - \def\Currency {W\"ahrung}% - \def\Factor {Faktor}% - \def\Activity {Aktivit\"at}% - \def\Count {Anzahl}% - \def\UnitRate {Rate/Einheit}% - \def\Fees {Honorare}% - \def\VAT {MWSt.}% - \def\Expenses {Auslagen}% - \def\SumFees {Summe \Fees}% - \def\SumVAT {Summe \VAT}% - \def\SumExpenses {Summe \Expenses}% - \def\SubtotalFee {Zwischensumme \Fees}% - \def\SubtotalExpenses {Zwischensumme \Expenses}% - \def\SubtotalProject {Zwischensumme \Project}% - \def\Total {Gesamtsumme}% -\fi\fi -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is Dutch. -% -\ifx\l@dutch\undefined - \message{^^J(invoice) \Warning: - Language \string\l@dutch\space unknown.^^J^^J} -\else -\ifnum\number\invoice@language=\number\l@dutch - \def\Warning {Waarschuwing}% - \def\Error {Fout}% - \def\Expense {Onkosten}% - \def\Amount {Bedrag}% - \def\Currency {Valuta}% - \def\Factor {Faktor}% - \def\Activity {Activiteit}% - \def\Count {Aantal}% - \def\UnitRate {Prijs/Eenheid}% - \def\Fees {Honorarium}% - \def\VAT {BTW}% - \def\Expenses {Onkosten}% - \def\SumFees {Totaal \Fees}% - \def\SumVAT {Totaal \VAT}% - \def\SumExpenses {Totaal \Expenses}% - \def\SubtotalFee {Subtotaal \Fees}% - \def\SubtotalExpenses {Subtotaal \Expenses}% - \def\SubtotalProject {Subtotaal \Project}% - \def\Total {Totaal}% -\fi\fi -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is French. -% -\ifx\l@french\undefined - \message{^^J(invoice) \Warning: - Language \string\l@french\space unknown.^^J^^J} -\else -\ifnum\number\invoice@language=\number\l@french - \def\Warning {Avertissement}% - \def\Error {Erreur}% - \def\Expense {D\'epense}% - \def\Amount {Montant}% - \def\Currency {Devise}% - \def\Factor {Facteur}% - \def\Activity {Activit\'e}% - \def\Count {Quantit\'e}% - \def\UnitRate {Prix/Unit\'e}% - \def\Fees {Honoraires}% - \def\VAT {TVA}% - \def\Expenses {D\'epenses}% - \def\SumFees {Total \Fees}% - \def\SumVAT {Total \VAT}% - \def\SumExpenses {Total \Expenses}% - \def\SubtotalFee {Sous-Total \Fees}% - \def\SubtotalExpenses {Sous-Total \Expenses}% - \def\SubtotalProject {Sous-Total \Project}% - \def\Total {Total}% -\fi\fi -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is Afrikaans. -% -\ifx\l@afrikaans\undefined - \message{^^J(invoice) \Warning: - Language \string\l@afrikaans\space unknown.^^J^^J} -\else -\ifnum\number\invoice@language=\number\l@afrikaans - \def\Warning {Waarskuwing} - \def\Error {Fout} - \def\Expense {Onkostes} - \def\Amount {Bedrag} - \def\Currency {Valuta} - \def\Factor {Faktor} - \def\Activity {Aktiwiteit} - \def\Count {Aantal ure} - \def\UnitRate {Tarief} - \def\Fees {Fooie} - \def\VAT {BTW} - \def\Expenses {Uitgawes} - \def\SumFees {Totaal Fooie} - \def\SumVAT {Totaal BTW} - \def\SumExpenses {Totaal Uitgawes} - \def\SubtotalFee {Subtotaal \Fees} - \def\SubtotalExpenses {Subtotaal \Expenses} - \def\SubtotalProject {Subtotaal \Project} - \def\Total {Totaal} -\fi\fi -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% This is Italian. -% -\ifx\l@italian\undefined - \message{^^J(invoice) \Warning: - Language \string\l@italian\space unknown.^^J^^J} -\else -\ifnum\number\invoice@language=\number\l@italian - \def\Warning {Avvertenza}% - \def\Error {Errore}% - \def\Expense {Spesa}% - \def\Amount {Ammontare}% - \def\Currency {Valuta}% - \def\Factor {Fattore}% - \def\Activity {Attivit\'a}% - \def\Count {Quantit\'a}% - \def\UnitRate {Prezzo/Unit\'a}% - \def\Fees {Onorario}% - \def\VAT {IVA}% - \def\Expenses {Spese}% - \def\SumFees {Totale onorario}% - \def\SumVAT {Totale IVA}% - \def\SumExpenses {Totale spese}% - \def\SubtotalFee {Subtotale onorario}% - \def\SubtotalExpenses {Subtotale spese}% - \def\SubtotalProject {Subtotale progetto}% - \def\Total {Totale}% -\fi\fi -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% How to add new label languages to the `invoice' package: -% -% 1. Copy all following lines after this explanation -% and insert them above this comment. -% -% 2. Remove all comment symbols at the beginning of the lines. -% -% 3. Fill the empty parentheses {} with the appropriate -% translations. -% -% 4. Enter the correct internal language name used by LaTeX2e -% into the condition of the \ifnum clause. -% -% 5. Please do not forget to mail the resulting file to -% corff@zedat.fu-berlin.de or oliver.corff@email.de -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% Name correct language name here --v-- -% and --v--! -%\ifx\l@german\undefined -% \message{^^J(invoice) \Warning: -% Language \string\l@german\space unknown.^^J^^J} -%\else -%\ifnum\number\invoice@language=\number\l@german -% \def\Warning {} % Enter translations here! -% \def\Error {} % -% \def\Expense {} % -% \def\Amount {} % -% \def\Currency {} % -% \def\Factor {} % -% \def\Activity {} % -% \def\Count {} % -% \def\UnitRate {} % -% \def\Fees {} % -% \def\VAT {} % -% \def\Expenses {} % -% \def\SumFees {} % -% \def\SumVAT {} % -% \def\SumExpenses {} % -% \def\SubtotalFee {} % -% \def\SubtotalExpenses {} % -% \def\SubtotalProject {} % -% \def\Total {} % -%\fi diff --git a/.texmf/tex/latex/invoice.sty b/.texmf/tex/latex/invoice.sty deleted file mode 100644 index 082c61c..0000000 --- a/.texmf/tex/latex/invoice.sty +++ /dev/null @@ -1,1012 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Datei: invoice.sty -% Autor: Oliver Corff -% Contact: corff@zedat.fu-berlin.de, oliver.corff@email.de -% Datum: December 16, 2003 -% Version: 0.7 -% Copyright: Ulaanbaatar, Beijing, Berlin, Zagreb, Shenyang, Shanghai -% Description: This collection of macros provides -% tools for generating complex invoices -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% Corrections, suggestions and contributions by: -%%%%%% -% Jacopo, May 2003 -% e-mail: jacopo@ -% -% Contributed labels in Italian. -% -%%%%%% -% O. Corff, July 2003 -% -% fixed one nasty spacing bug, simplified internal table -% construction (table now has five instead of six columns, -% the second of which was never used). -% -%%%%%% -% Johann Spies, January 21, 2002 -% e-mail: jspies@sun.ac.za -% -% Hinted that \Subtotal Project should show the project name -% rather than just `Project'. -% -% Contributed labels in Afrikaans. -% -%%%%%% -% Robin Fairbairns, December 6, 2001 -% -% Hinted that the dollar sign can also be printed by saying -% \string$. -% -%%%%%% -% Vincent Tougait, France, November 27, 2001 -% -% Pointed out that fractions of VAT percents were not allowed. -% Bugfix on December 06, 2001 -% -%%%%%% -% Fred Donck, The Hague, The Netherlands, October, 2001 -% e-mail: fd0@donck.com -% -% Dutch labels -% -%%%%%% -% Ian Wormsbecker, October 31, 2001 -% -% Skips the VAT lines if VAT=0 -% Noticed that the terminal message will not accept a Dollar sign. -% The only workaround is to say \char`$ in \begin{invoice}{} -% -%%%%%% -% Fred Donck, The Hague, The Netherlands, Sept 18, 2001 -% e-mail: fd0@donck.com -% -% fixed some minor issues: -% real arithmetic will use integer intermediate values, so -% some calculations failed with the \Fee{title}{rate}{amount} -% where \rate is not an integer -% -% another fix is that in my opinion the VAT line should be -% printed also even though only one project is specified -% -% third fix is that the subtotal-line should not be printed -% on a project with only one \Fee line -% -%%%%%% -% Jacco Kok (fixed some labels), -% -%%%%%% -% Thilo Barth (discussed alternative names and command clashes -% with KOMA Script class scrlettr.cls), -% -%%%%%% -% Robert Inder (discussed general issues) -% -% were gladly and gratefully received and accepted. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ------------------- identification ------------------- -% -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{invoice}[2003/12/16] -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ------------------- language options ------------------- -% -% -\newcount\invoice@language -\let\invoice@language=\language -% -\ifx\l@english\undefined \newlanguage\l@english \fi -\ifx\l@german\undefined \newlanguage\l@german \fi -\ifx\l@dutch\undefined \newlanguage\l@dutch \fi -\ifx\l@french\undefined \newlanguage\l@french \fi -\ifx\l@afrikaans\undefined \newlanguage\l@afrikaans \fi -\ifx\l@italian\undefined \newlanguage\l@italian \fi -% -\DeclareOption{english}{\invoice@language=\number\l@english} -\DeclareOption{german}{\invoice@language=\number\l@german} -\DeclareOption{dutch}{\invoice@language=\number\l@dutch} -\DeclareOption{french}{\invoice@language=\number\l@french} -\DeclareOption{afrikaans}{\invoice@language=\number\l@afrikaans} -\DeclareOption{italian}{\invoice@language=\number\l@italian} -% -\ProcessOptions -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ------------------- initial code ------------------- -% -\RequirePackage{ifthen} -\RequirePackage{longtable} -\RequirePackage{calc} -\input{realcalc} -\input{invoice.def} -% -\newcommand{\InvoiceVersion}{0.7}% -\newcounter{Fee} % -\newcounter{VAT} % -%\newcounter{VAT@rate} % -\newcounter{Expenses} % -\newcounter{Discount} % Discount item -\newcounter{Total} % -\newcounter{Project} % -% -\newcounter{Fee@ctr} % Number of fees per project - % no subtotal will be printed in case of - % value < 2 -% -\newcounter{Expense@ctr} % Number of expense items per project - % no subtotal will be printed in case of - % value < 2 -% -\newcounter{One@Fee} % Individual Fee -\newcounter{One@VAT} % Individual VAT -\newcounter{One@Expense} % Individual Expense -% -\newcounter{ST@Fee} % Subtotal Fee -\newcounter{ST@VAT} % Subtotal VAT -\newcounter{ST@Expenses} % Subtotal Expenses -\newcounter{ST@Project} % Subtotal Project -% -\gdef\Flag{0}% % State 0: Invoice not started yet - % State 1: Start invoice - % State 2: Start project, print title - % State 3: Fee Item - % State 4: Print Subtotal Fee - % State 5: Expense Item - % State 6: Print Subtotal Expenses - % State 7: Print Subtotal Project - % State 8: Print Total, Close invoice -% -\gdef\Project{}% % Empty Project Name -\def\Null{0}% -\newif\ifVATnonzero -% \def\BC{Euro} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\newcommand{\my@message}[1]{\message{^^J#1^^J^^J}} -\newcommand{\error@message}[1]{\errmessage{^^J\Error: #1^^J^^J}} -\newcommand{\warning@message}[1]{\message{^^J\Warning: #1^^J^^J}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ifx\invoice\undefined % False if KOMA Script scrlettr.cls - \def\my@invoice{invoice} % loaded. In this case one may say -\else % "invoice". If true, the environ- - \def\my@invoice{invoiceenv} % ment is renamed to "invoiceenv" - \let\invoiceno\invoice % and the scrlettr macro is renamed - \def\invoice#1{% % to "invoiceno". Thank you, Thilo, - \error@message{\KOMA}} % for this hint! -\fi % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newenvironment{\my@invoice}[2]{% - \setcounter{Fee@ctr}{0}% % reset counter - \setcounter{Expense@ctr}{0}% % reset counter - \def\Null{0}% - \setcounter{Project}{0}% - \ST@Reset\Total@Reset% - \def\BC{#1}% - \def\VAT@rate{#2}% - \ifx\VAT@rate\Null\VATnonzerofalse\else\VATnonzerotrue\fi% - \ifVATnonzero - \message{^^J^^JVAT is not zero!^^J^^J}% - \else - \message{^^J^^JVAT is zero!^^J^^J}% - \fi% - % The VAT is: \the\VAT@rate % Debugging Diagnostics only - \parindent=0cm% - \ifcase\Flag % 0: Invoice not started yet - % - \gdef\Flag{1}% - \begin{center}% - \begin{longtable}{p{5cm}lrrr}% - % - \else \error@message{\NoInvoiceNesting}% - \fi}% -% At the end of environment: -% Yields state 8->0, Close and complete invoice, finish tables, etc. -{% - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \error@message{\MissingInputData}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ifnum\theProject>0 \ST@Fee\ST@Project\fi% - \Tot@l% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \ifnum\theProject>1 \ST@Project\fi% - \Tot@l% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \ifnum\theProject>1 \ST@Expenses\ST@Project\fi% - \Tot@l% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \ifnum\theProject>1 \ST@Project\fi% - \Tot@l% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \Tot@l% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \warning@message{\InvoiceCompleted}% - % - \else \error@message{\InternalError}% - \fi% - \gdef\Flag{0}% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ProjectTitle}[1]{% Yields state 2: Start Project - %\gdef\NewProject{#1} - % - \ifcase\Flag% 0: Invoice not started yet - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \error@message{\NoProjectNesting}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - \ST@Project% - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \ST@Project% - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \ST@Expenses% - \ST@Project% - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \ST@Project% - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \Project@Title{#1}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoProject}% - % - \else \error@message{\InternalError}% - \fi% - \setcounter{Fee@ctr}{0}% % reset counter - \setcounter{Expense@ctr}{0}% % reset counter -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Fee}[3]{% Yields state 3, Print Fee Item - % - % #1 Contents - % #2 Fee per Unit - % #3 Unit Count - % - \ifcase\Flag % 0: Invoice not started yet - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \Fee@Title% - \Fee@Line{#1}{#2}{#3}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \Fee@Line{#1}{#2}{#3}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \warning@message{\FeeSTExists}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \error@message{\FeeBeforeExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \error@message{\FeeBeforeExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \error@message{\ProjectCompletedNoFee}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoFee}% - % - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\STFee}{% Yields state 4, print subtotal remuneration - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \error@message{\MissingFee}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \Print@ST@Fees% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \warning@message{\FeeSTExists}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \error@message{\FeeBeforeExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \error@message{\FeeBeforeExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \error@message{\ProjectCompletedNoFee}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\ProjectCompletedNoFee}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\EBC}[2]{% Yields state 5: Expenses in BaseCurrency - % - % #1 Contents und Datum - % #2 Amount in BaseCurrency - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \Expense@Title% - \Expense@BaseCurrency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - \Expense@Title% - \Expense@BaseCurrency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \Expense@Title% - \Expense@BaseCurrency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \Expense@BaseCurrency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoExpense}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\EBCi}[2]{% Yields state 5: Expenses in BaseCurrency - % But, unlike base form (no - % 'invisible') this version does - % not state the item, it only - % the total amount of expenses. - % - % #1 Contents und Datum - % #2 Amount in BaseCurrency - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - %\Expense@Title% - \Expense@Base@Currency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - %\Expense@Title% - \Expense@Base@Currency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - %\Expense@Title% - \Expense@Base@Currency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \Expense@Base@Currency{#1}{#2}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoExpense}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\EFC}[5]{% Yields state 5: Expenses in ForeignCurrency - % - % #1 Contents und Datum - % #2 Currency - % #3 Amount - % #4 Exchange Rate - % #5 Amount Zielwaehrung - % - % Usage: - % 1. {Contents}{ForeignCurrency}{ExchangeRate}{} - % 2. {Contents}{ForeignCurrency}{}{BaseCurrency} - % 3. {Contents}{ForeignCurrency}{ExchangeRate}{BaseCurrency} - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \Expense@Title% - \Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - \Expense@Title% - \Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \Expense@Title% - \Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \Expense@ForeignCurrency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \error@message{\ProjectCompletedNoExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \error@message{\ProjectCompletedNoExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoExpense}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\EFCi}[5]{% Yields state 5: Expenses in ForeignCurrency - % But, unlike base form (no - % 'invisible') this version does - % not state the item, it only - % the total amount of expenses. - % - % #1 Contents und Datum - % #2 Currency - % #3 Amount - % #4 Exchange Rate - % #5 Amount Zielwaehrung - % - % Usage: - % 1. {Contents}{ForeignCurrency}{ExchangeRate}{} - % 2. {Contents}{ForeignCurrency}{}{BaseCurrency} - % 3. {Contents}{ForeignCurrency}{ExchangeRate}{BaseCurrency} - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \Expense@Title% - \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - % \Expense@Title% - \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - % \Expense@Title% - \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \Expense@Foreign@Currency{#1}{#2}{#3}{#4}{#5}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \error@message{\ProjectCompletedNoExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \error@message{\ProjectCompletedNoExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoExpense}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\STExpenses}{% Yields state 6: Ausgabe der ST Expenses - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % - \or % 2: Start project, print title - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % - \or % 3: Print remuneration item - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % - \or % 4: Print subtotal remuneration - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \Print@ST@Expenses% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \warning@message{\ProjectCompletedNoExpense}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoExpense}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\STProject}{% Yields state 7: Ausgabe der ST Project - % - \ifcase\Flag % 0: Invoice not started yet - % - \error@message{\MissingOpening}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 1: Start invoice - % - \error@message{\MissingProject}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 2: Start project, print title - % - \warning@message{\ProjectEmpty}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 3: Print remuneration item - % - \ST@Fee% - \ST@Project% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 4: Print subtotal remuneration - % - \ST@Project% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 5: Expense item - % - \ST@Expenses% - \ST@Project% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 6: Print subtotal expenses - % - \ST@Project% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 7: Print subtotal project - % - \warning@message{\ProjectSTExists}% - % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \or % 8: Print total, close invoice - % - \error@message{\InvoiceCompletedNoProjectST}% - % - \else \error@message{\InternalError}% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Discount}[2]{% Yields no particular state. - % Inserts discount in project total, - % names discount reason - % and amount of discount - % - \gdef\Discount@Contents{#1}% - \setcounter{Discount}{100 * \real{-#2}}% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Total@Reset}{% - \setcounter{Fee}{0}% - \setcounter{VAT}{0}% - \setcounter{Expenses}{0}% - \setcounter{Total}{0}% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ST@Reset}{% - \setcounter{ST@Fee}{0}% - \setcounter{ST@VAT}{0}% - \setcounter{ST@Expenses}{0}% - \setcounter{ST@Project}{0}% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Print@Value}[1]{% - \Rmul\r#1{0.01}%% <- Reduce to BaseCurrency - \Rtrunc\r{2}\r% % <- Truncate to two digits - \r% % <- Output data! -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Message@Value}[1]{% - \Rmul\r#1{0.01}%% <- Reduce to BaseCurrency - \Rtrunc\r{2}\r% % <- Truncate to two digits - \message{\r}% % <- Output data! -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Project@Title}[1]{% - % Internal command called by \ProjectTitle. - % - \gdef\Flag{2}% - \gdef\Project{#1}% - \ST@Reset\addtocounter{Project}{1}% - \ifnum\theProject>1 \\\\\else\\\fi% - \multicolumn{5}{c}{\textbf{\large#1}}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Fee@Title}{% - \\ - \noindent\textbf{\Activity}&&\UnitRate&\Count&\Amount\ (\BC)\\ - \hline% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Fee@Line}[3]{% - % - % #1 Contents - % #2 Charged Fee per Unit - % #3 Count - % - % Internal command, called by \Fee. - % - \gdef\Flag{3}% - % - #1 &   & -% -% next is reversed to allow real arithmetic. -% intermediate results are stored in integer format, so calculations are -% incorrect in case #2 is a real. -% fixed by exchanging the 1 and the 100 -% - \setcounter{One@Fee}{100 * \real{#2} * \real{#3} * 1}% -% - \addtocounter{ST@Fee}{\theOne@Fee}% - \addtocounter{Fee}{\theOne@Fee}% - \addtocounter{Fee@ctr}{1}% increase counter with 1 - \Print@Value{\theOne@Fee}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ST@Fee}{% - % \gdef\Flag{4}% - \ifnum\theST@Fee>0% - \ifthenelse{\theFee@ctr>1} % % if more than 1 \Fee line - {\Print@ST@Fees% % print it, else - }% - {}% % do nothing - \ifVATnonzero\ST@VAT@Printout\fi% - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Print@ST@Fees}{% - \gdef\Flag{4}% - \SubtotalFee & & & &% print the subtotal of fees - \Print@Value{\theST@Fee}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ST@VAT@Printout}{% - \VAT\ (\VAT@rate\%) & & & &% - \setcounter{ST@VAT}{\theST@Fee * \real{\VAT@rate} / 100}% - \Print@Value{\theST@VAT}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Expense@BaseCurrency}[2]{% - #1 & \BC & & &% - \gdef\Flag{5}% - \Rmul\r{100}{#2}% - \setcounter{One@Expense}{1*\real{\r}}% - \addtocounter{ST@Expenses}{\theOne@Expense}% - \addtocounter{Expenses}{\theOne@Expense}% - \addtocounter{Expense@ctr}{1}%advance counter - \Print@Value{\theOne@Expense}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Expense@Base@Currency}[2]{% - \gdef\Flag{5}% - \Rmul\r{100}{#2}% - \setcounter{One@Expense}{1*\real{\r}}% - \addtocounter{ST@Expenses}{\theOne@Expense}% - \addtocounter{Expenses}{\theOne@Expense}% - \addtocounter{Expense@ctr}{1}%advance counter - & & & & \\[-1.2em]% This is an ugly kludge: - % Inserting an empty line - % which rolls backwards - % makes disappear the spurious - % spaces caused by external - % routines. -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Expense@ForeignCurrency}[5]{% - \gdef\Flag{5}% - % - % Folgende Angaben sind moeglich: - % 1. {Contents}{Currency}{Amount}{Umrechnung}{ } - % 2. {Contents}{Currency}{Amount}{ }{BaseCurrency} - % 3. {Contents}{Currency}{Amount}{Umrechnung}{BaseCurrency} - % - #1 & #2 & #3 & #4&% - \ifthenelse{\equal{#5}{}}% Target in BaseCurrency or not? - {% Target not in BaseCurrency - \Rmul\r{100}{#3}% - \Rmul\r \r {#4}% - }% - {% Target in BaseCurrency - \Rmul\r{100}{#5}% - }% - \setcounter{One@Expense}{1*\real{\r}}% - \addtocounter{ST@Expenses}{\theOne@Expense}% - \addtocounter{Expenses}{\theOne@Expense}% - \addtocounter{Expense@ctr}{1}%advance counter - \Print@Value{\theOne@Expense}% -\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Expense@Foreign@Currency}[5]{% - \gdef\Flag{5}% - % - % Folgende Angaben sind moeglich: - % 1. {Contents}{Currency}{Amount}{Umrechnung}{ } - % 2. {Contents}{Currency}{Amount}{ }{BaseCurrency} - % 3. {Contents}{Currency}{Amount}{Umrechnung}{BaseCurrency} - % - \ifthenelse{\equal{#5}{}}% Target in BaseCurrency or not? - {% Target not in BaseCurrency - \Rmul\r{100}{#3}% - \Rmul\r\r{#4}% - }% - {% Target in BaseCurrency - \Rmul\r{100}{#5}% - }% - \setcounter{One@Expense}{1*\real{\r}}% - \addtocounter{ST@Expenses}{\theOne@Expense}% - \addtocounter{Expenses}{\theOne@Expense}% - \addtocounter{Expense@ctr}{1}%advance counter - & & & & \\[-1.2em]% ugly kludge as above -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Expense@Title}{% - \\% - \textbf{\Expense}&\Currency&\Amount&\Factor &\BC\\% - \hline% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ST@Expenses}{% - % \gdef\Flag{6}% - \ifnum\theST@Expenses>0% - \ifthenelse{\theExpense@ctr>1}% % if more than 1 Expense line - {\Print@ST@Expenses}% % print it, else - {}% % do nothing - \fi% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Print@ST@Expenses}{% - \gdef\Flag{6}% - & & & & \\[-1.2em]% ugly kludge as above - \SubtotalExpenses & & & &% print the subtotal of expenses - \Print@Value{\theST@Expenses}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ST@Project}{% - \gdef\Flag{7}% - \\ - %\multicolumn{4}{l}{\SubtotalProject}% - %\let\Project\NewProject% - %& - \SubtotalProject & & & & - \addtocounter{ST@Project}{\theST@Fee}% - \addtocounter{ST@Project}{\theST@VAT}% - \addtocounter{ST@Project}{\theST@Expenses}% - \Print@Value{\theST@Project}\\ -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Total@VAT@Printout}{% - \setcounter{VAT}{\theFee*\real{\VAT@rate}/100}% - \SumVAT & & & &\Print@Value{\theVAT}\\% -}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\Tot@l}{% - \\\hline - \ifnum\theFee>0 \SumFees& & & &% - \Print@Value{\theFee}\\ - \ifVATnonzero% - \Total@VAT@Printout% - \fi% - \fi% - \ifnum\theExpenses>0 \SumExpenses& & & &% - \Print@Value{\theExpenses}\\ - \fi% - \ifnum\theDiscount=0 \else \Discount@Contents& & & &% - \Print@Value{\theDiscount}\\ - \fi% - \hline\hline - \textbf{\Total} & & & &% - \message{^^J\Currency: \BC}% - \message{^^J\VAT: \VAT@rate}% - \addtocounter{Total}{\theFee}% - \message{^^J\SumFees: }\Message@Value{\theFee}% - \addtocounter{Total}{\theVAT}% - \message{^^J\SumVAT: }\Message@Value{\theVAT}% - \addtocounter{Total}{\theExpenses}% - \message{^^J\SumExpenses: }\Message@Value{\theExpenses}% - \ifnum\theDiscount=0 \else % - \addtocounter{Total}{\theDiscount}% - \message{^^J\Discount@Contents: }\Message@Value{\theDiscount}% - \fi % - \textbf{\Print@Value{\theTotal}}% - \message{^^J\Total: }% - \Message@Value{\theTotal}\message{^^J^^J}\\% - \end{longtable} - \end{center} - \gdef\Flag{8}% -} -\endinput -% vim:ts=4:sw=4 diff --git a/.texmf/tex/latex/realcalc.tex b/.texmf/tex/latex/realcalc.tex deleted file mode 100644 index be46167..0000000 --- a/.texmf/tex/latex/realcalc.tex +++ /dev/null @@ -1,581 +0,0 @@ -%% realcalc.tex -%% -%% (C) Frank Buchholz, Jan. 1993 -%% e-mail: buchholz@lusty.informatik.uni-dortmund.de -% User documentation: All lines starting with two % -% Try grep to extract these lines. -%% -%% Real arithmetic with big values and high precision. -%% Calculations are done with 9 decimal digits. -%% Usable with TeX and LaTeX. -%% -%% Parameter: -%% -%% Macro, witch catches the result. -%% String or macro witch expands to a value in the range -%% from -2147483647.999999999 to 2147483647.999999999 -%% Number from 0 to 9 -%% -%% Functions: -%% - -% Don't read this file twice -\ifx\Radd\undefined \else \endinput \fi - -% Make "@" be a letters -\chardef\catamp=\the\catcode`\@ -\catcode`@=11 - -\def\@Rversion{Version 1.0, Jan. 1993} -\message{`Real arithmetic', \@Rversion (C) Frank Buchholz} - -% Allocation of temporary registers -\newcount\@ta -\newcount\@tb -% -\newcount\@xs % Sign of 1st value -\newcount\@xi % Integer part of 1st value -\newcount\@xf % Fractional part of 1st value -% -\newcount\@ys % Sign of 2nd value -\newcount\@yi % Integer part of 2nd value -\newcount\@yf % Fractional part of 2nd value -% -\newcount\@mil \@mil=1000000000 % 10^9 -% -\countdef\@xa240 -\countdef\@xb241 -\countdef\@xc242 -\countdef\@xd243 -\countdef\@xe244 -\countdef\@ya245 -\countdef\@yb246 -\countdef\@yc247 -\countdef\@yd248 -\countdef\@ye249 -\let\@f=\@tb -\let\@product=\@ta - -\chardef\@zero=0 - -%% \Radd Addition -\def\Radd#1#2#3{\@callc\@Radd#1{#2}{#3}} - -%% \Rsub Subtraction -\def\Rsub#1#2#3{\@callc\@Radd#1{#2}{-#3}} - -\def\@Radd#1#2.#3.#4\relax#5.#6.#7\relax{% - % #1 Macro, witch gets the result - % #2 integer part of 1st value - % #3 fractional part of 1st value - % #4 dummy to swallow everthing after the 2nd '.' - % #5 integer part of 2nd value - % #6 fractional part of 2nd value - % #7 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#2}{#3}% - \@readvalue\@ys\@yi\@yf{#5}{#6}% - % - % Add integer parts - \@ta=\@xi \advance\@ta\@yi% - % - % Add fractional parts if they are not zero - \ifnum\@xf=\@zero% - \ifnum\@yf=\@zero% - \@tb=\@zero% - \else% - \@longadd% - \fi% - \else% - \@longadd% - \fi% - % - % Store result - \@store#1\@ta\@tb% -} - -\def\@longadd{% - % Propagate sign to fractional parts - \multiply\@xf\@xs \multiply\@yf\@ys% - % - % Add fractional parts - \@tb=\@xf \advance\@tb\@yf% - % - % Calculate carry - \ifnum\@tb<\@zero% - \ifnum\@tb<-\@mil \advance\@ta -\@ne \advance\@tb\@mil \fi% - \else% - \ifnum\@tb<\@mil \else \advance\@ta \@ne \advance\@tb-\@mil \fi% - \fi% -} - -%% \Rmul Multiplication -\def\Rmul#1#2#3{\@callc\@Rmul#1{#2}{#3}} - -\def\@Rmul#1#2.#3.#4\relax#5.#6.#7\relax{% - % #1 Macro, witch gets the result - % #2 integer part of 1st value - % #3 fractional part of 1st value - % #4 dummy to swallow everthing after the 2nd '.' - % #5 integer part of 2nd value - % #6 fractional part of 2nd value - % #7 dummy to swallow everthing after the 2nd '.' - % - % How to do real multiplications: - % Split values in various parts - % x y = 1234 567890 . 123 456 789 - % -> xa xb xc xd xe - % -> ya yb yc yd ye - % Do 21 (!) integer multiplications if there are any fractional parts - % r = x * Y - % -> r = xi*yi - % + (xa*yc + xa*yc )*10^3 - % + (xa*yd + xd*ya )*10^-0 - % + (xa*ye + xe*ya + xb*yc + xc*yb)*10^-3 - % + (xb*yd + xd*yb + xc*yc )*10^-6 - % + (xb*ye + xe*yb + xc*yd + xd*yc)*10^-9 - % + (xc*ye + xe*yc + xd*yd )*10^-12 - % + (xd*ye + xe*yd )*10^-15 - % + (xe*ye )*10^-18 - % - % -> r = ((((( xe*ye / 1000 - % + xd*ye + xe*yd ) / 1000 - % + xc*ye + xe*yc + xd*yd ) / 1000 - % + xb*ye + xe*yb + xc*yd + xd*yc ) / 1000 - % + xb*yd + xd*yb + xc*yc ) / 1000 - % + xa*ye + ye*xa + xb*yc + xc*yb ) / 1000 - % + xa*yd + xd*ya + (xa*yc + ya*xc)*1000 + xi*yi - % The last three digigs are saved just before the divisions. - % - % Init - % - \@readvalue\@xs\@xi\@xf{#2}{#3}% - \@readvalue\@ys\@yi\@yf{#5}{#6}% - % - % Sign - \multiply\@xi\@xs% - \multiply\@yi\@ys% - \multiply\@xs\@ys% - % - \@product=\@zero% - % - \ifnum\@xf=\@zero% - \ifnum\@yf=\@zero% - % No fractional parts - \edef\@frac{000000000} % digits of fractional part - \else% - \@longmul % Long multiplication - \fi% - \else% - \@longmul % Long multiplication - \fi% - % - % Multiply integer parts - \count@=\@xi \multiply\count@\@yi% - \advance\@product\count@% - % - % Sign - \multiply\@product\@xs% - % - % Store result - \edef#1{\number\@product.\@frac}% -} - -% Do long multiplication -\def\@longmul{% - % Split values in pieces - \@f=1000000% - \count@=\@xi% - \divide\count@\@f \@xa=\count@% - \multiply\count@-\@f \advance\count@\@xi \@xb=\count@% - \count@=\@xf% - \divide\count@\@f \@xc=\count@% - \multiply\count@-\@f \advance\count@\@xf% - \@f=1000% - \@xe=\count@% - \divide\count@\@f \@xd=\count@% - \multiply\count@-\@f \advance\count@\@xe \@xe=\count@% - % - \@f=1000000% - \count@=\@yi% - \divide\count@\@f \@ya=\count@% - \multiply\count@-\@f \advance\count@\@yi \@yb=\count@% - \count@=\@yf% - \divide\count@\@f \@yc=\count@% - \multiply\count@-\@f \advance\count@\@yf% - \@f=1000% - \@ye=\count@% - \divide\count@\@f \@yd=\count@% - \multiply\count@-\@f \advance\count@\@ye \@ye=\count@% - % - \edef\@frac{} % digits of fractional part - % - \@mul ee \relax\@shift % 10^-18 - \@mul de ed \relax\@shift % 10^-15 - \@mul ce ec dd \relax\@shift % 10^-12 - \@mul be eb cd dc \relax\@saveshift % 10^-9 - \@mul bd db cc \relax\@saveshift % 10^-6 - \@mul ae ea bc cb \relax\@saveshift % 10^-3 - \multiply\@xa\@f \multiply\@xc\@f % 10^3 - \@mul ad da ac ca \relax% -} - -\def\@mul#1#2#3{% - \count@=\csname @x#1\endcsname% - \multiply\count@\csname @y#2\endcsname% - \advance\@product\count@% - % - \ifx#3\relax% - \let\next=\relax% - \else% - \let\next=\@mul% - \fi% - \next#3% -} - -\def\@shift{% - \divide\@product\@f% -} - -\def\@saveshift{% - % Save rightmost digits - \count@=\@product% - \divide\@product\@f% - \multiply\@product\@f% - \advance\count@-\@product% - \advance\count@\@f% - \edef\@frac{\expandafter\@ignorenext\number\count@\@frac}% - % - \divide\@product\@f% -} - -%% \Rdiv Division -\def\Rdiv#1#2#3{\@callc\@Radd#1{#2}{#3}} - -\def\@Rdiv#1#2.#3.#4\relax#5.#6.#7\relax{% - % #1 Macro, witch gets the result - % #2 integer part of 1st value - % #3 fractional part of 1st value - % #4 dummy to swallow everthing after the 2nd '.' - % #5 integer part of 2nd value - % #6 fractional part of 2nd value - % #7 dummy to swallow everthing after the 2nd '.' - % - \message{Error: Rdiv not ready} - % - \@readvalue\@xs\@xi\@xf{#2}{#3}% - \@readvalue\@ys\@yi\@yf{#5}{#6}% - % - \ifnum\@yi=\@zero - \@xi=\@zero - \else - \divide\@xi\@yi - \fi - % - \@store#1\@xi\@xf% -} - -%% \Rneg Negation -\def\Rneg#1#2{% - % Expand the value and split it into the integer and the fractional part - \edef\next{\noexpand\@Rneg\noexpand#1#2..\noexpand\relax}% - \next% -} - -\def\@Rneg#1#2.#3.#4\relax{ - % #1 Macro, witch gets the result - % #2 Integer part of value - % #3 Fractional part of value - % #4 Remaining tokens - % - \@readvalue\@xs\@xi\@xf{#2}{#3}% - % - % Change sign - \multiply\@xi-\@ne% - \multiply\@xf-\@xs% - % - % Store result - \@store#1\@xi\@xf% -} - -%% -%% \Rtrunc Truncate value to specified precision -\def\Rtrunc#1#2#3{% - % Expand parameter and split the value into the integer and fractional part - \edef\next{\noexpand\@Rtrunc\noexpand#1#2#3..\noexpand\relax}% - \next% -} - -\def\@Rtrunc#1#2#3.#4.#5\relax{% - % #1 Macro, witch gets the result - % #2 Number of decimal places - % #3 Integer part of value - % #4 Fractional part of value - % #5 dummy to swallow everthing after the 2nd '.' - % - \count@=#2% - \edef\next{\empty}% - \ifnum\count@>\@zero% - \expandafter\@@Rtrunc#4000000000\relax% - \fi% - \edef#1{#3\next}% -} - -\def\@@Rtrunc#1#2#3#4#5#6#7#8#9{% - % #1...#9 fractional part, padded with trailing zeros - \edef\next{.#1% - \ifnum\count@>1 #2\fi% - \ifnum\count@>2 #3\fi% - \ifnum\count@>3 #4\fi% - \ifnum\count@>4 #5\fi% - \ifnum\count@>5 #6\fi% - \ifnum\count@>6 #7\fi% - \ifnum\count@>7 #8\fi% - \ifnum\count@>8 #9\fi% - }% - \@swallow% -} - -%% -%% \Rifle Test v1 < v2 -\def\Rifle#1#2{\@callb\@Rifle{#1}{#2}} - -\def\@Rifle#1.#2.#3\relax#4.#5.#6\relax{% - % #1 integer part of 1st value - % #2 fractional part of 1st value - % #3 dummy to swallow everthing after the 2nd '.' - % #4 integer part of 2nd value - % #5 fractional part of 2nd value - % #6 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - \@readvalue\@ys\@yi\@yf{#4}{#5}% - % - \ifnum\@xs<\@ys% - \Rtesttrue% - \else% - \ifnum\@xs>\@ys% - \Rtestfalse% - \else% - \Rtestfalse% - \ifnum\@xi<\@yi \Rtesttrue \fi% - \ifnum\@xi=\@yi% - \multiply\@xf\@xs \multiply\@yf\@ys% - \ifnum\@xf<\@yf \Rtesttrue \fi% - \fi% - \fi% - \fi% - % - \ifRtest% -} - -%% \Rifeq Test v1 = v2 -\def\Rifeq#1#2{\@callb\@Rifeq{#1}{#2}} - -\def\@Rifeq#1.#2.#3\relax#4.#5.#6\relax{% - % #1 integer part of 1st value - % #2 fractional part of 1st value - % #3 dummy to swallow everthing after the 2nd '.' - % #4 integer part of 2nd value - % #5 fractional part of 2nd value - % #6 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - \@readvalue\@ys\@yi\@yf{#4}{#5}% - % - \Rtestfalse% - \ifnum\@xi=\@yi\ifnum\@xf=\@yf \Rtesttrue \fi\fi% - \ifRtest% -} - -%% \Rifgt Test v1 > v2 -\def\Rifgt#1#2{\@callb\@Rifgt{#1}{#2}} - -\def\@Rifgt#1.#2.#3\relax#4.#5.#6\relax{% - % #1 integer part of 1st value - % #2 fractional part of 1st value - % #3 dummy to swallow everthing after the 2nd '.' - % #4 integer part of 2nd value - % #5 fractional part of 2nd value - % #6 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - \@readvalue\@ys\@yi\@yf{#4}{#5}% - % - \ifnum\@xs>\@ys% - \Rtesttrue% - \else% - \ifnum\@xs<\@ys% - \Rtestfalse% - \else% - \Rtestfalse% - \ifnum\@xi>\@yi \Rtesttrue \fi% - \ifnum\@xi=\@yi% - \multiply\@xf\@xs \multiply\@yf\@ys% - \ifnum\@xf>\@yf \Rtesttrue \fi% - \fi% - \fi% - \fi% - % - \ifRtest% -} - -%% \Rifneg Test v < 0 -\def\Rifneg#1{\@calla\@Rifneg{#1}} - -\def\@Rifneg#1.#2.#3\relax{% - % #1 Integer part of value - % #2 Fractional part of value - % #3 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - % - \ifnum\@xs<0 \Rtesttrue \else \Rtestfalse \fi% - \ifRtest% - } - -%% \Rifzero Test v = 0 -\def\Rifzero#1{\@calla\@Rifzero{#1}} - -\def\@Rifzero#1.#2.#3\relax{% - % #1 Integer part of value - % #2 Fractional part of value - % #3 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - % - \Rtestfalse% - \ifnum\@xi=\@zero \ifnum\@xf=\@zero \Rtesttrue \fi \fi% - \ifRtest% -} - -%% \Rifpos Test v >= 0 -%% Take care to have a corresponding \fi -\def\Rifpos#1{\@calla\@Rifpos{#1}} - -\def\@Rifpos#1.#2.#3\relax{% - % #1 Integer part of value - % #2 Fractional part of value - % #3 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - % - \ifnum\@xs<0 \Rtestfalse \else \Rtesttrue \fi% - \ifRtest% -} - -%% \Rifint Test v is an integer value -%% Take care to have a corresponding \fi -\def\Rifint#1{\@calla\@Rifint{#1}} - -\def\@Rifint#1.#2.#3\relax{% - % #1 Integer part of value - % #2 Fractional part of value - % #3 dummy to swallow everthing after the 2nd '.' - % - \@readvalue\@xs\@xi\@xf{#1}{#2}% - % - \ifnum\@xf=0 \Rtesttrue \else \Rtestfalse \fi% - \ifRtest% -} - -% Utility macros - -\def\@calla#1#2{% - % #1 Macro to call - % #2 Value - % Expand the value and split them into the integer and the fractional part - \edef\next{\noexpand#1#2..\noexpand\relax}% - \next% -} - -\def\@callb#1#2#3{% - % #1 Macro to call - % #2 1st value - % #3 2nd value - % Expand the values and split them into the integer and the fractional parts - \edef\next{\noexpand#1#2..\noexpand\relax#3..\noexpand\relax}% - \next% -} - -\def\@callc#1#2#3#4{% - % #1 Macro to call - % #2 Macro, witch gets the result - % #3 1st value - % #4 2nd value - % Expand the values and split them into the integer and the fractional parts - \edef\next{\noexpand#1\noexpand#2#3..\noexpand\relax#4..\noexpand\relax}% - \next% -} - -%% \ifRtest ... \else ... \fi Re-execute the last test -\newif\ifRtest - -% -% Read value -% -\def\@readvalue#1#2#3#4#5{% - % #1 macro to catch the sign ( -1 or 1 ) - % #2 macro to catch the integer part (maybe negative) - % #3 macro to catch the fractional part (positive) - % #4.#5 value - % - % Regular expression [-...d]d...["."[d...]] - % Attention: There has to be at least one digit between "-" and "."! - % - % Integer part - \if !#4! #2=\@zero \else #2=#4 \fi% - % - % Sign - \ifnum#2<\@zero #1=-\@ne \else #1=\@ne \fi% - \ifnum#2=\@zero \ifnum #4#5<\@zero #1=-\@ne \fi \fi% - % - % Fractional part - \if !#5!% - #3=\@zero% - \else% - \@@setcount@#5000000000\relax% - #3=\count@% - \fi% -} - -% Set count@ to fractional part with trailing zeros -\def\@@setcount@#1#2#3#4#5#6#7#8#9{% - % #1...#9 fractional part, padded with '0' - \count@=#1#2#3#4#5#6#7#8#9% - \@swallow% -} - -% Swallow everything up to next \relax -\def\@swallow#1\relax{} - -% -% Store result -% -\def\@store#1#2#3{% - % #1 marcro to catch the result - % #2 counter with integer part (maybe negative) - % #3 counter with fractional part (maybe negative} - % - % Sign - \edef#1{}% - \count@=#3% - \ifnum\count@<\@zero% - \count@=-\count@% - \ifnum#2=\@zero% - \edef#1{-}% - \fi% - \fi% - % - % Pad fractional part with leading zeros - \advance\count@\@mil% - % - % Store result - \edef#1{#1\number#2.\expandafter\@ignorenext\number\count@}% -} - -% Ignore next token -\def\@ignorenext#1{} - -% Restore catcode of "@" -\catcode`\@=\catamp -- 2.39.5