是否有LaTeX命令打印实际文档的“上次修改”日期?由于LaTeX项目由多个文件组成,因此该命令理想地打印实际文件的日期,而不是项目的日期。
答案 0 :(得分:10)
pdfTeX提供原始\pdffilemoddate
来查询文件的此信息。 (LuaTeX使用自己的Lua函数进行同样的操作。)由于pdfTeX在过去几年中(至少)在所有LaTeX发行版中默认使用,因此除非您处理的是旧版本的生产,否则使用新功能没有任何损害系统。这是一个例子:
\documentclass{article} \begin{document} \def\parsedate #1:20#2#3#4#5#6#7#8\empty{20#2#3/#4#5/#6#7} \def\moddate#1{\expandafter\parsedate\pdffilemoddate{#1}\empty} this is the moddate: \moddate{\jobname.tex} \end{document}
(假设文件自2000年以来一直被修改。)
答案 1 :(得分:6)
包filemod似乎完全符合您的需要。要获取文件的最后修改日期,您只需按常规方式包含该包:
\usepackage{filemod}
并且当前文档的修改时间打印为:
\filemodprintdate{\jobname}
您还可以打印修改时间,并且有许多选项可以格式化输出。
答案 2 :(得分:3)
不幸的是,TeX没有提供此类信息的命令;获得此类信息的唯一途径是
扩展的TeX可能支持文件信息命令(也许是luaTeX?),但它不是TeX本身的一部分。
答案 3 :(得分:3)
如果您使用的是自动构建系统,您可以要求它生成一个文件(可能名为today.sty
),该文件取决于所有源文件。
在make中可能看起来像:
today.sty: $LATEX_SRCS
echo "\date{" > $@
date +D >> $@
echo "}" >> $@
和\usepackage{today.sty}
。
在文件更改后,将使用 first 构建的日期,并且在您删除today.sty
或更改其他源文件之前不会更新。
答案 4 :(得分:1)
谢谢dmckee
LATEX_SRCS = test.tex
define moddate
date +%Y%m%d%H%M%S
endef
today.sty: $(LATEX_SRCS)
@echo "\def\moddate{"$(shell $(moddate))"}"> $@
答案 5 :(得分:1)
有getfiledate LaTeX包(默认情况下它是我的LaTeX发行版的一部分)。它似乎被设计为自动输出如下的段落:
The date of last modification of file misc-test1.tex was 2009-10-11 21:45:50.
有一点调整输出的能力。你绝对可以得到日期。但是,我无法弄清楚如何摆脱日期周围的换行以及如何更改日期格式。说实话,我认为作者完全按照他们需要的单一目的来实现它,而且对于一般用途来说相当麻烦。