\formatdate 不带日期

\formatdate 不带日期

我经常使用\formatdate{01}{02}{2016}命令来获得类似的结果2016年2月1日

现在我需要同样的东西,但没有日期。我只需要月份和年份。不幸的是,该\formatdate命令只接受 3 个参数。

是否有一个命令可以执行上述操作但仅限于月份和年份?

答案1

最好换成新的datetime2包,用于替换datetime。此示例还需要datetime2-english因为datetime2语言模块是分开分布的。

\documentclass{article}

\usepackage[en-GB]{datetime2}
\DTMlangsetup[en-GB]{showdayofmonth=false,monthyearsep={,\space}}

\begin{document}
\DTMdate{2016-02-01}. % not expandable

\DTMdisplaydate{2016}{2}{1}{-1}. % expandable

\end{document}

2016 年 2 月。2016 年 2 月。

您可以本地化\DTMlangsetup

\documentclass{article}

\usepackage[en-GB]{datetime2}
\DTMlangsetup[en-GB]{monthyearsep={,\space}}% global

\begin{document}
\section{Before}

Just using global setting.

\DTMdate{2016-02-01}.

\DTMdisplaydate{2016}{2}{1}{-1}.

\today.

\section{Scoped}

Localising one of the settings. The non-conflicting global settings
are still in place.

{% scope
  \DTMlangsetup[en-GB]{showdayofmonth=false}% local
  \DTMdate{2016-02-01}.

  \DTMdisplaydate{2016}{2}{1}{-1}.

  \today.
}

\section{After}

Just using global setting.

\DTMdate{2016-02-01}.

\DTMdisplaydate{2016}{2}{1}{-1}.

\today.
\end{document}

第 1 节 之前。仅使用全局设置。2016 年 2 月 1 日。2016 年 2 月 1 日。2018 年 4 月 22 日。第 2 节 范围。本地化其中一项设置。不冲突的全局设置仍然有效。2016 年 2 月。2016 年 2 月。2018 年 4 月。第 3 节 之后。仅使用全局设置。2016 年 2 月 1 日。2016 年 2 月 1 日。2018 年 4 月 22 日。

\DTMdatecalc具有更方便的界面,并且如果使用包选项(这会datetime2.sty自动加载)则能够计算星期几datetime2-calc.sty,但它很健壮并且不能在可扩展的环境中使 用,例如将信息写入外部文件(例如目录或书签)。

例如,如果\DTMdate{2016-02-01}在分段命令中使用 (例如\chapter\section),它将被写入文件.toc,而\DTMdate{2016-02-01}不是February, 2016(或当时的样式格式)。这意味着日期将以.toc读取文件时当前有效的样式出现在目录中\tableofcontents,而章节标题将使用当时有效的样式。

坚固的非可扩展材料也不能用于 PDF 书签。该命令将被丢弃,您只剩下参数。

例如:

\documentclass{article}

\usepackage[en-GB]{datetime2}
\usepackage[hidelinks]{hyperref}
\DTMlangsetup[en-GB]{monthyearsep={,\space}}% global

\begin{document}
\tableofcontents

\DTMlangsetup[en-GB]{showdayofmonth=false}
\section{\DTMdate{2016-02-01}}

\end{document}

这会触发警告:

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `\DTMdate' on input line 11.

PDF 查看器中的文档图像

书签显示该部分为“2016-02-01”,目录显示该部分为“2016 年 2 月 1 日”,部分标题显示为“2016 年 2 月”。

如果\DTMdisplaydate改用,结果会更加一致:

\documentclass{article}

\usepackage[en-GB]{datetime2}
\usepackage[hidelinks]{hyperref}
\DTMlangsetup[en-GB]{monthyearsep={,\space}}% global

\begin{document}
\tableofcontents

\DTMlangsetup[en-GB]{showdayofmonth=false}
\section{\DTMdisplaydate{2016}{02}{01}{-1}}

\end{document}

PDF 查看器中的文档图像

书签、目录和章节现在都显示相同的“2016 年 2 月”,这是\section使用时有效的样式。

相关内容