
Ich möchte einen Befehl erstellen, der den nächsten Monat (im Verhältnis zum aktuellen) einfügt, und zwar etwa so:
\command
-> November
analog zu \today
.
- Der Befehl kann nicht fest codiert werden, da das Dokument zwischen den Sprachen wechselt (auf die gleiche Weise, wie es mit funktioniert
\today
). - Ich möchte diesen Befehl innerhalb der Präambel verwenden.
- Die Ausgabe sollte lokalisiert sein, d. h. an anderer Stelle
\today
sollte sie sich wie gewohnt verhalten.
Wie geht man dabei am besten vor?
Antwort1
Ich habe so etwas zum Laufen gebracht:
\usepackage{datetime}
\usepackage{advdate}
\newdateformat{mydate}{\monthname[\THEMONTH]}
(...)
{\AdvMonth{1} \mydate \today}
Antwort2
Hier ist eine Lösung datetime2
mit ein wenig modularer Arithmetik.
\documentclass{article}
\usepackage[french,english]{babel}
\usepackage[T1]{fontenc}
\usepackage[calc]{datetime2}
\ExplSyntaxOn
\NewDocumentCommand{\nextmonth} {} {
\int_eval:n {12 - \int_mod:nn {\month}{12}}{=}{0}}
\DTMmonthname{\nxtmnth:n}}
\ExplSyntaxOff
\begin{document}
Today is: \today
Next month is \nextmonth
\selectlanguage{french}
En français: \nextmonth
\end{document}
Antwort3
Für die Algebra Modulo 12 können Sie expl3's verwenden, \int_mod:nn
bei denen der Absolutwert des Ergebnisses kleiner ist als der Absolutwert des Moduls und bei denen das Vorzeichen des Ergebnisses dasselbe ist wie bei dem Ausdruck, dessen ganzzahliger Rest berechnet werden soll:
Wahrscheinlich das Ergebnis der Berechnung
12 - (
(
% With \int_mod:nn for doing the mod-12-calculation this
% expression yields a non-negative number...
12 - (
% ... because this is in range -11..+11 :
( ⟨number of current month⟩
+ ⟨amount of months to add or subtract⟩
) mod 12
)
) mod 12
% With \int_mod:nn the result of mod-12-calculation of a
% non-negative number is in range 0..11.
)
ZuDatum/Uhrzeit2Das hier \DTMmonthname
ist der Trick:
\documentclass{article}
\usepackage[french,english]{babel}
\usepackage[T1]{fontenc}
\usepackage[calc]{datetime2}
\ExplSyntaxOn
\NewDocumentCommand{\MonthInRelationToCurrentMonth} {m} {
\exp_args:Nf \DTMmonthname
{\int_eval:n {12-\int_mod:nn {12-(\int_mod:nn{\month+(#1)}{12})}{12}}}
}
\ExplSyntaxOff
\newcommand\NextMonth{\MonthInRelationToCurrentMonth{1}}%
\newcommand\PreviousMonth{\MonthInRelationToCurrentMonth{-1}}%
\newcommand\ThisMonth{\MonthInRelationToCurrentMonth{0}}%
\begin{document}
\bigskip\hrule\bigskip
\noindent In English
\bigskip\hrule\bigskip
\noindent
Today is \today.\\
Previous month was \PreviousMonth.\\
This month is \ThisMonth.\\
Next month will be \NextMonth.
\bigskip\hrule\bigskip
\noindent
This month is \MonthInRelationToCurrentMonth{0}.\\
This month is \MonthInRelationToCurrentMonth{+0}.\\
One month later will be \MonthInRelationToCurrentMonth{+1}.\\
Two months later will be \MonthInRelationToCurrentMonth{2}.\\
Three months later will be \MonthInRelationToCurrentMonth{3}.\\
Four months later will be \MonthInRelationToCurrentMonth{4}.\\
Five months later will be \MonthInRelationToCurrentMonth{+5}.\\
Six months later will be \MonthInRelationToCurrentMonth{+6}.\\
Seven months later will be \MonthInRelationToCurrentMonth{7}.\\
Eight months later will be \MonthInRelationToCurrentMonth{8}.\\
Nine months later will be \MonthInRelationToCurrentMonth{9}.\\
Ten months later will be \MonthInRelationToCurrentMonth{10}.\\
Eleven months later will be \MonthInRelationToCurrentMonth{11}.\\
Twelve months later will be \MonthInRelationToCurrentMonth{12}.\\
Thirteen months later will be \MonthInRelationToCurrentMonth{13}.\\
Twenty months later will be \MonthInRelationToCurrentMonth{+20}.
\bigskip\hrule\bigskip
\noindent
This month is \MonthInRelationToCurrentMonth{0}.\\
This month is \MonthInRelationToCurrentMonth{-0}.\\
One month earlier was \MonthInRelationToCurrentMonth{-1}.\\
Two months earlier was \MonthInRelationToCurrentMonth{-2}.\\
Three months earlier was \MonthInRelationToCurrentMonth{-3}.\\
Four months earlier was \MonthInRelationToCurrentMonth{-4}.\\
Five months earlier was \MonthInRelationToCurrentMonth{-5}.\\
Six months earlier was \MonthInRelationToCurrentMonth{-6}.\\
Seven months earlier was \MonthInRelationToCurrentMonth{-7}.\\
Eight months earlier was \MonthInRelationToCurrentMonth{-8}.\\
Nine months earlier was \MonthInRelationToCurrentMonth{-9}.\\
Ten months earlier was \MonthInRelationToCurrentMonth{-10}.\\
Eleven months earlier was \MonthInRelationToCurrentMonth{-11}.\\
Twelve months earlier was \MonthInRelationToCurrentMonth{-12}.\\
Thirteen months earlier was \MonthInRelationToCurrentMonth{-13}.\\
Twenty months earlier was \MonthInRelationToCurrentMonth{-20}.
\newpage
\selectlanguage{french}
\bigskip\hrule\bigskip
\noindent En français:
\bigskip\hrule\bigskip
\noindent
Aujourd'hui, c'est \today.\\
Le mois précédent était \PreviousMonth.\\
Ce mois-ci est \ThisMonth.\\
Le mois prochain sera \NextMonth.
\bigskip\hrule\bigskip
\noindent
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{0}.\\
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{+0}.\\
Un mois plus tard sera \MonthInRelationToCurrentMonth{+1}.\\
Deux mois plus tard sera \MonthInRelationToCurrentMonth{2}.\\
Trois mois plus tard sera \MonthInRelationToCurrentMonth{3}.\\
Quatre mois plus tard sera \MonthInRelationToCurrentMonth{4}.\\
Cinq mois plus tard sera \MonthInRelationToCurrentMonth{+5}.\\
Six mois plus tard sera \MonthInRelationToCurrentMonth{+6}.\\
Sept mois plus tard sera \MonthInRelationToCurrentMonth{7}.\\
Huit mois plus tard sera \MonthInRelationToCurrentMonth{8}.\\
Neuf mois plus tard sera \MonthInRelationToCurrentMonth{9}.\\
Dix mois plus tard plus tard sera \MonthInRelationToCurrentMonth{10}.\\
Onze mois plus tard plus tard sera \MonthInRelationToCurrentMonth{11}.\\
Douze mois plus tard plus tard sera \MonthInRelationToCurrentMonth{12}.\\
Treize mois plus tard plus tard sera \MonthInRelationToCurrentMonth{13}.\\
Vingte mois plus tard plus tard sera \MonthInRelationToCurrentMonth{+20}.
\bigskip\hrule\bigskip
\noindent
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{0}.\\
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{+0}.\\
Un mois plus tôt, c'était \MonthInRelationToCurrentMonth{-1}.\\
Deux mois plus tôt, c'était \MonthInRelationToCurrentMonth{-2}.\\
Trois mois plus tôt, c'était \MonthInRelationToCurrentMonth{-3}.\\
Quatre mois plus tôt, c'était \MonthInRelationToCurrentMonth{-4}.\\
Cinq mois plus tôt, c'était \MonthInRelationToCurrentMonth{-5}.\\
Six mois plus tôt, c'était \MonthInRelationToCurrentMonth{-6}.\\
Sept mois plus tôt, c'était \MonthInRelationToCurrentMonth{-7}.\\
Huit mois plus tôt, c'était \MonthInRelationToCurrentMonth{-8}.\\
Neuf mois plus tôt, c'était \MonthInRelationToCurrentMonth{-9}.\\
Dix mois plus tôt, c'était \MonthInRelationToCurrentMonth{-10}.\\
Onze mois plus tôt, c'était \MonthInRelationToCurrentMonth{-11}.\\
Douze mois plus tôt, c'était \MonthInRelationToCurrentMonth{-12}.\\
Teize mois plus tôt, c'était \MonthInRelationToCurrentMonth{-13}.\\
Vingte mois plus tôt, c'était \MonthInRelationToCurrentMonth{-20}.
\end{document}