In der folgenden Tabelle sollten der 10., 17. und 24. August 2017 auftauchen. Stattdessen stehen 21. und 28. September und 5. Oktober 2017. Das Problem tritt nur auf, wenn tabularx verwendet wird.

Öffne in Overleaf
\documentclass{article}
\usepackage{tabularx}
\usepackage[ngerman]{babel}
\usepackage[useregional=numeric]{datetime2}
\usepackage{datetime2-calc}

\newcounter{Woche}
\newcount\Tag

\DTMsavedate{Datum}{2017-08-03}
\DTMlangsetup[german]{datesep=.\,}

\newcommand{\Zeile}{\hline\DTMsaveddateoffsettojulianday{Datum}{7}{\Tag}\DTMsavejulianday{Datum}{\number\Tag}\DTMmakeglobal{Datum}
\stepcounter{Woche}\arabic{Woche} & \DTMusedate{Datum} & \hspace{1em} \tabularnewline}

\begin{document}

\noindent
\begin{tabularx}{\linewidth}{ccX}
\emph{Woche} & \emph{Datum} & \emph{Bemerkungen} \tabularnewline
\Zeile
\Zeile
\Zeile
\end{tabularx}

\end{document}

gefragt 22 Nov, 16:58

Cletus's gravatar image

Cletus
1.2k1740
Akzeptiert: 70%

bearbeitet 22 Nov, 17:00

Das kann nicht funktionieren. tabularx (und teilweise ebenso longtable) müssen die Zeilen und damit die Tabellenzellen mehrfach ausführen, um sie zu balancieren (= Anpassungen der Breite der Spalten durchzuführen). Also kann man innerhalb einer Zeile keine Berechnungen durchführen, die bei mehreren Aufrufen unterschiedliche Ergebnisse produzieren.

(23 Nov, 03:22) saputello

Mich wundert nur, dass die Wochennummern in der ersten Spalte trotzdem richtig sind. Bei mehrfacher Ausführung müsste der Zähler doch auch mehrfach inkrementiert werden.

(23 Nov, 06:46) Cletus

tabularx enthält Code der LaTeX-Zähler wieder korrekt zurücksetzt.

(24 Nov, 16:45) Ulrike Fischer

Dann sollte ich die Daten in der zweiten Spalte wohl am besten als Ausgangsdatum + Wochenzähler * 7 Tage berechnen. Die Frage ist nur, ob datetime2 das mitmacht.

(26 Nov, 13:04) Cletus

datetime2 nicht, dafür aber das von dir bereits geladene datetime2-calc.

(27 Nov, 04:51) Ijon Tichy

Da datetime2-calc in der Lage ist, unzulässige Datumsangaben bezüglich des Tags eines Monats automatisch in den richtigen Monat zu verlegen, ist folgendes möglich:

Öffne in Overleaf
\documentclass{article}
\usepackage{tabularx}
\usepackage[ngerman]{babel}
\usepackage[useregional=numeric]{datetime2}
\usepackage{datetime2-calc}

\newcounter{Woche}
\newcount\Tag

\DTMsavedate{Datum}{2017-08-03}
\DTMlangsetup[german]{datesep=.\,}

\newcommand{\Zeile}{\hline
\stepcounter{Woche}\arabic{Woche} & \DTMsavedate{Datum}{2017-08-\the\numexpr 3+\value{Woche}*7\relax}\DTMusedate{Datum} & \hspace{1em} \tabularnewline}

\begin{document}

\noindent
\begin{tabularx}{\linewidth}{ccX}
\emph{Woche} & \emph{Datum} & \emph{Bemerkungen} \tabularnewline
\Zeile
\Zeile
\Zeile
\Zeile
\Zeile
\Zeile
\end{tabularx}

\end{document}

Ergebnis mit datetime2-calc

Ohne datetime2-calc, alleine mit datetime2 funktioniert dies nicht.

Permanenter link

beantwortet 27 Nov, 04:50

Ijon%20Tichy's gravatar image

Ijon Tichy
5.9k1919

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

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:

×25
×12
×1

Frage gestellt: 22 Nov, 16:58

Frage wurde angeschaut: 193 Mal

Zuletzt aktualisiert: 27 Nov, 04:51