Ich würde bei folgendem MWE gerne Folgendes erreichen:
wobei die Zahlen einer Spalte jeweils am Komma ausgerichtet werden sollen. Vielen Dank für Vorschläge! Open in Online-Editor
\documentclass{scrartcl}% Klasse: scrartcl, scrreprt, scrbook, scrletter \usepackage[ngerman]{babel} \defineshorthand{"`}{„} \defineshorthand{"'}{“} \usepackage{luaotfload} \usepackage[urw-garamond]{mathdesign} \usepackage[no-math]{fontspec}% \usepackage{tabu} \usepackage{siunitx} \usepackage{datatool} % Setup \DTLnewdb{rechnung} \usepackage{ifthen} \usepackage{eurosym} \usepackage{ifpdf} \usepackage{amstext} \usepackage{etoolbox} \usepackage{multirow} \usepackage{calc} \usepackage{booktabs} \usepackage{dcolumn} \usepackage{numprint} % Setup \nprounddigits{2} \npprintnull \npthousandsep{\,} % \newcolumntype{d}[1]{D{,}{,}{#1}} \newcommand{\mc}[1]{\multicolumn{1}{c}{#1}} \makeatletter \let\npunitcommand\@firstofone \def\usermacro#1{\numprint[\euro]{\zap@space #1 \@empty}} \def\usermacroo#1{\numprint[\euro/h]{\zap@space #1 \@empty}} \makeatother \def\useraa#1{\SI[% group-four-digits=true, round-mode=places, round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\hour}} \def\userbb#1{\SI[group-four-digits=true, round-mode=places, round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\euro\per\hour}} \def\usercc#1{\SI[group-four-digits=true, round-mode=places, round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\euro}} \newcommand\Posten[4][]{% \DTLnewrow{rechnung}% \DTLnewdbentry{rechnung}{Bezeichnung}{#2}% \if\relax\detokenize{#1}\relax% \DTLnewdbentry{rechnung}{Anzahl}{#3}% \DTLnewdbentry{rechnung}{EP}{#4}% {\dtlexpandnewvalue% \FPeval\fpresult{round(#3*#4)(2)}% \DTLnewdbentry{rechnung}{GP}{\fpresult}% }% \else% \DTLnewdbentry{rechnung}{Anzahl}{pauschal}% \DTLnewdbentry{rechnung}{EP}{#4}% \DTLnewdbentry{rechnung}{GP}{#1}% \fi% } \newcommand\mwst{} \newenvironment{rechnung}[1]{% \renewcommand\mwst{#1}% \DTLcleardb{rechnung}% }{% % Alternative \def\Zwischensumme{0}% \DTLforeach*{rechnung}{\gp=GP}{\FPeval\Zwischensumme{\Zwischensumme+\gp}}% \FPeval\MWSt{round(\mwst*\Zwischensumme/100)(2)}% \FPeval\Summe{round(\Zwischensumme+\MWSt)(2)}% \xdef\Summe{\Summe}% \par\centering% \begin{tabu} {X[4,j] *3{>{\tabudecimal\usermacro}X[r]}}% % \toprule% {Leistung} & \mc{Stunden} & \mc{Satz} & \mc{Entgelt}% \DTLforeach*{rechnung}{\bez=Bezeichnung,\anz=Anzahl,\ep=EP,\gp=GP}{% \DTLiffirstrow{\\ \midrule}{\\}% \bez% &\ifstr{\anz}{pauschal}% {\anz} {\nprounddigits{2}%\npnoround \numprint{\anz}%\nprounddigits{2} } &\ifstr{\anz}{pauschal}% {\ep}% {\usermacro{\ep}}% &\usermacro{\gp}% }\\ \cline{4-4}%\midrule% \if\mwst0\else% \textbf{Zwischensumme}&&&\usermacro{\Zwischensumme}\\% Umsatzsteuer (\mwst\,\%)&&&\usermacro{\MWSt}\\% \cline{4-4}%\midrule% \fi% \textbf{Summe}&&&\usermacro{\Summe}\\% \cline{4-4}% \end{tabu}% \vspace*{.15cm}\par% } \begin{document} \begin{rechnung}{19} \Posten[1000.00]{Tätigkeit}{1.00}{} \Posten{Tätigkeit}{22.75}{80} \Posten[2000.00]{Besprechung}{1.00}{} \Posten{Tätigkeit}{24.00}{250.00} \end{rechnung} \end{document} |
Da alle Zahlen auf zwei Nachkommastellen gerundet und in einer Spalte die gleiche Einheit haben ist das ausrichten trivial und von dir schon erledigt.
Um die Einheiten an die richtigen Stellen zu bekommen, musst du jetzt natürlich deine Makros auch an den entsprechenden Stellen verwenden. Bei deiner Variante mit Open in Online-Editor
\documentclass{scrartcl}% Klasse: scrartcl, scrreprt, scrbook, scrletter \usepackage[ngerman]{babel} \defineshorthand{"`}{„} \defineshorthand{"'}{“} \usepackage{luaotfload} \usepackage[urw-garamond]{mathdesign} \usepackage[no-math]{fontspec}% \usepackage{tabu} \usepackage{siunitx} \usepackage{datatool} % Setup \DTLnewdb{rechnung} \usepackage{ifthen} \usepackage{eurosym} \usepackage{ifpdf} \usepackage{amstext} \usepackage{etoolbox} \usepackage{multirow} \usepackage{calc} \usepackage{booktabs} \usepackage{dcolumn} \usepackage{numprint} % Setup \nprounddigits{2} \npprintnull \npthousandsep{\,} % \newcolumntype{d}[1]{D{,}{,}{#1}} \newcommand{\mc}[1]{\multicolumn{1}{c}{#1}} \makeatletter \let\npunitcommand\@firstofone \def\EinheitZeit#1{\numprint[h]{\zap@space #1 \@empty}} \def\EinheitBetrag#1{\numprint[\euro]{\zap@space #1 \@empty}} \def\EinheitSatz#1{\numprint[\euro/h]{\zap@space #1 \@empty}} \makeatother % \def\EinheitZeit#1{\SI[% % group-four-digits=true, round-mode=places, round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\hour}} % \def\EinheitBetrag#1{\SI[group-four-digits=true, round-mode=places, % round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\euro}} % \def\EinheitSatz#1{\SI[group-four-digits=true, round-mode=places, % round-precision=2, round-integer-to-decimal=true, per-mode=symbol]{#1}{\euro\per\hour}} \newcommand\Posten[4][]{% \DTLnewrow{rechnung}% \DTLnewdbentry{rechnung}{Bezeichnung}{#2}% \if\relax\detokenize{#1}\relax% \DTLnewdbentry{rechnung}{Anzahl}{#3}% \DTLnewdbentry{rechnung}{EP}{#4}% {\dtlexpandnewvalue% \FPeval\fpresult{round(#3*#4)(2)}% \DTLnewdbentry{rechnung}{GP}{\fpresult}% }% \else% \DTLnewdbentry{rechnung}{Anzahl}{pauschal}% \DTLnewdbentry{rechnung}{EP}{#4}% \DTLnewdbentry{rechnung}{GP}{#1}% \fi% } \newcommand\mwst{} \newenvironment{rechnung}[1]{% \renewcommand\mwst{#1}% \DTLcleardb{rechnung}% }{% % Alternative \def\Zwischensumme{0}% \DTLforeach*{rechnung}{\gp=GP}{\FPeval\Zwischensumme{\Zwischensumme+\gp}}% \FPeval\MWSt{round(\mwst*\Zwischensumme/100)(2)}% \FPeval\Summe{round(\Zwischensumme+\MWSt)(2)}% \xdef\Summe{\Summe}% \par\centering% \begin{tabu} {X[4,j] *1{>{\tabudecimal\EinheitZeit}X[r]}*1{>{\tabudecimal\EinheitSatz}X[r]}*1{>{\tabudecimal\EinheitBetrag}X[r]}}% % \toprule% {Leistung} & \mc{Stunden} & \mc{Satz} & \mc{Entgelt}% \DTLforeach*{rechnung}{\bez=Bezeichnung,\anz=Anzahl,\ep=EP,\gp=GP}{% \DTLiffirstrow{\\ \midrule}{\\}% \bez% &\ifstr{\anz}{pauschal}% {\anz} {\nprounddigits{2}%\npnoround \EinheitZeit{\anz}%\nprounddigits{2} } &\ifstr{\anz}{pauschal}% {\ep}% {\EinheitSatz{\ep}}% &\EinheitBetrag{\gp}% }\\ \cline{4-4}%\midrule% \if\mwst0\else% \textbf{Zwischensumme}&&&\EinheitBetrag{\Zwischensumme}\\% Umsatzsteuer (\mwst\,\%)&&&\EinheitBetrag{\MWSt}\\% \cline{4-4}%\midrule% \fi% \textbf{Summe}&&&\EinheitBetrag{\Summe}\\% \cline{4-4}% \end{tabu}% \vspace*{.15cm}\par% } \begin{document} \begin{rechnung}{19} \Posten[1000.00]{Tätigkeit}{1.00}{} \Posten{Tätigkeit}{22.75}{80} \Posten[2000.00]{Besprechung}{1.00}{} \Posten{Tätigkeit}{24.00}{250.00} \end{rechnung} \end{document} |
Dein Code ist, dafür dass er recht lang ist, zu wenig kommentiert. Wenn du in ein paar Kommentaren schreibst, was du schon vorbereitet hast, kann man dir auch schneller helfen!