commit 669823a7ac0507f20d1c9d253bfdaa7e3f83ebdb Author: Schoenberger, Philipp Date: Fri Jul 19 10:51:57 2019 +0200 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..981eca3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.pdf +*.log +*.synctex.gz +*.aux +*.tex diff --git a/run.py b/run.py new file mode 100755 index 0000000..1e356c9 --- /dev/null +++ b/run.py @@ -0,0 +1,208 @@ +#!/usr/bin/python + +from datetime import timedelta +from datetime import date +import locale + +start_year = 2020 +start_date = date(start_year, 01, 01) +end_date = date(start_year, 12, 31) + + +def main(): + # german + locale.setlocale(locale.LC_TIME, "de_DE") + + fd = open("calender.tex", "w") + tex_write_header(fd) + + tex_write_calender_overview(fd) + + tex_write_weekly(fd) + + tex_write_footer(fd) + + +def tex_write_header(fd): + # \usepackage{fontspec}{} + fd.write(''' +\\documentclass[12pt,twoside]{scrartcl} +%%%%%%%% +% +% Latex-Vorlage fuer einen eigenen Wochenkalender +% Author Philipp Schoenberger + +\\usepackage[german, english]{babel} +\\usepackage[labelformat=empty]{caption} +\\usepackage{mathtools} +\\usepackage{xcolor} +\\usepackage{textcomp} +\\usepackage{marvosym} +\\usepackage[clock]{ifsym} +\\usepackage{geometry} + \\geometry{ + a5paper, + left=10mm, + top=10mm, +} + +\\newcommand\\myhrulefill[2][0pt]{\\leavevmode\\leaders\\hrule height #2 depth #1\\hfill\\kern0pt} + + +\\begin{document}{} +''') + + +def tex_write_footer(fd): + fd.write(''' +\\end{document} +''') + + +def tex_write_calender_overview(fd): + fd.write(''' + +\\thispagestyle{empty} +\\vspace*{-2em} +%\\renewcommand{\\arraystretch}{0.9} +%\\setlength{\\tabcolsep}{0.9mm} +\\begin{center} +\\Huge\\textbf{Jahres\\"ubersicht\\ ''') + fd.write(str(start_year)) + fd.write('''} +\\end{center} +%%%%%%%%%%%%%%%%%%%%%%%%%%% +% begin overview calender +\\renewcommand{\\arraystretch}{1.0} +\\setlength{\\tabcolsep}{0.9mm} +''') + for month in range(1, 12 + 1): + m = date(start_year, month, 01) + + if (month - 1) % 2 == 0: + fd.write('\\ \\newline\n\r') + + fd.write('''\\begin{minipage}[t]{0.5\\textwidth} + \\centering + ''') + fd.write('\\textbf{\\large ' + m.strftime('%B') + '} ') + fd.write('''\\\\ + \\vspace{3mm} + \\tiny + \\begin{tabular}{ccccc|cc||} + ''') + + # print weeknames + for i in range(0, 6 + 1): + curr_date = date(start_year, month, 01) + curr_date = curr_date + timedelta(days=i - curr_date.weekday()) + + fd.write('\\textbf{' + curr_date.strftime('%a') + '} ') + if i == 6: + fd.write('\\\\\n\r') + else: + fd.write(' & ') + + fd.write('\\hline') + + curr_date = date(start_year, month, 01) + weekline = " " + " &" * curr_date.weekday() + next_date = curr_date + while curr_date.month == next_date.month: + curr_date = next_date + next_date = curr_date + timedelta(days=1) + + weekline = weekline + " " + str(curr_date.day) + if (curr_date.weekday() == 6): # sunday + weekline = weekline + "\\\\\n\r " + else: + weekline = weekline + "&" + + weekline = weekline + (" &" * (5 - curr_date.weekday())) + "\\\\\n\r" + + fd.write(weekline) + + fd.write(''' + \\end{tabular} + \\end{minipage}''') + # if (month == 6): + # fd.write('\\newpage\n\r') + + fd.write(''' +% end overview calender +%%%%%%%%%%%%%%%%%%%%%%%%%%% +''') + + +def tex_write_weekly(fd): + print_start_date = start_date - timedelta(days=start_date.weekday()) + print_end_date = end_date + timedelta(days=6 - end_date.weekday()) + + print print_start_date.isoformat() + print print_end_date.isoformat() + + fd.write(''' +%%%%%%%%%%%%%%%%%%%%%%%%%%% +% begin real calender +\\flushleft +''') + + curr_date = print_start_date - timedelta(days=1) + + while True: + next_date = curr_date + timedelta(days=1) + if (print_end_date == next_date): + break + curr_date = next_date + + if curr_date.weekday() == 0: + fd.write('' + curr_date.strftime('%B')) + last_weekday = curr_date + timedelta(days=6) + fd.write('~' + curr_date.strftime('%Y')) + + if (curr_date.month != last_weekday.month): + fd.write(' \\/*') + fd.write('~' + last_weekday.strftime('%Y')) + fd.write('\\hrule') + + fd.write(''' + \\parbox[t][0.115\\paperheight]{\\textwidth}{ + \\flushleft + \\textbf{ + \\small ''') + fd.write('' + curr_date.strftime('%d')) + fd.write(' - ') + fd.write('' + curr_date.strftime('%A')) + fd.write(''' + } + \\hspace{5mm}~ + \\myhrulefill{0.5pt} + \\linebreak + \\noindent + \\begin{minipage}[t][2.3cm]{0.48\\textwidth} + \\hspace*{1.2cm} ~ + \\end{minipage} + \\begin{minipage}[t][6.1cm]{0.48\\textwidth} + \\begin{flushright} + ~ + \\end{flushright} + \\end{minipage} + } +''') + + # start new page if sunday + if curr_date.weekday() == 6: + fd.write('\\newpage\n\r') + for i in range(1, 18): + fd.write('\\hspace{8mm}\n\r') + fd.write('\\myhrulefill{0.5pt}\n\r') + fd.write('\\newpage\n\r') + + fd.write(''' +% end real calender +%%%%%%%%%%%%%%%%%%%%%%%%%%% + ''') + + +if __name__ == "__main__": + main()