有没有办法从包源文件中的 \ProvidesPackage{} 获取 \filedate 和 \fileversion ?

有没有办法从包源文件中的 \ProvidesPackage{} 获取 \filedate 和 \fileversion ?

我喜欢\typeout显示我的包的版本和日期的消息。我知道,\GetFileInfo但这显然只在.dtx文件中有效。有没有办法自动从包的声明中提取\filedate和?我目前只是定义一个版本字符串并在中使用它,但这意味着必须在文件中编辑版本和日期两次,这可能容易出错。\fileversion\ProvidesPackage{}\typeout

MWE 包littlepackage.sty

\ProvidesPackage{littlepackage}[2020/11/26 v1.2.3 A simple demo package]
\NeedsTeXFormat{LaTeX2e}[1999/12/01]

\newcommand*{\littlepackageversion}{v1.2.3 dated 2020/11/26}

\AtBeginDocument{%
\typeout{}
\typeout{littlepackage: You're using littlepackage version \littlepackageversion.}
\typeout{}
}%

littledemo.tex使用该包的MWE文档:

% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{littlepackage}

\begin{document}
Hello.

\end{document}

答案1

\ProvidesPackage{littlepackage}[2020/11/26 v1.2.3 A simple demo package]
\NeedsTeXFormat{LaTeX2e}[1999/12/01]



\AtBeginDocument{%
\typeout{}
\typeout{littlepackage: You're using littlepackage version \csname [email protected]\endcsname}
\typeout{}
}%

答案2

OP 说我的评论很有用,所以我会扩展答案。readprov\ProvidesXXX包提供对类、包或通用文件中行的访问,而无需doc包。因此您的littlepackage.sty文件可以看起来像这样,无需任何技巧。

\ProvidesPackage{littlepackage}[2020/11/26 v1.2.3 A simple demo package]
\NeedsTeXFormat{LaTeX2e}[1999/12/01]

\usepackage{readprov}
\ReadPackageInfos{littlepackage}
\edef\littlepackageversion{\fileversion}

\AtBeginDocument{%
\typeout{}
\typeout{littlepackage: You're using littlepackage version \littlepackageversion.}
\typeout{}
}%

相关内容