Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

12 Feb '18, 18:01

runix's gravatar image

runix
1.0k247586

calendar - variation

Ich würde gerne einen Kalender mit folgenden Eigenschaften erstellen: (a) Pro Kalenderblatt 1 Monat (b) 1 Kalenderblatt sollte folgendermaßen gestaltet sein: - Obere Hälfte ein leeres Rechteck - Untere Hälfte die jeweiligen Tage im folgenden Format (Beispiel aus TeXample.net) Das Beispiel ist recht komplex sobald ich aber versucht habe es sinnvoll zu vereinfachen, produzierte es zig Fehler. - Wie kann ich weitere Monate hinzufügen? Am besten natürlich ein ganzes Jahr (beginnend mit einem beliebigen Monat) % Birthday calendar % Author: Hakon Malmedal \documentclass[fontsize=20pt]{scrartcl} \usepackage[norsk]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[margin=1cm,a4paper,landscape]{geometry} \pagestyle{empty} \usepackage{graphicx} \usepackage{tikz} \usetikzlibrary{calendar,fit} \usepackage{expl3,xparse} %% Adapted from http://tex.stackexchange.com/a/10199/4771 \makeatletter% \tikzoption{day headings}{\tikzstyle{day heading}=[#1]} \tikzstyle{day heading}=[] \tikzstyle{day letter headings}=[ execute before day scope={ \ifdate{day of month=1}{% \pgfmathsetlength{\pgf@ya}{\tikz@lib@cal@yshift}% \pgfmathsetlength\pgf@xa{\tikz@lib@cal@xshift}% \pgftransformyshift{-\pgf@ya} \foreach \d/\l in {0/Monday,1/Tuesday,2/Wednesday,3/Thursday,% 4/Friday,5/Saturday,6/Sunday} { \pgf@xa=\d\pgf@xa% \pgftransformxshift{\pgf@xa-\cellwidth/2}% \pgftransformyshift{\pgf@ya}% \node[above=-0.5ex,day heading]{\l};% } }{}% }% ] \makeatother% %% End %% Adapted from pgf source \def\pgfcalendarmonthname#1{% \translate{\ifcase#1\or Januar\or Februar\or Mars\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Desember\fi}% } \makeatletter \tikzstyle{month label above centered}=[% execute before day scope={% \ifdate{day of month=1}{% { \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}% \pgf@xb=\tikz@lib@cal@width\pgf@xa% \advance\pgf@xb by-\pgf@xa% \pgf@xb=.5\pgf@xb% \pgftransformxshift{\pgf@xb}% \pgftransformxshift{-\cellwidth/2}% \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}% \pgftransformyshift{0.333\pgf@y} \tikzmonthcode% } }{}}, every month/.append style={anchor=base} ] \makeatother %% End \ExplSyntaxOn %% Adapted from http://tex.stackexchange.com/a/56214/4771 %% % first of all we define the user level commands \NewDocumentCommand{\addtext}{ m }{ \bdaycal_input_add:n { #1 } } \NewDocumentCommand{\addtextyear}{ mm }{ \bdaycal_input_add_y:nn { #1 } { #2 } } \NewDocumentCommand{\showtext}{ }{ \bdaycal_output_direct: } % allocate variable: % a sequence for global storage of the inputs; \seq_new:N \g_bdaycal_input_seq % store globally an input in the sequence \cs_new:Npn \bdaycal_input_add:n #1 { \seq_gput_right:Nn \g_bdaycal_input_seq { #1 } } \cs_new:Npn \bdaycal_input_add_y:nn #1 #2 { \seq_gput_right:Nn \g_bdaycal_input_seq { #1 ~ ( \int_to_arabic:n { \pgfcalendarifdateyear - #2 } ) } } % how to output in direct order; we simply do a mapping function calling % \bdaycal_print:n after incrementing the counter \cs_new_protected:Npn \bdaycal_output_direct: { \seq_map_inline:Nn \g_bdaycal_input_seq { \bdaycal_print:n { ##1 } } \seq_gclear:N \g_bdaycal_input_seq } % the printing macro; change here for adapting to your wishes \cs_new:Npn \bdaycal_print:n #1 { #1 \par } %% End %% Knuth's AoCP, vol 1, 2nd ed, pp 155--156 \int_new:N \l_easter_Y_int \int_new:N \l_easter_G_int \int_new:N \l_easter_C_int \int_new:N \l_easter_X_int \int_new:N \l_easter_Z_int \int_new:N \l_easter_D_int \int_new:N \l_easter_E_int \int_new:N \l_easter_N_int \int_new:N \l_easter_M_int \int_new:N \l_easter_julian_day_int \cs_new:Nn \easter_sunday:n { \int_set:Nn \l_easter_Y_int { #1 } \int_set:Nn \l_easter_G_int { \int_mod:nn { \l_easter_Y_int } { 19 } + 1 } \int_set:Nn \l_easter_C_int { \int_div_truncate:nn { \l_easter_Y_int } { 100 } + 1 } \int_set:Nn \l_easter_X_int { \int_div_truncate:nn { 3 * \l_easter_C_int } { 4 } - 12 } \int_set:Nn \l_easter_Z_int { \int_div_truncate:nn { 8 * \l_easter_C_int + 5 } { 25 } - 5 } \int_set:Nn \l_easter_D_int { \int_div_truncate:nn { 5 * \l_easter_Y_int } { 4 } - \l_easter_X_int - 10 } \int_set:Nn \l_easter_E_int { \int_mod:nn { 11 * \l_easter_G_int + 20 + \l_easter_Z_int - \l_easter_X_int } { 30 } } % \int_mod:nn behaves strangely. \int_compare:nNnT { \l_easter_E_int } < { 0 } { \int_add:Nn \l_easter_E_int { 30 } } \int_compare:nNnTF { \l_easter_E_int } = { 25 } { % true \int_compare:nNnT { \l_easter_G_int } > { 11 } { % true \int_incr:N \l_easter_E_int } } { % false \int_compare:nNnT { \l_easter_E_int } = { 24 } { % true \int_incr:N \l_easter_E_int } } \int_set:Nn \l_easter_N_int { 44 - \l_easter_E_int } \int_compare:nNnT { \l_easter_N_int } < { 21 } { % true \int_add:Nn \l_easter_N_int { 30 } } \int_add:Nn \l_easter_N_int { 7 - \int_mod:nn { \l_easter_D_int + \l_easter_N_int } { 7 } } \int_compare:nNnTF { \l_easter_N_int } > { 31 } { % true \int_sub:Nn \l_easter_N_int { 31 } \int_set:Nn \l_easter_M_int { 4 } % April } { % false \int_set:Nn \l_easter_M_int { 3 } % March } \pgfcalendardatetojulian { \l_easter_Y_int - \l_easter_M_int - \l_easter_N_int } { \l_easter_julian_day_int } } \pgfkeys{/pgf/calendar/Easter/.default = 0} \pgfkeys{/pgf/calendar/Easter/.code = { \easter_sunday:n { \pgfcalendarifdateyear } \int_compare:nNnT { \pgfcalendarifdatejulian } = {\l_easter_julian_day_int + #1} { \pgfcalendarmatchestrue } } } \int_new:N \l_advent_Y_int \int_new:N \l_advent_xmas_julian_day_int \int_new:N \l_advent_xmas_week_day_int \int_new:N \l_advent_julian_day_int \cs_new:Nn \advent_sunday:n { \int_set:Nn \l_advent_Y_int { #1 } \pgfcalendardatetojulian { \l_advent_Y_int - 12 - 25 } { \l_advent_xmas_julian_day_int } \pgfcalendarjuliantoweekday { \l_advent_xmas_julian_day_int } { \l_advent_xmas_week_day_int } \int_set:Nn \l_advent_julian_day_int { \l_advent_xmas_julian_day_int - \l_advent_xmas_week_day_int - 22 } } \pgfkeys{/pgf/calendar/Advent/.default = 0} \pgfkeys{/pgf/calendar/Advent/.code = { \advent_sunday:n { \pgfcalendarifdateyear } \int_compare:nNnT { \pgfcalendarifdatejulian } = {\l_advent_julian_day_int + #1} { \pgfcalendarmatchestrue } } } %% http://www.tondering.dk/claus/cal/week.php#calcweekno \int_new:N \l_week_number_year_int \int_new:N \l_week_number_month_int \int_new:N \l_week_number_day_int \int_new:N \l_week_number_a_int \int_new:N \l_week_number_b_int \int_new:N \l_week_number_c_int \int_new:N \l_week_number_s_int \int_new:N \l_week_number_e_int \int_new:N \l_week_number_f_int \int_new:N \l_week_number_g_int \int_new:N \l_week_number_d_int \int_new:N \l_week_number_n_int \int_new:N \l_week_number_W_int \cs_new:Nn \week_number:nnn { \int_set:Nn \l_week_number_year_int { #1 } \int_set:Nn \l_week_number_month_int { #2 } \int_set:Nn \l_week_number_day_int { #3 } \int_compare:nNnTF { \l_week_number_month_int } < { 3 } % jan or feb { % true \int_set:Nn \l_week_number_a_int { \l_week_number_year_int - 1 } \int_set:Nn \l_week_number_b_int { \int_div_truncate:nn { \l_week_number_a_int } { 4 } - \int_div_truncate:nn { \l_week_number_a_int } { 100 } + \int_div_truncate:nn { \l_week_number_a_int } { 400 } } \int_set:Nn \l_week_number_c_int { \int_div_truncate:nn { \l_week_number_a_int - 1 } { 4 } - \int_div_truncate:nn { \l_week_number_a_int - 1 } { 100 } + \int_div_truncate:nn { \l_week_number_a_int - 1 } { 400 } } \int_set:Nn \l_week_number_s_int { \l_week_number_b_int - \l_week_number_c_int } \int_zero:N \l_week_number_e_int \int_set:Nn \l_week_number_f_int { \l_week_number_day_int - 1 + 31 * ( \l_week_number_month_int - 1 ) } } % end true { % false \int_set_eq:NN \l_week_number_a_int \l_week_number_year_int \int_set:Nn \l_week_number_b_int { \int_div_truncate:nn { \l_week_number_a_int } { 4 } - \int_div_truncate:nn { \l_week_number_a_int } { 100 } + \int_div_truncate:nn { \l_week_number_a_int } { 400 } } \int_set:Nn \l_week_number_c_int { \int_div_truncate:nn { \l_week_number_a_int - 1 } { 4 } - \int_div_truncate:nn { \l_week_number_a_int - 1 } { 100 } + \int_div_truncate:nn { \l_week_number_a_int - 1 } { 400 } } \int_set:Nn \l_week_number_s_int { \l_week_number_b_int - \l_week_number_c_int } \int_set:Nn \l_week_number_e_int { \l_week_number_s_int + 1 } \int_set:Nn \l_week_number_f_int { \l_week_number_day_int + \int_div_truncate:nn { 153 * ( \l_week_number_month_int - 3 ) + 2 } { 5 } + 58 + \l_week_number_s_int } } % end false \int_set:Nn \l_week_number_g_int { \int_mod:nn { \l_week_number_a_int + \l_week_number_b_int } { 7 } } \int_set:Nn \l_week_number_d_int { \int_mod:nn { \l_week_number_f_int + \l_week_number_g_int - \l_week_number_e_int } { 7 } } \int_set:Nn \l_week_number_n_int { \l_week_number_f_int + 3 - \l_week_number_d_int } \int_compare:nNnTF { \l_week_number_n_int } < { 0 } { %true \int_set:Nn \l_week_number_W_int { 53 - \int_div_truncate:nn { \l_week_number_g_int - \l_week_number_s_int } { 5 } } } % end true { % false \int_compare:nNnTF { \l_week_number_n_int } > { 364 + \l_week_number_s_int } { % true \int_set:Nn \l_week_number_W_int { 1 } } % end true { % false \int_set:Nn \l_week_number_W_int { \int_div_truncate:nn { \l_week_number_n_int } { 7 } + 1 } } % end false } % end false } \definecolor{roed}{rgb}{0.937254901961,0.16862745098,0.176470588235} \definecolor{blaa}{rgb}{0,0.156862745098,0.407843137255} \newsavebox{\flagNO} \savebox{\flagNO}{ \begin{tikzpicture} \fill[roed] rectangle (6pt,6pt); \fill[roed,yshift=10pt] rectangle (6pt,6pt); \fill[roed,xshift=10pt] rectangle (12pt,6pt); \fill[roed,xshift=10pt,yshift=10pt] rectangle (12pt,6pt); \fill[blaa,yshift=7pt] rectangle (22pt,2pt); \fill[blaa,xshift=7pt] rectangle (2pt,16pt); \end{tikzpicture} } \pgfkeys{/tikz/week~number/.code = { \week_number:nnn { \pgfcalendarifdateyear } { \pgfcalendarifdatemonth } { \pgfcalendarifdateday } \addtext{ Uke ~ \int_to_arabic:n { \l_week_number_W_int } } } } \ExplSyntaxOff \pgfkeys{/tikz/flag-flying day/.code = { \draw (-\cellwidth,0) node [above right,font=\Huge] {\resizebox{!}{0.8ex}{\usebox{\flagNO}}}; } } \pgfkeys{/tikz/observance/.code = { \addtext{#1} } } \pgfkeys{/tikz/anniversary/.code 2 args=\addtextyear{#1}{#2}} \pgfkeys{/tikz/day code = { \node (lower right) at (0,0) [above left,font=\Huge] {\tikzdaytext}; \node (upper left) at (-\cellwidth,\cellheight) [below right,align=left,text width=\cellwidth-\pgflinewidth, font=\tiny,black] {\showtext}; \node (lower left) at (-\cellwidth,0) {}; \node[rounded corners, draw, fit=(lower right) (upper left) (lower left), inner sep=1mm] {}; } } \pgfkeys{/tikz/inner sep = 0pt} \pgfkeys{/tikz/day xshift=\cellwidth+2mm+2mm} \pgfkeys{/tikz/day yshift=\cellheight+2mm+2mm} \newlength{\cellheight} \setlength{\cellheight}{25mm} \newlength{\cellwidth} \setlength{\cellwidth}{35mm} \begin{document} \centering \begin{tikzpicture}[thick] \calendar[dates=2018-05-01 to 2018-05-last, week list, month label above centered, month text=\textsc{\%mt \%y0}, day headings={font=\footnotesize}, day letter headings] if (Monday, equals=01-01, equals=02-01, equals=03-01, equals=04-01, equals=05-01, equals=06-01, equals=07-01, equals=08-01, equals=09-01, equals=10-01, equals=11-01, equals=12-01) [week number] if (Sunday, Easter=-3, % Maundy Thursday Easter=-2, % Good Friday Easter, % Easter Sunday Easter=1, % Easter Monday Easter=39, % Feast of the Ascension Easter=49, % Pentecost Easter=50, % Whit Monday equals=01-01, equals=05-01, equals=05-17, equals=12-25, equals=12-26) [red] if (equals=01-01, equals=01-21, equals=02-06, equals=02-21, equals=05-01, equals=05-08, equals=05-17, equals=06-07, equals=07-04, equals=07-20, equals=07-29, equals=08-19, equals=12-25, Easter, Easter=49) [flag-flying day] if (equals=01-01) [observance=Første nyttårsdag] if (equals=01-21) [observance=Prinsesse Ingrid Alexandra] if (equals=02-06) [observance=Samefolkets dag] if (equals=02-21) [observance=Kong Harald~V] if (equals=05-01) [observance=Offentlig høytidsdag] if (equals=05-08) [observance=Frigjøringsdagen] if (equals=05-17) [observance=Grunnlovsdag] if (equals=06-07) [observance=Unionsoppløsningen] if (equals=06-23) [observance=Sankthansaften] if (equals=07-04) [observance=Dronning Sonja] if (equals=07-20) [observance=Kronprins Haakon] if (equals=07-29) [observance=Olsok] if (equals=08-19) [observance=Kronprinsesse Mette-Marit] if (equals=10-24) [observance=FN-dagen] if (equals=12-25) [observance=Første juledag] if (equals=12-26) [observance=Andre juledag] if (Easter=-49) [observance=Fastelavnssøndag] if (Easter=-7) [observance=Palmesøndag] if (Easter=-3) [observance=Skjærtorsdag] if (Easter=-2) [observance=Langfredag] if (Easter) [observance=Første påskedag] if (Easter=1) [observance=Andre påskedag] if (Easter=39) [observance=Kristi himmelfartsdag] if (Easter=49) [observance=Første pinsedag] if (Easter=50) [observance=Andre pinsedag] if (Advent) [observance=Advent] if (equals=05-07) [anniversary={Brahms}{1833}] ; \end{tikzpicture} \end{document}
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

