Browse Source

init

master
Schoenberger, Philipp 6 years ago
commit
669823a7ac
  1. 5
      .gitignore
  2. 208
      run.py

5
.gitignore

@ -0,0 +1,5 @@
*.pdf
*.log
*.synctex.gz
*.aux
*.tex

208
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()
Loading…
Cancel
Save