![任意日期,使用多种语言进行本地化格式化](https://linux22.com/image/349018/%E4%BB%BB%E6%84%8F%E6%97%A5%E6%9C%9F%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%A4%9A%E7%A7%8D%E8%AF%AD%E8%A8%80%E8%BF%9B%E8%A1%8C%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%A0%BC%E5%BC%8F%E5%8C%96.png)
我希望能够定义任意日期的变量并以不同的语言打印它。由于可以polyglossia
自动格式化\today
日期,我相信这可以实现。
我检查了
它们都使用datetime2
(取代datetime
) 或isodate
包。我不太想加载这些包 - 尤其是因为它们datetime2
会干扰polyglossia
并为所用的每种语言下载一个子包。
没错,我可以手动更改\day
、\month
和\year
变量,例如
\day=5
\month=2
\year=2017
\today
重新定义\today
并打印昨天的日期。但这样一来,真正的今天日期就丢失了。
那么,有没有办法定义一个任意日期用于polyglossia
本地化格式,以及这个变量的正确语法是什么?
答案1
您可以将寄存器设置为一组。
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont{EB Garamond}
\setmainlanguage{french}
\setotherlanguage{russian}
\newcommand{\printdate}[3]{% {<year>}{<month>}{<day>}
\begingroup
\year=#1\relax
\month=#2\relax
\day=#3\relax
\today
\endgroup
}
\begin{document}
Aujourd'hui: \today
Il y a quelque temps: \printdate{1969}{7}{11}
Aujourd'hui: \today
\begin{otherlanguage*}{russian}
Cегодня: \today
некоторое время назад: \printdate{1969}{7}{11}
Cегодня: \today
\end{otherlanguage*}
\end{document}