在包含 figure.tikz 上未找到 latexdiff 文件

在包含 figure.tikz 上未找到 latexdiff 文件

我正在运行以生成包含所有、和LaTeX 文件的latexdiff --flatten main.tex main.tex > new.tex文档。目标是对旧版本执行相同操作,以便最终生成显示两个版本之间所有差异(包括子文件中的差异)的 PDF。inputincludesubfilelatexdiff old.tex new.tex > diff.tex

但是,由于找不到文件错误latexdiff而出现:\input{figures/example.tikz}

Couldn't open ./figures/example.tikz.tex: No such file or directory at /opt/local/bin/latexdiff line 1105.

我认为问题在于,除非文件扩展名是 3 个字符,否则会latexdiff附加。但是,文件扩展名是 4 个字符!.tex.tikz

我如何才能latexdiff在这里找到并包含正确的文件?

答案1

latexdiff1.2.1 版本中.tex,确实为没有三个字母扩展名的文件添加了扩展名。在以前的版本中,此检查定义为$fname =~ m|\.\w{3}|(一个句点后跟三个字母某处在文件名中),这太宽容了,并被改为$fname =~ m|\.\w{3}$|(句点后跟三个字母在最后文件名)。

此检查旨在用于\input{myfile}输入myfile.tex,这在 LaTeX 中是允许的。但是,对于具有不同长度扩展名或根本没有扩展名的文件,检查过于严格。作为一种解决方法,您可以将 的源代码latexdiffsub flatten在版本 1.2.1 中的第 1800 行左右)从

$fname .= ".tex" unless $fname =~ m|\.\w{3}$|;

$fname .= ".tex" unless $fname =~ m|\.\w{3}$| || -e File::Spec->catfile($dirname,$fname);

这表明文件名会被改变,除非它具有三个字母的扩展名或者提供的文件名指向现有文件。

子文件中有两行需要更改(input/ include/includeonly部分和subfile部分)。将文件保存在系统文件夹中覆盖原始文件,或者在本地保存修改后的副本并执行本地版本(./latexdiff)。


latexdiff请注意,在GitHub 上的当前版本(1.2.2a)中,https://github.com/ftilmann/latexdiff) 正则表达式接受 3 或 4 个字母的扩展名 ( $fname =~ m|\.\w{3,4}$|)。这解决了 OP 的问题,但对于其他情况 (例如,2 或 5 个字母的扩展名,或者根本没有扩展名),仍然可以使用此答案中的解决方法。

相关内容