
我運行 Windows 7,64 位元。
為了產生一個新的 .tex 文件,其中包含同一文件的兩個版本之間的差異,請按照線上教學進行操作https://www.youtube.com/watch?v=IAWEywCx9hQ,我在 Tex Studio 中建立了一個 Latexdiff 宏,其腳本與此答案中所示完全一樣,https://tex.stackexchange.com/a/464270/228739,即
%SCRIPT
var cf = app.getCurrentFileName();
var ld = new String(cf);
ld=ld.substring(0,ld.lastIndexOf("/"));
information("old version");
fileChooser.setDir(ld);
fileChooser.setFilter("TeX files (*.tex)");
fileChooser.exec();
var fold=new String();
fold=fileChooser.fileName();
fold=fold.substring(fold.lastIndexOf("/")+1);
information("new version");
fileChooser.setDir(ld);
fileChooser.setFilter("TeX files (*.tex)");
fileChooser.exec();
var fnew=new String();
fnew=fileChooser.fileName();
fnew=fnew.substring(fnew.lastIndexOf("/")+1);
information("diff file by Chas");
fileChooser.setDir(ld);
fileChooser.setFilter("TeX files (*.tex)");
fileChooser.exec(fout);
var fout=new String();
fout=fileChooser.fileName();
fout=fout.substring(fout.lastIndexOf("/")+1);
ldfout = ld+"\\"+fout;
var cmdstr = new String();
cmdstr = "latexdiff-so "+fold+" "+fnew+" > /dev/null";
var proc = system("cmd /C "+cmdstr,ld);
proc.waitForFinished();
writeFile(ldfout, proc.readAllStandardOutputStr());
app.load(ldfout); // load diff file
buildManager.runCommand("txs:///quick", ldfout);
delete(cmdstr);
delete(dialog);
delete(fold);
delete(fnew);
delete(fout);
delete(ld);
delete(ldfout);
我能夠使用視訊教學的範例檔案(非常簡單的檔案)成功運行 Latexdiff TexStudio 巨集。所以看來基本安裝設定((Active)Perl,MikTek 中的 Latexdiff)是可以的。看來該巨集需要開啟檔案才能成功運行。
但,我完全沒有成功地使用我自己的 .tex 檔案來運行它,這些檔案是 \documentclass{article},其中包含數學、數字、表格和參考文獻。 「初始」版本和「修訂的」.tex 檔案在編譯時僅產生「overfull / underful \hbox」日誌註釋,且訊息是「進程正常退出」。它們本身可以正常編譯,也可以以 .pdf 格式建置和檢視。
但是,當我嘗試使用我的檔案來執行 Latexdiff TexStudio 巨集時,它會立即中止並顯示以下訊息
!緊急停車。 <*>“./trackchanges.tex”
***(作業中止,未找到合法的\結束)”
「Trackchanges.tex」是完全空的 .tex 檔案的名稱,應由 Latexdiff 腳本填充,它曾是當我使用教程的範例文件時,填寫正確。但從來沒有使用我自己的 .tex 檔案。
問題:是否有任何一般知識可以解釋為什麼會發生這種情況,或者我必須將其視為過於特定於文件的事情,與我的文件中的前導碼/其他內容與上面的腳本之間的一些不相容有關?
答案1
我無法解決這個問題。但是,無法透過 TexStudio 巨集處理的相同文件,可以透過從命令提示字元執行 Latexdiff 命令來很好地處理。這意味著安裝正常(MikTex 和 Active Perl),並且腳本中的某些內容對我的文件中的某些內容非常敏感。
要從命令提示字元執行 Latexdiff,唯一的要求是初始檔案和修訂後的檔案位於同一資料夾中。一旦進入那裡(使用 DOS 的古老語言),然後只需鍵入
latexdiff initial.tex revised.tex > trackchanges.tex
其中「initial」、「revised」和「trackchanges」是實際檔案名稱的替代。
請注意,「trackchanges.tex」檔案不會預先建立 - Latexdiff 指令建立它。