12 Feb '18, 17:39

runix's gravatar image

runix
1.0k247586

calendar - variation

Ich würde gerne einen Kalender mit folgenden Eigenschaften erstellen: (a) Pro Kalenderblatt 1 Monat (b) 1 Kalenderblatt sollte folgendermaßen gestaltet sein: - Obere Hälfte ein leeres Rechteck - Untere Hälfte die jeweiligen Tage im folgenden Format (Beispiel aus TeXample.net) Das Beispiel ist recht komplex sobald ich aber versucht habe es sinnvoll zu vereinfachen, produzierte es zig Fehler. > % Birthday calendar calendar % Author: Hakon > Hakon Malmedal > \documentclass[fontsize=20pt]{scrartcl} > \usepackage[norsk]{babel} > \usepackage[utf8]{inputenc} > \usepackage[T1]{fontenc} > \usepackage{lmodern} > \usepackage[margin=1cm,a4paper,landscape]{geometry} > \pagestyle{empty} > \usepackage{graphicx} > \usepackage{tikz} > \usetikzlibrary{calendar,fit} > \usepackage{expl3,xparse} > > %% Adapted from > from http://tex.stackexchange.com/a/10199/4771 > \makeatletter% \tikzoption{day > headings}{\tikzstyle{day > heading}=[#1]} \tikzstyle{day > heading}=[] \makeatletter% \tikzoption{day headings}{\tikzstyle{day heading}=[#1]} \tikzstyle{day letter > heading}=[] \tikzstyle{day letter headings}=[ > execute before day scope={ \ifdate{day of month=1}{% > \pgfmathsetlength{\pgf@ya}{\tikz@lib@cal@yshift}% > \pgfmathsetlength\pgf@xa{\tikz@lib@cal@xshift}% > \pgftransformyshift{-\pgf@ya} > \foreach \d/\l in {0/Monday,1/Tuesday,2/Wednesday,3/Thursday,% > 4/Friday,5/Saturday,6/Sunday} { > \pgf@xa=\d\pgf@xa% > \pgftransformxshift{\pgf@xa-\cellwidth/2}% > \pgftransformyshift{\pgf@ya}% > \node[above=-0.5ex,day heading]{\l};% > } > }{}% }% ] \makeatother% } }{}% }% ] \makeatother% %% End > > %% Adapted from pgf source > \def\pgfcalendarmonthname#1{% > \def\pgfcalendarmonthname#1{% \translate{\ifcase#1\or Januar\or > Januar\or Februar\or Mars\or April\or > Mai\or Juni\or Juli\or August\or September\or Oktober\or > November\or Desember\fi}% } > > \makeatletter Desember\fi}% } \makeatletter \tikzstyle{month label > label above centered}=[% centered}=[% execute before > before day scope={% > \ifdate{day of month=1}{% > { > \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}% > \pgf@xb=\tikz@lib@cal@width\pgf@xa% > \advance\pgf@xb by-\pgf@xa% > \pgf@xb=.5\pgf@xb% > \pgftransformxshift{\pgf@xb}% > \pgftransformxshift{-\cellwidth/2}% > \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}% > \pgftransformyshift{0.333\pgf@y} > \tikzmonthcode% > } > }{}}, } }{}}, every month/.append style={anchor=base} ] \makeatother %% > style={anchor=base} ] \makeatother %% End > > \ExplSyntaxOn > > %% Adapted from > from http://tex.stackexchange.com/a/56214/4771 > %% %% % first of all we define the user > user level commands > \NewDocumentCommand{\addtext}{ m }{ > }{ \bdaycal_input_add:n { #1 } } > \NewDocumentCommand{\addtextyear}{ mm > mm }{ \bdaycal_input_add_y:nn { #1 } { #2 > } } #2 } } \NewDocumentCommand{\showtext}{ }{ > }{ \bdaycal_output_direct: } > > % allocate variable: variable: % a sequence for > for global storage of the inputs; > \seq_new:N \g_bdaycal_input_seq > > % store globally an input in the > sequence \cs_new:Npn > the sequence \cs_new:Npn \bdaycal_input_add:n #1 { \seq_gput_right:Nn \g_bdaycal_input_seq { #1 { > \seq_gput_right:Nn > \g_bdaycal_input_seq { #1 } } > > } } \cs_new:Npn \bdaycal_input_add_y:nn #1 > #2 { #1 #2 { \seq_gput_right:Nn \g_bdaycal_input_seq { #1 ~ ( > ( \int_to_arabic:n > { \pgfcalendarifdateyear - #2 } ) } } > > } } % how to output in direct order; we > we simply do a mapping function calling % > calling % \bdaycal_print:n after incrementing > incrementing the counter \cs_new_protected:Npn > \bdaycal_output_direct: { > \seq_map_inline:Nn > \g_bdaycal_input_seq counter \cs_new_protected:Npn \bdaycal_output_direct: { > \seq_map_inline:Nn \g_bdaycal_input_seq { \bdaycal_print:n { ##1 } } } } \seq_gclear:N \g_bdaycal_input_seq } > > \g_bdaycal_input_seq } % the printing macro; change here for > for adapting to your wishes \cs_new:Npn > wishes \cs_new:Npn \bdaycal_print:n #1 { #1 { #1 \par } %% > \par } %% End > > %% Knuth's AoCP, vol 1, 2nd ed, pp > 155--156 pp 155--156 \int_new:N \l_easter_Y_int > \int_new:N \l_easter_G_int \int_new:N > \l_easter_C_int \int_new:N > \l_easter_X_int \int_new:N > \l_easter_Z_int \int_new:N > \l_easter_D_int \int_new:N > \l_easter_E_int \int_new:N > \l_easter_N_int \int_new:N > \l_easter_M_int \int_new:N > \l_easter_G_int \int_new:N \l_easter_C_int \int_new:N \l_easter_X_int \int_new:N \l_easter_Z_int \int_new:N \l_easter_D_int \int_new:N \l_easter_E_int \int_new:N \l_easter_N_int \int_new:N \l_easter_M_int \int_new:N \l_easter_julian_day_int > > \cs_new:Nn \easter_sunday:n { > > \int_set:Nn \l_easter_Y_int { #1 } > > \int_set:Nn \l_easter_G_int { > \int_mod:nn { \l_easter_Y_int } { 19 } + 1 } > > 1 } \int_set:Nn \l_easter_C_int { > \int_div_truncate:nn { \l_easter_Y_int } { 100 } + 1 } > > 1 } \int_set:Nn \l_easter_X_int { > \int_div_truncate:nn { 3 * \l_easter_C_int } { 4 } - 12 } > > 12 } \int_set:Nn \l_easter_Z_int { > \int_div_truncate:nn { 8 * \l_easter_C_int + 5 } { 25 } - 5 } > > 5 } \int_set:Nn \l_easter_D_int { > \int_div_truncate:nn { 5 * \l_easter_Y_int } { 4 } - > - \l_easter_X_int - 10 } > > 10 } \int_set:Nn \l_easter_E_int { > \int_mod:nn { 11 * \l_easter_G_int + 20 + \l_easter_Z_int > - \l_easter_X_int } { 30 } } > > } } % \int_mod:nn behaves strangely. > strangely. \int_compare:nNnT { \l_easter_E_int } > } < { 0 } } { > \int_add:Nn \l_easter_E_int { 30 } } > > } } \int_compare:nNnTF { \l_easter_E_int > \l_easter_E_int } = { 25 } } { % true \int_compare:nNnT { \l_easter_G_int } > \int_compare:nNnT { \l_easter_G_int } > { 11 } > { % true > \int_incr:N \l_easter_E_int > } } } } { % false > \int_compare:nNnT { \l_easter_E_int } = { 24 } > { % true > \int_incr:N \l_easter_E_int > } } > > } } \int_set:Nn \l_easter_N_int { 44 - > - \l_easter_E_int } > > \int_compare:nNnT { \l_easter_N_int > \l_easter_N_int } < { 21 } } { % true > \int_add:Nn \l_easter_N_int { 30 } } > > } } \int_add:Nn \l_easter_N_int { > 7 - \int_mod:nn { \l_easter_D_int + \l_easter_N_int } { 7 } } } } \int_compare:nNnTF { \l_easter_N_int } > > \int_compare:nNnTF { \l_easter_N_int > } > { 31 } } { % true > \int_sub:Nn \l_easter_N_int { 31 } > \int_set:Nn \l_easter_M_int { 4 } % April } April } { % false > \int_set:Nn \l_easter_M_int { 3 } % March } > > March } \pgfcalendardatetojulian { > { \l_easter_Y_int - > \l_easter_M_int - \l_easter_N_int \l_easter_N_int } { \l_easter_julian_day_int } > > } > > \pgfkeys{/pgf/calendar/Easter/.default > } \pgfkeys{/pgf/calendar/Easter/.default = 0} 0} \pgfkeys{/pgf/calendar/Easter/.code = > = { > \easter_sunday:n { \pgfcalendarifdateyear } > \int_compare:nNnT { \pgfcalendarifdatejulian } > = {\l_easter_julian_day_int + #1} > { \pgfcalendarmatchestrue } } } > > } } } \int_new:N \l_advent_Y_int \int_new:N > \l_advent_Y_int \int_new:N \l_advent_xmas_julian_day_int > \int_new:N \l_advent_xmas_week_day_int > \int_new:N \l_advent_julian_day_int > > \cs_new:Nn \advent_sunday:n { > > \int_set:Nn \l_advent_Y_int { #1 } > > \pgfcalendardatetojulian { > { \l_advent_Y_int - 12 - 25 } { > \l_advent_xmas_julian_day_int } > > \pgfcalendarjuliantoweekday { \l_advent_xmas_julian_day_int } { > \l_advent_xmas_julian_day_int } \l_advent_xmas_week_day_int } \int_set:Nn \l_advent_julian_day_int { > \l_advent_xmas_week_day_int } > > \int_set:Nn \l_advent_julian_day_int > { > \l_advent_xmas_julian_day_int - \l_advent_xmas_week_day_int - 22 } > > } > > \pgfkeys{/pgf/calendar/Advent/.default > } \pgfkeys{/pgf/calendar/Advent/.default = 0} 0} \pgfkeys{/pgf/calendar/Advent/.code = > = { > \advent_sunday:n { \pgfcalendarifdateyear } > \int_compare:nNnT { \pgfcalendarifdatejulian } > = {\l_advent_julian_day_int + #1} > { \pgfcalendarmatchestrue } } } > > %% > } } } %% http://www.tondering.dk/claus/cal/week.php#calcweekno > \int_new:N \l_week_number_year_int > \int_new:N \l_week_number_month_int > \int_new:N \l_week_number_day_int > \int_new:N \l_week_number_a_int > \int_new:N \l_week_number_b_int > \int_new:N \l_week_number_c_int > \int_new:N \l_week_number_s_int > \int_new:N \l_week_number_e_int > \int_new:N \l_week_number_f_int > \int_new:N \l_week_number_g_int > \int_new:N \l_week_number_d_int > \int_new:N \l_week_number_n_int > \int_new:N \l_week_number_W_int > > \cs_new:Nn \week_number:nnn { > > \int_set:Nn \l_week_number_year_int > \l_week_number_year_int { #1 } \int_set:Nn > } \int_set:Nn \l_week_number_month_int { #2 } > } \int_set:Nn \l_week_number_day_int { > { #3 } > > \int_compare:nNnTF { > { \l_week_number_month_int } < { 3 } % > % jan or feb feb { % true > > \int_set:Nn \l_week_number_a_int { \l_week_number_year_int - 1 } > > \int_set:Nn \l_week_number_b_int { > \int_div_truncate:nn { \l_week_number_a_int } { 4 } > - \int_div_truncate:nn { \l_week_number_a_int } { 100 } > + \int_div_truncate:nn { \l_week_number_a_int } { 400 } > } > > } \int_set:Nn \l_week_number_c_int { > \int_div_truncate:nn { \l_week_number_a_int - 1 } { 4 } > - \int_div_truncate:nn { \l_week_number_a_int - 1 } { 100 } > + \int_div_truncate:nn { \l_week_number_a_int - 1 } { 400 } > } > > } \int_set:Nn \l_week_number_s_int { > \l_week_number_b_int - \l_week_number_c_int } > > \int_zero:N \l_week_number_e_int > > \int_set:Nn \l_week_number_f_int { \l_week_number_day_int - 1 > + 31 * ( \l_week_number_month_int - 1 ) } > > } % end true true { % false > > \int_set_eq:NN \l_week_number_a_int > \l_week_number_a_int \l_week_number_year_int > > \int_set:Nn \l_week_number_b_int { > \int_div_truncate:nn { \l_week_number_a_int } { 4 } > - \int_div_truncate:nn { \l_week_number_a_int } { 100 } > + \int_div_truncate:nn { \l_week_number_a_int } { 400 } > } > > } \int_set:Nn \l_week_number_c_int { > \int_div_truncate:nn { \l_week_number_a_int - 1 } { 4 } > - \int_div_truncate:nn { \l_week_number_a_int - 1 } { 100 } > + \int_div_truncate:nn { \l_week_number_a_int - 1 } { 400 } > } > > } \int_set:Nn \l_week_number_s_int { > \l_week_number_b_int - \l_week_number_c_int } > > \int_set:Nn \l_week_number_e_int { \l_week_number_s_int + 1 } > > \int_set:Nn \l_week_number_f_int { \l_week_number_day_int > + \int_div_truncate:nn { > 153 * ( \l_week_number_month_int - 3 ) + 2 } { > { 5 } > + 58 + \l_week_number_s_int } > > } % end false > > \int_set:Nn \l_week_number_g_int { > \int_mod:nn { \l_week_number_a_int + \l_week_number_b_int } { 7 } } > > \int_set:Nn \l_week_number_d_int { > \int_mod:nn { \l_week_number_f_int + \l_week_number_g_int > - \l_week_number_e_int } { 7 } } > > \int_set:Nn \l_week_number_n_int { > \l_week_number_f_int + 3 - \l_week_number_d_int } > > \int_compare:nNnTF { > { \l_week_number_n_int } < { 0 } { > } { %true > > \int_set:Nn \l_week_number_W_int { 53 > - \int_div_truncate:nn { \l_week_number_g_int > - \l_week_number_s_int } { 5 } } > > } % end true { % false > > \int_compare:nNnTF { \l_week_number_n_int } > { 364 > + \l_week_number_s_int } > { % true > > \int_set:Nn \l_week_number_W_int { 1 } > > } % end true > { % false \int_compare:nNnTF { \l_week_number_n_int } > > { 364 + \l_week_number_s_int } { % true \int_set:Nn \l_week_number_W_int { 1 } } % end true { % false \int_set:Nn \l_week_number_W_int { \int_div_truncate:nn { > \l_week_number_n_int } { 7 } + 1 } > > } % end false > > } % end false > > } > > } \definecolor{roed}{rgb}{0.937254901961,0.16862745098,0.176470588235} > \definecolor{blaa}{rgb}{0,0.156862745098,0.407843137255} > > \newsavebox{\flagNO} > \savebox{\flagNO}{ \savebox{\flagNO}{ \begin{tikzpicture} > \fill[roed] rectangle (6pt,6pt); > (6pt,6pt); \fill[roed,yshift=10pt] rectangle > (6pt,6pt); \fill[roed,xshift=10pt] > rectangle (12pt,6pt); > \fill[roed,xshift=10pt,yshift=10pt] > (6pt,6pt); \fill[roed,xshift=10pt] rectangle (12pt,6pt); > (12pt,6pt); \fill[roed,xshift=10pt,yshift=10pt] rectangle (12pt,6pt); \fill[blaa,yshift=7pt] rectangle > (22pt,2pt); \fill[blaa,xshift=7pt] > rectangle (22pt,2pt); \fill[blaa,xshift=7pt] rectangle (2pt,16pt); > \end{tikzpicture} } > > \end{tikzpicture} } \pgfkeys{/tikz/week~number/.code = = { > \week_number:nnn { > \pgfcalendarifdateyear } { > \pgfcalendarifdatemonth } { > \pgfcalendarifdateday } > \addtext{ Uke ~ \int_to_arabic:n { \l_week_number_W_int } } } } > > } } } \ExplSyntaxOff > > \pgfkeys{/tikz/flag-flying day/.code = > { > \draw (-\cellwidth,0) node [above right,font=\Huge] > {\resizebox{!}{0.8ex}{\usebox{\flagNO}}}; > } } > > } } \pgfkeys{/tikz/observance/.code = = { > \addtext{#1} } } > > \addtext{#1} } } \pgfkeys{/tikz/anniversary/.code 2 > 2 args=\addtextyear{#1}{#2}} > > \pgfkeys{/tikz/day code = = { > \node (lower right) at (0,0) [above left,font=\Huge] > left,font=\Huge] {\tikzdaytext}; > \node (upper left) at (-\cellwidth,\cellheight) > [below right,align=left,text width=\cellwidth-\pgflinewidth, > font=\tiny,black] {\showtext}; > \node (lower left) at (-\cellwidth,0) {}; > \node[rounded corners, draw, > fit=(lower right) (upper left) (lower left), > inner sep=1mm] {}; } } > > {}; } } \pgfkeys{/tikz/inner sep = 0pt} > > \pgfkeys{/tikz/day > \pgfkeys{/tikz/day xshift=\cellwidth+2mm+2mm} > > \pgfkeys{/tikz/day > \pgfkeys{/tikz/day yshift=\cellheight+2mm+2mm} > > \newlength{\cellheight} > \setlength{\cellheight}{25mm} > \newlength{\cellwidth} > \setlength{\cellwidth}{35mm} > > \begin{document} > > \centering > > \begin{tikzpicture}[thick] > \begin{tikzpicture}[thick] \calendar[dates=2018-05-01 to > to 2018-05-last, > week list, > month label above centered, > month text=\textsc{\%mt \%y0}, > day headings={font=\footnotesize}, > day letter headings] headings] if (Monday, > equals=01-01, > equals=02-01, > equals=03-01, > equals=04-01, > equals=05-01, > equals=06-01, > equals=07-01, > equals=08-01, > equals=09-01, > equals=10-01, > equals=11-01, > equals=12-01) [week number] number] if (Sunday, > Easter=-3, % Maundy Thursday > Easter=-2, % Good Friday > Easter, % Easter Sunday > Easter=1, % Easter Monday > Easter=39, % Feast of the Ascension > Easter=49, % Pentecost > Easter=50, % Whit Monday > equals=01-01, > equals=05-01, > equals=05-17, > equals=12-25, > equals=12-26) [red] [red] if (equals=01-01, > equals=01-21, > equals=02-06, > equals=02-21, > equals=05-01, > equals=05-08, > equals=05-17, > equals=06-07, > equals=07-04, > equals=07-20, > equals=07-29, > equals=08-19, > equals=12-25, > Easter, > Easter=49) [flag-flying day] day] if (equals=01-01) [observance=Første > nyttårsdag] [observance=Første nyttårsdag] if (equals=01-21) > (equals=01-21) [observance=Prinsesse Ingrid > Alexandra] Ingrid Alexandra] if (equals=02-06) > (equals=02-06) [observance=Samefolkets dag] if > dag] if (equals=02-21) [observance=Kong > Harald~V] [observance=Kong Harald~V] if (equals=05-01) > (equals=05-01) [observance=Offentlig høytidsdag] if > (equals=05-08) > [observance=Frigjøringsdagen] if > (equals=05-17) > [observance=Grunnlovsdag] if > (equals=06-07) > [observance=Unionsoppløsningen] if > (equals=06-23) > [observance=Sankthansaften] if > høytidsdag] if (equals=05-08) [observance=Frigjøringsdagen] if (equals=05-17) [observance=Grunnlovsdag] if (equals=06-07) [observance=Unionsoppløsningen] if (equals=06-23) [observance=Sankthansaften] if (equals=07-04) [observance=Dronning > Sonja] [observance=Dronning Sonja] if (equals=07-20) > (equals=07-20) [observance=Kronprins Haakon] if > Haakon] if (equals=07-29) [observance=Olsok] if > (equals=08-19) > [observance=Olsok] if (equals=08-19) [observance=Kronprinsesse Mette-Marit] > if (equals=10-24) > [observance=FN-dagen] if > (equals=10-24) [observance=FN-dagen] if (equals=12-25) [observance=Første > juledag] [observance=Første juledag] if (equals=12-26) > (equals=12-26) [observance=Andre juledag] if > (Easter=-49) > [observance=Fastelavnssøndag] if > juledag] if (Easter=-49) [observance=Fastelavnssøndag] if (Easter=-7) [observance=Palmesøndag] > [observance=Palmesøndag] if (Easter=-3) > [observance=Skjærtorsdag] if > (Easter=-3) [observance=Skjærtorsdag] if (Easter=-2) [observance=Langfredag] > [observance=Langfredag] if (Easter) [observance=Første > påskedag] [observance=Første påskedag] if (Easter=1) > (Easter=1) [observance=Andre påskedag] if > påskedag] if (Easter=39) [observance=Kristi > himmelfartsdag] [observance=Kristi himmelfartsdag] if (Easter=49) > (Easter=49) [observance=Første pinsedag] if > pinsedag] if (Easter=50) [observance=Andre > pinsedag] [observance=Andre pinsedag] if (Advent) > [observance=Advent] if > (equals=05-07) > [anniversary={Brahms}{1833}] (Advent) [observance=Advent] if (equals=05-07) [anniversary={Brahms}{1833}] ; > \end{tikzpicture} > > \end{document}
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

12 Feb '18, 17:34

runix's gravatar image

runix
1.0k247586

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

12 Feb '18, 17:34

runix's gravatar image

runix
1.0k247586