我希望能够latexdiff
与 git 一起使用。目前,我的.gitconfig
文件中有一个基于单词的差异的别名:
[alias]
wdiff = diff --color-words
但是是否可以创建一个别名,latexdiff
然后使用它来编译输出并打开创建的 dvi/pdf 文件?
可能最好的方法是使用git difftool
,但是有人已经制作了合适的脚本吗?
答案1
目前最完整、最通用的解决方案可能是 git-latexdiff,如下:
https://gitlab.com/git-latexdiff/git-latexdiff
脚本内部检查指定修订的完整树,并使用选项调用 latexdiff --flatten
(或可以调用乳胶膨胀),因此如果文档被分成多个 .tex 文件,这种方法就可以奏效。
该脚本包含许多特殊情况,以使其适用于尽可能多的情况(它收到了来自 10 多位贡献者的贡献,其中大多数是“让它也适用于我的用例”)。
注:我是主要作者。
答案2
您指的是下面这样的东西吗?
〜/ bin / git-latexdiff
#!/bin/bash
TMPDIR=$(mktemp -d /tmp/git-latexdiff.XXXXXX)
latexdiff "$1" "$2" > $TMPDIR/diff.tex
pdflatex -interaction nonstopmode -output-directory $TMPDIR $TMPDIR/diff.tex
evince $TMPDIR/diff.pdf
rm -rf $TMPDIR
的〜/ .gitconfig
[difftool.latex]
cmd = git-latexdiff \"$LOCAL\" \"$REMOTE\"
[difftool]
prompt = false
[alias]
ldiff = difftool -t latex
然后您可以通过运行来使用差异git ldiff HEAD~1
,例如。
答案3
自从这里写出答案以来,还有另一种选择。我认为有些人会更喜欢它,因为它不需要任何额外的包。
从 1.0.1 版本开始,latexdiff
已经有一个latexdiff-vc
支持 的版本git
。只需运行
latexdiff-vc [ latexdiff-options ] [ latexdiff-vc-options ] -r [rev1] [-r rev2] file1.tex [ file2.tex ...]
latexdiff
将在指定版本上运行,该版本是根据对所用版本控制系统的最佳猜测。该--git
选项指定它应该假设 git。这也可以通过运行 来指定latexdiff-git
,它具有git
默认 VCS。
该选项将在输出上--pdf
运行pdflatex
(如果需要)。bibtex
查看latexdiff
手册以获取更多信息。
答案4
我最近创建了一个相当不错的 Python 脚本,它既可以在 Mercurial 上工作,也可以在 git 存储库上运行。它还支持 bibtex 和针对存储库中尚未存在的文件进行差异化。请参阅此博客文章了解更多详情。代码可以从 bitbucket 下载:
hg clone https://bitbucket.org/paulhiemstra/scm-latexdiff
或者下载 tar 包. 命令行中脚本使用的一些示例:
# for hg
scm-latexdiff 4:spam.tex
scm-latexdiff 4:spam.tex 6:spam.tex
# for git
scm-latexdiff 87213:spam.tex
scm-latexdiff 87213:spam.tex 97123:spam.tex
# You can also diff against non-commited (local) files
scm-latexdiff local:spam.tex
scm-latexdiff 2:spam.tex local:spam.tex
该脚本应适用于所有支持 Python 的平台。如果您有任何建议或错误报告,您可以在问题追踪器。
编辑:新版本的程序现在还支持多文件 latex 文档。这对于报告和书籍尤其重要。请注意,您需要最新版本的 latexdiff (2007) 才能处理多文件文档。
要安装程序,请克隆存储库或下载 tar 包然后转到您提取/克隆该工具的目录并输入(请注意,您可能需要以 root 身份运行此功能):
python setup.py install
要安装到非标准目录树(例如,在您的主目录中),请使用--prefix:
python setup.py install --prefix=/home/spam/
请记住添加/home/spam/lib/python2.x/site-packages/
到您的PYTHONPATH
环境变量中。