Data bez roku
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
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.
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}