Datum ohne Jahr

Sep 20 2020

Ich möchte die Datumssprache in einem Dokument, das vom Paket gesteuert wird. Es scheint, dass dies datetime2das einzige zeitgenössische Paket ist, das dieses Zeug macht. 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 (!) showdayofmonthFlagge ( Monats- / Jahresformat in Latex ) gibt, die dies für den Tag tut, aber ich konnte für das Jahr keine ähnliche finden.

Vielleicht sollte ich ein anderes Paket ausprobieren? Vielleicht babel? Was würdest du vorschlagen?

MWE

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}

\begin{document}

\DTMDisplaydate{0}{2}{10}{-1}

\end{document}

Antworten

4 Marijn Sep 20 2020 at 20:56

Bearbeiten: Es gibt einen undokumentierten showyearSchlüssel. Sie können dies beispielsweise für eine einzelne Sprache \DTMsetbool{en-GB}{showyear}{false}oder für alle verwendeten Sprachen anwenden \DTMlangsetup{showyear=false}. Die zweite Version gibt eine Warnung aus, da der Schlüssel für einige Regionen in der Hierarchie nicht gilt, z english-base. Diese Warnung kann mit unterdrückt werden \DTMlangsetup*(siehe datetime2 - Warnungen bei Verwendung der Showyear-Einstellung ).

Diese Einstellung ändert das Verhalten des \DTMDisplaydategesamten Dokuments, 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 Handbuch beschrieben (z. B. Seite 96 und weiter).

Wenn Sie das neue Format verwenden möchten, müssen Sie es so einstellen, dass es \DTMsetdatestylesich auswirkt \DTMDisplaydate. Es scheint nicht möglich zu sein, es nur für den einmaligen Gebrauch festzulegen. Danach müssen Sie den Stil auf den vorherigen Wert zurücksetzen. In der MWE ist dies en-GB(wegen main=british). Beachten Sie, dass Sie die hinzufügen müssen calcPaketoption für datetime2die verwenden \DTMmonthnameMakro.

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 Folgendes enthält, \DTMenglishordinalum zu verhindern, dass die Ordnungszahl (th) hochgestellt gedruckt wird. Eine internationalere Version stammt \ordinalnumaus dem fmtcountPaket (das eine Reihe europäischer Sprachen unterstützt), jedoch meines Wissens nur hochgestellt.

2 StevenB.Segletes Sep 20 2020 at 21:25

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}