Data sem ano

Data sem ano

Gostaria da linguagem das datas dentro de 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 showdayofmonthuma bandeira indocumentada (!) (Formato mês/ano em látex) que faz isso durante 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}

Responder1

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 é aplicável a algumas regiões da hierarquia, como english-base. Este aviso pode ser suprimido usando \DTMlangsetup*(vejadatetime2 -- 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:

insira a descrição da imagem aqui


Resposta original:

Você pode definir um novo formato de data sem ano, conforme descrito nomanual(por exemplo, página 96 e além).

Quando você quiser usar o novo formato, você precisa configurá-lo usando \DTMsetdatestyleo qual afetará o arquivo \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:

insira a descrição da imagem aqui

Observe que a redefinição inclui \DTMenglishordinalpara evitar que o ordinal (th) seja impresso como sobrescrito. Uma versão mais internacional está \ordinalnumno fmtcountpacote (que suporta vários idiomas europeus), mas apenas sobrescrito, tanto quanto eu sei.

Responder2

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}

insira a descrição da imagem aqui

informação relacionada