
Каждый раз, когда LaTeX по какой-либо причине создает поврежденный .aux
файл, появляется следующее диалоговое окно с текстом _При настройке tupesetting был обнаружен поврежденный .aux-файл из предыдущего запуска. Вам следует удалить его и перезапустить процесс набора текста. Хотите ли вы отобразить диалоговое окно "Удалить aux-файлы..." сейчас?
Это не только излишне (почему бы не отобразить другой диалог сразу с помощью Skip
кнопки?), но, что еще важнее, это очень раздражает.
Я не хочу, чтобы появлялись какие-либо диалоги!Можно ли это как-то отключить или мне придется получить исходник, стереть эту часть и перекомпилировать?
решение1
От моего комментария к правильному ответу.:)
Корень всех зол опирается на хук, названный logParser.js
внутри <USERHOME>/.TeXworks/scripts/Hooks
. Если вы не уверены, где найти этот путь, в TeXworks есть ярлык для него:
А именно, Scripts ▶ Scripting TeXworks ▶ Show Scripts Folder
. Затем вы можете получить доступ к папке, названной Hooks
там. Довольно просто, не правда ли?:)
Виноват файл logParser.js
,
который является кодом JavaScript. У нас есть два способа справиться с этим. Либо отключить все выполнение этого анализатора журнала через:
( Scripts ▶ Scripting TeXworks ▶ Manage Scripts
)
А затем снимите отметку с пункта Errors, warnings, badboxes
под Hook Scripts
вкладкой.
Или мы можем редактировать logParser.js
напрямую. Функция, которая отвечает за предупреждение о вспомогательных файлах, находится около строки 373:
LogParser.prototype.WarnAuxFiles = function()
{
for (var i = this.Results.length-1; i >= 0; i--) {
if (this.Results[i].Description.indexOf("File ended while scanning use of") > -1) {
if (TW.question(null, "", "While typesetting, a corrupt .aux " +
"file from a previous run was detected. You should remove " +
"it and rerun the typesetting process. Do you want to display" +
"the \"Remove Aux Files...\" dialog now?", 0x14000) == 0x4000)
TW.target.removeAuxFiles();
break;
}
}
}
Хотя я мог бы добавить return
оператор сразу после блока открытия тела функции, я бы предпочел прокомментировать проблемные части. :)
Итак:
LogParser.prototype.WarnAuxFiles = function()
{
/*
No more! (Dr. Who, The Day Of The Doctor)
_.._
/ a\__,
\ -.___/
\ \
(\____) \
|\_( ))
_____| (_ /________
_\____(______/__
______
ooh a duck! :)
for (var i = this.Results.length-1; i >= 0; i--) {
if (this.Results[i].Description.indexOf("File ended while scanning use of") > -1) {
if (TW.question(null, "", "While typesetting, a corrupt .aux " +
"file from a previous run was detected. You should remove " +
"it and rerun the typesetting process. Do you want to display" +
"the \"Remove Aux Files...\" dialog now?", 0x14000) == 0x4000)
TW.target.removeAuxFiles();
break;
}
}
*/
}
И все готово.:)
решение2
Я столкнулся с той же проблемой.
Эта проблема может быть вызвана ошибками в процессе набора текста. В моем случае, если в tex-файле есть ошибка, я компилирую его, процесс набора текста сообщает об ошибке, и я останавливаю набор текста, когда я снова набираю текст, появляется диалоговое окно с предложением удалить aux-файл, на самом деле, если вы нажмете «ОК», появится другое диалоговое окно для выбора файла для удаления, затем вы нажмете «Удалить», все выбранные файлы будут удалены.
Эту проблему можно объяснить следующим образом:
Ошибка возникает в процессе набора текста, она делает ваши файлы aux недействительными. Вам следует исправить ошибку и удалить файлы aux, затем выполнить набор снова.
Это диалоговое окно появляется при повторном наборе файла после возникновения ошибки.
Этот диалог просто информирует вас, а на самом деле файлы AUX будут удалены в следующем диалоге.
Поэтому мое решение заключается в том, что если в процессе набора текста возникает ошибка, то при его прерывании появляется диалоговое окно удаления файлов, затем нажимаю кнопку «Удалить», чтобы удалить вспомогательные файлы. (Диалоговое окно все еще есть, потому что мне сложно удалять вспомогательные файлы с помощью скрипта, и я не знаю, как это сделать.)
А вот мой код. Функция WarnAuxFiles около строки 373 logParser.js
изменена.
LogParser.prototype.WarnAuxFiles = function()
{
for (var i = this.Results.length-1; i >= 0; i--) {
if(this.Results[i].Severity == Severity.Error) {
TW.target.removeAuxFiles();
break;
}
}
}