Mistério macro Latexdiff TexStudio

Mistério macro Latexdiff TexStudio

Eu executo o Windows 7 de 64 bits.
Para produzir um novo arquivo .tex com as diferenças entre duas versões do mesmo documento, siga o tutorial onlinehttps://www.youtube.com/watch?v=IAWEywCx9hQ, criei uma macro latexdiff no Tex Studio com o script mostrado exatamente nesta resposta,https://tex.stackexchange.com/a/464270/228739, qual é

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

Consegui executar a macro latexdiff TexStudio com sucesso, usando os arquivos de exemplo do vídeo tutorial (arquivos extremamente simples). Portanto, parece que a configuração básica da instalação ((Active)Perl, latexdiff no MikTek) está ok. Parece que a macro exige que os arquivos sejam abertos para funcionar com êxito.

MAS,Não tive sucesso em executá-lo usando meus próprios arquivos .tex, que são de \documentclass{article}, com matemática, figuras, tabelas e referências neles. Tanto a versão "inicial" quanto os arquivos .tex "revisados", quando compilados, produzem apenas comentários de log "sobrecarregado/insuficiente \hbox" e a mensagem é "processo encerrado normalmente". Por si só, eles compilam ok e são construídos e visualizados em .pdf ok também.

Mas quando tento executar a macro latexdiff TexStudio com meus arquivos ele aborta imediatamente com a mensagem

! Parada de emergência. <*> "./trackchanges.tex"

*** (trabalho abortado, nenhum final legal encontrado)"

"Trackchanges.tex" é o nome do arquivo .tex totalmente vazio que deve ser preenchido pelo script latexdiff, eerapreenchido corretamente quando usei os arquivos de exemplo do tutorial. Mas nunca com meus próprios arquivos .tex.

Pergunta: Existe algum conhecimento geral sobre o motivo pelo qual isso pode estar acontecendo, ou é algo que devo considerar muito específico do arquivo, relacionado a alguma incompatibilidade entre o preâmbulo/qualquer outra coisa em meus arquivos e o script acima?

Responder1

Não consegui resolver isso. Mas os mesmos arquivos que não puderam ser processados ​​​​por meio da macro TexStudio foram processados ​​perfeitamente executando o comando latexdiff no prompt de comando. Isso significa que a instalação está ok (MikTex e Active Perl) e algo no script foi fatalmente sensível a algo em meus arquivos.

Para executar o latexdiff no prompt de comando, o único requisito é que o arquivo inicial e o arquivo revisado estejam na mesma pasta. Uma vez lá (usando a linguagem arcaica do DOS), basta digitar

latexdiff initial.tex revised.tex > trackchanges.tex

onde "initial", "revised" e "trackchanges" são substitutos dos nomes de arquivos reais.

Observe que o arquivo "trackchanges.tex" não deve ser criado antecipadamente - o comando latexdiff o cria.

informação relacionada