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 EL |
Ich würde dafür einfach einen weiteren Befehl Ö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} beantwortet 25 Apr '18, 11:59 gast3 |
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 (mitsiunitx
) empfehlen.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.