将 vc 包中的日期格式化为 \today

将 vc 包中的日期格式化为 \today

我正在使用 vc 包来提供\date最新 git 提交的日期。有没有办法将此日期格式化为与 输出相同的格式\today?我知道 中的不同日期格式vc 软件包手册但没有一个对应于的格式today

下面是一个可以使用的示例:

\immediate\write18{./vc}
\input{vc}
\documentclass{article}
\usepackage[utf8]{inputenc}

\title{[Title]}
\date{\VCDateISO}% I want to format this date...

\begin{document}

\maketitle

\today% ... like this date.

\end{document}

答案1

VC 手册指出\VCDateISO返回日期为 YYYY-MM-DD。如果是这种情况,您可以使用以下代码提取三个值并相应地设置 TeX 日期寄存器。然后\today将返回此日期。这当然应该在组内发生。

%\immediate\write18{./vc}
%\input{vc}
\def\VCDateISO{2011-05-24}

\documentclass{article}

\makeatletter
\newcommand\VCDateToday{%
    \expandafter\@VCDateToday\VCDateISO\relax
}
\def\@VCDateToday#1-#2-#3\relax{%
    \begingroup
     \year=#1\relax
     \month=#2\relax
     \day=#3\relax
     \today
    \endgroup
}
\makeatother

\begin{document}

\VCDateToday

\end{document}

我无法自己测试它,因为 VC 包不是 TeXLive 或 MikTeX 的一部分,而且我不想仅仅为了这个而手动安装它。


如果您想使用svn-multi,您可以简单地使用\svntoday。与 VC 文档所说的相反,当前版本还支持二进制文件。

答案2

使用该isodate软件包,您可以相当简单地完成此操作:

\usepackage[american]{isodate}
\date{\printdate{\VCDateISO}}

注异日期需求要指定的语言,因此如果您不使用,babel则需要明确调用语言选项。

尴尬的是,americanenglish打印日期的方式不同。\usepackage[english]{isodate}即使只使用 ,调用也会改变日期的显示方式\today

相关内容