我想用该datetime2
包以科学或技术写作中常用的格式用英语排版日期,即:
- 24 小时制的时间;
- 日期格式为:“2018 年 10 月 29 日”(无逗号,无序数词)。
这该怎么做?似乎没有一个英语语言包支持这种格式。我正在使用 LuaLaTeX 和 polyglossia,以防万一。谢谢。
答案1
您可以使用\DTMsettimestyle
来设置时间样式,以覆盖当前的日期时间样式。datetime2
使用日月年顺序的英语样式都有选项和ord
,允许您对序数显示方式以及日与月之间以及月与年之间的分隔符进行细微调整。daymonthsep
monthyearsep
例如,en-GB
默认选项是和ord=level
,因此需要更改以满足您所需日期样式的唯一选项是:daymonthsep={\space}
monthyearsep={\space}
ord
\documentclass{article}
\usepackage[en-GB]{datetime2}
\DTMlangsetup[en-GB]{ord=omit}
\DTMsettimestyle{iso}
\begin{document}
Today: \today. Current time: \DTMcurrenttime.
\end{document}
(其他地区可能有不同的默认选项。检查datetime2-english
文档了解可用的语言环境及其设置。
日期样式使用en-GB
区域样式,因为en-GB
用作包选项,但时间样式使用,iso
因为\DTMsettimestyle
覆盖日期时间样式(在\DTMsetstyle{en-GB}
加载包时隐式设置)。这产生:
如果您不想要该样式的秒数,iso
您可以使用showseconds=false
包选项:
\usepackage[en-GB,showseconds=false]{datetime2}
使用,您需要在语言更改后polyglossia
移动,否则它将被重置:\DTMsettimestyle
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[variant=uk]{english}
\usepackage[en-GB,showseconds=false]{datetime2}
\DTMlangsetup[en-GB]{ord=omit,daymonthsep={\space}}
\begin{document}
\DTMsettimestyle{iso}
Today: \today. Current time: \DTMcurrenttime.
\end{document}
其他选项包括修改相应语言的日期钩子。例如:
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[variant=uk]{english}
\usepackage[en-GB,showseconds=false]{datetime2}
\DTMlangsetup[en-GB]{ord=omit}
\renewcommand{\dateenglish}{%
\DTMsetdatestyle{en-GB}%
\DTMsettimestyle{iso}%
}
\begin{document}
Today: \today. Current time: \DTMcurrenttime.
\end{document}
或者,如果文档只有一种语言,请useregional=false
在序言中根据需要使用和设置日期和时间样式。例如:
\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[variant=uk]{english}
\usepackage[en-GB,useregional=false,showseconds=false]{datetime2}
\DTMlangsetup[en-GB]{ord=omit,daymonthsep={\space}}
\DTMsetdatestyle{en-GB}
\DTMsettimestyle{iso}
\begin{document}
Today: \today. Current time: \DTMcurrenttime.
\end{document}