使用 datetime2 和 ddmm 格式的 latex 日期计算

使用 datetime2 和 ddmm 格式的 latex 日期计算

我一直尝试以“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}

结果:

在此处输入图片描述

相关内容