From d59f47a9813c9a23ba5988ed51b4014967529366 Mon Sep 17 00:00:00 2001 From: KonnosPB Date: Thu, 26 Jun 2025 22:35:46 +0200 Subject: [PATCH] Add new LaTeX templates for CV, letters, and envelopes - Created a CV template (My-CV-Briefvorlage.tex) with sections for contact information, skills, work history, education, and publications. - Added a standard letter template (Standard-Briefumschlag.tex) for formal correspondence. - Introduced a simple letter template (Standard-Briefvorlage-Schlicht.tex) with customizable sender information. - Developed a detailed letter template (Standard-Briefvorlage.tex) with personal data fields and a structured layout. - Included a class option file (brief-absender.lco) for customizing sender details in letters. - Added a package (tkzexample.sty) for enhanced code examples and graphics in LaTeX documents. --- .gitignore | 302 +++++++++ 2024-01-05-Minimalbeispiel.tex | 28 + 2024-06-03-Elterngeldangelegenheit.tex | 55 ++ ...ersorgungsamt-Dortmund-Dok-Nachreichen.tex | 56 ++ 2024-09-01-Norisbank-Namensänderung.tex | 63 ++ ...echnung-Wohngebäuderversicherung_PM_FL.tex | 91 +++ ...undbesitzabgaben-PM1-FL35-für-Nachbarn.tex | 154 +++++ 2025-06-21-Kündingung-O2-Handyvertrag.tex | 117 ++++ ...sicherung-Wohngebäudeversicherung-2024.tex | 112 ++++ .../Berechnung-Gesamt-Grundbesitzabgaben.tex | 153 +++++ KI-Test.tex | 45 ++ LICENSE | 17 +- Latex-Resourcen/brief-absender-rena.lco | 46 ++ Latex-Resourcen/brief-absender.lco | 46 ++ Latex-Resourcen/my-resume.cls | 601 ++++++++++++++++++ Latex-Resourcen/picture.jpg | Bin 0 -> 94006 bytes Latex-Vorlagen/My-CV-Briefvorlage.tex | 222 +++++++ Latex-Vorlagen/Standard-Briefumschlag.tex | 25 + .../Standard-Briefvorlage-Schlicht.tex | 69 ++ Latex-Vorlagen/Standard-Briefvorlage.tex | 100 +++ Latex-Vorlagen/brief-absender.lco | 46 ++ Latex-Vorlagen/tkzexample.sty | 502 +++++++++++++++ README.md | 1 - 23 files changed, 2837 insertions(+), 14 deletions(-) create mode 100644 .gitignore create mode 100644 2024-01-05-Minimalbeispiel.tex create mode 100644 2024-06-03-Elterngeldangelegenheit.tex create mode 100644 2024-07-23-Versorgungsamt-Dortmund-Dok-Nachreichen.tex create mode 100644 2024-09-01-Norisbank-Namensänderung.tex create mode 100644 2025-01-03-Beitragesrechnung-Wohngebäuderversicherung_PM_FL.tex create mode 100644 2025-02-09-Grundbesitzabgaben-PM1-FL35-für-Nachbarn.tex create mode 100644 2025-06-21-Kündingung-O2-Handyvertrag.tex create mode 100644 Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Beitragsversicherung-Wohngebäudeversicherung-2024.tex create mode 100644 Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Grundbesitzabgaben.tex create mode 100644 KI-Test.tex create mode 100644 Latex-Resourcen/brief-absender-rena.lco create mode 100644 Latex-Resourcen/brief-absender.lco create mode 100644 Latex-Resourcen/my-resume.cls create mode 100644 Latex-Resourcen/picture.jpg create mode 100644 Latex-Vorlagen/My-CV-Briefvorlage.tex create mode 100644 Latex-Vorlagen/Standard-Briefumschlag.tex create mode 100644 Latex-Vorlagen/Standard-Briefvorlage-Schlicht.tex create mode 100644 Latex-Vorlagen/Standard-Briefvorlage.tex create mode 100644 Latex-Vorlagen/brief-absender.lco create mode 100644 Latex-Vorlagen/tkzexample.sty diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b82bf8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,302 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +*/*.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib +*.pdf diff --git a/2024-01-05-Minimalbeispiel.tex b/2024-01-05-Minimalbeispiel.tex new file mode 100644 index 0000000..1b06142 --- /dev/null +++ b/2024-01-05-Minimalbeispiel.tex @@ -0,0 +1,28 @@ +\documentclass[paper=a4,fontsize=12pt]{scrlttr2} +\usepackage{fontspec} +\usepackage{libertine} +\usepackage{polyglossia} + +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\setkomavar{fromname}{Max Mustermann} +\setkomavar{fromaddress}{Musterstraße 1 \\ 12345 Musterstadt} +\setkomavar{fromphone}{01234/56789} +\setkomavar{fromemail}{max@example.com} +\setkomavar{place}{Musterstadt} +\setkomavar{date}{03.01.2025} + +\begin{document} +\begin{letter}{ +W.E.G. Paul-Müller-Str. 9/Frauenlobstr. 35 \\ +Paul-Müller-Str. 9 \\ +44805 Bochum +} + +\opening{Liebe Nachbarn,} + +Dies ist ein Testbrief. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} diff --git a/2024-06-03-Elterngeldangelegenheit.tex b/2024-06-03-Elterngeldangelegenheit.tex new file mode 100644 index 0000000..32b853a --- /dev/null +++ b/2024-06-03-Elterngeldangelegenheit.tex @@ -0,0 +1,55 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{sfot} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} + +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{./Latex-Vorlagen/brief-absender} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + +\setkomavar{subject}{Geschäftszeichen: 51F0605043} +\setkomavar{place}{Bochum} +\setkomavar{date}{03. Juni 2024} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + +\begin{document} +\begin{letter}{ +Stadt Dortmund\\ +Untere Brinkstraße 80 \\ +44141 Dortmund +} + +\opening{Sehr geehrte Damen und Herren,} + + +ich beziehe mich auf Ihre Anfrage bezüglich der Gehaltsabrechnungen für die Monate September und Oktober 2022 sowie Juni und Juli 2023 im Zusammenhang mit meiner Elterngeldangelegenheit, Geschäftszeichen 51F0605043. + +Leider kam es zu einer Verzögerung bei der Einreichung dieser Unterlagen, für die ich mich entschuldigen möchte. + +In der Anlage finden Sie nun die angeforderten Gehaltsabrechnungen. Ich hoffe, dass diese Informationen ausreichen, um den Prozess fortzusetzen. Sollten Sie weitere Informationen benötigen, stehe ich Ihnen gerne zur Verfügung. + + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/2024-07-23-Versorgungsamt-Dortmund-Dok-Nachreichen.tex b/2024-07-23-Versorgungsamt-Dortmund-Dok-Nachreichen.tex new file mode 100644 index 0000000..dce5f00 --- /dev/null +++ b/2024-07-23-Versorgungsamt-Dortmund-Dok-Nachreichen.tex @@ -0,0 +1,56 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{sfot} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} + +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{Latex-Resourcen/brief-absender-rena} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + +\setkomavar{subject}{Ein wichtiger Betreff} +\setkomavar{place}{Bochum} +\setkomavar{date}{23. Juli 2024} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + +\begin{document} +\begin{letter}{ +Stadt Dortmund\\ +Untere Brinkstraße 80 \\ +44141 Dortmund +} + +\opening{Sehr geehrte Damen und Herren,} + + +hiermit möchte ich auf Ihr Schreiben vom [Datum des Mahnschreibens] Bezug nehmen, in dem Sie das Fehlen meines Selbstständigen Nachweises anmahnen. + +Ich habe den entsprechenden Nachweis bereits am [Datum der ursprünglichen Absendung] an Ihr Amt verschickt. Es scheint jedoch, dass das Dokument nicht bei Ihnen eingegangen ist. Daher reiche ich den Selbstständigen Nachweis hiermit erneut nach. + +Anbei finden Sie eine Kopie des Nachweises. Ich bitte um Bestätigung des Eingangs und bedanke mich im Voraus für Ihre Unterstützung. + +Für Rückfragen stehe ich Ihnen jederzeit gerne zur Verfügung. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/2024-09-01-Norisbank-Namensänderung.tex b/2024-09-01-Norisbank-Namensänderung.tex new file mode 100644 index 0000000..5be2625 --- /dev/null +++ b/2024-09-01-Norisbank-Namensänderung.tex @@ -0,0 +1,63 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{sfot} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} + +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{./Latex-Vorlagen/brief-absender} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + +\setkomavar{subject}{Mitteilung zur Namensänderung. Kundennr.: 431 0420075 00} +\setkomavar{place}{Bochum} +\setkomavar{date}{1. September 2024} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + +\begin{document} +\begin{letter}{ +norisbank GmbH\\ +10910 Berlin \\ +} + +\opening{Sehr geehrter Damen und Herren,} + + +hiermit möchte ich Sie über meine Namensänderung informieren. Nach einem Telefonat mit einem Ihrer Mitarbeiter wurde mir mitgeteilt, dass ich die Änderung postalisch oder per E-Mail vornehmen kann.\\ + +% Alle weiteren Absätze sollen eingerückt sein. +% Guter Artikel: +% https://practicaltypography.com/first-line-indents.html +%\setlength{\parindent}{20pt} + +Mein bisheriger Name lautete: Konstantinos Papoulas.\\ +Mein neuer Name lautet: Konstantinos Papoulas-Brosch.\\ + +Bitte leiten Sie die notwendigen Schritte für den PostIdent-Prozess ein, damit die Namensänderung in Ihren Unterlagen vorgenommen werden kann.\\ + +Anbei finden Sie eine Kopie meines Personalausweises zur Bestätigung meiner Identität und der Namensänderung.\\ + +Für Rückfragen stehe ich Ihnen gerne zur Verfügung. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/2025-01-03-Beitragesrechnung-Wohngebäuderversicherung_PM_FL.tex b/2025-01-03-Beitragesrechnung-Wohngebäuderversicherung_PM_FL.tex new file mode 100644 index 0000000..33753a4 --- /dev/null +++ b/2025-01-03-Beitragesrechnung-Wohngebäuderversicherung_PM_FL.tex @@ -0,0 +1,91 @@ +\documentclass[paper=a4,fontsize=12pt]{scrlttr2} +\usepackage{fontspec} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\usepackage{datetime2} +\usepackage{inputenc} +\usepackage[nomessages]{fp} % Math https://ctan.net/macros/latex/contrib/fp/documentation.pdf + +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} +\usepackage[babel,german=quotes]{csquotes} + +\LoadLetterOption{./Latex-Resourcen/brief-absender} + +\renewcommand{\familydefault}{\sfdefault} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Meine Spezifischen Anpassungen +\newcommand{\cy}{24} + +\FPset\BEITRAG{1505.63} %sets Gesamtkosten + +% Konstanten +\FPset\MiteigentumsanteilFLEG{0.27198} %sets Miteigentumsanteil Frauenlobstr. 35 EG +\FPset\MiteigentumsanteilFLOG{0.24986} %sets Miteigentumsanteil Frauenlobstr. 35 OG +\FPset\MiteigentumsanteilPMEG{0.26289} %sets Miteigentumsanteil Paul-Müller-Str. 9 EG +\FPset\MiteigentumsanteilPMOG{0.21527} %sets Miteigentumsanteil Paul-Müller-Str. 9 OG + +% Berechnung FL35 EG +\FPmul\FLEGBETRAGRAW\BEITRAG\MiteigentumsanteilFLEG +\FPeval\FLEGBETRAG{round(FLEGBETRAGRAW:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung FL35 OG +\FPmul\FLOGBETRAGRAW\BEITRAG\MiteigentumsanteilFLOG +\FPeval\FLOGBETRAG{round(FLOGBETRAGRAW:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung PM9 EG +\FPmul\PMEGBETRAGRAW\BEITRAG\MiteigentumsanteilPMEG +\FPeval\PMEGBETRAG{round(PMEGBETRAGRAW:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung PM9 OG +\FPmul\PMOGBETRAGRAW\BEITRAG\MiteigentumsanteilPMOG +\FPeval\PMOGBETRAG{round(PMOGBETRAGRAW:2)} % Gerundet auf 2 Nachkommastellen + +\setkomavar{subject}{Beitragsrechnung 2025: Wohngebäudeversicherung} +\setkomavar{place}{Bochum} +\setkomavar{date}{05.01.2025} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + +\begin{document} +\begin{letter}{ +W.E.G. Paul-Müller-Str. 1/Frauenlobstr. 35 \\ +Paul-Müller-Str. 1 \\ +44805 Bochum +} + +\opening{Liebe Nachbarn,} + +ich hoffe, es geht euch allen gut. + +Zum Jahreswechsel haben wir die Beitragsrechnung für 2025 von der LVM Landwirtschaftlicher Versicherungsverein Münster a.G in Höhe von 1505,63 € erhalten, die ich bereits überwiesen habe. Ich bitte euch daher, euren Anteil an Verena zu überweisen. \\ +\\ +Ich habe die Kosten gemäß der Miteigentumsanteile wie folgt aufgeteilt: + +\begin{tabular}[h]{|l|c|r|} +\hline +Wohnung & Miteigentumsanteil & Betrag \\ +\hline +Frauenlobstr. 35 EG & 27.198/100.000 & \FLEGBETRAG € \\ +\hline +Frauenlobstr. 35 OG & 24.986/100.000 & \FLOGBETRAG € \\ +\hline +Paul-Müller-Str. 9 EG & 26.289/100.000 & \PMEGBETRAG € \\ +\hline +Paul-Müller-Str. 9 OG & 21.527/100.000 & \PMOGBETRAG € \\ +\hline +\end{tabular} +\\ +\\ + \\ +Vielen Dank im Voraus für eure zügige Bearbeitung und Überweisung des fälligen Betrags. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} diff --git a/2025-02-09-Grundbesitzabgaben-PM1-FL35-für-Nachbarn.tex b/2025-02-09-Grundbesitzabgaben-PM1-FL35-für-Nachbarn.tex new file mode 100644 index 0000000..2f8828b --- /dev/null +++ b/2025-02-09-Grundbesitzabgaben-PM1-FL35-für-Nachbarn.tex @@ -0,0 +1,154 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{cmbright} % Font katalog https://tug.org/FontCatalogue/sansseriffonts.html +\usepackage{fontenc} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\usepackage[german]{datetime2} +%\usepackage[utf8]{inputenc} +\usepackage[nomessages]{fp} % Math https://ctan.net/macros/latex/contrib/fp/documentation.pdf + +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{./Latex-Resourcen/brief-absender} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Meine Spezifischen Anpassungen +\newcommand{\yearshort}{25} +\newcommand{\yearlong}{2025} +\newcommand{\currdate}{09.02.2025} +\FPset\STRGEBFEB{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.02.24 +\FPset\STRGEBMAR{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.05.24 +\FPset\STRGEBAUG{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.08.24 +\FPset\STRGEBNOV{226.57} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.11.24 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% Konstanten +\FPset\MEAFLEG{0.27198} %sets Miteigentumsanteil Frauenlobstr. 35 EG +\FPset\MEAFLOG{0.24986} %sets Miteigentumsanteil Frauenlobstr. 35 OG +\FPset\MEAPMEG{0.26289} %sets Miteigentumsanteil Paul-Müller-Str. 1 EG +\FPset\MEAPMOG{0.21527} %sets Miteigentumsanteil Paul-Müller-Str. 1 OG + +% Berechnung FL35 EG +\FPmul\FLEGSTRGEBFEB\STRGEBFEB\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\FLEGSTRGEBMAR\STRGEBMAR\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\FLEGSTRGEBAUG\STRGEBAUG\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\FLEGSTRGEBNOV\STRGEBNOV\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\FLEGSTRFEB{round(\FLEGSTRGEBFEB:2)} +\FPeval\FLEGSTRMAR{round(\FLEGSTRGEBMAR:2)} +\FPeval\FLEGSTRAUG{round(\FLEGSTRGEBAUG:2)} +\FPeval\FLEGSTRNOV{round(\FLEGSTRGEBNOV:2)} + +% Berechnung FL35 OG +\FPmul\FLOGSTRGEBFEB\STRGEBFEB\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\FLOGSTRGEBMAR\STRGEBMAR\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\FLOGSTRGEBAUG\STRGEBAUG\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\FLOGSTRGEBNOV\STRGEBNOV\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\FLOGSTRFEB{round(\FLOGSTRGEBFEB:2)} +\FPeval\FLOGSTRMAR{round(\FLOGSTRGEBMAR:2)} +\FPeval\FLOGSTRAUG{round(\FLOGSTRGEBAUG:2)} +\FPeval\FLOGSTRNOV{round(\FLOGSTRGEBNOV:2)} + +% Berechnung PM1 EG +\FPmul\PMEGSTRGEBFEB\STRGEBFEB\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\PMEGSTRGEBMAR\STRGEBMAR\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\PMEGSTRGEBAUG\STRGEBAUG\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\PMEGSTRGEBNOV\STRGEBNOV\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\PMEGSTRFEB{round(\PMEGSTRGEBFEB:2)} +\FPeval\PMEGSTRMAR{round(\PMEGSTRGEBMAR:2)} +\FPeval\PMEGSTRAUG{round(\PMEGSTRGEBAUG:2)} +\FPeval\PMEGSTRNOV{round(\PMEGSTRGEBNOV:2)} + +% Berechnung PM1 OG +\FPmul\PMOGSTRGEBFEB\STRGEBFEB\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\PMOGSTRGEBMAR\STRGEBMAR\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\PMOGSTRGEBAUG\STRGEBAUG\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\PMOGSTRGEBNOV\STRGEBNOV\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\PMOGSTRFEB{round(\PMOGSTRGEBFEB:2)} +\FPeval\PMOGSTRMAR{round(\PMOGSTRGEBMAR:2)} +\FPeval\PMOGSTRAUG{round(\PMOGSTRGEBAUG:2)} +\FPeval\PMOGSTRNOV{round(\PMEGSTRGEBNOV:2)} + + +\setkomavar{subject}{Grundbesitzabgaben \yearlong: Straßenreinigungsgebühr/Niederschlagswasser} +\setkomavar{place}{Bochum} +\setkomavar{date}{\currdate} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + + + +\begin{document} +\begin{letter}{ +W.E.G. Paul-Müller-Str. 1/Freunlobstr. 35 \\ +Paul-Müller-Str. 1 \\ +44805 Bochum +} + +\opening{Liebe Nachbarn,} + +ich hoffe, dass es Euch allen gut geht. Ich möchte Euch darüber informieren, dass die Stadt Bochum die Grundbesitzabgaben für Straßenreinigung und Niederschlagswasser für das Jahr \yearlong\ zugestellt hat. Wie gewohnt werde ich die anfallenden Kosten vierteljährlich im Voraus begleichen. + +Entsprechend unserer Vereinbarung bitte ich Euch, Euren jeweiligen Anteil an diesen Kosten zu überweisen. Die genauen Beträge, basierend auf den jeweiligen Miteigentumsanteilen, habe ich in der folgenden Tabelle aufgeführt. + +% Alle weiteren Absätze sollen eingerückt sein. +% Guter Artikel: +% https://practicaltypography.com/first-line-indents.html +%\setlength{\parindent}{20pt} +\begin{tabular}[h]{|l|c|p{1.8cm}|p{1.8cm}|p{1.8cm}|p{1.8cm}|} +\hline +\rule[0ex]{0pt}{2.9ex} Wohnung & Miteigentumsanteil & \multicolumn{4}{c|}{Straßenreinigungsgebühr/Niederschlagswasser} \\ +\rule[0ex]{0pt}{2.9ex} & & \multicolumn{4}{c|}{Kassenzeichen 9000500564760} \\ +\rule[0ex]{0pt}{2.7ex} & & 15.02.\yearshort & 15.05.\yearshort & 15.08.\yearshort & 15.11.\yearshort \\ +\rule[0ex]{0pt}{2.7ex} & & \STRGEBFEB € & \STRGEBMAR € & \STRGEBAUG € & \STRGEBNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 EG & 27.198/100.000 & \FLEGSTRFEB € & \FLEGSTRMAR € & \FLEGSTRAUG € & \FLEGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 OG & 24.986/100.000 & \FLOGSTRFEB € & \FLOGSTRMAR € & \FLOGSTRAUG € & \FLOGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 EG &26.289/100.000 & \PMEGSTRFEB € & \PMEGSTRMAR € & \PMEGSTRAUG € & \PMEGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 OG & 21.527/100.000 & \PMOGSTRFEB € & \PMOGSTRMAR € & \PMOGSTRAUG € & \PMOGSTRNOV € \\ +\hline +\end{tabular} +\\ +\\ +Ich bedanke mich im Voraus für Eure zügige Bearbeitung und die Überweisung des entsprechenden Betrags. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/2025-06-21-Kündingung-O2-Handyvertrag.tex b/2025-06-21-Kündingung-O2-Handyvertrag.tex new file mode 100644 index 0000000..34c7579 --- /dev/null +++ b/2025-06-21-Kündingung-O2-Handyvertrag.tex @@ -0,0 +1,117 @@ +% +\documentclass[fontsize=11pt, version=last]{scrlttr2} +% +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[ngerman]{babel} +\usepackage{lmodern} % Schriftart (hauptsache bei Lebenslauf gleich) +\renewcommand*\familydefault{\sfdefault} % sorgt für serifenlose Schrift (auch wie bei Lebenslauf) +\usepackage{microtype} % optional, aber schöner +\usepackage{ellipsis} % optional, aber schöner +\usepackage{xcolor} % Farben für eigenes Layout +\usepackage{marvosym} % Symbole für eigenes Layout +\LoadLetterOption{DIN} % Einstellungen für DIN 676 laden +\setlength{\parindent}{0em} % Keine Einrpckung +\renewcommand*{\raggedsignature}{\raggedright} % Signatur wird bündig gesetzt; muss auch nicht sein, aber ich find es schöner + +% +%--------------------------------------------------------------------------- +% PERSÖNLICHE DATEN (dies sind die Felder, zum Selbstausfüllen) +% +\newcommand{\mVorname}{Konstantinos} +\newcommand{\mNachname}{Papoulas-Brosch} +\newcommand{\mStrasse}{Paul-Müller-Str. 9} +\newcommand{\mStadt}{Bochum} +\newcommand{\mPLZ}{44805} +\newcommand{\mTelefon}{+49~(0)152~55280604} +\newcommand{\mEMail}{Konstantin.Papoulas@web.de} +\setkomavar{date}{\today} +% +%--------------------------------------------------------------------------- +% ABSENDER (aus den persönlichen Daten generiert) +% +\setkomavar{fromname}{\mVorname{}~\mNachname{}} % Name +\setkomavar{fromaddress}{\mStrasse{}\\{}\mPLZ{}~\mStadt{}} % Adresse +\setkomavar{fromphone}{\mTelefon{}} % Telefonnummer +\setkomavar{fromemail}{\mEMail{}} % Email-Adresse +\setkomavar{place}{\mStadt{}} % Ort +\setkomavar{signature}{\mVorname{}~\mNachname{}} % Signatur +% +% +%--------------------------------------------------------------------------- +% FARBEN (aus "\texlive\2013\texmf-dist\tex\latex\moderncv\moderncvcolorblue.sty") +% +\definecolor{color0}{rgb}{0,0,0} % Schwarz (normale Schrift) +\definecolor{color2}{rgb}{0.45,0.45,0.45} % Dunkles Grau (zum Abheben) +%%%\color{color2!50} % Nur zur Info: Helles Grau (zum Abheben) +% +%--------------------------------------------------------------------------- +% +% EIGENER BRIEFKOPF nach "moderncv" +% +\setkomavar{firsthead}{ + %-Name mit Trennlinie------------------------------- + \begin{flushright} + {\fontsize{38}{40} \selectfont % Schriftgröße für Namen + \color{color2!80}\mVorname \ % Farbe für Vornamen + \color{color2}\mNachname} \\[-.35em] % Farbe für Nachnamen und Abstand zu Trennlinie + {\color{color2!50}\rule{\textwidth}{.25ex}} % Trennlinie einfügen + \end{flushright} + %-Adressdaten--------------------------------------- + \vspace{-0.6cm} % Daten werden nach oben verschoben + \begin{flushright} % Freie Auflistung der Adressdaten + \color{color2} + \textit{\mStrasse{},~\mPLZ{}~\mStadt{}\\} + \textit{\Mobilefone~\mTelefon{}\quad{}\Letter~\mEMail{}} + \end{flushright} + %---------------------------------------------------- +} + +%\setkomavar{yourref}{Kundennummer: 6093057652} +%\setkomavar{subject}{Außerordentliche Kündigung wegen Preiserhöhung \& Rufnummernmitnahme} +% +%================================================================================== +% BEGINN +% +\begin{document} + % + \begin{letter}{% + \textbf{Telefonica Germany GmbH & Co. OHG}\\% + Kundenbetreuung\\ 90345 Nürnberg + % + %\setkomavar{title}{Titel} + \setkomavar{subject}{% + Außerordentliche Kündigung wegen Preiserhöhung \& Rufnummernmitnahme. \\% + Kundennummer: 6093057652} + % + \opening{Sehr geehrte Damen und Herren,} + % + hiermit kündige ich meinen Mobilfunkvertrag mit der oben genannten Kundennummer fristlos außerordentlich zum frühestmöglichen Zeitpunkt aufgrund der von Ihnen angekündigten Preiserhöhung. Das entsprechende Schreiben von Ihnen ist auf den 21.05.2025 datiert. + Bitte bestätigen Sie mir meine außerordentliche Kündigung und teilen Sie mir das Vertragsende zum nächstmöglichen Termin schriftlich mit. + + Zusätzlich beantrage ich die Mitnahme (Portierung) meiner Rufnummer 015255280604 zu meinem neuen Anbieter Freenet. + Ich bitte Sie, für diese Rufnummer ein sogenanntes Opt-In zu setzen, sodass die Portierung bereits vor Vertragsende erfolgen kann. Sollte dies nicht möglich sein, bitte ich um Freigabe der Rufnummer spätestens zum Vertragsende. + + Ich bitte um eine schriftliche Bestätigung der Kündigung und der Rufnummernfreigabe. + + Vielen Dank für Ihre Bearbeitung. + + Mit freundlichen Grüßen + % + \closing{Mit freundlichen Grüßen,} + % + %---------------------------------------------------------------------------------- + % Weitere mögliche Felder: + % + %\ps PS: \dots % Postskriptum + %\setkomavar*{enclseparator}{Anlage} % Überschrift für Anlagen (z.B. "Anlage") + %\encl{Fragebogen} % Anlagen + %\setkomavar*{ccseparator}{Kopie an} % Text für Verteiler (z.B. "Kopie an") + %\cc{Verteiler 1\\ Verteiler 2} % Liste des Verteilers + % + %================================================================================== + % + } + \end{letter} +\end{document} +% diff --git a/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Beitragsversicherung-Wohngebäudeversicherung-2024.tex b/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Beitragsversicherung-Wohngebäudeversicherung-2024.tex new file mode 100644 index 0000000..15da998 --- /dev/null +++ b/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Beitragsversicherung-Wohngebäudeversicherung-2024.tex @@ -0,0 +1,112 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{cmbright} % Font katalog https://tug.org/FontCatalogue/sansseriffonts.html +\usepackage{fontenc} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\usepackage{datetime2} +%\usepackage[utf8]{inputenc} +\usepackage[nomessages]{fp} % Math https://ctan.net/macros/latex/contrib/fp/documentation.pdf + +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{../Latex-Resourcen/brief-absender} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Meine Spezifischen Anpassungen +\newcommand{\cy}{24} + +\FPset\BEITRAG{1505.36} %sets Gesamtkosten + +% Konstanten +\FPset\Miteigentumsanteil_FL_EG{0.27198} %sets Miteigentumsanteil Frauenlobstr. 35 EG +\FPset\Miteigentumsanteil_FL_OG{0.24986} %sets Miteigentumsanteil Frauenlobstr. 35 OG +\FPset\Miteigentumsanteil_PM_EG{0.26289} %sets Miteigentumsanteil Paul-Müller-Str. 1 EG +\FPset\Miteigentumsanteil_PM_OG{0.21527} %sets Miteigentumsanteil Paul-Müller-Str. 1 OG + +% Berechnung FL35 EG +\FPmul\FL_EG_BETRAG\BEITRAG\Miteigentumsanteil_FL_EG +\FPeval\FL_EG_BETRAG{round(\FL_EG_BETRAG:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung FL35 OG +\FPmul\FL_OG_BETRAG\BEITRAG\Miteigentumsanteil_FL_OG +\FPeval\FLOGSTRFEB{round(\FLOGSTRGEBFEB:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung PM1 EG +\FPmul\PM_EG_BETRAG\BEITRAG\Miteigentumsanteil_PM_EG +\FPeval\PM_EG_BETRAG{round(\PM_EG_BETRAG:2)} % Gerundet auf 2 Nachkommastellen + +% Berechnung PM1 OG +\FPmul\PM_OG_BETRAG\BEITRAG\Miteigentumsanteil_PM_OG +\FPeval\PM_OG_BETRAG{round(\PM_OG_BETRAG:2)} % Gerundet auf 2 Nachkommastellen + + +\setkomavar{subject}{Beitragsrechnung 2025: Wohngebäudeversicherung} +\setkomavar{place}{Bochum} +\setkomavar{date}{03.01.2025} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + + + +\begin{document} +\begin{letter}{ +W.E.G. Paul-Müller-Str. 1/Frauenlobstr. 35 \\ +Paul-Müller-Str. 1 \\ +44805 Bochum +} + +\opening{Liebe Nachbarn,} + +ich hoffe, es geht euch allen gut. + +Zum Jahreswechsel haben wir nun von der LVM Landwirtschaftlicher Versicherungsverein Münster a.G die Beitragsrechnung für 2025 in Höhe von 1505,63€ erhalten. Ich habe die Kosten gemäß der Miteigentumsanteile wie folgt errechnet: + +% Alle weiteren Absätze sollen eingerückt sein. +% Guter Artikel: +% https://practicaltypography.com/first-line-indents.html +%\setlength{\parindent}{20pt} + +\begin{tabular}[h]{|l|c|p{1.8cm}|p{1.8cm}|p{1.8cm}|p{1.8cm}|} +\hline +\rule[0ex]{0pt}{2.9ex} Wohnung & Miteigentumsanteil & \multicolumn{4}{c|}{Beitrag} \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 EG & 27.198/100.000 & \FL_EG_BETRAG € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 OG & 24.986/100.000 & \FL_OG_BETRAG € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 EG &26.289/100.000 & \PM_EG_BETRAG € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 OG & 21.527/100.000 & \PM_OG_BETRAG € \\ +\hline +\end{tabular} . + +Ich danke Ihnen im Voraus für Ihre zügige Bearbeitung und Überweisung des fälligen Betrags. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Grundbesitzabgaben.tex b/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Grundbesitzabgaben.tex new file mode 100644 index 0000000..979cf13 --- /dev/null +++ b/Berechnung-Gesamt-Grundbesitzabgaben/Berechnung-Gesamt-Grundbesitzabgaben.tex @@ -0,0 +1,153 @@ +\documentclass[paper=a4,fontsize=12pt]{scrartcl} +%\usepackage{cmbright} % Font katalog https://tug.org/FontCatalogue/sansseriffonts.html +\usepackage{fontenc} +\usepackage{libertine} +\usepackage{microtype} +\usepackage{polyglossia} +\usepackage{datetime2} +%\usepackage[utf8]{inputenc} +\usepackage[nomessages]{fp} % Math https://ctan.net/macros/latex/contrib/fp/documentation.pdf + +\setdefaultlanguage[spelling=new, babelshorthands=true]{german} + +\usepackage{changepage} +\usepackage[babel,german=quotes]{csquotes} + +% Bis KOMA-Script 3.11b war das Paket scrpage2 das Mittel der Wahl, wenn es +% darum ging, den Kopf und den Fuß der Seite über das hinaus zu verändern, was +% die KOMA-Script-Klassen mit den Seitenstilen headings, myheadings, plain und +% empty boten. Bis 2001 gab es dafür auch noch das Paket scrpage, das aber seit +% 2013 nicht mehr mit KOMA-Script zusammen erteilt wird. Seit 2013 ist das Paket +% scrlayer als neuer, grundlegender Baustein in KOMA-Script enthalten. +% Siehe auch http://www.komascript.de/node/1490#comment-3940 + +\usepackage{scrletter} +\LoadLetterOption{../Latex-Resourcen/brief-absender} + +%\changepage{text height}{text width}{even-side margin} +%{odd-side margin}{column sep.} +%{topmargin}{headheight}{headsep}{footskip} +\changepage{+3cm}{}{}{}{}{}{}{}{-5cm} +\renewcommand{\familydefault}{\sfdefault} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Meine Spezifischen Anpassungen +\newcommand{\yearshort}{25} +\newcommand{\yearlong}{2025} +\newcommand{\currdate}{09.02.2025} +\FPset\STRGEBFEB{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.02.24 +\FPset\STRGEBMAR{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.05.24 +\FPset\STRGEBAUG{226.55} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.08.24 +\FPset\STRGEBNOV{226.57} %sets Straßenreinigungsgebühr/Niederschlagswasser 15.11.24 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Hier die aktuellen Werte angeben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% Konstanten +\FPset\MEAFLEG{0.27198} %sets Miteigentumsanteil Frauenlobstr. 35 EG +\FPset\MEAFLOG{0.24986} %sets Miteigentumsanteil Frauenlobstr. 35 OG +\FPset\MEAPMEG{0.26289} %sets Miteigentumsanteil Paul-Müller-Str. 1 EG +\FPset\MEAPMOG{0.21527} %sets Miteigentumsanteil Paul-Müller-Str. 1 OG + +% Berechnung FL35 EG +\FPmul\FLEGSTRGEBFEB\STRGEBFEB\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\FLEGSTRGEBMAR\STRGEBMAR\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\FLEGSTRGEBAUG\STRGEBAUG\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\FLEGSTRGEBNOV\STRGEBNOV\MEAFLEG %Frauenlobstr. 35 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\FLEGSTRFEB{round(\FLEGSTRGEBFEB:2)} +\FPeval\FLEGSTRMAR{round(\FLEGSTRGEBMAR:2)} +\FPeval\FLEGSTRAUG{round(\FLEGSTRGEBAUG:2)} +\FPeval\FLEGSTRNOV{round(\FLEGSTRGEBNOV:2)} + +% Berechnung FL35 OG +\FPmul\FLOGSTRGEBFEB\STRGEBFEB\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\FLOGSTRGEBMAR\STRGEBMAR\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\FLOGSTRGEBAUG\STRGEBAUG\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\FLOGSTRGEBNOV\STRGEBNOV\MEAFLOG %Frauenlobstr. 35 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\FLOGSTRFEB{round(\FLOGSTRGEBFEB:2)} +\FPeval\FLOGSTRMAR{round(\FLOGSTRGEBMAR:2)} +\FPeval\FLOGSTRAUG{round(\FLOGSTRGEBAUG:2)} +\FPeval\FLOGSTRNOV{round(\FLOGSTRGEBNOV:2)} + +% Berechnung PM1 EG +\FPmul\PMEGSTRGEBFEB\STRGEBFEB\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\PMEGSTRGEBMAR\STRGEBMAR\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\PMEGSTRGEBAUG\STRGEBAUG\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\PMEGSTRGEBNOV\STRGEBNOV\MEAPMEG %Paul-Müller-Str. 1 EG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\PMEGSTRFEB{round(\PMEGSTRGEBFEB:2)} +\FPeval\PMEGSTRMAR{round(\PMEGSTRGEBMAR:2)} +\FPeval\PMEGSTRAUG{round(\PMEGSTRGEBAUG:2)} +\FPeval\PMEGSTRNOV{round(\PMEGSTRGEBNOV:2)} + +% Berechnung PM1 OG +\FPmul\PMOGSTRGEBFEB\STRGEBFEB\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.02. +\FPmul\PMOGSTRGEBMAR\STRGEBMAR\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.05. +\FPmul\PMOGSTRGEBAUG\STRGEBAUG\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.08. +\FPmul\PMOGSTRGEBNOV\STRGEBNOV\MEAPMOG %Paul-Müller-Str. 1 OG | Straßenreinigungsgebühr/Niederschlagswasser 15.11. + +% Gerundet auf 2 Nachkommastellen +\FPeval\PMOGSTRFEB{round(\PMOGSTRGEBFEB:2)} +\FPeval\PMOGSTRMAR{round(\PMOGSTRGEBMAR:2)} +\FPeval\PMOGSTRAUG{round(\PMOGSTRGEBAUG:2)} +\FPeval\PMOGSTRNOV{round(\PMEGSTRGEBNOV:2)} + + +\setkomavar{subject}{Grundbesitzabgaben \yearlong: Straßenreinigungsgebühr/Niederschlagswasser} +\setkomavar{place}{Bochum} +\setkomavar{date}{\currdate} + +% Nicht den ersten Satz im Absatz einrücken. +\setlength{\parindent}{0pt} + + + +\begin{document} +\begin{letter}{ +W.E.G. Paul-Müller-Str. 1/Freunlobstr. 35 \\ +Paul-Müller-Str. 1 \\ +44805 Bochum +} + +\opening{Liebe Nachbarn,} + +ich hoffe, dass es Euch allen gut geht. Ich möchte Euch darüber informieren, dass die Stadt Bochum die Grundbesitzabgaben für Straßenreinigung und Niederschlagswasser für das Jahr \yearlong\ zugestellt hat. Wie gewohnt werde ich die anfallenden Kosten vierteljährlich im Voraus begleichen. + +Entsprechend unserer Vereinbarung bitte ich Euch, Euren jeweiligen Anteil an diesen Kosten zu überweisen. Die genauen Beträge, basierend auf den jeweiligen Miteigentumsanteilen, habe ich in der folgenden Tabelle aufgeführt. + +% Alle weiteren Absätze sollen eingerückt sein. +% Guter Artikel: +% https://practicaltypography.com/first-line-indents.html +%\setlength{\parindent}{20pt} +\begin{tabular}[h]{|l|c|p{1.8cm}|p{1.8cm}|p{1.8cm}|p{1.8cm}|} +\hline +\rule[0ex]{0pt}{2.9ex} Wohnung & Miteigentumsanteil & \multicolumn{4}{c|}{Straßenreinigungsgebühr/Niederschlagswasser} \\ +\rule[0ex]{0pt}{2.9ex} & & \multicolumn{4}{c|}{Kassenzeichen 9000500564760} \\ +\rule[0ex]{0pt}{2.7ex} & & 15.02.\yearshort & 15.05.\yearshort & 15.08.\yearshort & 15.11.\yearshort \\ +\rule[0ex]{0pt}{2.7ex} & & \STRGEBFEB € & \STRGEBMAR € & \STRGEBAUG € & \STRGEBNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 EG & 27.198/100.000 & \FLEGSTRFEB € & \FLEGSTRMAR € & \FLEGSTRAUG € & \FLEGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Frauenlobstr. 35 OG & 24.986/100.000 & \FLOGSTRFEB € & \FLOGSTRMAR € & \FLOGSTRAUG € & \FLOGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 EG &26.289/100.000 & \PMEGSTRFEB € & \PMEGSTRMAR € & \PMEGSTRAUG € & \PMEGSTRNOV € \\ +\hline +\rule[0ex]{0pt}{2.7ex} Paul-Müller-Str. 1 OG & 21.527/100.000 & \PMOGSTRFEB € & \PMOGSTRMAR € & \PMOGSTRAUG € & \PMOGSTRNOV € \\ +\hline +\end{tabular} +\\ +\\ +Ich bedanke mich im Voraus für Eure zügige Bearbeitung und die Überweisung des entsprechenden Betrags. + +\closing{Mit freundlichen Grüßen} +\end{letter} +\end{document} \ No newline at end of file diff --git a/KI-Test.tex b/KI-Test.tex new file mode 100644 index 0000000..a301332 --- /dev/null +++ b/KI-Test.tex @@ -0,0 +1,45 @@ +\documentclass[fontsize=12pt, paper=a4, parskip=half]{scrlttr2} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[ngerman]{babel} +\usepackage{graphicx} + +% Absenderinformationen +\setkomavar{fromname}{Max Mustermann} +\setkomavar{fromaddress}{Musterstraße 1\\12345 Musterstadt} +\setkomavar{fromphone}{+49 123 456789} +\setkomavar{fromemail}{max.mustermann@example.com} + +% Datum +\setkomavar{date}{\today} + +% Betreff +\setkomavar{subject}{Bewerbung um eine Stelle als Softwareentwickler} + +\begin{document} + +\begin{letter}{Firma XYZ\\Personalabteilung\\Beispielweg 2\\12345 Beispielstadt} + +\opening{Sehr geehrte Damen und Herren,} + +ich möchte mich hiermit auf die von Ihnen ausgeschriebene Stelle als Softwareentwickler bewerben. Nach meinem Abschluss in Informatik an der Universität Musterstadt habe ich umfangreiche Erfahrungen in verschiedenen Programmiersprachen und Technologien gesammelt, die mich ideal für diese Position qualifizieren. + +\begin{itemize} + \item Erfahrung in C++, Python und Java + \item Kenntnisse in Webentwicklung mit HTML, CSS und JavaScript + \item Praktische Erfahrung mit Datenbanken wie MySQL und PostgreSQL + \item Fähigkeit zur Teamarbeit und gute Kommunikationsfähigkeiten +\end{itemize} + +Ich bin überzeugt, dass ich mit meinen Fähigkeiten und meiner Motivation einen wertvollen Beitrag zu Ihrem Unternehmen leisten kann. Über eine Einladung zu einem persönlichen Gespräch freue ich mich sehr. + +\closing{Mit freundlichen Grüßen,} + +%\includegraphics[width=0.3\textwidth]{unterschrift.png} % Hier kannst du ein Bild deiner Unterschrift einfügen +\vspace*{2em} +Max Mustermann + +\end{letter} + +\end{document} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 752f2c9..2071b23 100644 --- a/LICENSE +++ b/LICENSE @@ -1,18 +1,9 @@ MIT License -Copyright (c) 2025 KonnosPB-Org +Copyright (c) -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO -EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Latex-Resourcen/brief-absender-rena.lco b/Latex-Resourcen/brief-absender-rena.lco new file mode 100644 index 0000000..6b6351c --- /dev/null +++ b/Latex-Resourcen/brief-absender-rena.lco @@ -0,0 +1,46 @@ +%\ProvidesFile{brief-absender.lco}[letter-class-option file] + +% (cell)phone, email symbol +\RequirePackage{marvosym} +% for gray color in header +\RequirePackage{color} + +\KOMAoptions{ +foldmarks=true, +foldmarks=true, +fromurl=false, +fromemail=true, +fromphone=true, +%fromfax=true, +fromalign=right, +fromrule=off, +footsepline=off, +} + +% define gray for header +\definecolor{mygray}{gray}{.55} +% define blue for address +\definecolor{myblue}{rgb}{0.25,0.45,0.75} + +\setkomavar{fromname}{Verenea Brosch} +\setkomafont{fromname}{\bfseries\color{black}\Large} +\setkomafont{fromrule}{\color{black}} +\setkomafont{addressee}{\small} +\setkomavar{fromemail}[]{Verena_Brosch@yahoo.de} +%\setkomavar{fromurl}[]{https://achimistderbeste.de} +\setkomavar{fromphone}[]{+49 162 9261038} + +\setkomavar{fromaddress}{Paul-Müller-Str. 9, 44805 Bochum} + +\setkomafont{fromaddress}{\small\mdseries\slshape\color{black}} +\setkomavar{backaddress}{Verena Brosch, Paul-Müller-Str. 9, 44805 Bochum} + +\setkomavar{signature}{Verena Brosch} + +% Signature: same indention level as rest +\renewcommand*{\raggedsignature}{\raggedright} + +% space for signature +\@setplength{sigbeforevskip}{1.8cm} + +\endinput \ No newline at end of file diff --git a/Latex-Resourcen/brief-absender.lco b/Latex-Resourcen/brief-absender.lco new file mode 100644 index 0000000..e27ffd3 --- /dev/null +++ b/Latex-Resourcen/brief-absender.lco @@ -0,0 +1,46 @@ +%\ProvidesFile{brief-absender.lco}[letter-class-option file] + +% (cell)phone, email symbol +\RequirePackage{marvosym} +% for gray color in header +\RequirePackage{color} + +\KOMAoptions{ +foldmarks=true, +foldmarks=true, +fromurl=false, +fromemail=true, +fromphone=true, +%fromfax=true, +fromalign=right, +fromrule=off, +footsepline=off, +} + +% define gray for header +\definecolor{mygray}{gray}{.55} +% define blue for address +\definecolor{myblue}{rgb}{0.25,0.45,0.75} + +\setkomavar{fromname}{Konstantinos Papoulas-Brosch} +\setkomafont{fromname}{\bfseries\color{black}\Large} +\setkomafont{fromrule}{\color{black}} +\setkomafont{addressee}{\small} +\setkomavar{fromemail}[]{Konstantin.Papoulas@web.de} +%\setkomavar{fromurl}[]{https://achimistderbeste.de} +\setkomavar{fromphone}[]{+49 152 55280604} + +\setkomavar{fromaddress}{Paul-Müller-Str. 9, 44805 Bochum} + +\setkomafont{fromaddress}{\small\mdseries\slshape\color{black}} +\setkomavar{backaddress}{Konstantinos Papoulas-Brosch, Paul-Müller-Str. 9, 44805 Bochum} + +\setkomavar{signature}{Konstantinos Papoulas-Brosch} + +% Signature: same indention level as rest +\renewcommand*{\raggedsignature}{\raggedright} + +% space for signature +\@setplength{sigbeforevskip}{1.8cm} + +\endinput \ No newline at end of file diff --git a/Latex-Resourcen/my-resume.cls b/Latex-Resourcen/my-resume.cls new file mode 100644 index 0000000..dc3da4e --- /dev/null +++ b/Latex-Resourcen/my-resume.cls @@ -0,0 +1,601 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% my-resume.cls +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% A class to do stuff. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% CLASS OPTIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{my-resume}[2020/11/17 my-resume v0.1, my own resume/CV class.] + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% CLASS OPTIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% option to have a single sided document, i.e. the highlight bar is always left +% or have a two sided document where the highlight bar is alternating, i.e. always on the same edge of the paper +\RequirePackage{ifthen} +\newboolean{@singleordouble} +\setboolean{@singleordouble}{true} +\DeclareOption{singlesided}{\setboolean{@singleordouble}{true}} +\DeclareOption{doublesided}{\setboolean{@singleordouble}{false}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} +\ProcessOptions* + +\ifthenelse{\boolean{@singleordouble}} + {\PassOptionsToClass{oneside}{scrartcl}} + {\PassOptionsToClass{twoside}{scrartcl}} + +\LoadClass{scrartcl} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% REQUIRED PACKAGES +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \RequirePackage[utf8]{inputenc} +\RequirePackage[T1]{fontenc} +\RequirePackage{tikz} +\usetikzlibrary{arrows} +\RequirePackage[skins]{tcolorbox} % somehow required for tikz to work at all +\RequirePackage{graphicx} +\RequirePackage{xcolor} +\RequirePackage{fontawesome} +\RequirePackage{academicons} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% FILTER IRRELEVANT WARNINGS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{silence} + +% The page header is deliberately disabled in my-resume, so the warning by scrlayer-scrpage is invalid. +\WarningFilter{scrlayer-scrpage}{Very small head height detected!} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DEFINE GEOMETRY +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newlength\highlightwidth +\newlength\headerheight +\newlength\marginleft +\newlength\marginright +\newlength\margintop +\newlength\marginbottom + +% default sizes, margins, ... +\setlength\highlightwidth{8cm} +\setlength\headerheight{6cm} +\setlength\marginleft{1cm} +\setlength\marginright{\marginleft} +\setlength\margintop{1cm} +\setlength\marginbottom{1cm} + +\RequirePackage[bindingoffset=0cm,nomarginpar,noheadfoot]{geometry} +\geometry{left=\marginleft,right=\marginright,top=\margintop,bottom=\marginbottom} + +% \setlength{\voffset}{\dimexpr -1in+\margintop} +% \setlength{\topmargin}{0cm} + +% minipage has an annoying af indent that must be removed +\setlength{\parindent}{0pt} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% COLORS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{xcolor} + +% Gray-scale colors +\definecolor{white}{HTML}{FFFFFF} +\definecolor{black}{HTML}{000000} +\definecolor{darkgray}{HTML}{333333} +\definecolor{mediumgray}{HTML}{444444} +\definecolor{gray}{HTML}{5D5D5D} +% Basic colors +\definecolor{green}{HTML}{C2E15F} +\definecolor{orange}{HTML}{FDA333} +\definecolor{purple}{HTML}{D3A4F9} +\definecolor{red}{HTML}{FB4485} +\definecolor{blue}{HTML}{6CE0F1} +% Text colors +\definecolor{darktext}{HTML}{414141} +\colorlet{text}{darkgray} +\colorlet{graytext}{gray} +% Awesome colors +\definecolor{awesome-emerald}{HTML}{00A388} +\definecolor{awesome-skyblue}{HTML}{0395DE} +\definecolor{awesome-red}{HTML}{DC3522} +\definecolor{awesome-pink}{HTML}{EF4089} +\definecolor{awesome-orange}{HTML}{FF6138} +\definecolor{awesome-nephritis}{HTML}{27AE60} +\definecolor{awesome-concrete}{HTML}{95A5A6} +\definecolor{awesome-darknight}{HTML}{131A28} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% COLORED BARS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{xpatch} +\RequirePackage{scrlayer-scrpage} + +% declare new page style using layers +\DeclareNewPageStyleByLayers{headerhighlightmain}{% + highlightbar.even,% + highlightbar.odd,% + header.bg +} +\DeclareNewPageStyleByLayers{highlightmain}{% + highlightbar.even,% + highlightbar.odd +} +\DeclareNewPageStyleByLayers{headermain}{% + header.bg +} + +% define the layer for the highlight bar on odd pages +\DeclareNewLayer[ + background, + oddpage, + innermargin, + width=\highlightwidth, + contents={\color{highlightbarcolor}\rule{\layerwidth}{\layerheight}} +]{highlightbar.odd} + +% clone highlight bar form odd pages to even pages +% on same side for digital format +\newcommand*\highlightbarsingle{% +\DeclareNewLayer[ + background, + evenpage, + outermargin, + width=\highlightwidth, + contents={\color{highlightbarcolor}\rule{\layerwidth}{\layerheight}} +]{highlightbar.even} +} + +% clone highlight bar from odd pages to even pages +% on opposite sides for prints +\newcommand*\highlightbardouble{% +\DeclareNewLayer[ + clone=highlightbar.odd, + evenpage, + align=r, + hoffset=\paperwidth + ]{highlightbar.even} + } + +% use the correct version of the highlight bar on even pages +% single for single, double for double +\ifthenelse{ + \boolean{@singleordouble} +}{% + \DeclareNewLayer[ + background, + evenpage, + outermargin, + width=\highlightwidth, + contents={\color{highlightbarcolor}\rule{\layerwidth}{\layerheight}} + ]{highlightbar.even} +}{% + \DeclareNewLayer[ + clone=highlightbar.odd, + evenpage, + align=r, + hoffset=\paperwidth + ]{highlightbar.even} +} + +% define the layer for the header +\DeclareNewLayer[ + background, + topmargin, + addheight=\headerheight, + contents={\color{headerbarcolor}\rule{\layerwidth}{\layerheight}} +]{header.bg} + +% % add the layers to page style plain +% \ForEachLayerOfPageStyle*{headerhighlightmain}{% +% \AddLayersToPageStyle{plain.scrheadings}{#1}% +% } + +% remove anything that might be there (page number) from header and footer +\lehead[]{} +\cehead[]{} +\rehead[]{} +\lohead[]{} +\cohead[]{} +\rohead[]{} +\lefoot[]{} +\cefoot[]{} +\refoot[]{} +\lofoot[]{} +\cofoot[]{} +\rofoot[]{} + +% convenience functions to enable/disable header or highlightbar +% TBD + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% HEADER +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% variables for name, tag line and photo setup +\newcommand{\name}[1]{\def\@name{#1}} +\newcommand{\tagline}[1]{\def\@tagline{#1}} +\newcommand{\photo}[3][]{\def\@photo{#2}\def\@photodiameter{#3}\def\@photoformat{#1}} + +% try to align the top of the written out name with the top of the photo +% it is impossible to get the actual height of a line to determine the offset between line top and charachter top +% therefore use a bad workaround by setting the line height to 1.5 times the character height +\newlength{\@namefontheight} +\newlength{\@namelineheight} +\settoheight{\@namefontheight}{\Huge\bfseries\MakeUppercase{A}} +\setlength\@namelineheight{1.5\@namefontheight} + +% assemble the header +\newcommand{\makeheader}{% header bar is a minipage + \begin{minipage}[t][\headerheight]{\textwidth}% + % \vspace{-1em} + \vspace{\dimexpr \@namefontheight-\@namelineheight} % align top of name and photo + % create two minipages for header text and photo if photo is given + \ifdef{\@photodiameter}{ + \begin{minipage}[t]{\dimexpr \textwidth-\@photodiameter} % to top align name and photo add [t] here + \vspace{0cm}% + }{} + % print the header text + \begin{minipage}[t][2em]{\linewidth} + {\Huge\bfseries\color{headerfontcolor}\MakeUppercase{\@name}\par} + \end{minipage}% + \vfill% + \begin{minipage}[b][\dimexpr \headerheight-2em-\marginbottom]{\linewidth}% + {\large\bfseries\color{headerfontcolor}\@tagline\par} + \end{minipage}% + % finish the minipages for text and photo if photo is given + \ifdef{\@photodiameter}{% + \end{minipage}\hfil% + \begin{minipage}[t]{\@photodiameter} % to top align name and photo add [t] here + \vspace{0cm} + % format as square or round + \ifthenelse{\equal{\@photoformat}{square}}{% + \includegraphics[width=\linewidth]{\@photo}% + }{% + \tikz\path[fill overzoom image={\@photo}]circle[radius=0.5\linewidth]; + } + \end{minipage}% + }{} + \end{minipage}% +} + +\newcommand{\emptyheader}{% + \vspace*{\dimexpr \headerheight+0.5em} +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% BODY +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% contact info +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\infofield}[2]{\mbox{\makebox[5mm]{\textcolor{accent}{\normalsize #1}}\hspace{0.5em}#2}\vspace{0.2em}\newline} +\newcommand{\email}[1]{\infofield{\faEnvelope}{\href{mailto:#1}{#1}}} +\newcommand{\address}[1]{\infofield{\faAt}{#1}} +\newcommand{\location}[1]{\infofield{\faMapMarker}{#1}} +\newcommand{\phone}[1]{\infofield{\faPhone}{#1}} +\newcommand{\homepage}[2]{\infofield{\faHome}{\href{#2}{#1}}} +\newcommand{\linkedin}[2]{\infofield{\faLinkedin}{\href{#2}{#1}}} +\newcommand{\github}[2]{\infofield{\faGithub}{\href{#2}{#1}}} +\newcommand{\orcid}[2]{\infofield{\aiOrcid}{\href{#2}{#1}}} +\newcommand{\ads}[2]{\infofield{\aiADS}{\href{#2}{#1}}} + + +% highlight bar +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\highlightbar}[1]{% + \def\@highlightbar{% + \begin{minipage}[t]{\dimexpr \highlightwidth-\marginleft-\marginright}% + #1% + \end{minipage}% + } +} + +% main bar +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\mainbar}[1]{% + \def\@mainbar{% + \begin{minipage}[t]{\dimexpr \textwidth-\highlightwidth}% + #1% + \end{minipage}% + } +} + +% make body with highlight bar and main bar +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\makebody}{% + \ifthenelse{\boolean{@singleordouble}} + {% if single layout, the highlight bar is always left + \@highlightbar + \hspace{\dimexpr \marginleft+\marginright}% + \@mainbar + }{% if double layout, the highlight bar alternates + \ifthispageodd{% if the page is odd, the highlight bar is on the left (as is for single layout) + \@highlightbar + \hspace{\dimexpr \marginleft+\marginright}% + \@mainbar + }{% if the page is even, the highlight bar is on the right + \@mainbar + \hspace{\dimexpr \marginleft+\marginright}% + \@highlightbar + } + } +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% SECTIONS, SUBSECTIONS, AND MORE +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% redefine section in caps, bold and with rule below +\renewcommand{\section}[2][]{% + \bigskip% + % \ifstrequal{#1}{}{}{\marginpar{\vspace*{\dimexpr 1pt-\baselineskip}\raggedright\input{#1}}}% + \ifstrequal{#1}{}{}{\large \makebox[5mm][c]{#1}\hspace{0.5em}} + {\color{heading}\Large\bfseries\MakeUppercase{#2}}\\[-1ex]% + {\color{heading}\rule{\linewidth}{1.0pt}\par}\smallskip +} + +% redefine subsection as bold +\renewcommand{\subsection}[1]{% + \smallskip% + {\color{emphasis}\large\bfseries{#1}\par}\medskip +} + +% format job/school list +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% set length of date/place column versus position column in fraction of linewidth before linewidth gets redefined in minipages +\newlength{\jobdateplacelength} +\newlength{\jobpositionlength} +\setlength{\jobdateplacelength}{0.4\linewidth} +\setlength{\jobpositionlength}{0.6\linewidth} +\newcommand{\job}[4]{% + \begin{minipage}[t]{\jobdateplacelength}% minipage for left column with date/place + \footnotesize + \begin{minipage}[t]{3mm}% wrap marker in minipage to allow multi-line dates + \makebox[3mm][c]{\faCalendar} + \end{minipage}% + \hspace{0.5em}% + \begin{minipage}[t]{\dimexpr \jobdateplacelength-3mm-0.5em}% wrap date in minipage to allow multi-line dates + #1 + \end{minipage}% + \par + \vspace{0.1em} + \begin{minipage}[t]{3mm}% wrap marker in minipage to allow multi-line places + \makebox[3mm][c]{\faMapMarker} + \end{minipage}% + \hspace{0.5em}% + \begin{minipage}[t]{\dimexpr \jobdateplacelength-3mm-0.5em}% wrap place in minipage to allow multi-line places + #2 + \end{minipage}% + \end{minipage}% + \begin{minipage}[t]{\jobpositionlength}% minipage for position + {\large \color{emphasis} #3} + \end{minipage}% + \ifstrequal{#4}{}{}{\par \vspace{0.1em} \footnotesize #4} + \par\normalsize + \vspace{0.5em} +} + + +% skill with 5 dot bar chart +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\skill}[2]{% + \textcolor{emphasis}{\textbf{#1}}\hfill + \foreach \x in {1,...,5}{% + \space{\ifnumgreater{\x}{#2}{\color{gray}}{\color{accent}}\faCircle}}\par% +} + +% skill without any charts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\simpleskill}[1]{% + \textcolor{emphasis}{\textbf{#1}}\par% +} + +% sectioning of skills +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\skillsection}[1]{% + \textit{\color{accent}#1}\par +} + +% tag (framed word or phrase) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% adapted from AltaCV: https://github.com/liantze/AltaCV +\newcommand{\tag}[1]{% + \tikz[baseline]\node[anchor=base,draw=body!30,rounded corners,inner xsep=1ex,inner ysep =0.75ex,text height=1.5ex,text depth=.25ex]{#1}; +} + +% wheel chart +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% adapted from AltaCV: https://github.com/liantze/AltaCV +\newcommand{\wheelchart}[4][0]{% + \begingroup\centering + \def\innerradius{#3}% + \def\outerradius{#2}% + % Calculate total + \pgfmathsetmacro{\totalnum}{0}% + \foreach \value/\colour/\name in {#4} {% + \pgfmathparse{\value+\totalnum}% + \global\let\totalnum=\pgfmathresult% + }% + \begin{tikzpicture} + + % Calculate the thickness and the middle line of the wheel + \pgfmathsetmacro{\wheelwidth}{\outerradius-\innerradius} + \pgfmathsetmacro{\midradius}{(\outerradius+\innerradius)/2} + \pgfmathsetmacro{\totalrot}{-90 + #1} + + % Rotate so we start from the top + \begin{scope}[rotate=\totalrot] + + % Loop through each value set. \cumnum keeps track of where we are in the wheel + \pgfmathsetmacro{\cumnum}{0} + \foreach \value/\width/\colour/\name in {#4} { + \pgfmathsetmacro{\newcumnum}{\cumnum + \value/\totalnum*360} + + % Calculate the percent value + \pgfmathsetmacro{\percentage}{\value/\totalnum*100} + % Calculate the mid angle of the colour segments to place the labels + \pgfmathsetmacro{\midangle}{-(\cumnum+\newcumnum)/2} + + % This is necessary for the labels to align nicely + \pgfmathparse{ + (-\midangle>180?"west":"east") + } \edef\textanchor{\pgfmathresult} + \pgfmathparse{ + (-\midangle>180?"flush left":"flush right") + } \edef\textalign{\pgfmathresult} + \pgfmathsetmacro\labelshiftdir{1-2*(-\midangle<180)} + + % Draw the color segments. Somehow, the \midrow units got lost, so we add 'pt' at the end. Not nice... + \filldraw[draw=white,fill=\colour] (-\cumnum:\outerradius) arc (-\cumnum:-(\newcumnum):\outerradius) -- + (-\newcumnum:\innerradius) arc (-\newcumnum:-(\cumnum):\innerradius) -- cycle; + + % Draw the data labels + \draw [*-,thin,emphasis] node [append after command={(\midangle:\midradius pt) -- (\midangle:\outerradius + 1ex) -- (\tikzlastnode)}] at (\midangle:\outerradius + 1ex) [xshift=\labelshiftdir*0.5cm,inner sep=1ex, outer sep=0pt, text width=\width,anchor=\textanchor,align=\textalign,font=\small,text=body]{\name}; + % Set the old cumulated angle to the new value + \global\let\cumnum=\newcumnum + } + \end{scope} +% \draw[gray] (0,0) circle (\outerradius) circle (\innerradius); + \end{tikzpicture}\par + \endgroup +} + +% publication +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand*{\ADS}[1]{\textcolor{awesome-skyblue}{\href{#1}{ADS}}} +\newcommand*{\arXiv}[1]{\textcolor{awesome-skyblue}{\href{#1}{arXiv}}} + +\newlength{\pubdatelength} +\newlength{\pubjournallength} +\newlength{\publinklength} + +% Spacings work erratically. Setting a highlight bar or not redefines \linewidth in a weird way which breaks the spacing and introduces line breaks. I have no idea what exactly causes this problem. + +% helper function to set spacings that work empirically +\newcommand{\pubdefaultspacing}{% + \setlength{\pubdatelength}{0.15\linewidth} + \setlength{\pubjournallength}{0.65\linewidth} + \setlength{\publinklength}{0.20\linewidth} +} + +% helper function to force the publication to use the full width in normal page styles without highlight bar or header +\newcommand{\pubforcefullwidth}{% + \setlength{\pubdatelength}{0.1\textwidth} + \setlength{\pubjournallength}{0.8\textwidth} + \setlength{\publinklength}{0.1\textwidth} +} + +% \pubforcefullwidth +\pubdefaultspacing + +\newcommand{\publication}[5]{% + {\normalsize \color{emphasis}#1\par} + \vspace{0.1em}% + \begin{minipage}[t]{3mm}% + \makebox[3mm][c]{\footnotesize \faGroup} + \end{minipage}% + \hspace{0.5em}% + \begin{minipage}[t]{\dimexpr \linewidth-3mm-0.5em}% + {\footnotesize #2\par} + \end{minipage}% + \par% + \vspace{0.25em}% + \ifstrequal{#4}{}{% + \begin{minipage}[t]{\dimexpr \pubdatelength+\pubjournallength-1.0em}% + \footnotesize \makebox[3mm][c]{\faCalendar} \hspace{0.25em} #3 + \end{minipage}% + }{% + \begin{minipage}[t]{\dimexpr \pubdatelength-1.0em}% + \footnotesize \makebox[3mm][c]{\faCalendar} \hspace{0.25em} #3 + \end{minipage}% + }% + \hspace{1.0em} + \begin{minipage}[t]{\dimexpr \pubjournallength-1.0em}% + \ifstrequal{#4}{}{}{% + \begin{minipage}[t]{3mm}% + \makebox[3mm][c]{\footnotesize \faBook} + \end{minipage}% + \hspace{0.5em}% + \begin{minipage}[t]{\dimexpr \linewidth-3mm-0.25em}% + {\footnotesize #4\par} + \end{minipage}% + }% + \end{minipage}% + \hspace{1.0em} + \begin{minipage}[t]{\publinklength}% + \ifstrequal{#5}{}{}{% + \footnotesize \makebox[3mm][c]{\faChain} \hspace{0.25em} #5\par + }% + \end{minipage}% + \par\normalsize + \vspace{1.0em} +} + +% achievement +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\achievement}[1]{% + \begin{minipage}[t]{3mm}% + \makebox[3mm][c]{\footnotesize \faTrophy} + \end{minipage}% + \hspace{0.5em}% + \begin{minipage}[t]{\dimexpr \textwidth-0.5em-3mm}% + {\normalsize #1\par} + \end{minipage}% + \par + \vspace{0.5em} +} + +% lists +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\RequirePackage{enumitem} +\setlist[itemize]{noitemsep, topsep=0pt, leftmargin=1em} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% FINAL FORMATTING +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\pagestyle{headerhighlightmain} +\RequirePackage{hyperref} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% THE END +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Latex-Resourcen/picture.jpg b/Latex-Resourcen/picture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f8d874bd5465437012ddfb86641aeb71d54fba2 GIT binary patch literal 94006 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⪙(nwY94edruu_SWLvSrSvDV?eIBdej>h@0=! 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 +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tkzexample}[2022/07/14 v1.45c (code and graphic)] +\RequirePackage{calc,mdframed,fancyvrb} +\newif\iftkzcodesaved +\DeclareOption{saved}{\tkzcodesavedtrue} +\ProcessOptions\relax +%<---------------------------------------------------------------------------> +\colorlet{graphicbackground}{white} +\colorlet{codebackground}{white} +\colorlet{codeonlybackground}{white} +\colorlet{numbackground}{white} +\colorlet{textcodecolor}{black} +\colorlet{numcolor}{gray} +%<---------------------------------------------------------------------------> +\def\code@style{\small\ttfamily} +\makeatletter +\newcounter{code@cnt}% + +\ifx\scantokens\@undefined + \PackageError{tkzexample}{You need to use extended latex + (elatex) or (pdfelatex) to use this package}{} +\fi + +% Define \find@tkzexample such that it doesn't destroy catcodes: +\begingroup +\catcode`|=0 +\catcode`[= 1 +\catcode`]=2 +\catcode`\{=12 +\catcode `\}=12 +\catcode`\\=12 |gdef|find@tkzexample#1\end{tkzexample}[|endoftkzexample[#1]] +|endgroup + +\begingroup +\catcode`|=0 +\catcode`[= 1 +\catcode`]=2 +\catcode`\{=12 +\catcode `\}=12 +\catcode`\\=12 |gdef|find@tkzltxexample#1\end{tkzltxexample}[|endoftkzltxexample[#1]] +|endgroup + +% define \returntospace. +% +% It should define NEWLINE as {}, spaces and tabs as \space. +\begingroup +\catcode`\^=7 +\catcode`\^^M=13 +\catcode`\^^I=13 +\catcode`\ =13% +\gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^I=13\def^^I{\space}\catcode`\^^M=13\def^^M{}}% +\endgroup + +\begingroup +\catcode`\%=13 +\catcode`\^^M=13 +\gdef\commenthandler{\catcode`\%=13\def%{\@gobble@till@return}} +\gdef\@gobble@till@return#1^^M{} +\gdef\@gobble@till@return@ignore#1^^M{\ignorespaces} +\gdef\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}} +\gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par} +\gdef\typesetcommentnum{\catcode`\%=13\def%{\@typeset@till@return@num}} +\gdef\@typeset@till@return@num#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}} \@@par} +\endgroup + +\let\tkz@frameset\colorbox +\let\tkz@frameltxset\colorbox +\newwrite\fileexample +\newdimen\tkzexamplewidth +\newdimen\tkz@hsep +\tkz@hsep=0pt +\newif\ifcode@execute +\newif\ifcode@saved\code@savedfalse +\newif\ifnum@show \num@showfalse +\newif\ifcode@overhang +\newbox\tkzexamplebox +\newif\ifcode@vbox \code@vboxfalse +% +\pgfqkeys{/tkzexample}{% + execute code/.is if = code@execute, + show num/.is if = num@show, + overhang/.is if = code@overhang, + code only/.code = {\code@executefalse}, + width/.code = {\setlength\tkzexamplewidth{#1}}, + code/.code = {\colorlet{codebackground}{#1}}, + graphic/.code = {\colorlet{graphicbackground}{#1}}, + overhang/.code = {\code@overhangtrue}, + num/.code = {\num@showtrue\setcounter{code@cnt}{1}}, + numcolor/.code = {\colorlet{numcolor}{#1}}, + numbkgcolor/.code = {\colorlet{numbackground}{#1}}, + global num/.code = {\num@showtrue}, + code style/.code = {\def\code@style{#1}}, + normal/.code = {\def\code@size{\normalsize}}, + small/.code = {\def\code@size{\small}}, + very small/.code = {\def\code@size{\footnotesize}}, + right margin/.code = {\def\tkz@rightmargin{#1}}, + left margin/.code = {\def\tkz@leftmargin{#1}}, + inner left margin/.code = {\def\tkz@innerleftmargin{#1}}, + inner right margin/.code = {\def\tkz@innerrightmargin{#1}}, + inner top margin/.code = {\def\tkz@innertopmargin{#1}}, + inner bottom margin/.code = {\def\tkz@innerbottommargin{#1}}, + line frame width/.code = {\def\tkz@linewidth{#1}}, + frame code/.code = {\def\tkz@frameset{\fcolorbox{#1}}}, + frame tex/.code = {\def\tkz@frameltxset{\fcolorbox{#1}}}, + above skip/.code = {\def\tkz@above{#1}}, + below skip/.code = {\def\tkz@below{#1}}, + hsep/.code = {\setlength\tkz@hsep{#1}}, + pre/.code = {\def\code@pre{#1}}, + post/.code = {\def\code@post{#1}}, + latex/.code = {\setlength\tkzexamplewidth{#1}% + \def\code@preadd{\begin{minipage}{#1}}% + \def\code@postadd{\end{minipage}}}, + vbox/.code = {\code@vboxtrue + \def\code@preadd{\noindent + \vbox\bgroup + \setlength{\hsize}{\linewidth-6pt}% + }% + \def\code@postadd{\egroup}}, + every tkzexample/.style={width=6cm}, +}% +\def\code@size{}% +\def\code@pre{}% +\def\code@post{}% +\def\code@preadd{}% +\def\code@postadd{}% +\def\tkz@above{\par}% +\def\tkz@below{\par}% + +% execution du code +\def\tkz@result{% + \begin{minipage}[t]{\wd\tkzexamplebox}% + \hrule width0pt + \code@size + \box\tkzexamplebox + \leavevmode + \end{minipage}% +}% + +\newcommand\tkz@code[1]{% +\begin{minipage}[t]{\code@width}{% +\color{textcodecolor}% +\parskip=\z@ +\hrule width\z@ +\vskip-.25em +\let\do\@makeother +\dospecials +\frenchspacing +\code@style\code@size +\obeylines +\@vobeyspaces +\@tempswafalse +\ifnum@show + \typesetcommentnum + \def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}}% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi + }% + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}% + }% +\else + \typesetcomment + \def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi + }% +\fi +\obeylines +\ifcode@saved\input{#1}\else#1\fi% +}% end of content for the minipage +\end{minipage}% +}% + +\newcommand\tkz@codesplit[1]{% +\begin{mdframed}[linewidth = \tkz@linewidth, + leftmargin = \tkz@leftmargin, + rightmargin = \tkz@rightmargin, + backgroundcolor = codeonlybackground, + innerleftmargin = \tkz@innerleftmargin, + innertopmargin = \tkz@innertopmargin] +\begingroup +\color{textcodecolor}% +\parskip=\z@ +\hrule width0pt +\let\do\@makeother +\dospecials +\frenchspacing +\code@style\code@size +\obeylines +\@vobeyspaces +\@tempswafalse +\ifnum@show +\typesetcommentnum +\def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}}% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi + \fi +}% +\everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}% + }% +\else +\typesetcomment% +\def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi +}% +\fi +\obeylines +\ifcode@saved\input{#1}\else #1\fi +\endgroup +\end{mdframed}% +}% + + +\def\tkzref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}}% +\def\tkzFileSavedPrefix{tkzFile}% +\def\tkz@File@Saved@Name{\tkzFileSavedPrefix-\tkzref}% + +\iftkzcodesaved +\def\tkzexample[#1]{% +\code@executetrue +\normalsize +\pgfkeys{/tkzexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt} +\pgfqkeys{/tkzexample}{every tkzexample,#1}% +\parindent0pt +\bgroup +\VerbatimEnvironment +\killienc\begin{VerbatimOut}{\tkz@File@Saved@Name.tex}}% +\def\endtkzexample{\end{VerbatimOut}% +\egroup +\ifcode@execute +\setbox\tkzexamplebox=\hbox{\input{\tkz@File@Saved@Name.tex}}% +\ifdim\wd\tkzexamplebox>\tkzexamplewidth% + \gdef\code@mid{\parskip2pt\par}% +% \hrule + %\def\code@mid{\hfill}% + \gdef\code@width{\linewidth}% +\else + \ifdim\tkz@hsep=0pt + \gdef\code@mid{\hfill}% + \else + \gdef\code@mid{\hskip\tkz@hsep}% + \fi + \gdef\code@width{\linewidth-1.5em-\tkz@hsep-\tkzexamplewidth}% + \fi + \par\noindent + \code@savedtrue + \ifcode@overhang + \tkz@frameset{codebackground}{\tkz@code{\tkz@File@Saved@Name.tex}}% + \else + \tkz@frameltxset{graphicbackground}{\tkz@result}% + \fi + \else% pas de code pas clair + \gdef\code@mid{\hfill}% + \gdef\code@width{\linewidth}% + \gdef\code@end{}% + \fi% fin pas de code + \code@mid + \ifcode@overhang\tkz@frameltxset{graphicbackground}{\tkz@result}% + \else + \tkz@frameset{codebackground}{\tkz@code{\tkz@File@Saved@Name.tex}}% + \fi +\tkz@below +}% +\else% end of code saved code et result ? +\def\tkzexample[#1]{% +\begingroup +\code@executetrue +\pgfkeys{/tkzexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt,} +\pgfqkeys{/tkzexample}{every tkzexample,#1}% +\parindent0pt +\begingroup +%\tkz@above +\let\do\@makeother +\dospecials +\obeylines +\@vobeyspaces +\catcode`\%=13 % +\catcode`\^^M=13 % +\find@tkzexample}% #1 est tout ce qui se trouve dans l'environnement +\def\endoftkzexample#1{% +\endgroup +\ifcode@execute % et \fcode@save ?? + \setbox\tkzexamplebox=\hbox{% + {\commenthandler + \protected@xdef\code@temp{#1}}% + \catcode`\^^M=9 % + {\ignorespaces\code@preadd\code@pre + \expandafter\scantokens\expandafter{\code@temp\ignorespaces}% + \code@post\code@postadd\ignorespaces}% + }% + \ifdim\wd\tkzexamplebox>\tkzexamplewidth + \def\code@mid{\par}% + \def\code@width{\linewidth-6pt}% + \else + \ifdim\tkz@hsep=0pt + \def\code@mid{\hfill}% + \else + \def\code@mid{\hskip\tkz@hsep}% + \fi% + \def\code@width{\linewidth-1.5em-\tkz@hsep-\tkzexamplewidth}% + \fi% + \par\noindent + \ifcode@overhang + \tkz@frameset{codebackground}{\tkz@code{#1}}% + \else + \tkz@frameltxset{graphicbackground}{\tkz@result}% + \fi +\else% pas de code execute + \def\code@mid{}% + \def\code@width{\linewidth-6pt}% + \def\code@end{}% + \fi% fin pas de code + \code@mid% + \ifcode@overhang% + \ifcode@execute\tkz@frameltxset{graphicbackground}{\tkz@result}\fi + \else% +\ifcode@execute\tkz@frameset{codebackground}{\tkz@code{#1}}\else + \par\vskip1em + \tkz@codesplit{#1} + %\tkz@frameset{codebackground}{\tkz@code{#1}}% +\fi + \fi + \tkz@below + \end{tkzexample}% +}% +\def\endtkzexample{\endgroup}% +\fi +%<---------------------------------------------------------------------------> +\pgfqkeys{/tkzltxexample}{% + width/.code = {\setlength\tkzltxexamplewidth{#1}}, + code/.code = {\colorlet{codeonlybackground}{#1}}, + show num/.is if = num@show, + num/.code = {\num@showtrue\setcounter{code@cnt}{1}}, + global num/.code = {\num@showtrue}, + numcolor/.code = {\colorlet{numcolor}{#1}}, + numbkgcolor/.code = {\colorlet{numbackground}{#1}}, + normal/.code = {\def\code@size{\normalsize}}, + small/.code = {\def\code@size{\small}}, + very small/.code = {\def\code@size{\footnotesize}}, + right margin/.code = {\def\tkz@rightmargin{#1}}, + left margin/.code = {\def\tkz@leftmargin{#1}}, + inner left margin/.code = {\def\tkz@innerleftmargin{#1}}, + inner right margin/.code = {\def\tkz@innerrightmargin{#1}}, + inner top margin/.code = {\def\tkz@innertopmargin{#1}}, + inner bottom margin/.code = {\def\tkz@innerbottommargin{#1}}, + line frame width/.code = {\def\tkz@linewidth{#1}}, + hsep/.code = {\def\tkz@hsep{#1}}, + typeset listing/.code = {#1}, + frame code/.code = {\def\tkz@frameset{\fcolorbox{#1}}}, + ignorespaces/.code = {\let\@gobble@till@return =% + \@gobble@till@return@ignore}, + leave comments/.code = {\def\code@catcode@hook{\catcode`\%=12}% + \let\commenthandler=\relax% + \let\typesetcomment=\relax}, + every tkzltxexample/.style = {width=8cm}, + vbox/.code = {\def\code@preadd{\noindent + \vbox\bgroup\setlength{\hsize}{\linewidth}}% + \def\code@postadd{\egroup}}% +} +\def\code@size{}% +% \def\code@pre{} +\def\code@post{}% +\def\code@pre{}% +\def\code@post{}% +\def\code@catcode@hook{}% + +\newdimen\tkzltxexamplewidth +\newbox\tkzltxexamplebox + +\def\tkzltxexample[#1]{% +\begingroup +\pgfkeys{/tkzltxexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt,} +\pgfqkeys{/tkzltxexample}{every tkzltxexample,#1}% +\parindent0pt +\begingroup% +\let\do\@makeother +\dospecials +\obeylines +\@vobeyspaces +\catcode`\%=13 % +\catcode`\^^M=13 % +\code@catcode@hook% +\relax% +\find@tkzltxexample} +\def\endoftkzltxexample#1{% +\endgroup% +\def\code@end{}% +\par\vskip1em +\tkz@codesplit{#1}% +\par +\code@post +\end{tkzltxexample}% +}% + +\def\endtkzltxexample{\endgroup} + + + +\newcommand\killienc{} +\@tempcnta128 +\@whilenum\@tempcnta<\@cclvi\do{% + \edef\killienc{\killienc\catcode\the\@tempcnta=12}% + \advance\@tempcnta\@ne} + +\def\tkz@ref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}} +\def\tkz@File@Saved@Name{\tkzFileSavedPrefix-\tkz@ref} +\pgfkeys{ +/tkzsavedcode/.cd, + prefix/.code = {\def\tkzFileSavedPrefix{#1}}} + +\newcommand{\tkzSavedCode}[1][]{% +\pgfkeys{% +tkzsavedcode/.cd, + prefix = tkzFile} +\pgfqkeys{/tkzsavedcode}{#1} +\renewenvironment{tkzexample}[1][]{% +\killienc\VerbatimOut{\tkz@File@Saved@Name.tex}}{% +\endVerbatimOut}} + +% \renewenvironment{tkzexample}[1][]{% +% \killienc \VerbatimOut{tkzeuc-\tkzref.tex}% +% }{% +% \endVerbatimOut +% } +% \fi +\endinput \ No newline at end of file diff --git a/README.md b/README.md index 46bd79d..ee4ea13 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,2 @@ # Latex-Vorlagen -Hier sind Latex-Vorlagen und \ No newline at end of file