Data sem ano
Gostaria do idioma das datas em um documento controlado por pacote. Parece que datetime2é o único pacote contemporâneo que faz essas coisas. No entanto, ocasionalmente, preciso apenas exibir o dia e o mês sem ano, ou seja,
21th March
Isso é possível? Eu sei que existe um showdayofmonthsinalizador não documentado (!) ( Formato Mês / Ano em Latex ) que faz isso para o dia, mas não consegui encontrar semelhante para o ano.
Talvez eu deva tentar outro pacote? Talvez babel? O que você sugeriria?
MWE
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\begin{document}
\DTMDisplaydate{0}{2}{10}{-1}
\end{document}
Respostas
Editar: existe uma showyearchave não documentada . Você pode aplicar isso para um único idioma usando, por exemplo, \DTMsetbool{en-GB}{showyear}{false}ou para todos os idiomas usando \DTMlangsetup{showyear=false}. A segunda versão emite um aviso porque a chave não se aplica a algumas regiões da hierarquia, como english-base. Este aviso pode ser suprimido usando \DTMlangsetup*(ver datetime2 - Avisos ao usar a configuração showyear ).
Essa configuração altera o comportamento de \DTMDisplaydatetodo o documento, mas você pode redefini-la após o uso.
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}
Resultado:
Resposta original:
Você pode definir um novo formato de data sem ano, conforme descrito no manual (por exemplo, página 96 e mais).
Quando você quiser usar o novo formato, você precisa defini-lo usando o \DTMsetdatestyleque afetará \DTMDisplaydate. Não parece possível configurá-lo apenas para uso único, então depois você precisa redefinir o estilo para o que era antes, no MWE isso é en-GB(por causa de main=british). Observe que você precisa adicionar a calcopção de pacote para datetime2usar a \DTMmonthnamemacro.
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}
Resultado:
Observe que a redefinição inclui \DTMenglishordinalpara evitar que o ordinal (th) seja impresso como sobrescrito. Uma versão mais internacional vem \ordinalnumdo fmtcountpacote (que oferece suporte a vários idiomas europeus), mas apenas sobrescrito, até onde eu sei.
Eu apresento \stripyearpara ajudar.
\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}