From 99d6e9c1583515c66d89644283c778340f295dee Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Wed, 24 Apr 2013 16:50:43 +0200 Subject: [PATCH] migrate from private repo to public --- .texmf/tex/latex/checkbox.sty | 5 + .texmf/tex/latex/draft.sty | 1 + .texmf/tex/latex/epspdffig.sty | 20 + .texmf/tex/latex/href.sty | 45 ++ .texmf/tex/latex/invoice.def | 319 ++++++++ .texmf/tex/latex/invoice.sty | 1012 ++++++++++++++++++++++++++ .texmf/tex/latex/koma-rotis.sty | 3 + .texmf/tex/latex/memoir-rotis.sty | 32 + .texmf/tex/latex/memoir-subtitle.sty | 13 + .texmf/tex/latex/pdf.sty | 7 + .texmf/tex/latex/realcalc.tex | 581 +++++++++++++++ .texmf/tex/latex/rotis-ss.sty | 3 + .texmf/tex/latex/today.sty | 7 + .texmf/tex/latex/utf8.sty | 5 + .var/texmf/.gitignore | 1 + 15 files changed, 2054 insertions(+) create mode 100644 .texmf/tex/latex/checkbox.sty create mode 100644 .texmf/tex/latex/draft.sty create mode 100644 .texmf/tex/latex/epspdffig.sty create mode 100644 .texmf/tex/latex/href.sty create mode 100644 .texmf/tex/latex/invoice.def create mode 100644 .texmf/tex/latex/invoice.sty create mode 100644 .texmf/tex/latex/koma-rotis.sty create mode 100644 .texmf/tex/latex/memoir-rotis.sty create mode 100644 .texmf/tex/latex/memoir-subtitle.sty create mode 100644 .texmf/tex/latex/pdf.sty create mode 100644 .texmf/tex/latex/realcalc.tex create mode 100644 .texmf/tex/latex/rotis-ss.sty create mode 100644 .texmf/tex/latex/today.sty create mode 100644 .texmf/tex/latex/utf8.sty create mode 100644 .var/texmf/.gitignore diff --git a/.texmf/tex/latex/checkbox.sty b/.texmf/tex/latex/checkbox.sty new file mode 100644 index 0000000..8980ecb --- /dev/null +++ b/.texmf/tex/latex/checkbox.sty @@ -0,0 +1,5 @@ +\RequirePackage{amsmath} +\RequirePackage{amssymb} + +\newcommand{\uncheckedbox}{$\square$} +\newcommand{\checkedbox}{$\text{\rlap{$\checkmark$}}\square$} diff --git a/.texmf/tex/latex/draft.sty b/.texmf/tex/latex/draft.sty new file mode 100644 index 0000000..44795c0 --- /dev/null +++ b/.texmf/tex/latex/draft.sty @@ -0,0 +1 @@ +\RequirePackage[light,first,timestamp,draft]{draftcopy} diff --git a/.texmf/tex/latex/epspdffig.sty b/.texmf/tex/latex/epspdffig.sty new file mode 100644 index 0000000..1c759ae --- /dev/null +++ b/.texmf/tex/latex/epspdffig.sty @@ -0,0 +1,20 @@ +\RequirePackage{pdf} + +\ifpdf + \RequirePackage[pdftex]{graphicx} +\else + \RequirePackage[dvips]{graphicx} +\fi + +\newcommand{\posfig}[4][width=\textwidth] +{% + \ifx\flabelprefix\undefined\def\flabelprefix{figure}\fi + \begin{figure*}[#2]% + \centering% + \includegraphics[#1]{#3}% + \caption{#4}% + \label{\flabelprefix:#3}% + \end{figure*}% +} + +\newcommand{\fig}[3][width=\textwidth] {\posfig[#1]{tbp}{#2}{#3}} diff --git a/.texmf/tex/latex/href.sty b/.texmf/tex/latex/href.sty new file mode 100644 index 0000000..7fbf814 --- /dev/null +++ b/.texmf/tex/latex/href.sty @@ -0,0 +1,45 @@ +\RequirePackage{pdf} +\RequirePackage{utf8} + +\ifpdf + \RequirePackage[final,unicode,pdftex,pdfcreator={pdftex}]{hyperref} +% \RequirePackage{ae, aecompl} + \pdfcompresslevel=7 + \newcommand{\burlalt}[2]{\href{#1}{#2}} + \newcommand{\burl}[1]{\url{#1}} +\else + \RequirePackage[final,unicode,ps2pdf,pdfcreator={dvips/ps2pdf}]{hyperref} + \RequirePackage{breakurl} +\fi + +\hypersetup { + hyperindex=true, + backref=true, + pagebackref=true, + pageanchor=true, + breaklinks=true, + bookmarks=true, + bookmarksnumbered=true, + bookmarksopen=true, + bookmarksopenlevel=1, + linkcolor=black, + linkbordercolor=1 1 1, + urlcolor=black, + urlbordercolor=1 1 1, + anchorcolor=black, + citecolor=black, + citebordercolor=1 1 1, + filecolor=black, + filebordercolor=1 1 1, + pagecolor=black, + pagebordercolor=1 1 1, + menucolor=black, + menubordercolor=1 1 1, + pdfhighlight=/N, + pdfborder=0 0 0, + pdfstartview=FitB, +% implicit=false +} + +\newcommand{\link}[1] {\burl{#1}} +\newcommand{\email}[1] {\tterm{<}\burlalt{mailto:#1}{#1}\tterm{>}} diff --git a/.texmf/tex/latex/invoice.def b/.texmf/tex/latex/invoice.def new file mode 100644 index 0000000..f6be4f4 --- /dev/null +++ b/.texmf/tex/latex/invoice.def @@ -0,0 +1,319 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% 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 new file mode 100644 index 0000000..082c61c --- /dev/null +++ b/.texmf/tex/latex/invoice.sty @@ -0,0 +1,1012 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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/koma-rotis.sty b/.texmf/tex/latex/koma-rotis.sty new file mode 100644 index 0000000..4d93e15 --- /dev/null +++ b/.texmf/tex/latex/koma-rotis.sty @@ -0,0 +1,3 @@ +\RequirePackage{rotis-ss} + +%\addtokomafont{sectioning}{\rmfamily} diff --git a/.texmf/tex/latex/memoir-rotis.sty b/.texmf/tex/latex/memoir-rotis.sty new file mode 100644 index 0000000..ce9c898 --- /dev/null +++ b/.texmf/tex/latex/memoir-rotis.sty @@ -0,0 +1,32 @@ +\RequirePackage{rotis} +\RequirePackage{memoir-subtitle} + +\pretitle{\begin{center}\LARGE\rmfamily} +\presubtitle{\vspace{-1em}\begin{center}\Large\rmfamily} +\preauthor{\begin{center}\large\rmfamily \lineskip .5em \begin{tabular}[t]{c}} +\predate{\begin{center}\large\rmfamily} + +\renewcommand{\abstractnamefont}{\normalfont\rmfamily\small\bfseries} + +\makechapterstyle{rotis-fonts}{% + \renewcommand{\partnamefont}{\rmfamily\huge\bfseries} + \renewcommand{\parttitlefont}{\partnamefont} + \renewcommand{\partnumfont}{\partnamefont} + + \renewcommand{\chapnamefont}{\rmfamily\huge} + \renewcommand{\chaptitlefont}{\chapnamefont} + \renewcommand{\chapnumfont}{\chapnamefont} + + \setsecheadstyle{\Large\rmfamily\bfseries\raggedright} + \setsubsecheadstyle{\large\rmfamily\bfseries\raggedright} + \setsubsubsecheadstyle{\normalsize\rmfamily\bfseries\raggedright} + \setparaheadstyle{\normalsize\rmfamily\bfseries\raggedright} + \setsubparaheadstyle{\normalsize\rmfamily\raggedright} +} + +\makechapterstyle{article-rotis}{% + \chapterstyle{rotis-fonts} + \chapterstyle{article} + \renewcommand{\chaptitlefont}{\normalfont\rmfamily\Large\bfseries} + \renewcommand{\chapnumfont}{\normalfont\rmfamily\Large\bfseries} +} diff --git a/.texmf/tex/latex/memoir-subtitle.sty b/.texmf/tex/latex/memoir-subtitle.sty new file mode 100644 index 0000000..6bd8c8f --- /dev/null +++ b/.texmf/tex/latex/memoir-subtitle.sty @@ -0,0 +1,13 @@ +\newcommand{\subtitle}[1] +{% + \gdef\@subtitle{#1} +} + +\newcommand{\presubtitle}[1]{\def\@bspresubtitle{#1}} +\newcommand{\postsubtitle}[1]{\def\@bspostsubtitle{#1}} + +\presubtitle{\vspace{-1em}\begin{center}\Large} +\postsubtitle{\par\end{center}\vspace{1em}} + +\newcommand{\@subtitle}{} +\renewcommand{\maketitlehookb} {{\@bspresubtitle \@subtitle \@bspostsubtitle}} diff --git a/.texmf/tex/latex/pdf.sty b/.texmf/tex/latex/pdf.sty new file mode 100644 index 0000000..bb27fd6 --- /dev/null +++ b/.texmf/tex/latex/pdf.sty @@ -0,0 +1,7 @@ +%\newif\ifpdf +%\ifx\pdfoutput\undefined\pdffalse +%\else\ifx\pdfoutput\relax\pdffalse +%\else\ifcase\pdfoutput\pdffalse +%\else\pdftrue +%\fi\fi\fi +\RequirePackage{ifpdf} diff --git a/.texmf/tex/latex/realcalc.tex b/.texmf/tex/latex/realcalc.tex new file mode 100644 index 0000000..be46167 --- /dev/null +++ b/.texmf/tex/latex/realcalc.tex @@ -0,0 +1,581 @@ +%% 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 diff --git a/.texmf/tex/latex/rotis-ss.sty b/.texmf/tex/latex/rotis-ss.sty new file mode 100644 index 0000000..9bc8f8d --- /dev/null +++ b/.texmf/tex/latex/rotis-ss.sty @@ -0,0 +1,3 @@ +\RequirePackage{rotis} + +\renewcommand{\familydefault}{\sfdefault} diff --git a/.texmf/tex/latex/today.sty b/.texmf/tex/latex/today.sty new file mode 100644 index 0000000..4b9d3a1 --- /dev/null +++ b/.texmf/tex/latex/today.sty @@ -0,0 +1,7 @@ +\newcommand{\mytoday} { + \number\day\space + \ifcase\month\or + Jan\or Feb\or Mar\or Apr\or May\or Jun\or Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi + \space\number\year +} +\def\today{\mytoday} diff --git a/.texmf/tex/latex/utf8.sty b/.texmf/tex/latex/utf8.sty new file mode 100644 index 0000000..0a34cc7 --- /dev/null +++ b/.texmf/tex/latex/utf8.sty @@ -0,0 +1,5 @@ +%\RequirePackage{ucs} +%\RequirePackage{inputenc} +%\inputencoding{utf8x} +% http://tug.org/pipermail/texhax/2007-October/009150.html +\RequirePackage[utf8]{inputenc} diff --git a/.var/texmf/.gitignore b/.var/texmf/.gitignore new file mode 100644 index 0000000..7c04f7f --- /dev/null +++ b/.var/texmf/.gitignore @@ -0,0 +1 @@ +/fonts -- 2.39.2