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} gefragt 10 Dez '15, 13:26 TeX-Newb |
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} beantwortet 15 Dez '15, 10:41 sudo |
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!