Hi, gibt es ein Paket, mit dem ich Kalendervorlagen wie diese auf Kalenderpedia einfach erstellen kann?

Demo: http://www.kalenderpedia.de/wochenkalender-2018-pdf-vorlagen.html

cu rivella

Nach dem Link geht es um so einen Kalender:
alt text

gefragt 17 Dez '18, 17:27

rivella's gravatar image

rivella
2923
Akzeptiert-Rate: 0%

bearbeitet 18 Dez '18, 08:25

cis's gravatar image

cis
9.5k75452491

\usetikzlibrary{calendar} (bzw. \usepackage{pgfcalendar}) können sowas.

(17 Dez '18, 20:03) cis
(17 Dez '18, 22:42) moewe
1

»Bitte schalten Sie ihren Adblocker aus« Wie wäre es mit nein?

(17 Dez '18, 23:45) Henri
1

Bild ergänzt

(18 Dez '18, 08:26) cis

Die Jahreskalender, auf die auf Stackexchange verwiesen wird, bekomme ich auch hin. Allerdings eben nicht diesen Wochenkalender :( Da fehlt mir jeder Ansatz.

(18 Dez '18, 09:55) rivella

Wahrscheinlich schwierig mit day list right, was sinnvoll ist, wenn man weitere Kalenderfunktionen nutzen will (wie Termine eintragen, Hintergrundfarben). Eventuell einfacher mit einer TikZ-Matrix (und die dann mit calendar-Funktionen beschriften), wenn es um das reine Layout geht. Professioneller ist sicher die erste Methode.

(18 Dez '18, 13:39) cis

Danke. Puh. Das muss ich mal in einer ruhigen Minute ausprobieren. Eine Matrix ist keine Lösung.

(18 Dez '18, 13:54) rivella

Ja, eine Matrix, wie gesagt, höchstens um das Layout zu erzeugen. Eleganter dürfte sein, die day cells so zu manipulieren, dass sie das gewünschte Wochenkalenderbild hergeben.
Ich würde mich damit beschäften, doch, wie der Zufall so will, bastle ich gerade an einem Monatskalender. Falls mir eine einfache Methode einfällt, das äquivalent in einen Wochenkalender umzuwandeln poste ich sie.

(18 Dez '18, 15:12) cis
Ergebnis 5 von 8 show 3 more comments

Um als Ansatz mal etwas in der Art ohne Verwendung von lualatex (so sehr ich das mag) und ohne TikZ (so mächtig das ist) zu zeigen, hier ein paar Datumsberechnungen. Als einziges Datumspaket wird hier das recht einfache scrdate verwendet. Außerdem wird auf den internen Monatsnamen von babel zurückgegriffen.

Öffne in Overleaf
\documentclass[fontsize=10pt,DIV=12,paper=landscape,svgnames]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{scrdate}

\newcounter{newyeardaynumber}
\newcounter{firstweekstartoffset}
\newcommand*{\startdate}{}
\newif\ifleepyear
\newcounter{weeksperyear}

\newcommand*{\InitKW}[1]{%
  \setcounter{newyeardaynumber}{\DayNumber{#1}{1}{1}}%
  \setcounter{weeksperyear}{52}%
  \expandafter\ifcase\value{newyeardaynumber}
    \setcounter{firstweekstartoffset}{1}%
    \edef\startdate{#1-1-2}%
  \or
    \setcounter{firstweekstartoffset}{0}%
    \edef\startdate{#1-1-1}%
  \or
    \setcounter{firstweekstartoffset}{-1}%
    \edef\startdate{\the\numexpr#1-1\relax-12-31}%
  \or
    \setcounter{firstweekstartoffset}{-2}%
    \edef\startdate{\the\numexpr#1-1\relax-12-30}%
  \or
    \setcounter{firstweekstartoffset}{-3}%
    \edef\startdate{\the\numexpr#1-1\relax-12-29}%
    \setcounter{weeksperyear}{53}%
  \or
    \setcounter{firstweekstartoffset}{3}%
    \edef\startdate{#1-1-4}%
  \or
    \setcounter{firstweekstartoffset}{2}%
    \edef\startdate{#1-1-3}%
  \fi
  \expandafter\ifnum\value{weeksperyear}=52
    \expandafter\ifnum\DayNumber{\numexpr #1+1\relax}{1}{1}=5
      \setcounter{weeksperyear}{53}%
    \fi
  \fi
  \expandafter\ifnum\DayNumber{#1}{2}{29}\expandafter=\DayNumber{#1}{3}{1}
    \leepyearfalse
  \else
    \leepyeartrue
  \fi
}
\makeatletter
\newcommand*\splitdate{}
\def\splitdate#1-#2-#3\@nil{\year=#1\relax \month=#2\relax \day=#3\relax}
\newcommand*{\@calcdate}[1]{%
  \@tempcnta=#1\relax
  \@whilenum \@tempcnta>0\do {%
    \@tempcntb=\ifcase \month
      \or 31
      \or \ifleepyear 29 \else 28 \fi
      \or 31
      \or 30
      \or 31
      \or 30
      \or 31
      \or 31
      \or 30
      \or 31
      \or 30
      \or 31
    \fi
    \ifnum \day>\@tempcntb
      \advance\day by -\@tempcntb
      \advance\month by 1
      \ifnum \month>12\relax \month=1\relax\advance\year by 1\relax\fi
    \fi
    \advance\@tempcnta by -1
    \ifnum\@tempcnta>0 \advance\day by 7\relax\fi      
  }%
}
\newcommand*{\KWStartdate}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \@calcdate{#1}%
    \the\day. \csname month@\languagename\endcsname
  \endgroup
}
\newcommand*{\KWEnddate}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 6\relax
    \@calcdate{#1}%
    \the\day. \csname month@\languagename\endcsname
  \endgroup
}
\newcommand*{\KWFirst}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 0\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWSecond}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 1\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWThird}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 2\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWForth}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 3\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWFifth}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 4\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWSixth}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 5\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\newcommand*{\KWSeventh}[1]{%
  \begingroup
    \expandafter\splitdate\startdate\@nil
    \advance\day by 6\relax
    \@calcdate{#1}%
    \the\day. \the\month. \DayName{\year}{\month}{\day}%
  \endgroup
}
\makeatother
\newcommand*{\KWshowweek}[1]{%
  \newpage
  \begingroup
    \raggedright
    \sffamily
    KW #1, \KWStartdate{#1}--\KWEnddate{#1}

    \begin{tabular}{|*4{p{\dimexpr \linewidth/4-2\tabcolsep\relax}|}}
      \cellcolor{IndianRed}
      \KWFirst{#1} &
      \cellcolor{Gold}
      \KWSecond{#1} &
      \cellcolor{Khaki}
      \KWThird{#1} &
      \cellcolor{PaleGreen}
      \KWForth{#1} \\\hline
      & & & \\[12\normalbaselineskip]
      \hline
      \cellcolor{PaleTurquoise}
      \KWFifth{#1} &
      \cellcolor{DarkTurquoise}
      \KWSixth{#1} &
      \cellcolor{MediumOrchid}
      \KWSeventh{#1} &
      \cellcolor{LightGrey}
      Notizen: \\\hline                                             
      & & & \\[12\normalbaselineskip]
      \hline
    \end{tabular}

  \endgroup
}

\InitKW{\the\year}

\newcounter{week}

\begin{document}

Der 1. Januar \the\year{} ist ein \DayNameByNumber{\value{newyeardaynumber}} und
das Jahr ist \ifleepyear\else kein \fi Schaltjahr.
Die erste KW beginnt nach ISO~8601 am \startdate{} und das Jahr hat
\arabic{weeksperyear} Wochen.

\setcounter{week}{0}
\csname @whilenum\endcsname\value{week}<\value{weeksperyear}\do {
  \stepcounter{week}%
  \KWshowweek{\arabic{week}}%
}

\InitKW{2019}
Der 1. Januar 2019 ist ein \DayNameByNumber{\value{newyeardaynumber}} und
das Jahr ist \ifleepyear\else kein \fi Schaltjahr.
Die erste KW beginnt nach ISO~8601 am \startdate{} und das Jahr hat
\arabic{weeksperyear} Wochen.

\setcounter{week}{0}
\csname @whilenum\endcsname\value{week}<\value{weeksperyear}\do {
  \stepcounter{week}%
  \KWshowweek{\arabic{week}}%
}

\end{document}

Statt scrdate und den Monatsnamen von babel könnte man auch datename2 verwenden. Da das Paket auch sehr schöne Berechnungen auf dem Datum erlaubt, könnte man sich im Beispiele die Implementierung einiger eigener Berechnungen sparen. Mir ging es hier aber gerade um diese Berechnungen.

Hier einmal die erste Kalenderwoche im nächsten Jahr:

KW1/2019

Es gibt übrigens neben der hier gezeigten Berechnung der Kalenderwoche nach ISO 8601 andere Berechnungsarten. Während nach ISO 8601 die erste Kalenderwoche diejenige mit dem ersten Donnerstag des Jahres ist, wird in einigen Ländern auch festgelegt, dass die erste Kalenderwoche diejenige mit dem ersten Montag oder dem ersten Sonntag ist oder einfach diejenige mit dem ersten Januar. Für eine entsprechende Anpassung müsste man oben nur \InitKW ändern.

Permanenter link

beantwortet 20 Dez '18, 10:48

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 20 Dez '18, 10:58

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×11

gestellte Frage: 17 Dez '18, 17:27

Frage wurde gesehen: 5,995 Mal

zuletzt geändert: 20 Dez '18, 10:58