Hallo liebe Gemeinde,

ich benötige mal wieder ein wenig Hilfe. Und zwar geht es um ein Abrechnungsdokument siehe diesem Beispiel:

Open in Online-Editor
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[paper=a4paper,left=20mm,right=20mm,top=15mm,bottom=15mm]{geometry}
\usepackage[pdftex]{graphicx}
\usepackage{longtable}
\usepackage{pgffor}

\def\ExtractData#1#2{% #1 Liste der Werte, #2 Liste der Makros
\def\ccc{i}%
\foreach \data in {#1} {% Hilfsmakros \auxi, \auxii, \auxiii...
    \expandafter\xdef\csname aux\ccc\endcsname{\data}%
    \xdef\ccc{\ccc i}% 
}%
\xdef\ccc{i}%
\foreach \macro in {#2} {% speichern in den bereitgestellten Makros
    \expandafter\xdef\macro{\csname aux\ccc\endcsname}%
    \xdef\ccc{\ccc i}%
}%
}

\def\row#1#2#3{%
\ExtractData{#1}{\kdname}%
\ExtractData{#2}{\kdnr}%
\ExtractData{#3}{\mandname,\app,\daten,\kosten}%
%------------------ 
\textbf{\KdName{\kdname}}   \\
Kundennr.: \KdNr{\kdnr}     \\
\MandName{\mandname}    & \App{\app}    & \Daten{\daten}    & \Kosten{\kosten}  \tabularnewline
}

\newcommand*{\KdName}[1]{#1}
\newcommand*{\KdNr}[1]{#1}
\newcommand*{\MandName}[1]{#1}
\newcommand*{\App}[1]{#1}
\newcommand*{\Daten}[1]{#1}
\newcommand*{\Kosten}[1]{#1}

\newenvironment{abrechnung}
{\setlength{\tabcolsep}{0pt}%
\begin{longtable} 
    {@{}p{0.35\textwidth}p{0.25\textwidth}p{0.25\textwidth}p{0.1\textwidth}}   
    \multicolumn{2}{c}{}                        &                               &                   \tabularnewline[2ex]
    \textbf{Kunde}          & \textbf{App}      & \textbf{Übertragende Daten}   & \textbf{Kosten}   \tabularnewline[2ex]
    \hline
    \noalign{\vskip 2mm}
    \endhead
}
{
    \tabularnewline[-1ex]\hline\noalign{\vskip 2mm}      
\end{longtable}
 }

\begin{document}    
{\huge Abrechnung} \hfill

\begin{abrechnung}
    \row{Firma1}{2133}{Mandant1, App1, 96, {1,92}}      \\
    \row{Firma2}{10409}{Mandant1, App1, 181, {3,62}}    \\
    \row{Firma3}{67568}{Mandant1, App1, 240, {4,80}}    \\
\end{abrechnung}

\end{document}

Soweit funktioniert auch alles. Nun verhält es sich aber so, dass es pro Firma eben auch mehrere Datensätze zu mehreren Mandanten geben kann, ich bekäme also beispielsweise so etwas übergeben:

Open in Online-Editor
\row{Firma3}{67568}{Mandant1, App1, 240, {4,80}}{Mandant2, App1, 120, {2,40}}{Mandant3, App2, 60, {1,20}}

Da ich aber im Vorfeld nicht weiß, wieviele Datensätze vorhanden sind, stehe ich jetzt vor dem Problem, dass ich diese mit dem oberen Beispiel nicht so einfach auslesen und die Tabelle einfügen kann. Kann mir jemand an dieser Stelle weiterhelfen? Bin ich vielleicht sogar auf dem Holzweg und/oder gibt es einen besseren/andern Weg um dies zu lösen?

Für Hilfe wäre ich dankbar und ich hoffe, dass ich alles verständlich erklärt habe.

Viele Grüße und besten Dank schon mal.

gefragt 07 Mär '16, 10:53

Snoopy%20EL's gravatar image

Snoopy EL
1141813
Akzeptiert-Rate: 0%

1

Befehle mit variable Anzahl obligatorischer Argumente sind schwierig.

Warum nicht weitere \row-Befehle dafür generieren? Ggf. kann man dann in \row auch testen, ob das erste Argument unverändert geblieben oder alternativ leer ist und ggf. die Ausgabe dann anders machen. Wie die Ausgabe sein soll, ist in der Frage ohnehin nicht angegeben. Anders gesagt: Ja, ich denke, Du bist auf dem Holzweg.

Man könnte alternativ weitere Daten zu derselben Firma auch mit einer neuen Anweisung \addrow ergänzen.

Für sauber ausgerichtete Zahlen würde ich übrigens S-Spalten (mit siunitx) empfehlen.

(07 Mär '16, 11:16) saputello

Laut den »Tipps zum Verfassen«, die rechts neben dem Eingabefeld für neue Fragen angezeigt werden, solltest Du übrigens auf "Hallo", "Grüße" und "Danke" verzichten.

(07 Mär '16, 11:21) saputello

Ich würde dafür einfach einen weiteren Befehl \subrow definieren, mit dem man dann die zusätzlichen Daten je Firma eingibt:

Öffne in Overleaf
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[paper=a4paper,left=20mm,right=20mm,top=15mm,bottom=15mm]{geometry}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{pgffor}

\def\ExtractData#1#2{% #1 Liste der Werte, #2 Liste der Makros
\def\ccc{i}%
\foreach \data in {#1} {% Hilfsmakros \auxi, \auxii, \auxiii...
    \expandafter\xdef\csname aux\ccc\endcsname{\data}%
    \xdef\ccc{\ccc i}% 
}%
\xdef\ccc{i}%
\foreach \macro in {#2} {% speichern in den bereitgestellten Makros
    \expandafter\xdef\macro{\csname aux\ccc\endcsname}%
    \xdef\ccc{\ccc i}%
}%
}

\def\row#1#2#3{%
\ExtractData{#1}{\kdname}%
\ExtractData{#2}{\kdnr}%
\ExtractData{#3}{\mandname,\app,\daten,\kosten}%
%------------------ 
\textbf{\KdName{\kdname}}   \\
Kundennr.: \KdNr{\kdnr}     \\
\MandName{\mandname}    & \App{\app}    & \Daten{\daten}    & \Kosten{\kosten}  \tabularnewline
}
\newcommand*{\subrow}[1]{%
  \noalign{\vskip-2ex}% optional
  \ExtractData{#1}{\mandname,\app,\daten,\kosten}%
  \MandName{\mandname} & \App{\app} & \Daten{\daten} & \Kosten{\kosten} \tabularnewline
}

\newcommand*{\KdName}[1]{#1}
\newcommand*{\KdNr}[1]{#1}
\newcommand*{\MandName}[1]{#1}
\newcommand*{\App}[1]{#1}
\newcommand*{\Daten}[1]{#1}
\newcommand*{\Kosten}[1]{#1}

\newenvironment{abrechnung}
{\setlength{\tabcolsep}{0pt}%
\begin{longtable} 
    {@{}p{0.35\textwidth}p{0.25\textwidth}p{0.25\textwidth}p{0.1\textwidth}}   
    \multicolumn{2}{c}{}                        &                               &                   \tabularnewline[2ex]
    \textbf{Kunde}          & \textbf{App}      & \textbf{Übertragende Daten}   & \textbf{Kosten}   \tabularnewline[2ex]
    \hline
    \noalign{\vskip 2mm}
    \endhead
}
{
    \tabularnewline[-1ex]\hline\noalign{\vskip 2mm}      
\end{longtable}
 }

\begin{document}    
{\huge Abrechnung} \hfill

\begin{abrechnung}
    \row{Firma1}{2133}{Mandant1, App1, 96, {1,92}}      \\
    \row{Firma2}{10409}{Mandant1, App1, 181, {3,62}}    \\
    \row{Firma3}{67568}{Mandant1, App1, 240, {4,80}}    \\
    \subrow{Mandant2, App1, 120, {2,40}} \\
    \subrow{Mandant3, App2, 60, {1,20}}\end{abrechnung}

\end{document}

Mehr Zeilen je Firma

Permanenter link

beantwortet 25 Apr '18, 11:59

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×256
×2

gestellte Frage: 07 Mär '16, 10:53

Frage wurde gesehen: 5,473 Mal

zuletzt geändert: 25 Apr '18, 11:59