我一直尝试以“dd”/“mm”格式显示日期(月份最好是罗马字母) - 但是我找不到支持此要求的单一样式。此外,我还尝试使用创建的命令计算一周的间隔:
\documentclass[12pt]{book}
\usepackage[british,calc,useregional=numeric]{datetime2}
\newcount\myct
\newcount\datecount
\newcommand{\myday}[1]{%
\DTMsavenow{mydate}
\DTMsaveddateoffsetjulianday{mydate}{#1}{\myct}
\DTMsavejulianday{mydate}{\number\myct}
\DTMusedate{mydate}
}
并按以下方式使用它:
\begin{document}
\myday{1} - \myday{7}
\myday{8} - \myday{14}
\end{document}
但是,无论我如何尝试重新定义 DTMusedate 命令以仅显示日期和月份,我通常都会收到一些解释器错误,这没什么用(我是 tex 编程的新手)。因此,如果您能提供任何意见,我将不胜感激。
谢谢,酒鬼
答案1
这datetime2
手动的有一个关于如何添加自定义日期格式的示例(第 33 页)。根据该示例,我们可以制作一个带有 的版本dd/mm
和另一个带有 的版本dd/roman month
(请注意,这不会填充为两位数,因为罗马字母中没有零)。 的四个参数\DTMdisplaydate
是 1. 年、2. 月、3. 日和 4. 星期几,因此在本例中,您需要参数 3 和 2。请注意,分隔符/
是作为包选项提供的,您也可以在样式定义中直接使用\DTMsetup{datesep={/}}
或指定字符。
梅威瑟:
\documentclass[12pt]{article}
\usepackage[british,calc,useregional=numeric,datesep=/]{datetime2}
\DTMnewdatestyle{ddmm}{%
\renewcommand*{\DTMdisplaydate}[4]{%
\DTMtwodigits{##3}\DTMsep{yearmonth}\DTMtwodigits{##2}}%
\renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}
\newcount\myct
\newcommand{\myday}[1]{%
\DTMsavenow{mydate}%
\DTMsaveddateoffsettojulianday{mydate}{#1}{\myct}%
\DTMsavejulianday{mydate}{\number\myct}%
\DTMusedate{mydate}%
}
% https://tex.stackexchange.com/questions/23487/how-can-i-get-roman-numerals-in-text
\newcommand{\RNum}[1]{\uppercase\expandafter{\romannumeral #1\relax}}
\DTMnewdatestyle{ddmmroman}{%
\renewcommand*{\DTMdisplaydate}[4]{%
\DTMtwodigits{##3}\DTMsep{yearmonth}\RNum{##2}}%
\renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
}
\begin{document}
\section{Regular month numbers}
\DTMsetdatestyle{ddmm}
\noindent Now: \DTMsavenow{mydate}\DTMusedate{mydate}\\
\myday{0} -- \myday{7}\\
\myday{8} -- \myday{15}\\
\section{Roman month numbers}
\DTMsetdatestyle{ddmmroman}
\noindent Now: \DTMsavenow{mydate}\DTMusedate{mydate}\\
\myday{0} -- \myday{7}\\
\myday{8} -- \myday{15}\\
\end{document}
结果: