Latexdiff TexStudio 매크로 미스터리

Latexdiff TexStudio 매크로 미스터리

저는 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)은 괜찮은 것 같습니다. 매크로가 성공적으로 실행되려면 파일을 열어야 하는 것으로 보입니다.

하지만,나는 \documentclass{article}에 수학, 그림, 표 및 참조가 포함된 내 자신의 .tex 파일을 사용하여 실행하는 데 완전히 실패했습니다. "초기" 버전과 "수정된" .tex 파일 모두 컴파일 시 "overfull / underful \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 명령이 해당 파일을 생성합니다.

관련 정보