Data sem ano

Sep 20 2020

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

4 Marijn Sep 20 2020 at 20:56

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.

2 StevenB.Segletes Sep 20 2020 at 21:25

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}