Moin aus Hamburg,

ich habe mal eine Frage, wie kann ich in KOMA-Script der ersten Montag im Jahr ermitteln? Mein Ziel ist es, ich will mir alle Montage im Jahr ausgeben lassen. Wenn ich den ersten Montag habe kann ich einfach in einer Schleife immer +7 rechnen und erhalten die weiteren Montage. Bisher bin ich so vorgegangen das ich ermittle welcher der 01.01.2015 war (Tag-Nummer) und da müsste ich doch jetzt einfach die Tag-Nummer hochzählen. Oder habe ich einen falschen Ansatz?

Hier mein Code:

Open in Online-Editor
\documentclass[10pt,BCOR=12mm,DIV=calc] {scrreprt}
\usepackage{scrdate}
\usepackage[onehalfspacing]{setspace} 
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\AfterTOCHead{\singlespacing} 
\KOMAoptions{DIV=last}

\newcommand{\NEUJAHR}{2015-1-1}
\begin{document}
{\huge Neujahr war an einem \ISODayName{\NEUJAHR} (\the\ISODayNumber{\NEUJAHR}) }\\
der erste Montag im Jahr \the\year ~war der \\
\end{document}

gefragt 09 Jan '15, 06:10

micneu's gravatar image

micneu
2514
Akzeptiert: 100%

bearbeitet 07 Feb, 05:34

saputello's gravatar image

saputello
18.4k22352

Willkommen auf TeXwelt. Bitte beachte, dass wir hier mit Markdown-Syntax arbeiten. Eine englische Übersicht über die Syntax findest Du auch, wenn Du beim Eingabefeld oben rechts auf das Fragezeichen klickst. Ich habe u. a. das bei Deinem Beitrag mal korrigiert. Außerdem sollte man vorgeschlagene Tags verwenden, wenn diese passen. Das erleichtert die Suche.

(09 Jan '15, 06:57) saputello

Den ersten Montag in einem beliebigen Jahr kannst Du auch mit einer \foreach Schleife über die ersten sieben Tage des entsprechenden Jahres ermittlen. Im folgenden Beispiel habe ich absichtlich nicht das aktuelle Jahr 2015 gewählt.

Open in writeLaTeX
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{scrdate}
\usepackage{pgffor}

\newcommand\jahr{2016}
\begin{document}
Jahr: \jahr, Neujahr: \DayName{\jahr}{1}{1}, erster Montag:
\foreach \tag in {1,...,7}{%
  \ifstr{\DayName{\jahr}{1}{\tag}}{\DayNameByNumber{1}}{\tag.\,Januar~\jahr\breakforeach}{}%
}
\end{document}

alt text

Alternativ zu scrdate kann man dann aber auch pgfcalendar verwenden. Damit der Monatsname etc. in Deutsch ausgegeben wird, müssen babel und translator mit der Option ngerman geladen werden.

Open in writeLaTeX
\documentclass[ngerman,parskip]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{pgffor}
\usepackage{translator}
\usepackage{pgfcalendar}

\begin{document}
\foreach \jahr in {2014,2015}{%
  Der erste Montag im Jahr~\jahr{} war der 
    \foreach\tag in {1,...,7}{%
      \pgfcalendarifdate{\jahr-1-\tag}{Monday}{\tag.\,\pgfcalendarmonthname{1}\breakforeach}{}%
    }.%
  \par%
}
\end{document}

alt text

Damit kann man sich dann auch einfach alle Montage eines Jahres ausgeben lassen:

Open in writeLaTeX
\documentclass[ngerman,parskip]{scrreprt}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{pgffor}
\usepackage{translator}
\usepackage{pgfcalendar}

\newcommand\jahr{2015}

\begin{document}
\minisec{Montage im Jahr \jahr}
\foreach \monat in {1,...,12}{%
  \foreach\tag in {1,...,31}{%
  \pgfcalendarifdate{\jahr-\monat-\tag}{Monday}{\tag.\,\pgfcalendarmonthname{\monat} \quad}{}%
  \pgfcalendarifdate{\jahr-\monat-\tag}{end of month}{\breakforeach}{}%
  }%
\par}
\end{document}

alt text

Permanenter link

beantwortet 09 Jan '15, 07:08

esdd's gravatar image

esdd
14.2k53251

bearbeitet 09 Jan '15, 14:38

Es ist einfacher, wenn du von Silvester aus rechnest, dann musst du keine Modulorechnung machen:

Open in writeLaTeX
\documentclass[10pt,BCOR=12mm,DIV=calc] {scrreprt}
\usepackage{scrdate}
\usepackage[onehalfspacing]{setspace}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\newcommand{\NEUJAHR}{2015-1-1}
\begin{document}
{\huge Neujahr war an einem \ISODayName{\NEUJAHR} (\the\ISODayNumber{\NEUJAHR}) \par}

der erste Montag im Jahr \the\year ~war der 
\the\year-1-\the\numexpr8-\the\ISODayNumber{\the\numexpr\year-1\relax-12-31}\relax
\end{document}
Permanenter link

beantwortet 09 Jan '15, 06:51

Ulrike%20Fischer's gravatar image

Ulrike Fischer
2.2k13

bearbeitet 09 Jan '15, 07:11

Wenn Silvester auf einen Sonntag fällt, klappt das nicht, da der Sonntag die Nummer 0 hat.

(09 Jan '15, 10:39) esdd
1

Die notwendige Modulo-Operation gibt es übrigens in scrbase, das sowohl von scrreprt als auch scrdate ohnehin geladen wird. Die korrekte Berechnung ist dann: \the\numexpr \XmodY{8-\DayNumber{\year}{1}{1}}{7}+1\relax oder \the\numexpr \XmodY{8-\ISODayNumber{\the\year-1-1}}{7}+1\relax.

(09 Jan '15, 12:01) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×73
×8
×3

Frage gestellt: 09 Jan '15, 06:10

Frage wurde angeschaut: 2,524 Mal

Zuletzt aktualisiert: 07 Feb, 05:34