如何在不先定义日期的情况下在乳胶中打印日期?

如何在不先定义日期的情况下在乳胶中打印日期?

我想要\date{2015-10-10}打印10th October, 2015或类似操作。我不想将日期值与插入文档的位置分开。

答案1

与其他答案类似(保存并立即在宏中打印),但用于datetime2格式化:

\documentclass{article}
\usepackage[en-US]{datetime2}
\newcommand{\mydate}[1]{
    \DTMsavedate{newdate}{#1}
    \DTMusedate{newdate}
}
\begin{document}
\mydate{2015-10-10}

\mydate{2015-01-01}
\end{document}

印刷:

2015 年 10 月 10 日

2015 年 1 月 1 日

答案2

\date命令不会打印日期,而是将其参数存储在\@date宏中。@要使用的带有 , 的宏必须包含在\makeatletter和 中\makeatother。了解这一点后,您可以创建一个接受参数的命令,将其传递给\date,然后打印该参数:

\documentclass{article}
\makeatletter
\newcommand{\printdate}[1]{\date{#1}\@date}
\makeatother

\begin{document}
Some text \printdate{2015-12-12} \printdate{2014-12-12}
\end{document}

请注意,这是一个整体解决方案,并且取决于您所使用的软件包,可能无法提供预期的结果。

答案3

british语言设置下datetime2\DTMdisplaydate{YYYY}{MM}{DD}{DoW},您可以使用或设置日期样式\DTMdate{YYYY-MM-DD}

在此处输入图片描述

\documentclass{article}

\usepackage[british,calc]{datetime2}
\DTMlangsetup[en-GB]{ord=raise}

\DTMnewdatestyle{mydate}{%
  % #1 = year
  % #2 = month
  % #3 = day
  % #4 = day of week
  \renewcommand{\DTMdisplaydate}[4]{%
    \DTMordinal{##3} \DTMenglishmonthname{##2}, \number##1}%
}

\begin{document}

\today% ...or \DTMtoday

% \DTMdisplaydate{YYYY}{MM}{DD}{DOW}
\DTMdisplaydate{2015}{10}{10}{-1}

% \DTMdate{YYYY-MM-DD}
\DTMdate{2015-10-10}

\DTMsetdatestyle{mydate}% Set new date style
\DTMdate{2015-10-10}

\end{document}

相关内容