Browse Source

cleanup + add for combine for booklet and bookled a7 on a4 printed

master
Schoenberger, Philipp 3 years ago
parent
commit
c0360ba568
  1. 108
      booklet_auto.tex
  2. 62
      combine.tex
  3. 36
      combine2.tex
  4. 82
      combine_a7.tex
  5. 137
      dates.py
  6. 101
      run_1week.py
  7. 144
      run_2weeks.py
  8. 6
      umlauts.py
  9. 24
      vorlagen/week_2pages.tex
  10. 189
      vorlagen/week_2pages_start.tex
  11. 72
      yearly_view.py

108
booklet_auto.tex

@ -0,0 +1,108 @@
\documentclass[a4paper,landscape]{article}
\usepackage{geometry}
\pagestyle{empty}
\usepackage{xparse}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
every node/.style = {
inner sep = 0pt,
anchor = north west,
}
}
\ExplSyntaxOn
\int_new:N \l_impose_repetitions_int
\int_new:N \l_impose_counter_int
\dim_new:N \l_impose_creep_dim
\int_new:N \l_impose_total_pages_int
\int_new:N \l_impose_total_pages_to_four_int
\cs_new:Npn \impose_get_page:nn #1#2 {
\int_compare:nT { ( #1 ) <= \l_impose_total_pages_int } {
\includegraphics [
width = 0.5\paperwidth,
page = #1,
] { #2 }
}
}
\NewDocumentCommand { \MakeBooklet } { O{0mm} m } {
\int_zero:N \l_impose_counter_int
\dim_zero:N \l_impose_creep_dim
\pdfximage { #2 .pdf }
\int_set:Nn \l_impose_total_pages_int
{ \the \pdflastximagepages }
\int_compare:nTF { \int_mod:nn { \l_impose_total_pages_int } { 4 } != 0 } {
\int_set:Nn \l_impose_total_pages_to_four_int
{ \l_impose_total_pages_int + 4 - \int_mod:nn { \l_impose_total_pages_int } { 4 } }
} {
\int_set_eq:NN \l_impose_total_pages_to_four_int \l_impose_total_pages_int
}
\int_set:Nn \l_impose_repetitions_int
{ \l_impose_total_pages_to_four_int / 2 }
\int_do_while:nn { \l_impose_counter_int < \l_impose_repetitions_int } {
\clearpage
\int_incr:N \l_impose_counter_int
\begin{tikzpicture}[remember~picture, overlay]
\node at ($
(current~page.north)
-
(\dim_use:N \l_impose_creep_dim, 0)
$) {
\impose_get_page:nn
{ \int_use:N \l_impose_counter_int }
{ #2 }
};
\node at ($
(current~page.north~west)
+
(\dim_use:N \l_impose_creep_dim, 0)
$) {
\impose_get_page:nn
{ \int_eval:n { \l_impose_total_pages_to_four_int - \l_impose_counter_int + 1 } }
{ #2 }
};
\end{tikzpicture}
\clearpage
\int_incr:N \l_impose_counter_int
\begin{tikzpicture}[remember~picture, overlay]
\node at ($
(current~page.north~west)
+
(\dim_use:N \l_impose_creep_dim, 0)
$) {
\impose_get_page:nn
{ \int_use:N \l_impose_counter_int }
{ #2 }
};
\node at ($
(current~page.north)
-
(\dim_use:N \l_impose_creep_dim, 0)
$) {
\impose_get_page:nn
{ \int_eval:n { \l_impose_total_pages_to_four_int - \l_impose_counter_int + 1 } }
{ #2 }
};
\end{tikzpicture}
\dim_set:Nn \l_impose_creep_dim {
#1 * \l_impose_counter_int / 2
}
}
}
\ExplSyntaxOff
\begin{document}
% #1 = Verschiebung pro Bogen (optional)
% #2 = Dateiname (ohne Endung!). Datei muss eine PDF sein!
\MakeBooklet[0.24mm]{calender}
\end{document}

62
combine.tex

@ -0,0 +1,62 @@
\documentclass{article}
\usepackage{pdfpages} % for \includepdf[pages=-]
\begin{document}
\includepdf[pages={107,1}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={2,106}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={105,3}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={4,104}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={103,5}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={6,102}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={101,7}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={8,100}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={99,9}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={10,98}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={97,11}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={12,96}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={95,13}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={14,94}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={93,15}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={16,92}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={91,17}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={18,90}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={89,19}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={20,88}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={87,21}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={22,86}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={85,23}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={24,84}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={83,25}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={26,82}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={81,27}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={28,80}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={79,29}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={30,78}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={77,31}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={32,76}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={75,33}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={34,74}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={73,35}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={36,72}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={71,37}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={38,70}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={69,39}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={40,68}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={67,41}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={42,66}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={65,43}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={44,64}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={63,45}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={46,62}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={61,47}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={48,60}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={59,49}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={50,58}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={57,51}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={52,56}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={55,53}, nup=1x2,landscape=true]{calender.pdf}
\includepdf[pages={54,54}, nup=1x2,landscape=true]{calender.pdf}
\end{document}

36
combine2.tex

@ -0,0 +1,36 @@
\documentclass{article}
\usepackage{pdfpages} % for \includepdf[pages=-]
\begin{document}
\includepdf[pages={1,3}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={2,4}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={5,7}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={6,8}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={9,11}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={10,12}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={13,15}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={14,16}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={17,19}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={18,20}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={21,23}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={22,24}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={25,27}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={26,28}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={29,31}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={30,32}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={33,35}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={34,36}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={37,39}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={38,40}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={41,43}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={42,44}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={45,47}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={46,48}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={49,51}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={50,52}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={53,54}, nup=1x2,landscape=false]{combine.pdf}
\includepdf[pages={54,54}, nup=1x2,landscape=false]{combine.pdf}
\end{document}

82
combine_a7.tex

@ -0,0 +1,82 @@
\documentclass[a4paper]{article}
\usepackage{geometry}
\pagestyle{empty}
\usepackage{pdfpages} % for \includepdf[pages=-]
\usepackage{xparse}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
every node/.style = {
inner sep = 0pt,
anchor = north west,
}
}
\ExplSyntaxOn
\int_new:N \l_impose_repetitions_int
\int_new:N \l_impose_counter_int
\dim_new:N \l_impose_creep_dim
\int_new:N \l_impose_total_pages_int
\int_new:N \l_impose_total_pages_to_four_int
\cs_new:Npn \impose_get_page:nn #1#2#3 {
\int_compare:nT { ( #1 ) <= \l_impose_total_pages_int} {
\int_compare:nT { ( #2 ) <= \l_impose_total_pages_int} {
\includepdf[pages={#1,#2 }, nup=1x2,landscape=false]{#3}
%#1 , #2 \newline
}
}
}
\NewDocumentCommand { \MakeBooklet } { O{0mm} m } {
\int_zero:N \l_impose_counter_int
\dim_zero:N \l_impose_creep_dim
\pdfximage { #2 .pdf }
\int_set:Nn \l_impose_total_pages_int
{ \the \pdflastximagepages }
\int_compare:nTF { \int_mod:nn { \l_impose_total_pages_int } { 4 } != 0 } {
\int_set:Nn \l_impose_total_pages_to_four_int
{ \l_impose_total_pages_int + 4 - \int_mod:nn { \l_impose_total_pages_int } { 4 } }
} {
\int_set_eq:NN \l_impose_total_pages_to_four_int \l_impose_total_pages_int
}
\int_set:Nn \l_impose_repetitions_int
{ \l_impose_total_pages_to_four_int / 4 }
\int_do_while:nn { \l_impose_counter_int < \l_impose_repetitions_int } {
\clearpage
\int_incr:N \l_impose_counter_int
\impose_get_page:nn
{ \int_eval:n {(\l_impose_counter_int-1)*4 + 1} }
{ \int_eval:n {(\l_impose_counter_int-1)*4 + 3} }
{ #2 }\newpage
\impose_get_page:nn
{ \int_eval:n {(\l_impose_counter_int-1)*4 + 2} }
{ \int_eval:n {(\l_impose_counter_int-1)*4 + 4} }
{ #2 }\newpage
%\includepdf[pages={1,3}, nup=1x2,landscape=false]{#2}
%\includepdf[pages={2,4}, nup=1x2,landscape=false]{#2}
\dim_set:Nn \l_impose_creep_dim {
#1 * \l_impose_counter_int / 2
}
}
}
\ExplSyntaxOff
\begin{document}
% #1 = Verschiebung pro Bogen (optional)
% #2 = Dateiname (ohne Endung!). Datei muss eine PDF sein!
\MakeBooklet[0.24mm]{booklet_auto}
\end{document}

137
dates.py

@ -0,0 +1,137 @@
from datetime import timedelta
from datetime import date
from umlauts import escape_german_umlauts
dates_color = {
"birthdays": "green!50!black",
"specialdays": "green!50!white",
"freedays": "red!50!white",
"holidays": "blue!50!green",
}
dates = {
"birthdays": [
{ "date": "13.01", "title": "Astrid Schönberger" },
{ "date": "23.01", "title": "David Geiser" },
{ "date": "27.09", "title": "Monika Voigt"},
{ "date": "05.10", "title": "Franziska Geiser"},
{ "date": "18.10", "title": "Theresa Schönberger" },
{ "date": "13.11", "title": "Winfried Voigt"},
{ "date": "14.11", "title": "Philipp Schönberer" },
{ "date": "18.12", "title": "Ursula Donn"},
{ "date": "12.05", "title": "Felix Maximilian Schönberger"},
],
"specialdays": [
{ "date": "05.10", "title": "Obermegaknutztag" },
{ "date": "10.05", "title": "Hochzeitstag" },
],
"holidays": [
{ "date-start": "23.12.2019", "date-end": "04.01.2020", "title": "Weihnachtsferien" },
#ferien 2020 bw
{ "date-start": "06.04.2020", "date-end": "18.04.2020", "title": "Osterferien" },
{ "date-start": "02.06.2020", "date-end": "13.06.2020", "title": "Pfingstferien"},
{ "date-start": "30.07.2020", "date-end": "12.09.2020", "title": "Sommerferien"},
{ "date-start": "26.10.2020", "date-end": "30.10.2020", "title": "Herbstferien"},
{ "date-start": "23.12.2020", "date-end": "09.01.2021", "title": "Weihnachtsferien"},
#ferien 2021 bw
{ "date-start": "06.04.2021", "date-end": "10.04.2021", "title": "Osterferien" },
{ "date-start": "25.05.2021", "date-end": "06.06.2021", "title": "Pfingstferien"},
{ "date-start": "29.07.2021", "date-end": "12.09.2021", "title": "Sommerferien"},
{ "date-start": "30.10.2021", "date-end": "07.11.2021", "title": "Herbstferien"},
{ "date-start": "23.12.2021", "date-end": "09.01.2022", "title": "Weihnachtsferien"},
#ferien 2022 bw
{ "date-start": "14.04.2022", "date-end": "23.04.2022", "title": "Osterferien" },
{ "date-start": "07.06.2022", "date-end": "18.06.2022", "title": "Pfingstferien"},
{ "date-start": "28.07.2022", "date-end": "10.09.2022", "title": "Sommerferien"},
{ "date-start": "31.10.2022", "date-end": "04.11.2022", "title": "Herbstferien"},
{ "date-start": "21.12.2022", "date-end": "07.01.2022", "title": "Weihnachtsferien"},
#ferien 2023 bw
{ "date-start": "06.04.2022", "date-end": "15.04.2022", "title": "Osterferien" },
{ "date-start": "30.05.2022", "date-end": "09.06.2022", "title": "Pfingstferien"},
{ "date-start": "27.07.2022", "date-end": "09.09.2022", "title": "Sommerferien"},
{ "date-start": "30.10.2022", "date-end": "03.11.2022", "title": "Herbstferien"},
{ "date-start": "23.12.2022", "date-end": "05.01.2022", "title": "Weihnachtsferien"},
],
"freedays": [
{ "date": "01.01", "title": "Neujahr" },
{ "date": "06.01", "title": "Heilige Drei Könige" },
{ "date": "01.05", "title": "Tag der Arbeit" },
{ "date": "03.10", "title": "Tag der Deutschen Einheit"},
{ "date": "01.11", "title": "Allerheiligen" },
{ "date": "24.12", "title": "Weihnachtten" },
{ "date": "25.12", "title": "1. Weihnachtsfeiertag" },
{ "date": "26.12", "title": "2. Weihnachtsfeiertag" },
{ "date": "31.12", "title": "Silvester" },
#free 2021 bw
{ "date": "02.04.2021", "title": "Karfreitag" },
{ "date": "05.04.2021", "title": "Ostermontag" },
{ "date": "13.05.2021", "title": "Christi Himmelfahrt" },
{ "date": "24.05.2021", "title": "Pfingstmontag" },
{ "date": "03.06.2021", "title": "Fronleichnam" },
#free 2022 bw
{ "date": "15.04.2022", "title": "Karfreitag" },
{ "date": "18.04.2022", "title": "Ostermontag" },
{ "date": "26.05.2022", "title": "Christi Himmelfahrt" },
{ "date": "06.06.2022", "title": "Pfingstmontag" },
{ "date": "16.06.2022", "title": "Fronleichnam" },
#free 2023 bw
{ "date": "07.04.2022", "title": "Karfreitag" },
{ "date": "10.04.2022", "title": "Ostermontag" },
{ "date": "18.05.2022", "title": "Christi Himmelfahrt" },
{ "date": "29.05.2022", "title": "Pfingstmontag" },
{ "date": "08.06.2022", "title": "Fronleichnam" },
],
}
def get_special_text(date_to_check, divider):
return_str =""
for b in dates:
print(b)
for d in dates[b]:
if "date" in d:
start_day = d["date"].split(".")
if len(start_day)<3:
s_year = date_to_check.year
else:
s_year = int(start_day[2])
s_month = int(start_day[1])
s_day = int(start_day[0])
start_day = date(s_year, s_month, s_day)
if (start_day == date_to_check):
if return_str != "":
return_str += divider
return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}"
if "date-start" in d and "date-end" in d:
start_day = d["date-start"].split(".")
if len(start_day)<3:
s_year = date_to_check.year
else:
s_year = int(start_day[2])
s_month = int(start_day[1])
s_day = int(start_day[0])
start_day = date(s_year, s_month, s_day)
end_day = d["date-end"].split(".")
if len(end_day)<3:
e_year = date_to_check.year
else:
e_year = int(end_day[2])
e_month = int(end_day[1])
e_day = int(end_day[0])
end_day = date(e_year, e_month, e_day)
if date_to_check >= start_day and date_to_check <= end_day:
if return_str != "":
return_str += divider
return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}"
return_str = escape_german_umlauts(return_str)
return return_str

101
run.py → run_1week.py

@ -3,13 +3,16 @@
import math import math
from datetime import timedelta from datetime import timedelta
from PyPDF2 import PdfFileReader
from datetime import date from datetime import date
import locale import locale
import os import os
start_year = 2019
start_date = date(start_year, 1, 1)
end_date = date(start_year, 12, 31)
# local imports
from yearly_view import tex_write_year_overview
start_year = 2022
main_filename = "calender" main_filename = "calender"
main_tex = main_filename + ".tex" main_tex = main_filename + ".tex"
@ -34,24 +37,16 @@ color_sunday = "red"
color_weekday = "black" color_weekday = "black"
color_lines = "black" color_lines = "black"
dates = '''
{
"Birthday": [
{ "date": "1.1.2020", "title": "Philipp1 Schoenberer" },
{ "date": "3.1.2020", "title": "Philipp3 Schoenberer" },
{ "date": "5.1.2020", "title": "Philipp5 Schoenberer" },
}
'''
def main(): def main():
# german # german
locale.setlocale(locale.LC_TIME, "de_DE")
locale.setlocale(locale.LC_TIME, "de_DE.UTF-8")
fd = open(main_tex, "w") fd = open(main_tex, "w")
tex_write_header(fd) tex_write_header(fd)
tex_write_calender_overview(fd)
tex_write_year_overview(fd,start_year)
tex_write_weekly(fd) tex_write_weekly(fd)
@ -104,82 +99,9 @@ def tex_write_footer(fd):
''') ''')
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, 1)
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, 1)
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, 1)
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): def tex_write_weekly(fd):
start_date = date(start_year, 1, 1)
end_date = date(start_year, 12, 31)
print_start_date = start_date - timedelta(days=start_date.weekday()) print_start_date = start_date - timedelta(days=start_date.weekday())
print_end_date = end_date + timedelta(days=6 - end_date.weekday()) print_end_date = end_date + timedelta(days=6 - end_date.weekday())
@ -206,7 +128,7 @@ def tex_write_weekly(fd):
fd.write('~' + curr_date.strftime('%Y')) fd.write('~' + curr_date.strftime('%Y'))
if (curr_date.month != last_weekday.month): if (curr_date.month != last_weekday.month):
fd.write(' \\/*')
fd.write(' $-$')
fd.write('~' + last_weekday.strftime('%Y')) fd.write('~' + last_weekday.strftime('%Y'))
fd.write('\\hrule') fd.write('\\hrule')
@ -275,7 +197,6 @@ def gen_page_include(page1, page2, filename, maxpages, nup):
def combine_a7(): def combine_a7():
from PyPDF2 import PdfFileReader
pdf = PdfFileReader(open(main_pdf, 'rb')) pdf = PdfFileReader(open(main_pdf, 'rb'))
fd = open(combine_tex, "w") fd = open(combine_tex, "w")

144
run_2weeks.py

@ -1,4 +1,5 @@
#!/usr/bin/python3 #!/usr/bin/python3
# coding: utf-8
import math import math
import json import json
@ -7,133 +8,42 @@ from datetime import timedelta
from datetime import date from datetime import date
import locale import locale
import os import os
from tracemalloc import start
from umlauts import escape_german_umlauts
from dates import get_special_text
from yearly_view import tex_write_year_overview
start_year = 2022
months_start = 1
months_end = 6
add_clock = False
def compile_tex(filename):
cmd = 'pdflatex ' + filename
os.system(cmd)
#os.remove(os.path(filename).stem + ".aux")
#os.remove(os.path(filename).stem + ".log")
start_year = 2020
start_date = date(start_year, 1, 1)
end_date = date(start_year, 12, 31)
main_filename = "calender"
main_tex = main_filename + ".tex"
main_aux = main_filename + ".aux"
main_log = main_filename + ".log"
main_pdf = main_filename + ".pdf"
dates_color = {
"birthdays": "green!50!black",
"specialdays": "green!50!white",
"freedays": "red!50!white",
"holidays": "blue!50!green",
}
dates = {
"birthdays": [
{ "date": "13.01", "title": "Astrid Schönberger" },
{ "date": "23.01", "title": "David Geiser" },
{ "date": "27.09", "title": "Monika Voigt"},
{ "date": "18.10", "title": "Theresa Schönberger" },
{ "date": "13.11", "title": "Winfried Voigt"},
{ "date": "14.11", "title": "Philipp Schönberer" },
{ "date": "18.12", "title": "Ursula Donn"},
],
"specialdays": [
{ "date": "05.10", "title": "Obermegaknutztag" },
{ "date": "10.05", "title": "Hochzeitstag" },
],
"holidays": [
{ "date-start": "23.12.2019", "date-end": "04.01.2020", "title": "Weihnachtsferien" },
#Faschingsferien
{ "date-start": "06.04.2020", "date-end": "18.04.2020", "title": "Osterferien" },
{ "date-start": "02.06.2020", "date-end": "13.06.2020", "title": "Pfingstferien"},
{ "date-start": "30.07.2020", "date-end": "12.09.2020", "title": "Sommerferien"},
{ "date-start": "26.10.2020", "date-end": "30.10.2020", "title": "Herbstferien"},
{ "date-start": "23.12.2020", "date-end": "09.01.2021", "title": "Weihnachtsferien"},
],
"freedays": [
{ "date": "01.01", "title": "Neujahr" },
{ "date": "06.01", "title": "Heilige Drei Könige" },
{ "date": "10.04", "title": "Karfreitag" },
{ "date": "13.04", "title": "Ostermontag" },
{ "date": "01.05", "title": "Tag der Arbeit" },
{ "date": "21.05", "title": "Christi Himmelfahrt" },
{ "date": "01.06", "title": "Pfingstmontag" },
{ "date": "11.06", "title": "Fronleichnam" },
{ "date": "03.10", "title": "Tag der Deutschen Einheit"},
{ "date": "01.11", "title": "Allerheiligen" },
{ "date": "24.12", "title": "Weihnachtten" },
{ "date": "25.12", "title": "1. Weihnachtsfeiertag" },
{ "date": "26.12", "title": "2. Weihnachtsfeiertag" },
{ "date": "31.12", "title": "Silvester" },
],
}
def get_special_text(date_to_check, divider):
return_str =""
for b in dates:
print(b)
for d in dates[b]:
if "date" in d:
start_day = d["date"].split(".")
if len(start_day)<3:
s_year = date_to_check.year
else:
s_year = int(start_day[2])
s_month = int(start_day[1])
s_day = int(start_day[0])
start_day = date(s_year, s_month, s_day)
if (start_day == date_to_check):
if return_str != "":
return_str += divider
return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}"
if "date-start" in d and "date-end" in d:
start_day = d["date-start"].split(".")
if len(start_day)<3:
s_year = date_to_check.year
else:
s_year = int(start_day[2])
s_month = int(start_day[1])
s_day = int(start_day[0])
start_day = date(s_year, s_month, s_day)
end_day = d["date-end"].split(".")
if len(end_day)<3:
e_year = date_to_check.year
else:
e_year = int(end_day[2])
e_month = int(end_day[1])
e_day = int(end_day[0])
end_day = date(e_year, e_month, e_day)
if date_to_check >= start_day and date_to_check <= end_day:
if return_str != "":
return_str += divider
return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}"
return return_str
def main(): def main():
main_tex = "calender.tex"
# german # german
locale.setlocale(locale.LC_TIME, "de_DE")
locale.setlocale(locale.LC_TIME, "de_DE.UTF-8")
fd = open(main_tex, "w") fd = open(main_tex, "w")
tex_write_header(fd) tex_write_header(fd)
#tex_write_calender_overview(fd)
tex_write_year_overview(fd, start_year)
tex_write_weekly(fd)
tex_write_weekly(fd, start_year, add_clock)
tex_write_footer(fd) tex_write_footer(fd)
fd.close() fd.close()
compile_tex(main_tex)
cmd = 'pdflatex ' + main_tex
os.system(cmd)
os.remove(main_aux)
os.remove(main_log)
def tex_write_header(fd): def tex_write_header(fd):
@ -148,11 +58,10 @@ def tex_write_footer(fd):
fd.write("\\end{document}\n"); fd.write("\\end{document}\n");
return return
def tex_write_calender_overview(fd):
return
def tex_write_weekly(fd):
def tex_write_weekly(fd, year, addclock):
start_date = date(year, months_start, 1)
end_date = date(year, months_end, 30)
print_start_date = start_date - timedelta(days=start_date.weekday()) print_start_date = start_date - timedelta(days=start_date.weekday())
print_end_date = end_date + timedelta(days=6 - end_date.weekday()) print_end_date = end_date + timedelta(days=6 - end_date.weekday())
@ -228,6 +137,5 @@ def tex_write_weekly(fd):
return return
if __name__ == "__main__": if __name__ == "__main__":
main() main()

6
umlauts.py

@ -0,0 +1,6 @@
def escape_german_umlauts(return_str):
return_str = return_str.replace("ä","\\\"a")
return_str = return_str.replace("ö","\\\"o")
return_str = return_str.replace("ü","\\\"u")
return_str = return_str.replace("ß","\\ss{}")
return return_str

24
vorlagen/week_2pages.tex

@ -2,7 +2,27 @@
\begin{document} \begin{document}
\renewcommand{\year}{2019} \renewcommand{\year}{2019}
\renewcommand{\month}{Dezember} \renewcommand{\month}{Dezember}
\printweek{KW10}{1}{dd}{2}{}{3}{}
\printweek{KW10}{1}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}
}{2}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}{3}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}
\newpage \newpage
\printweekend{KW10}{4}{Knutzis duzis megapuspsi}{5}{d}{6}{d}{7}{d}
\printweekend{KW10}{4}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}{5}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}{6}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}{7}{
\textcolor{red!50!white}{Silvester}\newline
\textcolor{blue!50!green}{Weihnachtsferien}}
\printweek{KW10}{1}{}{2}{}{3}{}
\newpage
\printweekend{KW10}{4}{}{5}{}{6}{}{7}{}
\end{document} \end{document}

