
Me gustaría el idioma de las fechas dentro de un documento controlado por paquete. Parece que datetime2
es el único paquete contemporáneo que hace estas cosas. Sin embargo, ocasionalmente sólo necesito mostrar el día y el mes sin el año, es decir
21th March
¿Es eso posible? Sé que hay una showdayofmonth
bandera de indocumentados (!) (Formato Mes/Año en Latex) que hace eso por el día, pero no pude encontrar algo similar para el año.
¿Quizás debería probar con otro paquete? Tal vez babel
? ¿Qué sugieres?
MWE
\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\begin{document}
\DTMDisplaydate{0}{2}{10}{-1}
\end{document}
Respuesta1
Editar: hay una showyear
clave indocumentada. Puede aplicar esto para un solo idioma usando, por ejemplo, \DTMsetbool{en-GB}{showyear}{false}
o para todos los idiomas usando \DTMlangsetup{showyear=false}
. La segunda versión emite una advertencia porque la clave no es aplicable a algunas regiones de la jerarquía, como english-base
. Esta advertencia se puede suprimir usando \DTMlangsetup*
(verdatetime2 - Advertencias al usar la configuración showyear).
Esta configuración cambia el comportamiento de \DTMDisplaydate
todo el documento, pero puede restablecerla después de su 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:
Respuesta original:
Puede definir un nuevo formato de fecha sin año, como se describe en lamanual(por ejemplo, página 96 y siguientes).
Cuando desee utilizar el nuevo formato, deberá configurarlo mediante \DTMsetdatestyle
el cual afectará \DTMDisplaydate
. No parece posible configurarlo para un solo uso, por lo que luego debe restablecer el estilo al que tenía antes, en MWE esto es en-GB
(debido a main=british
). Tenga en cuenta que debe agregar la calc
opción de paquete para datetime2
usar la \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:
Tenga en cuenta que la redefinición incluye \DTMenglishordinal
para evitar que el ordinal (th) se imprima como superíndice. Hay una versión más internacional \ordinalnum
del fmtcount
paquete (que admite varios idiomas europeos), pero hasta donde yo sé, solo como superíndice.
Respuesta2
Me presento \stripyear
para ayudar.
\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}