showdow 在 datetime2 中如何工作?

showdow 在 datetime2 中如何工作?

由于datetime不再修复错误,我一直在考虑切换到的可能性datetime2。但是,除了我需要编写自己的语言模块之外,我甚至无法掌握现有的英语模块。

假设我主要想使用我所在地区的默认设置生成文本日期,并且在文档级别使用英式英语。不过,在文档的某个地方,我想切换日期显示的样式,以便同时打印星期几。

我想:

\documentclass[british]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[calc]{datetime2}
\DTMsetup{useregional}

\begin{document}
\DTMlangsetup[british]{showdow}\today
\end{document}

我还尝试在加载包时将useregionalshowdow作为选项传递给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}showdowshowdowdatetime2-calc

由于showdow是包范围选项而非语言选项,因此可以使用 进行设置,但如果尝试在未加载包的环境\DTMsetup中将其打开,则会导致错误。由于这是由基础包控制的,这意味着该机制不必依赖于每个语言模块执行此检查。documentdatetime2-calcdatetime2

如果您想要定义一个为设置添加检查的样式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}

(您可以通过首先保存日期(包括星期几),然后在可扩展上下文中使用它来解决此问题,但用户可能不想这样做。)

相关内容