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 01 Feb '18, 02:39

Macro79's gravatar image

Macro79
2612
Akzeptiert-Rate: 0%

bearbeitet 01 Feb '18, 07:57

saputello's gravatar image

saputello
11.1k174365

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 '18, 08: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 '18, 07:55

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

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

(01 Feb '18, 11: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 '18, 19:13) saputello
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:

×19
×16
×6

gestellte Frage: 01 Feb '18, 02:39

Frage wurde gesehen: 5,521 Mal

zuletzt geändert: 02 Feb '18, 19:13