我想将 advdate 包用于相对日期,将 datetime2 包用于自定义格式。但是,datetime2 包似乎会撤消 advdate 所做的一切。我在这里只找到了使用 datetime 包的示例,但我不想依赖这个(现已过时的)包。有办法实现这一点吗?
MWE:(请注意,当我注释掉第二行时,日期才符合预期。)
\usepackage{advdate}
\usepackage{datetime2}
\begin{document}
Today is \today.
\SetDate[01/01/2022]
But January 1st, 2022 is not \today.
\end{document}````
答案1
这两个软件包使用非常不同的操作方式。执行 时\SetDate
,内部寄存器\day
、\month
和\year
会设置为请求的值。
另一方面,datetime2
重新定义\today
为使用自己的方法;具体来说,它确实
\newcommand*{\DTMtoday}{%
\DTMdisplaydate
{\@dtm@currentyear}%
{\@dtm@currentmonth}%
{\@dtm@currentday}%
{\@dtm@currentdow}%
}
\let\today\DTMtoday
您可以通过添加一些代码来连接这两个包\FixDate
:
\documentclass{article}
\usepackage{advdate}
\usepackage{datetime2}
\usepackage{etoolbox}
\makeatletter
\appto\FixDate{%
\edef\@dtm@currentyear{\the\year}%
\edef\@dtm@currentmonth{\the\month}%
\edef\@dtm@currentday{\the\day}%
}
\makeatother
\begin{document}
Today is \today.
\SetDate[01/01/2022]
And January 1st, 2022 is \today.
\end{document}