一个比较奇怪的问题:带calc选项的datetime2宏包(或者先后加载datetime2 和datetime2-calc)会修改已定义的日期格式。原本以1位数字表示的月与日会被强制改成2位数字,但是...
一个比较奇怪的问题:带calc选项的datetime2宏包(或者先后加载datetime2 和datetime2-calc)会修改已定义的日期格式。原本以1位数字表示的月与日会被强制改成2位数字,但是,\today 的日期样式却是正常的。我试图去看源代码,但是能力有限,不知道有谁能解释一下原因。mwe 如下:
\documentclass{article}
\usepackage[calc]{datetime2}
%\usepackage{datetime2}
\DTMnewdatestyle{myyyymd}{%
\renewcommand*{\DTMdisplaydate}[4]{%
Year:\makebox[3.2em][c]{##1}Month:\makebox[1.6em]{##2}Day:\makebox[1.6em]{##3}}
\renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}
\DTMsavedate{mydate}{2008-8-8}
\DTMsavedate{anniversary}{2018-8-8}
\begin{document}
\DTMsetdatestyle{myyyymd}
\DTMusedate{mydate}
\DTMusedate{anniversary}
\today
\end{document}
datetime2-calc.sty 里重定义了\@dtm@parsedate,所以你输入的2008-8-8在这个过程中会被转换到ISO格式。而在我的机上 \today 也一样强制为两位,即 Year: 2019 Month: 08 Day: 22.
即使不载入datetime2-calc 或启用 calc 选项,以下代码也一样会让月/日显示为2位数字:
那么要如何确保1–9月、1–9日是以1位数显示?我看了一下datetime2宏包里的范例,提到了\number:
因此把你的代码稍作修改,给##2和##3加上\number,就成了。
一周热门 更多>