
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 showdayofmonth
uma 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 showyear
chave 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 \DTMDisplaydate
todo 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 nomanual(por exemplo, página 96 e além).
Quando você quiser usar o novo formato, você precisa configurá-lo usando \DTMsetdatestyle
o 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 calc
opção de pacote para datetime2
usar a \DTMmonthname
macro.
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 \DTMenglishordinal
para evitar que o ordinal (th) seja impresso como sobrescrito. Uma versão mais internacional está \ordinalnum
no fmtcount
pacote (que suporta vários idiomas europeus), mas apenas sobrescrito, tanto quanto eu sei.
Responder2
Eu apresento \stripyear
para 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}