Seite 1 von 1

Rechnung mit variabler Anzahl an Positionen

Verfasst: Do 26. Sep 2024, 16:23
von Tim987
Hallo Forum,

ich versuche ein Template für eine monatliche Rechnung zu erstellen. Dazu sollen jeden Monat Positionen mit Datum und Arbeitsstunden eingegeben werden, daraus soll eine Summe an Stunden (und letztendlich ein Rechnungsbetrag) berechnet werden. Das ist mein erster Versuch:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{pgffor}
\usepackage[nomessages]{fp}

\setlength{\parindent}{0pt}

\newcommand{\neuePosition}[1]{
\expandafter\def\csname pos\Alph{posIter}\endcsname{#1}
\stepcounter{posIter}
#1
}

\begin{document}
\newcounter{posIter}
\setcounter{posIter}{1}

Stundenuebersicht:\\

01.09.2024: \neuePosition{3.0} \\
02.09.2024: \neuePosition{1.5} \\
10.09.2024: \neuePosition{2.0} \\


\FPset\summe{0}


\addtocounter{posIter}{-1}

\foreach \n in {A,...,\Alph{posIter}}{

%\csname pos\n\endcsname
\FPset\tmp{\csname pos\n\endcsname}
%\tmp

\FPadd\summe\summe\tmp
}

Die Summe ist \summe
\end{document}  
Ich versuche mit jedem neuen Eintrag eine neue Variable zu definieren (posA, posB,...) und dann in einem for loop alle Einträge zu summieren. Das Anlegen der Variablen klappt, ich kann im loop auch über sie iterieren -- die Summe ist allerdings immer 0.

Hat jemand eine Idee, wo mein Problem liegt und kann mir helfen?

Re: Rechnung mit variabler Anzahl an Positionen

Verfasst: Sa 21. Dez 2024, 08:02
von Rolli
Warum machst Du das nicht einfach in \neuePosition?
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{pgffor}
\usepackage[nomessages]{fp}

\setlength{\parindent}{0pt}

\newcommand{\neuePosition}[1]{
\expandafter\def\csname pos\Alph{posIter}\endcsname{#1}
\stepcounter{posIter}
#1
\FPset\tmp{#1}
\FPadd\summe\summe\tmp
}

\begin{document}
\newcounter{posIter}
\setcounter{posIter}{1}

\FPset\summe{0}

Stundenuebersicht:\\

01.09.2024: \neuePosition{3.0} \\
02.09.2024: \neuePosition{1.5} \\
10.09.2024: \neuePosition{2.0} \\

Die Summe ist \summe
\end{document}
Gruß vom Rolli