
私はWindows 7、64ビットを使用しています。
同じドキュメントの2つのバージョンの違いを含む新しい.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) は正常であるようです。マクロを正常に実行するには、ファイルが開いている必要があるようです。
しかし、数式、図、表、参考文献を含む \documentclass{article} の独自の .tex ファイルを使用して実行しようとしましたが、まったくうまくいきませんでした。「初期」バージョンと「改訂版」の .tex ファイルはどちらも、コンパイルすると「\hbox が多すぎる / 少なすぎる」というログコメントのみが生成され、「プロセスが正常に終了しました」というメッセージが表示されます。それ自体では、コンパイルは正常に行われ、.pdf でビルドして表示することも正常に行われます。
しかし、私のファイルでlatexdiff TexStudioマクロを実行しようとすると、すぐに次のメッセージが表示されて中止されます。
! 緊急停止。<*> "./trackchanges.tex"
*** (ジョブが中止されました。有効な \end が見つかりません)"
「Trackchanges.tex」は、latexdiffスクリプトによって埋められるべき完全に空の.texファイルの名前であり、だったチュートリアルのサンプル ファイルを使用した場合は正しく入力されました。しかし、自分の .tex ファイルでは正しく入力されませんでした。
質問: なぜこのようなことが起こるのか、一般的な知識はありますか? それとも、ファイル固有の問題として考えるべきでしょうか? ファイル内のプリアンブルやその他の部分と上記のスクリプトの間に何らかの非互換性があるためでしょうか?
答え1
これを解決することはできませんでした。しかし、TexStudio マクロで処理できなかった同じファイルは、コマンド プロンプトから latexdiff コマンドを実行することで問題なく処理されました。これは、インストールが正常 (MikTex および Active Perl) であり、スクリプト内の何かがファイル内の何かに対して致命的に敏感であることを意味します。
コマンドプロンプトからlatexdiffを実行するには、最初のファイルと修正後のファイルの両方が同じフォルダにあることが必要です。そこへ移動したら(DOSの古い言語を使用して)、次のように入力します。
latexdiff initial.tex revised.tex > trackchanges.tex
ここで、「initial」、「revised」、「trackchanges」は実際のファイル名の代わりとなります。
「trackchanges.tex」ファイルは事前に作成するものではなく、latexdiff コマンドによって作成されることに注意してください。