我使用 Mercurial。想象一下以下场景。假设我有一个文档处于不断修订的状态。我打印出一个版本并归档。一段时间后,我想检查磁盘上的版本与打印出来的版本相比是否有变化。为简单起见,假设磁盘上的版本没有本地更改;即版本控制中的当前版本也是最新版本。
如果文件中包含一些标识符,比如文件上次修改的修订版本,那就方便多了。然后我就可以查看它,发现自上次打印文件以来没有任何变化。
现在,Mercurial 实际上有一个扩展可以做类似的事情,即 关键字扩展然而此举存在问题,并遭到了 Mercurial 创始人兼项目负责人 Matt Mackall 的正式反对。
看了这个之后,我意识到虽然使用这个扩展可能会有问题,但使用 LaTeX 在 LaTeX 文件中嵌入版本控制信息并没有真正的问题。而且我写的几乎所有文本文档都是 LaTeX 文档。
我看到有Martin Scharrer 的先前艺术作品。关于如何在 Mercurial 中做类似的事情有什么提示吗?
编辑:需要明确的是,我的意图不是使用关键字扩展,而是直接从 TeX 调用 hg 作为排版的一部分。
答案1
如果将以下一行代码放入 LaTeX 文件中,则会给出 Mercurial 变更集标识哈希。替换rev
以node
获取本地修订号。
\input{"| hg log -v -l 1 \jobname.tex --template '{node}'"}
要实现此功能,-shell-escape
需要运行带有该选项的 LaTeX。感谢 @egreg 和 @DavidCarlisle 在聊天中提供此答案的大部分信息。