如何让 datetime2 包以南非格式显示日期:“2018 年 4 月 1 日”

如何让 datetime2 包以南非格式显示日期:“2018 年 4 月 1 日”

默认情况下,Latex 将日期格式化为mmm d, yyyy,即采用无意义的中端格式。
我想将其显示为d Mmm yyyy,例如1 April 2018

我查看了datetime2文档,但没有dmmmyyyy选项。我使用该软件包也没有运气babel,因为没有 english-za 本地化。

我真的很想避免使用该babel包,我有足够的包并且我不喜欢 babel 对 .aux 文件执行的操作。

以下代码说明了这个问题:

\documentclass[a4paper,english]{report}
\usepackage[english]{babel}
%I'd really like to just specify:
%\usepackage[d\space\Mmm\space\yyyy]{datetime2}
%So I can drop the day or rearrange things as needed
\usepackage[useregional]{datetime2}

%opening
\title{Test} 
\author{Johan}

\begin{document}
  \maketitle
\end{document}

答案1

无区域english样式默认为美国样式(以匹配\todayLaTeX 内核提供的默认样式)。datetime2-english模块附带了许多预定义的英语语言环境。它目前不包括南非,但en-MT(马耳他)语言环境符合您所需的格式:

\documentclass[a4paper]{report}
\usepackage[en-MT]{datetime2}

\title{Test}
\author{Johan}

\begin{document}
  \maketitle
\end{document}

Test Johan 2018 年 6 月 27 日

您还可以使用其他一些语言环境获得相同的结果。例如:

\documentclass[a4paper]{report}
\usepackage[en-GB]{datetime2}

\DTMlangsetup[en-GB]{ord=omit}

\title{Test}
\author{Johan}

\begin{document}
  \maketitle
\end{document}

答案2

下面修复了这个问题:

\documentclass{article}
\usepackage[en-GB]{datetime2}

\let\oldtoday\today
\newcommand{\longtoday}{{\DTMlangsetup[en-GB]{abbr=false,ord=omit}\oldtoday}}
\newcommand{\shorttoday}{{\DTMlangsetup[en-GB]{abbr,ord=omit}\oldtoday}}
\renewcommand{\today}{{\longtoday}}

\title{test}

\begin{document}

\maketitle
%\longtoday

%\shorttoday

\end{document}

一种不使用任何包的简单替代方法(参见:https://tex.stackexchange.com/a/112949/136037) 是:

\documentclass{article}
\renewcommand{\today}{\ifnum\number\day<10 0\fi \number\day \space%
  \ifcase \month \or January\or February\or March\or April\or May%
  \or June\or July\or August\or September\or October\or November\or December\fi \space%
  \number \year} 
\begin{document}
  \today
\end{document}

相关内容