我想在主头文件 TEX 文件中指定一个日期(并为其命名),然后在几个独立的子文件中引用该日期。由于这甚至在单个文件中都不起作用,因此可以简化为以下 MWE:
% Compile with XeLaTeX
\documentclass[a4paper,12pt,]{article}
\usepackage{polyglossia}
\usepackage[british]{datetime2}
\usepackage{datetime2-calc}
\begin{document}
The present date: \DTMdate{2018-01-24}
Two weeks later: \DTMdate{2018-01-24+14}
Beautiful!
\DTMsavedate{RandomDate}{1991-02-03}
% FAULTY LINES JUST TO SHOW WHAT I TRIED THAT DOESN'T WORK
%\DTMsavedate{RandomDate1}{\DTMdisplaydate{2004}{05}{06}{3}}
%\DTMsavedate{RandomDate2}{\DTMdate{2017-08-09}}
% AND OF COURSE IT DOESN'T, BUT AT LEAST I TRIED.
% IT WOULD HAVE BEEN TOO EASY! :D
A random date \DTMusedate{RandomDate}
%Two weeks later: \DTMdate{RandomDate+14} <------------------------------PROBLEM
\end{document}
我如何指定一个日期并使用该日期计算从该日期起的 1、2、3 周等?
我在以下文档中没有找到答案:
- 这
datetime2
(尽管可以说,如果它不在那里,那么就不应该在那里是一个解决方案,但也许我忽略了相关段落。 - 如何指定日期,然后将其与使用包 datetime 定义的时间格式一起使用
我不明白我该怎么做使用日期进行计算,尽管我怀疑它含有我正在寻找的解决方案。
答案1
最简单的方法是使用偏移量将保存的日期转换为儒略数,然后使用以下命令\DTMsaveddateoffsettojulianday
将结果转换为保存的日期:\DTMsavejulianday
\documentclass[a4paper,12pt,]{article}
\usepackage{polyglossia}
\usepackage[british,calc]{datetime2}
\begin{document}
The present date: \DTMdate{2018-01-24}
Two weeks later: \DTMdate{2018-01-24+14}
Beautiful!
\DTMsavedate{RandomDate}{1991-02-03}
A random date \DTMusedate{RandomDate}
\newcount\julianday
\DTMsaveddateoffsettojulianday{RandomDate}{14}{\julianday}
\DTMsavejulianday{RandomDate2}{\julianday}
\DTMusedate{RandomDate2}
\end{document}
如果需要多次执行此操作,则创建一个辅助命令会更简单:
\documentclass[a4paper,12pt,]{article}
\usepackage{polyglossia}
\usepackage[british,calc]{datetime2}
% syntax: \newdateoffset{original date name}{new date name}{offset}
\newcount\julianday
\newcommand{\newdateoffset}[3]{%
\DTMsaveddateoffsettojulianday{#1}{#3}{\julianday}%
\DTMsavejulianday{#2}{\julianday}%
}
\begin{document}
The present date: \DTMdate{2018-01-24}
Two weeks later: \DTMdate{2018-01-24+14}
Beautiful!
\DTMsavedate{RandomDate}{1991-02-03}
A random date \DTMusedate{RandomDate}
\newdateoffset{RandomDate}{RandomDate2}{14}
\DTMusedate{RandomDate2}
\end{document}
最后,既然您提到需要在序言中指定初始日期,那么这也有效并给出与上面相同的输出:
\documentclass[a4paper,12pt,]{article}
\usepackage{polyglossia}
\usepackage[british,calc]{datetime2}
% syntax: \newdateoffset{original date name}{new date name}{offset}
\newcount\julianday
\newcommand{\newdateoffset}[3]{%
\DTMsaveddateoffsettojulianday{#1}{#3}{\julianday}%
\DTMsavejulianday{#2}{\julianday}%
}
\DTMsavedate{RandomDate}{1991-02-03}
\newdateoffset{RandomDate}{RandomDate2}{14}
\begin{document}
A random date \DTMusedate{RandomDate}
\DTMusedate{RandomDate2}
\end{document}