
Ich möchte die Datumssprache innerhalb eines Dokuments, das durch ein Paket gesteuert wird. Es scheint, dass dies datetime2
das einzige aktuelle Paket ist, das diese Funktion bietet. Gelegentlich muss ich jedoch nur Tag und Monat ohne Jahr anzeigen, d. h.
21th March
Ist das möglich? Ich weiß, dass es eine undokumentierte (!) showdayofmonth
Flagge gibt (Monats-/Jahresformat in Latex), das dies für den Tag tut, aber ich konnte nichts Ähnliches für das Jahr finden.
Vielleicht sollte ich ein anderes Paket ausprobieren? Vielleicht babel
? Was würden Sie vorschlagen?
MWE
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\begin{document}
\DTMDisplaydate{0}{2}{10}{-1}
\end{document}
Antwort1
Edit: Es gibt einen nicht dokumentierten showyear
Schlüssel. Sie können diesen beispielsweise für eine einzelne Sprache \DTMsetbool{en-GB}{showyear}{false}
oder für alle Sprachen mit anwenden \DTMlangsetup{showyear=false}
. Die zweite Version gibt eine Warnung aus, da der Schlüssel für einige Bereiche in der Hierarchie nicht anwendbar ist, wie beispielsweise english-base
. Diese Warnung kann unterdrückt werden mit \DTMlangsetup*
(siehedatetime2 – Warnungen bei Verwendung der Einstellung „showyear“).
Diese Einstellung ändert das Verhalten im \DTMDisplaydate
gesamten Dokument, Sie können es jedoch nach der Verwendung zurücksetzen.
MWE:
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\begin{document}
\DTMlangsetup*{showyear=false}
\DTMDisplaydate{2020}{2}{10}{-1} is the date
\DTMlangsetup*{showyear=true}
\DTMDisplaydate{2020}{2}{10}{-1} is the date
\end{document}
Ergebnis:
Ursprüngliche Antwort:
Sie können ein neues Datumsformat ohne Jahr definieren, wie im AbschnittHandbuch(zB Seite 96 und weiter).
Wenn Sie das neue Format verwenden möchten, müssen Sie es mit festlegen, \DTMsetdatestyle
was sich auf auswirkt \DTMDisplaydate
. Es scheint nicht möglich zu sein, es nur für eine einmalige Verwendung festzulegen, daher müssen Sie den Stil anschließend auf den vorherigen Zustand zurücksetzen. Im MWE ist dies en-GB
(aufgrund von ). Beachten Sie, dass Sie die Paketoption für main=british
hinzufügen müssen, um das Makro zu verwenden .calc
datetime2
\DTMmonthname
MWE:
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional,calc]{datetime2}
\begin{document}
\DTMnewdatestyle{noyear}{%
\renewcommand{\DTMdisplaydate}[4]{%
\DTMenglishordinal{##3} \DTMmonthname{##2}}%
}
\DTMsetdatestyle{noyear}
\DTMDisplaydate{2020}{2}{10}{-1}
\DTMsetdatestyle{en-GB}
\DTMDisplaydate{2020}{2}{10}{-1}
\end{document}
Ergebnis:
Beachten Sie, dass die Neudefinition dazu dient \DTMenglishordinal
, zu verhindern, dass die Ordnungszahl (th) hochgestellt wird. Eine internationalere Version ist \ordinalnum
im fmtcount
Paket enthalten (das eine Reihe europäischer Sprachen unterstützt), aber meines Wissens nur als hochgestellte Zahl.
Antwort2
Ich stelle vor \stripyear
, um zu helfen.
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\newcommand\stripyear[1]{%
\edef\tmp{#1}\expandafter\stripyearaux\tmp\relax}
\def\stripyearaux#1 #2 #3\relax{#1 #2}
\begin{document}
\stripyear{\DTMDisplaydate{2020}{2}{10}{-1}}.
\end{document}