没有年份的日期

没有年份的日期

我希望在由包控制的文档中使用日期语言。这似乎datetime2是目前唯一一个可以做这件事的包。但是,有时我只需要显示日期和月份而不显示年份,即

21th March

这可能吗?我知道有一个未记录的(!)showdayofmonth标志(Latex 中的月/年格式) 可以实现当天的功能,但我找不到一年的类似功能。

也许我应该尝试另一个包?也许babel?您有什么建议?

平均能量损失

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}

\begin{document}

\DTMDisplaydate{0}{2}{10}{-1}

\end{document}

答案1

编辑:有一个未记录的showyear密钥。例如,您可以使用 将其应用于一种语言,\DTMsetbool{en-GB}{showyear}{false}或使用 将其应用于所有语言\DTMlangsetup{showyear=false}。第二个版本发出警告,因为该密钥不适用于层次结构中的某些区域,例如english-base。可以使用以下方法抑制此警告\DTMlangsetup*(请参阅datetime2——使用 showyear 设置时发出警告)。

\DTMDisplaydate此设置会改变整个文档的行为,但您可以在使用后重置它。

梅威瑟:

\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}

结果:

在此处输入图片描述


原始答案:

您可以定义一个不带年份的新日期格式,如手动的(例如第 96 页及以后)。

当您想要使用新格式时,您需要使用 进行设置,\DTMsetdatestyle这将影响\DTMDisplaydate。似乎不可能只为一次性使用而设置它,因此之后您需要将样式重置为以前的样式,在 MWE 中这是en-GB(因为main=british)。请注意,您需要添加calc包选项才能datetime2使用\DTMmonthname宏。

梅威瑟:

\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}

结果:

在此处输入图片描述

请注意,重新定义包括\DTMenglishordinal为了防止序数 (th) 被打印为上标。更国际化的版本来自\ordinalnumfmtcount包(支持多种欧洲语言),但据我所知仅作为上标。

答案2

我介绍\stripyear一下帮忙。

\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}

在此处输入图片描述

相关内容