189
vorlagen/week_2pages_start.tex

@ -15,19 +15,22 @@
\usepackage{lmodern} \usepackage{lmodern}
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{positioning} \usetikzlibrary{positioning}
\usepackage[T1]{fontenc}
\usepackage{ifthen} \usepackage{ifthen}
\usepackage{xifthen}% provides \isempty test \usepackage{xifthen}% provides \isempty test
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%node font %node font
\tikzset{year/.style={anchor=west, minimum height = 5mm}}
\tikzset{dayname/.style={anchor=west, font=\large}}
\tikzset{daynumber/.style={anchor=west, font=\large\bfseries}}
\tikzset{dayspecialname/.style={font=\small\bfseries,anchor=west, align=left, text width=5.5cm }}
\tikzset{year/.style={anchor=north west, minimum height = 5mm}}
\tikzset{dayname/.style={anchor=north west, font=\large}}
\tikzset{daynumber/.style={anchor=north west, font=\large\bfseries}}
\tikzset{dayspecialname/.style={font=\small\bfseries,anchor=north west, align=left, text width=5.5cm }}
\tikzset{dayspecial/.style={color=blue!50!green}} \tikzset{dayspecial/.style={color=blue!50!green}}
\tikzset{month/.style={anchor=west, font=\large}}
\tikzset{kw/.style={anchor=west, font=\large}}
\tikzset{month/.style={anchor=north west, font=\large}}
\tikzset{kw/.style={anchor=north west, font=\large}}
\newcommand{\monday}[0]{Montag} \newcommand{\monday}[0]{Montag}
\newcommand{\tuesday}[0]{Dienstag} \newcommand{\tuesday}[0]{Dienstag}
@ -37,10 +40,13 @@
\newcommand{\saturday}[0]{Samstag} \newcommand{\saturday}[0]{Samstag}
\newcommand{\sunday}[0]{Sonntag} \newcommand{\sunday}[0]{Sonntag}
\newcommand{\drawlinewidth}[0]{0.5mm}
\newcommand{\useclock}{true}
\newcommand{\daylines}[5]{ \newcommand{\daylines}[5]{
\foreach \i in {#3, #4, ..., #5}{% \foreach \i in {#3, #4, ..., #5}{%
\draw [black!30!white, thin] (#1,\i) -- (#2,\i);
\draw [black!30!white,line width=\drawlinewidth] (#1,\i) -- (#2,\i);
} }
} }
@ -48,20 +54,46 @@
\newcommand{\taskbox}[5]{ \newcommand{\taskbox}[5]{
% horizontal lines % horizontal lines
\foreach \i in {#3, #4, ..., #5}{% \foreach \i in {#3, #4, ..., #5}{%
\draw [black!30!white, thin,dotted] (#1,\i) -- (#2,\i);
\draw [black!30!white, line width=\drawlinewidth] (#1,\i) -- (#2,\i);
} }
% last vertical % last vertical
\draw [gray, thin,dotted] (#2, #3) -- (#2,#5);
\draw [gray, line width=\drawlinewidth] (#2, #3) -- (#2,#5);
% fist 3 vertical % fist 3 vertical
\foreach \i in {0, 1, ..., 3}{% \foreach \i in {0, 1, ..., 3}{%
\draw [black!30!white, thin,dotted] (#1+\i, #3) -- (#1+\i,#5);
\draw [black!30!white, line width=\drawlinewidth] (#1+\i, #3) -- (#1+\i,#5);
} }
} }
\newcommand{\clock}[2]
{
\node (A) at (#1,#2) {};
\filldraw [fill=gray!10!white] (A) circle [radius=2.4];
\filldraw [fill=gray!30!white] (A) circle [radius=2.2];
\foreach \angle in {0,7.5,...,360}
{
\draw[line width=0.5pt] (A.center)+(\angle:2.2) -- (A.center);
}
\foreach \angle in {0,15,...,360}
{
\draw[line width=2pt] (A.center)+(\angle:2.2) -- (A.center);
}
\filldraw [fill=white] (A) circle [radius=2];
\filldraw [fill=white] (A) circle [radius=1.5];
\filldraw [fill=black] (A) circle [radius=0.05];
\foreach \angle / \label in
{0/3, 30/4, 60/5, 90/6, 120/7, 150/8, 180/9,
210/10, 240/11, 270/12, 300/1, 330/2}
{
\draw (A)+(\angle:1.73) node{\textsf{\label}};
\draw[line width=0.1pt] (A.center)+(\angle:1.5) -- (A.center);
}
}
\newcommand{\printweek}[7]{ \newcommand{\printweek}[7]{
% KW % KW
%monday date of month %monday date of month
@ -76,42 +108,55 @@
] ]
\node at (0,-0.3) {}; \node at (0,-0.3) {};
\node at (0,0) [year] {\year}; %prints year number
\node at (1,0) [month] {\month}; %prints month name
\node at (4,0) [kw] {#1}; %prints month name
\node at (0,0.3) [kw] {#1}; %prints kw
\node at (1.25,0.3) [month] {\month}; %prints month
\node at (3,0.3) [year] {\year}; %prints year
\ifthenelse{\equal{true}{\useclock}} {
\daylines{0}{5.9}{3}{4}{5}
\clock{3}{7.6}
\daylines{0}{5.9}{11}{12}{15}
\daylines{ 6}{11.9}{3}{4}{5}
\clock{9}{7.6}
\daylines{ 6}{11.9}{11}{12}{15}
\daylines{ 12}{17.9}{3}{4}{5}
\clock{15}{7.6}
\daylines{ 6}{17.9}{11}{12}{15}
}{
\daylines{ 0}{ 5.9}{3}{4}{15}
\daylines{ 6}{11.9}{3}{4}{15}
\daylines{12}{17.9}{3}{4}{15}
}
\ifthenelse{\isempty{#3}} { \ifthenelse{\isempty{#3}} {
\node at (0, 0.7) [daynumber] {#2};
\node at (1.5,0.7) [dayname] {\monday};
\daylines{0}{5.9}{1}{1.5}{15}
\node at (0, 1.0) [daynumber] {#2};
\node at (1.5,1.0) [dayname] {\monday};
} { } {
\node at (0, 0.7) [dayspecial,daynumber] {#2};
\node at (0, 1.2) [dayspecial,dayspecialname] {#3};
\node at (1.5,0.7) [dayspecial,dayname] {\monday};
\daylines{0}{5.9}{2}{2.5}{15}
\node at (0, 1.5) [dayspecial,dayspecialname] {#3};
\node at (0, 1.0) [dayspecial,daynumber] {#2};
\node at (1.5,1.0) [dayspecial,dayname] {\monday};
} }
\ifthenelse{\isempty{#5}} { \ifthenelse{\isempty{#5}} {
\node at (6, 0.7) [daynumber] {#4};
\node at (7.5,0.7) [dayname] {\tuesday};
\daylines{6}{11.9}{1}{1.5}{15}
\node at (6, 1.0) [daynumber] {#4};
\node at (7.5,1.0) [dayname] {\tuesday};
} { } {
\node at (6, 0.7) [dayspecial,daynumber] {#4};
\node at (6, 1.0) [dayspecial,dayspecialname] {#5};
\node at (7.5,0.7) [dayspecial,dayname] {\tuesday};
\daylines{6}{11.9}{2}{2.5}{15}
\node at (6, 1.5) [dayspecial, dayspecialname] {#5};
\node at (6, 1.0) [dayspecial, daynumber] {#4};
\node at (7.5,1.0) [dayspecial, dayname] {\tuesday};
} }
\ifthenelse{\isempty{#7}} { \ifthenelse{\isempty{#7}} {
\node at (12, 0.7) [daynumber] {#6};
\node at (13.5,0.7) [dayname] {\wednesday};
\daylines{12}{17.9}{1}{1.5}{15}
\node at (12, 1.0) [daynumber] {#6};
\node at (13.5,1.0) [dayname] {\wednesday};
} { } {
\node at (12, 0.7) [dayspecial,daynumber] {#6};
\node at (12, 1.0) [dayspecial,dayspecialname] {#7};
\node at (13.5,0.7) [dayspecial,dayname] {\wednesday};
\daylines{12}{17.9}{2}{2.5}{15}
\node at (12, 1.5) [dayspecial, dayspecialname] {#7};
\node at (12, 1.0) [dayspecial, daynumber] {#6};
\node at (13.5,1.0) [dayspecial, dayname] {\wednesday};
} }
\taskbox{0}{18}{15.5}{16.5}{28.5} \taskbox{0}{18}{15.5}{16.5}{28.5}
@ -124,7 +169,7 @@
\newcommand{\printweekend}[9]{ \newcommand{\printweekend}[9]{
% KW
%KW
%thursday date of month %thursday date of month
%thursday special text %thursday special text
%Friday date of month %Friday date of month
@ -133,7 +178,6 @@
%Saturday special text %Saturday special text
%Sunday date of month %Sunday date of month
%Sunday special text %Sunday special text
%
\begin{tikzpicture}[ \begin{tikzpicture}[
xscale = 1.08, xscale = 1.08,
@ -141,53 +185,67 @@
] ]
\node at (0,-0.3) {}; \node at (0,-0.3) {};
\node at (18,0) [year, anchor=east] {\year}; %prints year number
\node at (17,0) [month, anchor=east] {\month}; %prints month name
\node at (15,0) [kw, anchor=east] {#1}; %prints month name
\node at (18,0.3) [kw, anchor=east] {#1}; %prints month name
\node at (16.75,0.3) [month, anchor=east] {\month}; %prints month name
\node at (15,0.3) [year, anchor=east] {\year}; %prints year number
\ifthenelse{\isempty{#3}} { \ifthenelse{\isempty{#3}} {
\node at (0, 0.5) [daynumber] {#2};
\node at (0.5,0.5) [dayname] {\thursday};
\daylines{0}{5.9}{1}{1.5}{15}
\node at (0, 1.0) [daynumber] {#2};
\node at (0.5,1.0) [dayname] {\thursday};
} { } {
\node at (0, 0.5) [dayspecial,daynumber] {#2};
\node at (0, 1.0) [dayspecial,dayspecialname] {#3};
\node at (0.5,0.5) [dayspecial,dayname] {\thursday};
\daylines{0}{5.9}{2}{2.5}{15}
\node at (0, 1.5) [dayspecial, dayspecialname] {#3};
\node at (0, 1.0) [dayspecial, daynumber] {#2};
\node at (0.5,1.0) [dayspecial, dayname] {\thursday};
} }
\ifthenelse{\equal{true}{\useclock}} {
\daylines{0}{5.9}{3}{4}{5}
\clock{3}{7.6}
\daylines{0}{5.9}{11}{12}{15}
\daylines{ 6}{11.9}{3}{4}{5}
\clock{9}{7.6}
\daylines{ 6}{11.9}{11}{12}{15}
\daylines{12}{17.9}{3}{4}{5}
\clock{15}{7.6}
\daylines{12}{17.9}{11}{12}{15}
\daylines{12}{17.9}{17.5}{18.5}{19.5}
\clock{15}{22.1}
\daylines{12}{17.9}{25.5}{26.5}{28.5}
}{
\daylines{ 0}{ 5.9}{3}{4}{15}
\daylines{ 6}{11.9}{3}{4}{15}
\daylines{12}{17.9}{3}{4}{15}
\daylines{12}{17.9}{17.5}{18.5}{28.5}
}
\ifthenelse{\isempty{#5}} { \ifthenelse{\isempty{#5}} {
\node at (6, 0.5) [daynumber] {#4};
\node at (6.5,0.5) [dayname] {\friday};
\daylines{6}{11.9}{1}{1.5}{15}
\node at (6, 1.0) [daynumber] {#4};
\node at (6.5,1.0) [dayname] {\friday};
} {% } {%
\node at (6, 0.5) [dayspecial,daynumber] {#4};
\node at (6, 1.0) [dayspecial,dayspecialname] {#5};
\node at (6.5,0.5) [dayspecial,dayname] {\friday};
\daylines{6}{11.9}{2}{2.5}{15}
\node at (6, 1.0) [dayspecial, daynumber] {#4};
\node at (6.5,1.0) [dayspecial, dayname] {\friday};
\node at (6, 1.5) [dayspecial, dayspecialname] {#5};
}% }%
\ifthenelse{\isempty{#7}} { \ifthenelse{\isempty{#7}} {
\node at (12, 0.5) [daynumber,color=orange] {#6};
\node at (12.5,0.5) [dayname,color=orange] {\saturday};
\daylines{12}{17.9}{1}{1.5}{15}
\node at (12, 1.0) [daynumber,color=orange] {#6};
\node at (12.5,1.0) [dayname,color=orange] {\saturday};
} {% } {%
\node at (12, 0.5) [dayspecial,daynumber] {#6};
\node at (12, 1.0) [dayspecial,dayspecialname] {#7};
\node at (12.5,0.5) [dayspecial,dayname] {\saturday};
\daylines{12}{17.9}{2}{2.5}{15}
\node at (12, 1.5) [dayspecial, dayspecialname] {#7};
\node at (12, 1.0) [dayspecial, daynumber] {#6};
\node at (12.5,1.0) [dayspecial, dayname] {\saturday};
}% }%
\ifthenelse{\isempty{#9}} { \ifthenelse{\isempty{#9}} {
\node at (12, 15.7) [daynumber,color=red] {#8}; \node at (12, 15.7) [daynumber,color=red] {#8};
\node at (12.5,15.7) [dayname,color=red] {\sunday}; \node at (12.5,15.7) [dayname,color=red] {\sunday};
\daylines{12}{17.9}{16}{16.5}{28.5}
} {% } {%
\node at (12, 15.7) [dayspecial,daynumber] {#8};
\node at (12, 16.2) [dayspecial,dayspecialname] {#9};
\node at (13.5,15.7) [dayspecial,dayname] {\sunday};
\daylines{12}{17.9}{17}{17.5}{28.5}
\node at (12, 15.7) [dayspecial, daynumber] {#8};
\node at (12, 16.2) [dayspecial, dayspecialname] {#9};
\node at (13.5,15.7) [dayspecial, dayname] {\sunday};
}% }%
\taskbox{0}{11.9}{15.5}{16.5}{28.5} \taskbox{0}{11.9}{15.5}{16.5}{28.5}
@ -196,4 +254,3 @@
\node at (6, 15.25) [daynumber] {}; \node at (6, 15.25) [daynumber] {};
\end{tikzpicture}% \end{tikzpicture}%
} }

72
yearly_view.py

@ -0,0 +1,72 @@
from datetime import timedelta
from datetime import date
import locale
def tex_write_year_overview(fd,year):
fd.write('''
\\thispagestyle{empty}
\\vspace*{-4em}
\\begin{center}
\\Huge\\textbf{Jahres\\"ubersicht\\ ''')
fd.write(str(year))
fd.write('''}
\\end{center}
\\vspace*{-8pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% begin overview calender''')
for month in range(1, 12 + 1):
m = date(year, month, 1)
if (month - 1) % 2 == 0 and month != 1:
fd.write('\\newline')
fd.write('''
\\begin{minipage}[t]{0.5\\textwidth}
''')
fd.write('''
\\begin{tabular}{ccccc|cc||}
''')
fd.write('\\multicolumn{6}{c}{\\textbf{ ' + m.strftime('%B') + '}}\\\\\n ')
# print weeknames
for i in range(0, 6 + 1):
curr_date = date(year, month, 1)
curr_date = curr_date + timedelta(days=i - curr_date.weekday())
fd.write('\\textbf{' + curr_date.strftime('%a') + '} ')
if i == 6:
fd.write('\\\\\n\r')
fd.write(' \\hline\n\r')
else:
fd.write(' & ')
# monthly numbers
curr_date = date(year, month, 1)
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 "
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%
''')
Loading…
Cancel
Save