Hallo! Bei diesem Kalender wird m.E. im Druck der Platz einer DIN A4 Seite (Querformat) nicht optimal ausgenutzt. Lässt sich der Kreis ggf. in eine Ellipse verwandeln? Open in Online-Editor
% arara: pdflatex % arara: pdflatex % A calendar of circles % Author: Till Tantau (The PGF manual), % and Stefan Kottwitz (Modifications such as shaded circles and color) \documentclass[landscape, ngerman]{article} \usepackage{babel} \usepackage{translator} \usepackage{tikz} \usetikzlibrary{calendar,shadings} \renewcommand*{\familydefault}{\sfdefault} \colorlet{winter}{blue} \colorlet{spring}{green!60!black} \colorlet{summer}{orange} \colorlet{fall}{red} % A counter, since TikZ is not clever enough (yet) to handle % arbitrary angle systems. \newcount\mycount \begin{document} \pagestyle{empty} \year=2016 %Jahr festlegen \begin{tikzpicture}[scale=1.375, remember picture,overlay,shift={(current page.center)}, transform shape, every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}] \node[draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white, minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}}; \foreach \month/\monthcolor in {1/winter,2/winter,3/spring,4/spring,5/spring,6/summer, 7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} { % Computer angle: \mycount=\month \advance\mycount by -1 \multiply\mycount by 30 \advance\mycount by -90 \shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white, inner color=white,draw=none] (\the\mycount:5.4cm) circle(1.4cm); % The actual calendar \calendar at (\the\mycount:5.4cm) [ dates=\the\year-\month-01 to \the\year-\month-last, day code={% \path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22) node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}; } ] if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}} if (Sunday) [red] if (all) { % Again, compute angle \mycount=1 \advance\mycount by -\pgfcalendarcurrentday \multiply\mycount by 11 \advance\mycount by 90 \pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}}; } \end{tikzpicture} \end{document} |
Die einfachste Methode, das ganze elliptisch zu bekommen, besteht darin, für die x- und die y-Richtung unterschiedliche Skalierungsfaktoren zu verwenden, beispielsweise: Open in Online-Editor
\documentclass[ngerman]{article} \usepackage{babel} \usepackage{translator} \usepackage{tikz} \usetikzlibrary{calendar,shadings} \renewcommand*{\familydefault}{\sfdefault} \colorlet{winter}{blue} \colorlet{spring}{green!60!black} \colorlet{summer}{orange} \colorlet{fall}{red} % A counter, since TikZ is not clever enough (yet) to handle % arbitrary angle systems. \newcount\mycount \begin{document} \pagestyle{empty} \year=2016 %Jahr festlegen \begin{tikzpicture}[xscale=1.2,yscale=1.6, remember picture,overlay,shift={(current page.center)}, transform shape, every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}] \node[draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white, minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}}; \foreach \month/\monthcolor in {1/winter,2/winter,3/spring,4/spring,5/spring,6/summer, 7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} { % Computer angle: \mycount=\month \advance\mycount by -1 \multiply\mycount by 30 \advance\mycount by -90 \shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white, inner color=white,draw=none] (\the\mycount:5.4cm) circle(1.4cm); % The actual calendar \calendar at (\the\mycount:5.4cm) [ dates=\the\year-\month-01 to \the\year-\month-last, day code={% \path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22) node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}; } ] if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}} if (Sunday) [red] if (all) { % Again, compute angle \mycount=1 \advance\mycount by -\pgfcalendarcurrentday \multiply\mycount by 11 \advance\mycount by 90 \pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}}; } \end{tikzpicture} \end{document} oder Open in Online-Editor
\documentclass[landscape,ngerman]{article} \usepackage{babel} \usepackage{translator} \usepackage{tikz} \usetikzlibrary{calendar,shadings} \renewcommand*{\familydefault}{\sfdefault} \colorlet{winter}{blue} \colorlet{spring}{green!60!black} \colorlet{summer}{orange} \colorlet{fall}{red} % A counter, since TikZ is not clever enough (yet) to handle % arbitrary angle systems. \newcount\mycount \begin{document} \pagestyle{empty} \year=2016 %Jahr festlegen \begin{tikzpicture}[yscale=1.2,xscale=1.6, remember picture,overlay,shift={(current page.center)}, transform shape, every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}] \node[draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white, minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}}; \foreach \month/\monthcolor in {1/winter,2/winter,3/spring,4/spring,5/spring,6/summer, 7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} { % Computer angle: \mycount=\month \advance\mycount by -1 \multiply\mycount by 30 \advance\mycount by -90 \shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white, inner color=white,draw=none] (\the\mycount:5.4cm) circle(1.4cm); % The actual calendar \calendar at (\the\mycount:5.4cm) [ dates=\the\year-\month-01 to \the\year-\month-last, day code={% \path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22) node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}; } ] if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}} if (Sunday) [red] if (all) { % Again, compute angle \mycount=1 \advance\mycount by -\pgfcalendarcurrentday \multiply\mycount by 11 \advance\mycount by 90 \pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}}; } \end{tikzpicture} \end{document} Will man hingegen für die Monate weiterhin Kreise verwenden und lediglich den Hintergrund elliptisch haben, so muss man einige zusätzliche Berechnungen anstellen: Open in Online-Editor
\documentclass[landscape,ngerman]{article} \usepackage{babel} \usepackage{translator} \usepackage{tikz} \usetikzlibrary{calendar,shadings} \renewcommand*{\familydefault}{\sfdefault} \colorlet{winter}{blue} \colorlet{spring}{green!60!black} \colorlet{summer}{orange} \colorlet{fall}{red} % A counter, since TikZ is not clever enough (yet) to handle % arbitrary angle systems. \newcount\mycount \newlength\mylength \begin{document} \pagestyle{empty} \year=2016 %Jahr festlegen \begin{tikzpicture}[scale=1.35, remember picture,overlay,shift={(current page.center)}, transform shape, every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}] \node[xscale=1.2,draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white, minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}}; \foreach \month/\monthcolor in {1/winter,2/winter,3/spring,4/spring,5/spring,6/summer, 7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} { % Computer angle: \mycount=\month \advance\mycount by -1 \multiply\mycount by 30 \advance\mycount by -90 \pgfmathparse{(abs(sin((\month-1)*30))*0.2+1} \shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white, inner color=white,draw=none] (\the\mycount:\pgfmathresult*5.4) circle(1.4cm); % The actual calendar \setlength{\mylength}{\pgfmathresult\dimexpr 5.4cm\relax} \calendar at (\the\mycount:\mylength) [ dates=\the\year-\month-01 to \the\year-\month-last, day code={% \path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22) node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}}; } ] if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}} if (Sunday) [red] if (all) { % Again, compute angle \mycount=1 \advance\mycount by -\pgfcalendarcurrentday \multiply\mycount by 11 \advance\mycount by 90 \pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}}; } \end{tikzpicture} \end{document} beantwortet 17 Okt '15, 09:48 saputello Wow! Einfach die Skalierung ändern, ist natürlich schlau und simpel gelöst ;)
(17 Okt '15, 14:29)
cis
Anwendungsbeispiel:
(18 Okt '15, 02:28)
cis
|