Date sans année
Je voudrais la langue des dates dans un document contrôlé par package. Il semble que ce datetime2soit le seul paquet contemporain à faire ce genre de choses. Cependant, parfois je n'ai besoin que d'afficher le jour et le mois sans année, c'est-à-dire
21th March
Est-ce possible? Je sais qu'il existe un showdayofmonthdrapeau non documenté (!) ( Format Mois / Année en Latex ) qui fait cela pour la journée, mais je n'ai pas pu trouver similaire pour l'année.
Peut-être que je devrais essayer un autre package? Peut babel- être ? Que suggérerais-tu?
MWE
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\begin{document}
\DTMDisplaydate{0}{2}{10}{-1}
\end{document}
Réponses
Edit: il y a une showyearclé non documentée . Vous pouvez l'appliquer pour une seule langue en utilisant par exemple \DTMsetbool{en-GB}{showyear}{false}ou pour toutes les langues en utilisant \DTMlangsetup{showyear=false}. La deuxième version émet un avertissement car la clé n'est pas applicable à certaines régions de la hiérarchie, telles que english-base. Cet avertissement peut être supprimé à l'aide de \DTMlangsetup*(voir datetime2 - Avertissements lors de l'utilisation du paramètre showyear ).
Ce paramètre modifie le comportement de \DTMDisplaydatetout au long du document, mais vous pouvez le réinitialiser après utilisation.
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}
Résultat:
Réponse originale:
Vous pouvez définir un nouveau format de date sans année, comme décrit dans le manuel (par exemple, page 96 et plus).
Lorsque vous souhaitez utiliser le nouveau format, vous devez le définir en utilisant \DTMsetdatestylece qui affectera \DTMDisplaydate. Il ne semble pas possible de le définir uniquement pour un usage unique, vous devez donc réinitialiser le style à ce qu'il était auparavant, dans le MWE, c'est en-GB(à cause de main=british). Notez que vous devez ajouter l' calcoption package pour datetime2utiliser la \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}
Résultat:
Notez que la redéfinition inclut \DTMenglishordinalafin d'éviter que l'ordinal (th) ne soit imprimé en exposant. Une version plus internationale \ordinalnumprovient du fmtcountpackage (qui prend en charge un certain nombre de langues européennes) mais uniquement en exposant pour autant que je sache.
Je présente \stripyearpour aider.
\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}