默认情况下,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
样式默认为美国样式(以匹配\today
LaTeX 内核提供的默认样式)。datetime2-english
模块附带了许多预定义的英语语言环境。它目前不包括南非,但en-MT
(马耳他)语言环境符合您所需的格式:
\documentclass[a4paper]{report}
\usepackage[en-MT]{datetime2}
\title{Test}
\author{Johan}
\begin{document}
\maketitle
\end{document}
您还可以使用其他一些语言环境获得相同的结果。例如:
\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}