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} |
Den ersten Montag in einem beliebigen Jahr kannst Du auch mit einer \documentclass{scrreprt} %\providecommand*\Ifstr{\ifstr}% nötig bis einschließlich KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif \usepackage[ngerman]{babel} %\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen nötig \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} Alternativ zu \documentclass[ngerman,parskip]{scrreprt} \usepackage{babel} %\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen nötig \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} Damit kann man sich dann auch einfach alle Montage eines Jahres ausgeben lassen: \documentclass[ngerman,parskip]{scrreprt} \usepackage{babel} %\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen nötig \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} beantwortet 09 Jan '15, 13:08 esdd |
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} beantwortet 09 Jan '15, 12:51 Ulrike Fischer Wenn Silvester auf einen Sonntag fällt, klappt das nicht, da der Sonntag die Nummer 0 hat.
(09 Jan '15, 16:39)
esdd
1
Die notwendige Modulo-Operation gibt es übrigens in
(09 Jan '15, 18:01)
saputello
|
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.