相当于 `datetime2` 中的 `newdateformat` 吗?

相当于 `datetime2` 中的 `newdateformat` 吗?

datetime包最近已被撤回并被替换为datetime2newdateformat. 知道的等价物datetime2吗?

答案1

使用datetime定义了一种新的日期格式

\newdateformat{〈name〉}{〈format〉}

在 〈format〉 中,你可以使用\THEDAY\THEMONTH\THEYEAR来引用日、月和年数字。你还可以使用\twodigit将数字转换为两位数。例如:

\newdateformat{dashdate}{%
  \twodigit{\THEDAY}-\twodigit{\THEMONTH}-\THEYEAR}

使用新的datetime2包,可以使用以下方法定义新的日期格式:

\DTMnewdatestyle{〈name〉}{〈definition〉}

这里的 〈定义〉部分应该重新定义两个命令\DTMdisplaydate\DTMDisplaydate。这两个命令都有四个参数,分别代表年、月、日和星期几。如果星期几是 -1,样式应该忽略它,但是样式也可能忽略星期几,而不管它的值是什么。\twodigits我们现在有了 而不是 ,\DTMtwodigits它将用恰好两位数显示其(数字)参数。(因此,如果绝对值小于 10,它将在前导零中添加一个零,如果绝对值大于 99,它将修剪一个数字。)在定义日期样式时,还有另外两个命令可能会很有用:\DTMcentury\DTMdivhundred。旧包中没有datetime这两个命令的直接等效项。

要将旧dashdate示例转换为新datetime2格式:

\DTMnewdatestyle{dashdate}{%
  \renewcommand*{\DTMdisplaydate}[4]{\DTMtwodigits{##3}-\DTMtwodigits{##2}-##1}%
  \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}

这里##3是第三个参数\DTMdisplaydate(日),##2是第二个参数\DTMdisplaydate(月),##1是第一个参数\DTMdisplaydate(年)。第四个参数被忽略。由于日期样式是数字,因此\DTMDisplaydate设置为与相同,\DTMdisplaydate无论日期是否出现在句子开头,样式都是相同的。

如果您想要文本日期样式,可以使用相关语言模块提供的附加命令。例如,如果您已加载英语模块您可以使用以下\DTMenglishmonthname命令\DTMenglishordinal的命令。(这些命令在“基本代码(datetime2-english-base.ldf)”部分中有描述。模块的文档

手册中的例子如下datetime

\newdateformat{usvardate}{%
  \monthname[\THEMONTH] \ordinaldate{\THEDAY}, \THEYEAR}

可以转换为datetime2使用:

\DTMnewdatestyle{usvardate}{%
  \renewcommand*{\DTMdisplaydate}[4]{\DTMenglishmonthname{##2} \DTMenglishordinal{##3}, ##1}%
  \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}

此样式仅在模块已加载时才有效datetime2-english,否则命令\DTMenglishmonthname\DTMenglishordinal将未定义。由于英文月份名称始终以大写字母开头,因此\DTMDisplaydate再次设置为\DTMdisplaydate。对于不是这种情况的语言,则\DTMDisplaydate需要以大写字母开头。例如,使用模块datetime2-french,您可以使用\DTMfrenchMonthname以大写字母开头的月份名称和\DTMfrenchmonthname小写字母开头的月份名称。

最后,使用datetime创建\newdateformat{〈name〉}{〈format〉}了一个名为\〈name〉(所以\dashdate在第一个示例和\usvardate第二个示例中)的命令,该命令可用于切换到该格式,但使用(所以在第一个示例和第二个示例中)datetime2设置日期格式。\DTMsetdatestyle{〈name〉}\DTMsetdatestyle{dashdate}\DTMsetdatestyle{usvardate}

相关内容