用于修订控制的 LaTeX 包

用于修订控制的 LaTeX 包

我使用修订控制(确切地说是 Subversion)来跟踪我的 LaTeX 文档的编辑。是否有与修订控制接口的 LaTeX 软件包?具体来说,如果能在文档中看到修订号以及时间和日期,那就太好了。(显然,我会在最终版本中关闭此功能。)此外,如果能获得一份 PDF,显示在给定修订中添加和删除了哪些内容,那就太好了。

答案1

是的,有一个名为svnsvninfo以及一些适用于其他版本控制系统的版本。请参阅TeX 常见问题解答:您可以使用类似这样的代码\SVNdate $Date$,它将使用文档中的 SVN 变量的值Date,或者在文档的页脚中包含日期和版本号。不过,我认为它们都没有显示差异。

答案2

对于 CVS 或 Subversion 等修改源文件的系统,TeX 常见问题解答的简洁回答是我最喜欢的:

\def\RCS$#1: #2 ${\expandafter\def\csname RCS#1\endcsname{#2}}
\RCS$Revision: 1.13 $ % or any RCS keyword
\RCS$Date: 2010/04/02 18:20:00 $
...
\date{Revision \RCSRevision, \RCSDate}

它不是很复杂,但你只会将它用于草稿版本,因此在这种情况下简单和强大胜过漂亮。

Mercurial 或 Git 等系统不会修改源文件。在这种情况下,一个好的解决方案是生成一个可以\input放入源文档的文件。对于 Mercurial,我使用如下 Makefile 规则:

hg.id: .hg
    hg log -r'p1()' --template '\\def\\HgNode\{{node|short}}\n\\def\\HgDate\{{date|rfc3339date}}\n\\def\\HgAuthor\{{author|person}}\n' >$@

\input将该文件放入文档中,并在命令或脚注中使用\HgDate和。\HgNode\date

更新:原帖还提到了版本之间的变化。这在 LaTeX 中有点棘手,但TeX 常见问题解答对各种(并不完全令人满意的)可能性进行了讨论。

编辑:较新版本的 Mercurial 要求对{模板中的字符进行转义。我修改了答案以包含该内容。

编辑:hg parent比 更好hg tip,因为如果您要格式化存储库的旧版本(已标记?),它会给出正确的结果。但(进一步编辑)hg log -r'p1()'比两者都好,因为即使在工作目录有两个父目录的偶尔情况下(例如当您正在进行合并并解决合并冲突时),它也会产生单个结果。

答案3

对于你问题的最后一部分,我喜欢 Perl 脚本latexdiff。这会生成显示不区分换行符的差异的 LaTeX 文档,其中包含更改栏和其他视觉标记。(遗憾的是,该实现相当复杂,依赖于复杂的正则表达式进行解析,因此值得确保安装了 Perl 5.8.10 或更高版本,以获得更大的正则表达式嵌套深度。)

答案4

有一个很好的包叫git信息与 git 一起使用。结合一些简单的 Makefile 操作,这会产生相当不错的结果,所有这些都在包手册中进行了很好的解释。

编辑:正如 gitinfo 的作者 Brent Longborough 指出的那样,现在有一个新版本可用:gitinfo 2

它大大简化了整个处理过程。快来看看吧!

相关内容