Data bez roku

Sep 20 2020

Chciałbym język dat w dokumencie kontrolowanym przez pakiet. Wygląda na datetime2to, że to jedyny współczesny pakiet, który to robi. Jednak czasami wystarczy, że wyświetlę dzień i miesiąc bez roku, tj

21th March

Czy to jest możliwe? Wiem, że istnieje nieudokumentowana (!) showdayofmonthFlaga ( format miesiąca / roku w Latex ), która robi to na cały dzień, ale nie mogłem znaleźć podobnej na rok.

Może powinienem wypróbować inny pakiet? Może babel? Co byś zasugerował?

MWE

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

\begin{document}

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

\end{document}

Odpowiedzi

4 Marijn Sep 20 2020 at 20:56

Edycja: istnieje nieudokumentowany showyearklucz. Możesz to zastosować dla jednego języka, używając na przykład \DTMsetbool{en-GB}{showyear}{false}lub dla wszystkich języków, używając \DTMlangsetup{showyear=false}. Druga wersja wyświetla ostrzeżenie, ponieważ klucz nie ma zastosowania do niektórych regionów w hierarchii, takich jak english-base. To ostrzeżenie można zignorować za pomocą \DTMlangsetup*(patrz datetime2 - Ostrzeżenia podczas korzystania z ustawienia showyear ).

To ustawienie zmienia zachowanie w \DTMDisplaydatecałym dokumencie, ale po użyciu można je zresetować.

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}

Wynik:


Oryginalna odpowiedź:

Możesz zdefiniować nowy format daty bez roku, zgodnie z opisem w instrukcji (np. Strona 96 i dalsze).

Jeśli chcesz użyć nowego formatu, musisz go ustawić, używając, \DTMsetdatestyleco będzie miało wpływ \DTMDisplaydate. Nie wydaje się możliwe ustawienie go tylko do jednorazowego użytku, więc później musisz zresetować styl do tego, co był wcześniej, w MWE to jest en-GB(z powodu main=british). Zwróć uwagę, że musisz dodać calcopcję pakietu, datetime2aby używać \DTMmonthnamemakra.

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}

Wynik:

Zwróć uwagę, że przedefiniowanie obejmuje obejmuje \DTMenglishordinal, aby zapobiec drukowaniu liczby porządkowej (th) jako indeksu górnego. Bardziej międzynarodowa wersja pochodzi \ordinalnumz fmtcountpakietu (który obsługuje wiele języków europejskich), ale tylko z indeksem górnym, o ile wiem.

2 StevenB.Segletes Sep 20 2020 at 21:25

Przedstawiam, \stripyearżeby pomóc.

\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}