不带 MikTex 的情况下安装和使用 latexdiff

不带 MikTex 的情况下安装和使用 latexdiff

我在 Windows 上使用 overleaf 来处理我的研究论文和毕业论文,它运行良好。但是,我收到了期刊的评论,他们要求我跟踪旧稿和最终稿中的更改。灵感来自这个答案,我决定使用 latexdiff,但它不起作用。我安装了 Perl v5.28.1(我认为它安装正确,因为Perl-v返回版本),并从下载 latexdiff这里。我按照说明提取并复制了文件到 C:\Perl64\bin这里。现在,如果我尝试在 CMD 中运行该命令,我会收到以下错误:

‘latexdiff’ 不被识别为内部或外部命令、可运行程序或批处理文件。

我有两个问题。

  1. 为什么我会收到这个错误?

  2. 我在 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.texmain2.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.texmain2.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}

相关内容