├── Briefe ├── Geschäftszeile │ ├── adressdaten.lco │ └── brieftemplate.tex └── Infoblock │ ├── DIN5008_2020.lco │ ├── adressdaten.lco │ └── brieftemplate.tex ├── Lebenslauf ├── Lebenslauf.tex └── adressdaten.lco ├── Metropolis-beamer └── beamer-metropolis-demo.tex └── Rechnung ├── firma.lco ├── peitex-rechnung.lua ├── peitex-rechnung_preamble.tex ├── rechnung-lua.tex └── rechnung-manuell.tex /Briefe/Geschäftszeile/adressdaten.lco: -------------------------------------------------------------------------------- 1 | % Kurze lco-Beispieldatei 2 | % © 2019 Marei Peischl, marei@texhackse.de 3 | % 4 | \ProvidesFile{adressdaten.lco}[2019/10/08] 5 | % Grundsetzliche setzt \setkomavar den Wert einer Variablen 6 | % \setkomavar*{Bezeichner} ändert die Zugehörige Bezeichnung 7 | 8 | \setkomavar{fromname}{Vorname Name} 9 | \setkomavar{fromaddress}{Str. Nr\\PLZ Ort} 10 | %\setkomavar{signature}{}%Falls Abweichend vom Namen 11 | 12 | % Die Emailadresse wird standardmäßig nicht ausgegeben, daher wird das explizit aktiviert 13 | \setkomavar{fromemail}{Email} 14 | \KOMAoptions{fromemail=true} 15 | % Analog geht fromphone, frommobilephone, fromfax, fromurl 16 | 17 | %Logo 18 | \setkomavar{fromlogo}{\includegraphics[width=3cm]{example-image}} 19 | %Damit das Logo auch ausgegeben werden kann: 20 | \RequirePackage{graphicx} 21 | \KOMAoptions{fromlogo=true} 22 | 23 | %Position Logo und Absenderadresse tauschen 24 | \KOMAoptions{fromalign=right} 25 | 26 | %Beispiel für eigene komavar 27 | \newkomavar{fromvat} 28 | \setkomavar*{fromvat}{USt-IdNr.} 29 | 30 | %Daten für Absenderergänzung 31 | \setkomavar{fromvat}{} 32 | \setkomavar{frombank}{} 33 | 34 | %Absenderergänzung 35 | \setkomavar{location}{% 36 | \raggedleft 37 | \ifkomavarempty{fromvat}{}{\usekomavar*{fromvat}:\\\usekomavar{fromvat}\par}% 38 | \ifkomavarempty{frombank}{}{\usekomavar*{frombank}:\\\usekomavar{frombank}} 39 | } 40 | 41 | 42 | \endinput -------------------------------------------------------------------------------- /Briefe/Geschäftszeile/brieftemplate.tex: -------------------------------------------------------------------------------- 1 | % Kurzes kommentiertes scrletter-Beispiel 2 | % © 2019 Marei Peischl, marei@texhackse.de 3 | % 4 | \documentclass[ 5 | ngerman,%Basissprache als globale Option 6 | ]{scrartcl} 7 | 8 | %Vorteil davon scrletter als Paket zu laden: 9 | % Anlagen können direkt im Dokument mit bearbeitet werden. Alles was in Standard-\LaTeX existiert, gibt es hier auch. 10 | \usepackage{scrletter} 11 | 12 | %Unabhängigkeit gegenüber Compilern 13 | \usepackage{iftex} 14 | \ifPDFTeX 15 | \usepackage[utf8]{inputenc}%Falls TeX-Distro älter als Frühjahr 2018 16 | \usepackage{tgbonum}%Schriftart TeX Gyre Bonum 17 | \usepackage[T1]{fontenc} 18 | \else 19 | \usepackage{fontspec} 20 | \setmainfont{TeX Gyre Bonum}%Schriftart TeX Gyre Bonum 21 | \fi 22 | %Alternative Schriftarten findet man unter https://tug.org/FontCatalogue/ 23 | 24 | 25 | \usepackage{babel}%Spracheinstellung, zusammen mit der Sprachoption bei documentclass 26 | 27 | %Adressdaten aus hinterlegten Daten laden, hier lokale Datei adressdaten.lco. 28 | %So muss man die nicht jedesmal neu machen. 29 | %Varianten (privat/geschäftlich) und Installation im lokalen texmf tree möglich 30 | \LoadLetterOption{adressdaten} 31 | 32 | \begin{document} 33 | 34 | 35 | 36 | 37 | \begin{letter}{Empfänger\\Empfängeradresse\\PLZ ort} 38 | 39 | \setkomavar{subject}{Betreff} 40 | %Bei geschäftlichen Dokumenten vielleicht auch 41 | %\setkomavar{title}{Rechnung} 42 | 43 | %Zusätzliche Einträge für die Geschäftszeile: 44 | %date = \today, wenn nicht anders gesezt 45 | %yourref, yourmail, myref, customer, invoice, place 46 | %Alle nach Schema: 47 | \setkomavar{customer}{1234567} 48 | %Bezeichner können analog geändert werden, z.B. 49 | %\setkomavar*{customer}{Mandantennummer} 50 | 51 | \opening{Sehr geehrte Damen und Herren,}%Ohne Opening wird der Briefkopf nicht erzeugt => ggf. leer lassen. 52 | 53 | Hier landet dann der eigentliche Text. 54 | 55 | \closing{Mit freundlichen Grüßen} 56 | 57 | %\ps PS: Hab was vergessen 58 | 59 | %\encl{Anlage 1\\ Anlage 2} 60 | 61 | %\cc{Ggf. Angaben zum Verteiler} 62 | 63 | 64 | \end{letter} 65 | \end{document} -------------------------------------------------------------------------------- /Briefe/Infoblock/DIN5008_2020.lco: -------------------------------------------------------------------------------- 1 | \makeatletter 2 | \renewcommand*{\backaddr@format}[1]{\rule[-\ht\strutbox]{0pt}{0pt}\underline{#1}} 3 | 4 | \LoadLetterOption{DIN} 5 | \setplength{locvpos}{50mm} 6 | \setplength{lochpos}{-125mm} 7 | \setplength{locwidth}{75mm}%max 8 | \setplength{locheight}{40mm}%minimalangabe 9 | \setplength{refvpos}{8.4mm + \useplength{toaddrvpos} + \useplength{toaddrheight}} 10 | 11 | \setkomavar{location}{% 12 | \setlength{\parskip}{\z@}% 13 | \setlength{\parindent}{\z@}% 14 | \renewcommand*{\do@set@reffield}[1]{\Ifkomavarempty{##1}{}{% 15 | \Ifkomavarempty{##1}{}{\usekomavar*{##1}:~}\usekomavar{##1}\par 16 | }}% 17 | \@set@reffields 18 | \par\vspace{\baselineskip}% 19 | \def\\{\par}% 20 | \usekomavar{fromname}\\ 21 | \usekomavar{fromaddress}% 22 | \par\vspace{\baselineskip}% 23 | \do@set@reffield{date}% 24 | \global\def\@set@reffields{}% 25 | } 26 | 27 | \KOMAoptions{refline=nodate,addrfield=topaligned,parskip=full} 28 | \setplength{backaddrheight}{5mm+\dp\strutbox} 29 | \setkomavar{firsthead}{\usekomavar{fromlogo}} 30 | 31 | \makeatother -------------------------------------------------------------------------------- /Briefe/Infoblock/adressdaten.lco: -------------------------------------------------------------------------------- 1 | % Kurze lco-Beispieldatei 2 | % © 2022 Marei Peischl, marei@peitex.de 3 | % 4 | \ProvidesFile{adressdaten.lco}[2022/03/13] 5 | % Grundsetzliche setzt \setkomavar den Wert einer Variablen 6 | % \setkomavar*{Bezeichner} ändert die Zugehörige Bezeichnung 7 | 8 | \setkomavar{fromname}{Vorname Name} 9 | \setkomavar{fromaddress}{Str. Nr\\PLZ Ort} 10 | %\setkomavar{signature}{}%Falls Abweichend vom Namen 11 | 12 | % Die Emailadresse wird standardmäßig nicht ausgegeben, daher wird das explizit aktiviert 13 | \setkomavar{fromemail}{Email} 14 | \KOMAoptions{fromemail=true} 15 | % Analog geht fromphone, frommobilephone, fromfax, fromurl 16 | 17 | %Logo 18 | \setkomavar{fromlogo}{\includegraphics[width=3cm]{example-image}} 19 | %Damit das Logo auch ausgegeben werden kann: 20 | \RequirePackage{graphicx} 21 | \setkomavar{firsthead}{\usekomavar{fromlogo}} 22 | 23 | \endinput -------------------------------------------------------------------------------- /Briefe/Infoblock/brieftemplate.tex: -------------------------------------------------------------------------------- 1 | % Kurzes kommentiertes scrletter-Beispiel für DIN5008:2020 (Infoblock) 2 | % © 2022 Marei Peischl, marei@texhackse.de 3 | % 4 | \documentclass[ 5 | ngerman,%Basissprache als globale Option 6 | ]{scrartcl} 7 | 8 | %Vorteil davon scrletter als Paket zu laden: 9 | % Anlagen können direkt im Dokument mit bearbeitet werden. Alles was in Standard-\LaTeX existiert, gibt es hier auch. 10 | \usepackage{scrletter} 11 | 12 | %Unabhängigkeit gegenüber Compilern 13 | \usepackage{iftex} 14 | \ifPDFTeX 15 | \usepackage[utf8]{inputenc}%Falls TeX-Distro älter als Frühjahr 2018 16 | \usepackage{tgbonum}%Schriftart TeX Gyre Bonum 17 | \usepackage[T1]{fontenc} 18 | \else 19 | \usepackage{fontspec} 20 | \setmainfont{TeX Gyre Bonum}%Schriftart TeX Gyre Bonum 21 | \fi 22 | %Alternative Schriftarten findet man unter https://tug.org/FontCatalogue/ 23 | 24 | 25 | \usepackage{babel}%Spracheinstellung, zusammen mit der Sprachoption bei documentclass 26 | 27 | %Adressdaten aus hinterlegten Daten laden, hier lokale Datei adressdaten.lco. 28 | %So muss man die nicht jedesmal neu machen. 29 | %Varianten (privat/geschäftlich) und Installation im lokalen texmf tree möglich 30 | \LoadLetterOption{adressdaten} 31 | 32 | 33 | \usepackage{geometry} 34 | %Seitenränder 35 | \geometry{left=2.5cm,right=2cm,top=2cm,bottom=4cm} 36 | % Vorgabe: 37 | % Linker Rand 2.5 cm, 38 | % Rechter Rand, 1.5–2 cm (darf bis auf 2 Zentimeter ausgedehnt werden), 39 | % Oberer Rand 2–4.5 cm, 40 | % Unterer Rand 2–4 cm 41 | 42 | \LoadLetterOption{DIN5008_2020} 43 | 44 | \usepackage{layout} 45 | 46 | \begin{document} 47 | 48 | 49 | 50 | \begin{letter}{Empfänger\\Empfängeradresse\\PLZ ort} 51 | 52 | \setkomavar{subject}{Betreff} 53 | %Bei geschäftlichen Dokumenten vielleicht auch 54 | %\setkomavar{title}{Rechnung} 55 | 56 | %Zusätzliche Einträge für den Infoblock: 57 | %date = \today, wenn nicht anders gesezt 58 | %yourref, yourmail, myref, customer, invoice, place 59 | %Alle nach Schema: 60 | \setkomavar{customer}{1234567} 61 | %Bezeichner können analog geändert werden, z.B. 62 | %\setkomavar*{customer}{Mandantennummer} 63 | 64 | \opening{Sehr geehrte Damen und Herren,}%Ohne Opening wird der Briefkopf nicht erzeugt => ggf. leer lassen. 65 | 66 | Hier landet dann der eigentliche Text. 67 | 68 | \vfill 69 | 70 | test 71 | 72 | \closing{Mit freundlichen Grüßen} 73 | 74 | %\ps PS: Hab was vergessen 75 | 76 | %\encl{Anlage 1\\ Anlage 2} 77 | 78 | %\cc{Ggf. Angaben zum Verteiler} 79 | 80 | 81 | \end{letter} 82 | \end{document} -------------------------------------------------------------------------------- /Lebenslauf/Lebenslauf.tex: -------------------------------------------------------------------------------- 1 | \documentclass[ngerman]{scrartcl} 2 | \usepackage{scrletter} 3 | \LoadLetterOption{adressdaten} 4 | 5 | \usepackage{iftex} 6 | \ifPDFTeX 7 | \usepackage[T1]{fontenc} 8 | \fi 9 | 10 | \renewcommand*{\familydefault}{\sfdefault}%serifenlos als default 11 | 12 | 13 | \usepackage{babel} 14 | 15 | 16 | % =========================== 17 | % KOMA-MODERNCVCLASSIC 18 | % =========================== 19 | 20 | \usepackage[myblue]{koma-moderncvclassic}% siehe texdoc für mehr infos 21 | 22 | 23 | 24 | %%%%%%%%%%%%%%% 25 | % Anpassungen Anschreiben 26 | \setkomafont{fromaddress}{\normalsize\rmfamily\slshape\color{colortheme}} 27 | \setkomafont{fromname}{\normalsize\rmfamily\slshape\color{colortheme}} 28 | \setkomafont{subject}{\normalsize\bfseries\color{colortheme}} 29 | 30 | %===== Styleanpassung an ModernCV ===== 31 | \RequirePackage{marvosym} % Symbole für Telefon, Mobile, Mail,... 32 | \providecaptionname{ngerman}\emailname{\color{colortheme}{\Letter}}% 33 | \providecaptionname{ngerman}\phonename{\color{colortheme}{\Mobilefone}}% 34 | \providecaptionname{ngerman}\faxname{\color{colortheme}{\Telefon}}% 35 | \setlength{\maketitlenamemaxwidth}{.75\textwidth} 36 | \renewcommand * {\raggedsignature}{\raggedright} 37 | 38 | %%%%%%%%%%%%%%% 39 | 40 | 41 | \newcommand*{\totalpagemark}{\usekomafont{pagenumber}\thepage/\pageref{lastpage}}% gesamte Seitenanzahl 42 | \pagestyle{scrheadings} 43 | \clearscrheadfoot 44 | \ifoot{CV~\firstname~\familyname} 45 | \ofoot{\totalpagemark} 46 | \begin{document} 47 | 48 | \begin{letter}{Name\\Straße\\Ort} 49 | 50 | \makeatletter 51 | \show\scr@firsthead@var 52 | \makeatother 53 | 54 | \opening{Sehr geehrte/r …} 55 | 56 | Anschreiben 57 | 58 | \closing{Mit freundlichen Grüßen} 59 | 60 | \end{letter} 61 | 62 | 63 | \setcounter{page}{1} 64 | \maketitle 65 | 66 | 67 | \section{Angaben zur Person} 68 | \cvline{Geburtsdatum}{xx.xx.xxxx in Ort} 69 | %\cvline{Geburtsort}{Ort} 70 | \cvline{Nationalität}{deutsch} 71 | \cvline{Familienstand}{ledig} 72 | 73 | \section{Ausbildung} 74 | \cventry{20xx--}{Universität}{}{Ort}{}{Abschluss am xx} 75 | 76 | 77 | \section{Außercurriculare Aktivitäten} 78 | \cventry{September 2015--\\Juni 2016}{Bundesfreiwilligendienst}{Einrichtung}{Ort}{}{} 79 | \section{Sprachkenntnisse} 80 | \cvlanguage{Deutsch}{Muttersprache}{} 81 | \cvlanguage{Englisch}{fließend}{} 82 | \cvlanguage{Latein}{}{Großes Latinum} 83 | \section{EDV-Kenntnisse} 84 | \cvline{Betriebssysteme}{Sicherer Umgang mit …} 85 | \subsection{sonstige IT-Kenntnisse} 86 | \cvcomputer{Software}{fortgeschrittene Kenntnisse}{Software}{Experte} 87 | \section{Hobbies und sonstige Interessen} 88 | \cvline{Musik}{Schlagzeug/Violoncello} 89 | \vspace{1.5cm} 90 | \raggedright 91 | Hamburg, den 1. März 2016 92 | 93 | \bigskip 94 | \null\hfill\parbox{5cm}{\centering 95 | \rule{\linewidth}{1pt} 96 | %\includegraphics[width=\linewidth,height=1cm]{example-image}%beispiel unterschriftenbild 97 | \\\centering\usekomavar{signature}} 98 | 99 | 100 | \label{lastpage}% needed for computing pagetotal 101 | \end{document} 102 | -------------------------------------------------------------------------------- /Lebenslauf/adressdaten.lco: -------------------------------------------------------------------------------- 1 | % Kurze lco-Beispieldatei 2 | % © 2019 Marei Peischl, marei@texhackse.de 3 | \ProvidesFile{adressdaten.lco}[2020/06/26] 4 | 5 | \KOMAoptions{ 6 | fromalign=right, 7 | fromrule=false, 8 | fromlogo=true, 9 | addrfield=true, 10 | backaddress=false, 11 | pagenumber=botright, 12 | foldmarks=BLMT, 13 | fromphone=true, 14 | fromemail=true, 15 | subject=untitled 16 | } 17 | 18 | \setkomavar{phoneseparator}{~} 19 | \setkomavar{faxseparator}{~} 20 | \setkomavar{emailseparator}{~} 21 | 22 | \newcommand*{\firstname}{V.} 23 | \newcommand*{\familyname}{Nachname} 24 | \newcommand*{\acadtitle}{} 25 | \newcommand*{\addressstreet}{Straße Nr} 26 | \newcommand*{\addresscity}{PLZ Ort} 27 | \newcommand*{\address}[2]{\addressstreet{#1}\addresscity{#2}} 28 | 29 | \renewcommand*{\title}{Lebenslauf}% für PDF 30 | 31 | 32 | 33 | \setkomavar{fromphone}{+49\,000\,00\,00\,00\,42} 34 | \setkomavar{fromfax}{} 35 | \setkomavar{fromemail}{mail@texhackse.de} 36 | 37 | \setkomavar{fromname}{\firstname~\familyname} 38 | \setkomavar{fromaddress}{\addressstreet\\\addresscity} 39 | 40 | 41 | \endinput 42 | -------------------------------------------------------------------------------- /Metropolis-beamer/beamer-metropolis-demo.tex: -------------------------------------------------------------------------------- 1 | \documentclass[ 2 | aspectratio=169, %Breitbildformat 3 | ]{beamer} 4 | 5 | 6 | %Kompatibilität für alle Compiler 7 | \usepackage{iftex} 8 | \ifPDFTeX 9 | \usepackage[utf8]{inputenc}%falls Distribution < TL2018 10 | \usepackage[T1]{fontenc} 11 | \fi 12 | 13 | \usepackage[ngerman]{babel}% Sprachangabe -- fals english, ngerman entsprechend ersetzen 14 | 15 | 16 | \usetheme[ 17 | block=fill, %Blöcke sichtbar schalten 18 | ]{metropolis} 19 | 20 | \begin{document} 21 | 22 | \titlegraphic{ 23 | % So werden Bilder eingebunden 24 | \includegraphics[width=1.5cm]{example-image} 25 | % Wenn ihr eigene und keine Beispielbilder nehmt, dann sollte das Bild entweder im Gleichen ordner wie die .tex-Datei liegen oder in einem Unterordnet. 26 | % Falls Unterordner "Bilder": 27 | % \includegraphics[width=1.5cm]{Bilder/dein-eigenes-bild} 28 | } 29 | \title{Demo-Datei beamer} 30 | \subtitle{Mit Verwendung des metropolis theme} 31 | \author{Marei} 32 | \institute{pei\TeX} 33 | 34 | %Titelseite 35 | \frame{\titlepage} 36 | 37 | \section{Abschnitt} 38 | \begin{frame}{Folientitel} 39 | Folie mit Titel 40 | \end{frame} 41 | 42 | \begin{frame}{Aufzählung} 43 | \begin{itemize} 44 | \item eins 45 | \item zwei -- Ab hier wird schrittweise Aufgeblättert 46 | \pause %bewirkt, dass der folgende Inhalt ers ein Overlay später eingeblendet wird. 47 | \begin{itemize} 48 | \item nach der ersten pause 49 | \pause 50 | \item und noch eine 51 | \end{itemize} 52 | \end{itemize} 53 | \end{frame} 54 | 55 | \begin{frame}{Nummerierte Liste} 56 | \begin{enumerate} 57 | \item eins 58 | \item zwei 59 | \end{enumerate} 60 | \end{frame} 61 | 62 | \begin{frame}{großes Bild} 63 | \centering%zentriert den inhalt der ganzen seite 64 | %Bild wird geladen, skalierung über Breite ODER Höhe möglich. Hier in Abhängigkeit von der Zeilenbreite 65 | \includegraphics[width=.9\linewidth]{example-image-16x9} 66 | \end{frame} 67 | 68 | \section{Platzierung} 69 | 70 | \begin{frame}{Spalten} 71 | 72 | %Umgebung für mehere Spalten 73 | \begin{columns} 74 | %Spalte 1 mit 50% der Zeilenbreite 75 | \begin{column}{.5\linewidth}%Breite anteilig an zeilenbreite 76 | \includegraphics[width=\linewidth]{example-image} 77 | \end{column} 78 | 79 | %Spalte 2 mit 30% 80 | \begin{column}{.3\linewidth} 81 | %Man kann elemente auch ineinander Schachteln. 82 | \begin{itemize} 83 | \item eins 84 | \item zwei 85 | \end{itemize} 86 | \end{column} 87 | \end{columns} 88 | 89 | \end{frame} 90 | 91 | \begin{frame}{Boxen} 92 | \begin{block}{Blocktitel} 93 | Inhalt 94 | \end{block} 95 | 96 | \begin{block}{Blocktitel} 97 | Inhalt 98 | \end{block} 99 | 100 | \end{frame} 101 | 102 | \end{document} 103 | -------------------------------------------------------------------------------- /Rechnung/firma.lco: -------------------------------------------------------------------------------- 1 | \ProvidesFile{firma.lco}[2019/03/02] 2 | 3 | \setkomavar{signature}{Marei} 4 | \setkomavar{fromurl}{https://peitex.de} 5 | \setkomavar{fromemail}{kontakt@peitex.de} 6 | \setkomavar{fromaddress}{pei\TeX{} \TeX{}nical Solutions\\Straße 18\\20253 Hamburg} 7 | 8 | \setkomavar{frombank}{Bank XXX\\IBAN …} 9 | \setkomavar{firstfoot}{\usekomafont{pagefoot}\def\\{\space|\space}\usekomavar{fromaddress}\\\usekomavar{frombank}} 10 | 11 | \RequirePackage{array} 12 | 13 | \RequirePackage{graphicx} 14 | \setkomavar{fromlogo}{\includegraphics[width=3cm]{example-image}} 15 | 16 | %Ganzsseitiger Hintergrund 17 | %\DeclareNewLayer[page,background, contents={\includegraphics{Briefbogen}}]{vordruck} 18 | %\AddLayersToPageStyle{@everystyle@}{vordruck} 19 | 20 | \endinput 21 | -------------------------------------------------------------------------------- /Rechnung/peitex-rechnung.lua: -------------------------------------------------------------------------------- 1 | invoice={ 2 | items={}, 3 | vat={}, 4 | } 5 | 6 | function invoice.additem( VAT, Amount, Desc, Price) 7 | table.insert( invoice.items[VAT], 8 | { 9 | Amount=Amount, 10 | Desc=Desc, 11 | Price=Price, 12 | Pricetotal=(math.floor(100*Amount*Price+0.5)/100), 13 | } 14 | ) 15 | end 16 | 17 | function invoice.printitems() 18 | for vat,child in pairs(invoice.items) do 19 | local Vat = invoice.vat[vat]*100 20 | for _, item in pairs (child) do 21 | tex.print( "\\PrintInvoiceItem["..Vat.."]{"..item.Amount.."}{"..item.Desc.."}{"..item.Price.."}{"..item.Pricetotal.."}") 22 | end 23 | end 24 | end 25 | 26 | function invoice.sumupvat(group) 27 | local Vat=invoice.vat[group] 28 | print(group) 29 | local items = invoice.items[group] 30 | if next(items) == nil then 31 | return 0,0,0 32 | else 33 | local netto,vat,brutto 34 | netto = invoice.netto(items) 35 | vat=Vat*netto 36 | brutto=netto+vat 37 | return netto, vat, brutto 38 | end 39 | end 40 | 41 | function invoice.printsumvat() 42 | local Netto, Brutto 43 | Netto=0 44 | Brutto=0 45 | local Vat={} 46 | for _,group in pairs(invoice.items) do 47 | local netto, vat, bruttoa 48 | netto, vat, brutto = invoice.sumupvat(_) 49 | Netto=Netto+netto 50 | Brutto=Brutto+brutto 51 | Vat[_]={vat=vat,netto=netto} 52 | end 53 | tex.print("\\PrintInvoiceSum{netto}{"..Netto.."}") 54 | local vatsum 55 | for i,v in pairs(Vat) do 56 | print(i.."-"..tostring(v["netto"]).."-"..tostring(invoice.vat[i])) 57 | vatsum = v["vat"] 58 | if vatsum == 0 then 59 | else 60 | tex.print("\\PrintVatSum["..v["netto"].."]{"..tostring(invoice.vat[i]*100).."}{"..tostring(v["vat"]).."}") 61 | end 62 | end 63 | tex.print("\\PrintInvoiceSum{brutto}{"..Brutto.."}") 64 | end 65 | 66 | function invoice.netto(items) 67 | local i, p 68 | local sum = 0 69 | for i,p in pairs( items ) do 70 | sum = sum + p.Pricetotal 71 | end 72 | return sum 73 | end 74 | 75 | -------------------------------------------------------------------------------- /Rechnung/peitex-rechnung_preamble.tex: -------------------------------------------------------------------------------- 1 | \RequirePackage{scrletter} 2 | \PassOptionsToPackage{table}{xcolor} 3 | \RequirePackage{luacode} 4 | \RequirePackage{xparse} 5 | \newcounter{invoiceitem} 6 | 7 | \RequirePackage{xltabular} 8 | \RequirePackage{booktabs} 9 | \RequirePackage{ragged2e} 10 | \RequirePackage[round-mode=places,output-decimal-marker={,},round-integer-to-decimal]{siunitx} 11 | 12 | \directlua{require("peitex-rechnung.lua")} 13 | 14 | \NewDocumentCommand{\InitVAT}{om}{ 15 | \luaexec{ 16 | invoice.items[\luastringO{\romannumeral#2}]={} 17 | } 18 | \IfNoValueTF {#1} 19 | { 20 | \luaexec{invoice.vat[\luastringO{\romannumeral#2}]=#2/100} 21 | }{ 22 | \luaexec{invoice.vat[\luastringO{\romannumeral#2}]=#1} 23 | } 24 | } 25 | 26 | %initialisierung auf 5,7,16 oder 19 % Mwst 27 | \InitVAT{16} 28 | \InitVAT{19} 29 | \InitVAT{5} 30 | \InitVAT{7} 31 | 32 | \newcommand*{\SetDefaultVAT}[1]{\def\defaultVAT{#1}} 33 | 34 | \newcommand*{\AddInvoiceItem}[4][\defaultVAT]{% 35 | \luaexec{invoice.additem(\luastringO{\romannumeral#1}, #2, 36 | "\luaescapestring{\unexpanded{#3}}", 37 | #4 ) } 38 | } 39 | 40 | 41 | \newcolumntype{P}{S[round-precision=2,table-parse-only,table-number-alignment=right]<{\PrintTableCurrency}} 42 | 43 | \newcommand*{\PrintInvoiceTabular}{ 44 | \begin{xltabular}{\linewidth}{@{}rS[round-precision=1,table-format=2.1]>{\RaggedRight}XPP@{}} 45 | \toprule[\lightrulewidth] 46 | \noalign{\global\let\PrintTableCurrency\relax}% 47 | \small\emph{Pos.}&\small\emph{Std.}&\small\emph{Beschreibung}&\small\emph{Einzelpreis}&\small\emph{Gesamtpreis}\\\midrule[\heavyrulewidth] 48 | \noalign{\global\let\PrintTableCurrency\TableCurrency}% 49 | \endhead 50 | \bottomrule[\lightrulewidth]\multicolumn{5}{@{}p{\textwidth}@{}}{\strut\hspace*{\fill}\footnotesize Fortsetzung auf der nächsten Seite}\endfoot 51 | \bottomrule\endlastfoot 52 | \directlua{ invoice.printitems()} 53 | \midrule[\heavyrulewidth] 54 | \directlua{invoice.printsumvat()} 55 | \end{xltabular} 56 | } 57 | 58 | %Ausgabe der einzelnen Rechnungspositionen 59 | \newcommand*{\PrintInvoiceItem}[5][]{% 60 | \stepcounter{invoiceitem}% 61 | \theinvoiceitem%Positionsnummer 62 | % Anzahl 63 | \space(\printVAT{#1} MwSt.)% Beschreibung mit Angabe der MwSt, in Klammern 64 | %Einzelpreis 65 | %Gesamtpreis 66 | \tabularnewline 67 | } 68 | 69 | \newcommand*{\PrintInvoiceSum}[2]{ 70 | \PrintSum{\csname invoicesum#1name\endcsname}{#2} 71 | } 72 | 73 | \newcommand*{\PrintVatSum}[3][]{ 74 | \PrintSum{\invoicesumvatname[#1]{#2}}{#3} 75 | } 76 | 77 | \newcommand*{\invoicesumnettoname}{Summe (Netto)} 78 | \newcommand*{\invoicesumbruttoname}{Summe (Brutto)} 79 | \newcommand*{\invoicesumseparator}{:\space} 80 | \newcommand*{\invoicesumvatname}[2][1]{MwSt. \printVAT{#2}\space (\num[round-precision=2]{#1}\TableCurrency)} 81 | \newcommand*{\TableCurrency}{\,€} 82 | \newcommand*{\printVAT}[1]{\num[round-precision=0,round-integer-to-decimal=false]{#1}\,\%} 83 | 84 | \renewcommand*{\theinvoiceitem}{\ifnum\value{invoiceitem}<10\relax0\fi\arabic{invoiceitem}} 85 | 86 | \newcommand*{\PrintPositionenVAT}[5]{% 87 | \stepcounter{invoiceitem}% 88 | \theinvoiceitem\space(\printVAT{#3})\tabularnewline 89 | } 90 | 91 | \newcommand*{\PrintSum}[2]{ 92 | &&\multicolumn{1}{r}{#1\invoicesumseparator}&\multicolumn{1}{l}{}\tabularnewline 93 | } 94 | 95 | \endinput -------------------------------------------------------------------------------- /Rechnung/rechnung-lua.tex: -------------------------------------------------------------------------------- 1 | % !TeX Program=lualatex 2 | \documentclass[parskip=half-,ngerman]{scrartcl} 3 | \usepackage{babel} 4 | \input{peitex-rechnung_preamble} 5 | 6 | \SetDefaultVAT{16}%Voreinstellung falls keine Option fpr die Umsatzsteuer angegeben wird 7 | 8 | %Lade Adressdaten aus der Datei, hier firma.lco 9 | \LoadLetterOption{firma} 10 | 11 | 12 | \begin{document} 13 | \setkomavar{invoice}{2020:123} 14 | \setkomavar{title}{Rechnung} 15 | 16 | \newkomafont{invoicetotal}{\bfseries} 17 | 18 | \begin{letter}{Firma\\Vorname Nachname\\Rechnungsadresse\\PLZ Ort} 19 | 20 | \opening{Guten Tag,} 21 | 22 | hiermit stelle ich Ihnen meine Arbeit im Rahmen des Projektes XX in Rechnung. Der Leistungszeitraum ist aufgrund der Änderung der Umsatzsteuer je Position angegeben. 23 | 24 | %\neueposition[Umsatzsteuer in \% falls abweichend vom Default]{Anzahl}{Beschreibung}{Einzelpreis netto} 25 | \AddInvoiceItem[19]{3}{Weiterentwicklung/funktionale Erweiterung, 04--06/2020}{90} 26 | \AddInvoiceItem{5}{Weiterentwicklung/funktionale Erweiterung, 07--09/2020}{90.01} 27 | \AddInvoiceItem[19]{12.5}{Support und Pflege, 04--06/2020}{50} 28 | \AddInvoiceItem{17.5}{Support und Pflege, 07--09/2020}{50} 29 | 30 | \PrintInvoiceTabular 31 | 32 | Ich bitte Sie oben genannte Betrag binnen 30 Tagen auf unten genanntes Konto zu überweisen. 33 | 34 | %Falls gewünscht 35 | %\closing{} 36 | 37 | 38 | \end{letter} 39 | \end{document} 40 | -------------------------------------------------------------------------------- /Rechnung/rechnung-manuell.tex: -------------------------------------------------------------------------------- 1 | \documentclass[% 2 | parskip=half*, 3 | ngerman, 4 | ]{scrartcl} 5 | 6 | \usepackage{babel} 7 | \usepackage{scrletter} 8 | 9 | \usepackage{iftex} 10 | \ifPDFTeX 11 | \usepackage[T1]{fontenc} 12 | \fi 13 | 14 | 15 | 16 | \usepackage{booktabs} 17 | \usepackage{xltabular} 18 | \usepackage{siunitx} 19 | \usepackage{tabularx} 20 | 21 | \usepackage[autostyle]{csquotes} 22 | \usepackage[datamodel=adressen,defernumbers]{biblatex} 23 | \addbibresource{biblatex.bib} 24 | 25 | \LoadLetterOption{firma} 26 | 27 | 28 | \begin{document} 29 | \setkomavar{date}{18. Mai 2018} 30 | \setkomavar{customer}{42} 31 | \setkomavar{invoice}{156} 32 | \setkomavar{title}{Rechnung} 33 | 34 | \begin{letter}{Vorname Nachname\\Firma\\Adresse\\PLZ Ort} 35 | \opening{Guten Tag,} 36 | 37 | Hiermit stelle ich Ihnen meine Arbeit im Rahmen der Mitarbeit an Ihrem Buch-Projekt in Rechnung. 38 | 39 | \begin{tabularx}{\linewidth}{@{}llXrr@{}} 40 | \toprule 41 | \emph{Pos.} & \emph{Std.} & \emph{Beschreibung} & \emph{Einzelpreis} & \emph{Gesamtpreis} \\ \midrule[\heavyrulewidth] 42 | 1 & 2 & Dienstleistung 1 & 50 & 100 \\ 43 | 2 & 5 & Gratis-Support bei Verwendungsproblemen bezüglich der enwickelten Mechanismen & --- & --- \\ \midrule[\heavyrulewidth] 44 | \multicolumn{4}{r}{Summe (Brutto):} & 100 \\ 45 | \multicolumn{4}{r}{MwSt. :} & 100 \\ 46 | \multicolumn{4}{r}{Summe (netto):} & 100 \\ \bottomrule 47 | \end{tabularx} 48 | 49 | Ich bitte Sie den oben genannten Betrag auf unten genanntes Konto zu überweisen. 50 | 51 | Für das in mich gesetzte Vertrauen und die gute Zusammenarbeit bedanke ich mich herzlichst. 52 | \closing{Mit freundlichen Grüßen} 53 | \end{letter} 54 | \end{document} 55 | 56 | 57 | --------------------------------------------------------------------------------