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 '17, 22:58

Cletus's gravatar image

Cletus
1.6k75866
Akzeptiert-Rate: 75%

bearbeitet 22 Nov '17, 23: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 '17, 09: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 '17, 12:46) Cletus

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

(24 Nov '17, 22: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 '17, 19:04) Cletus

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 '17, 10:50

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

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:

×32
×19
×2

gestellte Frage: 22 Nov '17, 22:58

Frage wurde gesehen: 5,540 Mal

zuletzt geändert: 27 Nov '17, 10:51