由于datetime
不再修复错误,我一直在考虑切换到的可能性datetime2
。但是,除了我需要编写自己的语言模块之外,我甚至无法掌握现有的英语模块。
假设我主要想使用我所在地区的默认设置生成文本日期,并且在文档级别使用英式英语。不过,在文档的某个地方,我想切换日期显示的样式,以便同时打印星期几。
我想:
\documentclass[british]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[calc]{datetime2}
\DTMsetup{useregional}
\begin{document}
\DTMlangsetup[british]{showdow}\today
\end{document}
我还尝试在加载包时将useregional
和showdow
作为选项传递给datetime2
,但随后出现编译错误。我en-GB
也尝试过,因为datetime2
并不总是能识别british
别名。但我也没有成功。我尝试\DTMlangsetup
在序言中使用,但运气不佳。
我得到的错误是
Package datetime2 Warning: Region `british' has ignored
(datetime2) the following settings:
(datetime2) showdow
on input line 22.
由于我已经修复了威尔士语支持问题datetime
,因此这不再是当务之急,因为我必须编写一个语言模块来切换datetime2
(而不仅仅是更正.def
文件)。但我仍然想知道它的datetime2
想法,尽管除非真的需要,否则我无意切换。(我希望在那之前能找到我更了解的东西!)
我承认我发现这个软件包非常令人困惑:我完全不知道不同的命令和不同的文件应该如何很好地协同工作。(这不是对作者的批评:datetime2
只是比我想象的要雄心勃勃得多datetime
,我根本不理解其组织结构背后的关键概念。)但我从文档中认为它showdow
应该适用于英式英语,我不明白为什么它不适用。
答案1
datetime2
我已在刚刚上传的 v1.2手册中添加了一些有关showdow
设置的更多信息,但我会尽力澄清。
该showdow
设置实际上应该是语言相关的(或 contrib 包)设置,因为它不被主datetime2
代码使用,也不被很多样式使用,所以我确实打算以与语言设置相同的方式实现它,例如abbr
,但该showdow
选项需要datetime2-calc
包,该包用于计算星期几。如果没有这个额外的包,就无法计算星期几,这会将的使用限制showdow
在用户明确输入星期几的命令上,例如\DTMdisplaydate{2015}{11}{10}{1}
。
我认为对于大多数用户来说,如果他们想使用该设置,他们必须明确加载datetime2-calc
或使用,这可能不是直观明显的,所以我决定制作一个包选项,它会自动加载。如果这让人们感到困惑,我很抱歉。\usepackage[calc]{datetime2}
showdow
showdow
datetime2-calc
由于showdow
是包范围选项而非语言选项,因此可以使用 进行设置,但如果尝试在未加载包的环境\DTMsetup
中将其打开,则会导致错误。由于这是由基础包控制的,这意味着该机制不必依赖于每个语言模块执行此检查。document
datetime2-calc
datetime2
如果您想要定义一个为设置添加检查的样式showdow
,您可以使用:
\ifDTMshowdow
\ifnum##4>-1 % space needed after -1
% code that inserts the day of week name
% where the day of week index is given by ##4
\fi
\fi
在您想要添加星期几名称的适当位置。
(这应该在\DTMdisplaydate
和的重新定义中\DTMDisplaydate
。当这出现在\DTMnewdatestyle
或内部时,\DTMnewstyle
这需要##4
而不是#4
引用星期几索引参数。)
-1
除了检查之外,还需要检查showdow
以允许用户明确忽略星期几名称(无论设置如何)showdow
。这主要用于日期必须完全可扩展的情况(例如,在 PDF 书签中),而使用不可扩展的命令(例如 )无法做到这一点,这些命令\DTMdate
必须计算星期几索引。
例如:
\documentclass{article}
\usepackage[showdow,en-GB]{datetime2}
\usepackage[colorlinks]{hyperref}
\begin{document}
\tableofcontents
\section{\DTMdisplaydate{2015}{11}{10}{1}}
\section{\DTMdisplaydate{\year}{\month}{\day}{-1}}
\end{document}
(您可以通过首先保存日期(包括星期几),然后在可扩展上下文中使用它来解决此问题,但用户可能不想这样做。)