
Ejecuto Windows 7, 64 bits.
Para generar un nuevo archivo .tex con las diferencias entre dos versiones de un mismo documento, siguiendo el tutorial onlinehttps://www.youtube.com/watch?v=IAWEywCx9hQ, He creado una macro latexdiff en Tex Studio con el script como se muestra exactamente en esta respuesta,https://tex.stackexchange.com/a/464270/228739, cual es
%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);
Pude ejecutar la macro latexdiff TexStudio con éxito, usando los archivos de ejemplo del video tutorial (archivos extremadamente simples). Entonces parece que la configuración de instalación básica ((Active)Perl, latexdiff en MikTek) está bien. Parece que la macro requiere que los archivos estén abiertos para poder ejecutarse correctamente.
PERO,No he logrado ejecutarlo usando mis propios archivos .tex, que son de \documentclass{article}, con matemáticas, figuras, tablas y referencias. Tanto la versión "inicial" como los archivos .tex "revisados", cuando se compilan, producen sólo comentarios de registro "sobrellenado/insuficiente \hbox", y el mensaje es "el proceso salió normalmente". Por sí solos, se compilan bien y también se crean y visualizan en .pdf.
Pero cuando intento ejecutar la macro latexdiff TexStudio con mis archivos, se cancela inmediatamente con el mensaje
! Parada de emergencia. <*> "./trackchanges.tex"
*** (trabajo cancelado, no se encontró \end legal)"
"Trackchanges.tex" es el nombre del archivo .tex totalmente vacío que debe ser llenado por el script latexdiff, yerase completó correctamente cuando utilicé los archivos de ejemplo del tutorial. Pero nunca con mis propios archivos .tex.
Pregunta: ¿Existe algún conocimiento general de por qué esto puede estar sucediendo, o es algo que tengo que considerar como demasiado específico del archivo, que tiene que ver con alguna incompatibilidad entre el preámbulo/lo que sea en mis archivos y el script anterior?
Respuesta1
No pude resolver esto. Pero los mismos archivos que no se pudieron procesar a través de la macro TexStudio, se procesaron correctamente ejecutando el comando latexdiff desde el símbolo del sistema. Esto significa que la instalación está bien (MikTex y Active Perl) y que algo en el script era fatalmente sensible a algo en mis archivos.
Para ejecutar latexdiff desde el símbolo del sistema, el único requisito es que tanto el archivo inicial como el archivo revisado estén en la misma carpeta. Una vez que uno va allí (usando el lenguaje arcaico de DOS), simplemente escribe
latexdiff initial.tex revised.tex > trackchanges.tex
donde "inicial", "revisado" y "cambios de seguimiento" son sustitutos de los nombres de archivos reales.
Tenga en cuenta que el archivo "trackchanges.tex" no debe crearse de antemano; el comando latexdiff lo crea.