我在 Windows 上使用 overleaf 来处理我的研究论文和毕业论文,它运行良好。但是,我收到了期刊的评论,他们要求我跟踪旧稿和最终稿中的更改。灵感来自这个答案,我决定使用 latexdiff,但它不起作用。我安装了 Perl v5.28.1(我认为它安装正确,因为Perl-v返回版本),并从下载 latexdiff这里。我按照说明提取并复制了文件到 C:\Perl64\bin这里。现在,如果我尝试在 CMD 中运行该命令,我会收到以下错误:
‘latexdiff’ 不被识别为内部或外部命令、可运行程序或批处理文件。
我有两个问题。
为什么我会收到这个错误?
我在 YouTube 上找到的所有教程都适用于 MikTex,但我想坚持使用 overleaf。如何在系统中不安装 latex 的情况下使用 latexdiff?
答案1
作为在本地运行 latexdiff 并将文件复制回 Overleaf 的替代方法,您可以在 overleaf 上运行 latexdiff。
这是一个包含两个版本的 tex 文件的项目,并显示差异
它目前在 Overleaf 上线,但这个链接可能不会永远有效,但我在下面显示了内联文件。
https://www.overleaf.com/read/xhszmytdmqqg
main.tex
(旧版本)
\documentclass{article}
\title{ld}
\author{me}
\date{July 2021}
\begin{document}
\maketitle
\section{Introduction}
zzz
\end{document}
main2.tex
(新版本)
\documentclass{article}
\title{latexdiff}
\author{me\and you}
\date{July 2021}
\begin{document}
\maketitle
\section{Introduction}
zzz zzz
\section{Section}
zzz
\end{document}
latexmkrc
(指示背面显示差异)
$pdflatex = "latexdiff main.tex main2.tex > main-d.tex; pdflatex %O main-d"
当您想查看main.tex
没有差异标记的“正常”排版版本时,只需在设置#
中添加注释标记latexmkrc
,使其看起来像
# $pdflatex = "latexdiff main.tex main2.tex > main-d.tex; pdflatex %O main-d"
然后重新编译main.tex
或main2.tex
将产生正常排版的输出。
答案2
(此处有来自 Overleaf Support 的汤姆。)
David 建议的另一种方法是使用 ShellEscape 运行 latexdiff。您可以简单地创建一个名为 eg 的新文件,diff.tex
其中包含以下内容:
\RequirePackage{shellesc}
\ShellEscape{latexdiff main.tex main2.tex > diff_result.tex}
\input{diff_result}
\documentclass{dummy}
如果您在编辑器中打开此文件并重新编译,它将显示一个有差异的 PDF。如果您使用main.tex
或main2.tex
打开的任何一个进行重新编译,它将显示相应的无差异文档。
(请注意,此行\documentclass{dummy}
是必要的,以欺骗 Overleaf 的编译器相信该文件是可编译的。编译器会检查\documentclass
,如果找不到,它会编译菜单中选择的主文件;但是,如果找到,它会将当前文件视为主文件。)
在 Overleaf 中,你可以从项目的历史记录中获取文件的先前版本,你可以简单地下载早期版本的项目,从中提取文件并将其(以不同的名称)上传回项目。
答案3
我使用了发布的代码,它在 overleaf 上对我有用。我只是修改了 diff.tex,以便它也能标记参考书目和参考文献的变化,并使用附加选项支持我正在使用的某些软件包(chemnum 和 siunitx)的更新语法。这就是我正在使用的(首先必须检索和上传 .bbl 和 .tex 文件的旧版本)。
\RequirePackage{shellesc}
\ShellEscape{pdflatex new.tex}
\ShellEscape{bibtex new}
\ShellEscape{latexdiff old.bbl new.bbl > output.bbl}
\ShellEscape{latexdiff --append-safecmd="cmpd" --append-mboxsafecmd="qty,qtylist,qtyproduct,qtyrange,complexqty" old.tex new.tex > diff_result.tex}
\input{diff_result}
\documentclass{dummy}