使用 datetime2 包重新定义缩写月份

使用 datetime2 包重新定义缩写月份

我想知道是否有办法重新定义缩写的月份datetime2包,这样,当使用命令时\today,月份的写法与下图的第一列完全一样。

\documentclass{article}
\usepackage[en-US]{datetime2}
\DTMlangsetup[en-US]{abbr}
\begin{document}
    \today
\end{document}

已经有解决方案了——如何使用 \today 创建小写的月份名称---使用datetime包来重新定义月份样式,但是这个包与我的文档创建了一个confit。

谢谢。

在此处输入图片描述

编辑根据@quark67的解决方案:

我发现使用 quark67 的解决方案与 存在冲突\usepackage[USenglish]{babel},用于连字符。我只需删除该参数[USenglish]即可使 quark67 的解决方案有效,但我仍然希望保留\usepackage[USenglish]{babel}

解决方案

参考这篇文章:\today 的重新定义——与 babel 的冲突,将@quark67 的代码放在里面\AtBeginDocument{...}就解决了。

答案1

尝试一下(注意包的加载datetime2-计算用于从数值到短月份名称的转换)。

编辑:正如你所说,你需要文档类鲁塞西斯https://scholarship.rice.edu/handle/1911/21747) 在评论中,我用这个文档类更新了我的代码。

此外,由于您添加了新要求(June 必须缩写为“June”,不能缩写为“Jun.”,July 必须缩写为“July”,不能缩写为“Jul.”),我已更新代码(并更正了我的虚拟错误,May 永远不会缩写为“May.”)

编辑2:“September” 缩写为“Sept.”,而不是表格第一列的“Sep.”。

\documentclass{ruthesis}
\usepackage[en-US]{datetime2}
\usepackage{datetime2-calc}

\DTMnewdatestyle{mydate}{%
   \renewcommand*{\DTMdisplaydate}[4]{%
   \edef\paramTwo{##2}%
   \def\monthV{05}%
   \def\monthVI{06}%
   \def\monthVII{07}%
   \def\monthIX{09}%
     \DTMshortmonthname{##2}%
     \ifx\paramTwo\monthV%
     \else\ifx\paramTwo\monthVI%
     e%
     \else\ifx\paramTwo\monthVII
     y%
     \else\ifx\paramTwo\monthIX
     t.%
     \else
     .%
     \fi\fi\fi\fi% 
     \ \DTMtwodigits{##3}, ##1}%
   \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
 }

\DTMsetdatestyle{mydate}

\begin{document}
    \today % Mar. 11, 2023
    
    \DTMdate{2023-06-11}
    
    \DTMdate{2023-05-11}
    
    \DTMdate{2023-04-11}
    
    \DTMdate{2023-07-11}
\end{document}

结果:

在此处输入图片描述

在评论中,您说前面的代码由于您使用的包而无法运行,但是您没有说您使用了哪些附加包,所以我不能保证该代码在您的实际使用中能够运行。

相关内容