我正在尝试创建一个日期样式,其结果是
2020 年 6 月 1 日
\documentclass{article}
\usepackage[USenglish]{babel}
\usepackage[showseconds=false,useregional=text,calc]{datetime2}
\DTMnewdatestyle{mydatestyle}
{
\renewcommand*{\DTMdisplaydate}[4]{
\DTMtwodigits{##3} \MakeUppercase{\DTMshortmonthname{##2}} ##1}
\renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}
}
\begin{document}
\DTMsetdatestyle{mydatestyle}
\today
\end{document}
但无论我把\MakeUppercase
它绕到哪里,它都会给我
2020 年 6 月 1 日
有没有办法简单地改变日期的大小写而不需要重新定义月份名称?(我无法用我的例子来解决这个问题datetime2
,但那里的答案却是开箱即用的。
答案1
这是因为\DTMshortmonthname
(像许多其他人一样)是通过datetime2-calc
包定义的,并且强壮的。您可以使用特定于语言的替代方案\DTMenglishshortmonthname
,也可以定义自己的替代\MYshortmonthname
方案,该方案并不强大,但可以与以下方案一起使用\MyUppercase
:
\documentclass{article}
\usepackage[USenglish]{babel}
\usepackage[showseconds=false,useregional=text,calc]{datetime2}
\DTMnewdatestyle{mydatestyle}{%
\renewcommand*{\DTMdisplaydate}[4]{%
\DTMtwodigits{##3} \MakeUppercase{\MYshortmonthname{##2}} ##1}% ...or \DTMenglishshortmonthname
\renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}
\newcommand{\MYshortmonthname}[1]{%
\ifcase#1% 0
\or Jan%
\or Feb%
\or Mar%
\or Apr%
\or May%
\or Jun%
\or Jul%
\or Aug%
\or Sep%
\or Oct%
\or Nov%
\or Dec%
\fi
}
\begin{document}
\DTMsetdatestyle{mydatestyle}
\today
\end{document}