Latexdiff TexStudio Makro-Geheimnis

Latexdiff TexStudio Makro-Geheimnis

Ich verwende Windows 7, 64bit.
Um eine neue .tex-Datei mit den Unterschieden zwischen zwei Versionen desselben Dokuments zu erstellen, folgen Sie dem Online-Tutorialhttps://www.youtube.com/watch?v=IAWEywCx9hQ, ich habe ein Latexdiff-Makro in Tex Studio mit dem Skript erstellt, wie in dieser Antwort genau gezeigt,https://tex.stackexchange.com/a/464270/228739, welches ist

%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);

Ich konnte das TexStudio-Makro „latexdiff“ erfolgreich ausführen, indem ich die Beispieldateien aus dem Video-Tutorial verwendete (extrem einfache Dateien). Es scheint also, dass die grundlegende Installationskonfiguration ((Active)Perl, latexdiff in MikTek) in Ordnung ist. Es scheint, dass das Makro erfordert, dass die Dateien geöffnet sind, um erfolgreich ausgeführt zu werden.

ABER,Es ist mir überhaupt nicht gelungen, es mit meinen eigenen .tex-Dateien, die \documentclass{article} sind und Mathematik, Abbildungen, Tabellen und Referenzen enthalten, zum Laufen zu bringen. Sowohl die „ursprüngliche“ Version als auch die „überarbeiteten“ .tex-Dateien erzeugen beim Kompilieren nur „überfüllte/unterfüllte \hbox“-Protokollkommentare und die Meldung „Prozess wurde normal beendet“. Für sich genommen werden sie problemlos kompiliert und auch das Erstellen und Anzeigen im .pdf-Format funktioniert einwandfrei.

Aber wenn ich versuche, das Latexdiff TexStudio-Makro mit meinen Dateien auszuführen, bricht es sofort mit der Meldung ab

! Nothalt. <*> "./trackchanges.tex"

*** (Job abgebrochen, kein gültiges \Ende gefunden)"

"Trackchanges.tex" ist der Name der völlig leeren .tex-Datei, die vom Latexdiff-Skript gefüllt werden soll, und sieWarkorrekt ausgefüllt, wenn ich die Beispieldateien des Tutorials verwendet habe. Aber nie mit meinen eigenen .tex-Dateien.

Frage: Gibt es allgemeine Erkenntnisse darüber, warum dies passieren könnte, oder muss ich davon ausgehen, dass es zu dateispezifisch ist und mit einer Inkompatibilität zwischen der Präambel/was auch immer in meinen Dateien und dem obigen Skript zu tun hat?

Antwort1

Ich konnte das nicht lösen. Aber dieselben Dateien, die nicht durch das TexStudio-Makro verarbeitet werden konnten, wurden durch Ausführen des Befehls latexdiff in der Eingabeaufforderung problemlos verarbeitet. Das bedeutet, dass die Installation in Ordnung ist (MikTex und Active Perl) und dass etwas im Skript äußerst empfindlich auf etwas in meinen Dateien reagierte.

Um latexdiff über die Eingabeaufforderung auszuführen, müssen sich die ursprüngliche Datei und die überarbeitete Datei im selben Ordner befinden. Sobald man dorthin gelangt (in der archaischen Sprache von DOS), gibt man einfach ein

latexdiff initial.tex revised.tex > trackchanges.tex

wobei „initial“, „revised“ und „trackchanges“ die tatsächlichen Dateinamen ersetzen.

Beachten Sie, dass die Datei „trackchanges.tex“ nicht im Voraus erstellt werden muss – sie wird vom Befehl latexdiff erstellt.

verwandte Informationen