Für Abschlussarbeiten verwende ich eine variable für den Abgabetermin, da dieser an verschiedenen Stellen erscheinen muss.

Öffne in Overleaf
\newcommand{\abgabe}{01.01.1970}

Nun verwende ich auch eine Sperrklausel, die eine Frist beinhaltet und diese Frist möchte ich aufaddieren. Etwa so ...

Öffne in Overleaf
\newcommand{\sperrdauer}{5}
\newcommand*{\sperrfrist}{%
   \twodigit{\the\day}.~\shortmonthname[\the\month] \the\numexpr\year+\sperrdauer\relax
}

.. nur wird hier ja das aktuelle Datum verwendet.

Wie kann ich aus der Variable \abgabe eine Jahresangabe extrahieren, oder wie müsste das geschrieben werden, damit ich mit dem Datum flexibler hantieren kann?

gefragt 31 Jan, 20:39

Macro79's gravatar image

Macro79
261
Akzeptiert: 100%

bearbeitet 01 Feb, 01:57

saputello's gravatar image

saputello
20.3k33257

Willkommen auf TeXwelt!

Könntest Du bitte immer ein Minimalbeispiel einfügen? Also ein möglichst kurzes, aber komplettes Dokument, von \documentclass{...} bis zu \end{document}, welches das Problem zeigt. Ohne ein solches VM muss nicht nur jeder potentielle Helfer erst selbst aus den Codeschnipseln ein Testbeispiel basteln. Wir sind dann auch bezüglich der verwendeten Pakete/Befehle auf Spekulationen angewiesen. Solche Spekulationen bergen immer die Gefahr, dass wir daneben liegen. Bitte hilf uns, Dir zu helfen.

(01 Feb, 02:01) saputello

Wenn du tatsächlich nur zur Jahreszahl eine Zahl addieren willst und das Datum in \abgabe immer in dem gezeigten Format vorliegt, kannst du das natürlich mit einem Makro, das delimited arguments verwendet, einfach aufsplitten, beispielsweise:

Öffne in Overleaf
\documentclass{article}
\newcommand{\abgabe}{01.01.1970}
\newcommand{\sperrdauer}{5}
\makeatletter
\newcommand*{\splitdate}[1]{%
  \edef\reserved@a{#1}%
  \expandafter\@splitdate\reserved@a.% Der Punkt am Ende ist wichtig!
}
\newcommand*{\@splitdate}{}%
\def\@splitdate#1.#2.#3.{% Hier werden delimited arguments verwendet!
  \day=#1 \month=#2 \year=#3\relax
}
\makeatother
\newcommand*{\sperrfrist}{%
  \begingroup
    \splitdate{\abgabe}%
    \year=\numexpr\year + \sperrdauer\relax
    \the\day.~\the\month.~\the\year
  \endgroup
}

\begin{document}
Von \abgabe{} bis Ende \sperrfrist{} sind es \sperrdauer{} Jahre.
\end{document}

Innerhalb von \sperrfrist verwende ich eine Gruppe, damit die Änderung von \day, \month und \year lokal zum Aufruf von \sperrfrist bleibt. Natürlich könnte man sowohl in \@splitdate als auch in \sperrfrist eigene Zähler verwenden und sich \begingroup und \endgroup dann sparen.

Die konkrete Formatierung des Datums innerhalb von \sperrfrist überlasse ich dir, da ich nicht weiß, welche Pakete du bereits verwendest.

Für aufwändigere Berechnungen empfehle ich Pakete wie datetime2. Dazu gehört auch ein Paket datetime2-calc, das mit Datum und Offset rechnen kann.

Permanenter link

beantwortet 01 Feb, 01:55

Ijon%20Tichy's gravatar image

Ijon Tichy
6.5k1919

Wow, vielen Dank. Vielen Dank auch für die ausführliche Erklärung.

(01 Feb, 05:42) Macro79
1

@Marco79 Vielen Dank geht bei uns übrigens mit einem Klick auf den Daumen hoch (das kann jeder für beliebig viele Fragen und Antworten, die er für nützlich hält) oder auch mit einem Klick auf den Haken, wenn die Antwort für Dich die Lösung gebracht hat (das kann nur der Fragesteller für genau eine Antwort).

(02 Feb, 13:13) 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

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:

×13
×7
×4

Frage gestellt: 31 Jan, 20:39

Frage wurde angeschaut: 197 Mal

Zuletzt aktualisiert: 02 Feb, 13:13