Ответ: Скрипт для размещения формул MathType в InDesign CS4
Dresden сказал(а):
1. При попытке отловить дублированные формулы первый запуск скрипта ClearDoubleLinks был успешным (дублей не было). Второй - со странным результатом (найден 1 дубль, формула была переименована в EqnNaN.undefined и помещена в папку C:\Program Files\Adobe\Adobe InDesign CS4\Scripts\XHTML For Digital Editions. Сделал еще один дубль, запустил в третий раз - создана формула EqnNaN.undefined и записана поверх прежней. На четвертом запуске скрипт выдал ошибку (см. вложение).
2. К сожалению, совсем не запускается скрипт MT-NewEq1-08. Когда ничего не выделено выдает ошибку (см.вложение MT-NewEq1-08_error1), когда выделен кадр - просто не запускается, когда курсор в тексте - пишет TypeError: null is not an object. Когда выделена формула - как ни в чем не бывало открывает МТ, т. е. как бы работает.
С этим попытаюсь разобраться, ибо ничего подобного у меня не случалось, тем более, что путь \Program Files\Adobe\Adobe InDesign CS4\Scripts\XHTML For Digital Editions вообще нигде в скрипте не прописан. Откуда он возник, даже интересно.
С MT-NewEq также попытаюсь разобраться. У меня никогда ничего подобного не было. Если выделена формула, то MT-NewEq запускает скрипт MT-EditEq, так как зачем делать пустую формулу, проще исправить или перенабрать существующую.
При первом запуске MT-NewEq для нового файла публикации должен идти запрос на создание пустой формулы. Это у Вас было?
Видимо, проблемы "растут" именно оттуда. Нет шаблона - нет и работы.
Вот код процедуры, проверяющей дублированные формулы:
function DetectAllDoubleLink() {
var win = new Window("palette", "MT-Script 1-08", undefined);
win.stText = win.add("statictext", undefined);
win.stText.text = "Проверяю все дублированные формулы"
win.show()
var NumberOfLinks
var NumberOfBadLinks = 0
var ToRelink = new Array
var AllLinks = new Array
var FindPart = new Array
var myDocumentLinks = app.activeDocument.links;
if (myDocumentLinks.length > 0) {
for (var i = 0; i < myDocumentLinks.length; i++) {AllLinks.push(myDocumentLinks
.name+"*"+String(i))}
AllLinks.sort()
for (var i = 0; i < AllLinks.length-1; i++) {
FindPart = String(AllLinks[i+1]).split("*")
if ((AllLinks.search(FindPart[0]) != -1)&&(AllLinks.search("Eqn") != -1)) {
//alert(AllLinks + " " + AllLinks[i+1])
ToRelink.push(FindPart[1])
}
}
}
for (var i = 0; i < ToRelink.length; i++) {
NumRel = parseInt(ToRelink)
myNewFilePathForRelink = DoCopyFile(myDocumentLinks[NumRel].filePath) //???????????????????
var NewCopyFile = new File(myNewFilePathForRelink)
if (NewCopyFile.exists == true) {myDocumentLinks[NumRel].relink(NewCopyFile)}
else {NumberOfBadLinks++}
}
return ToRelink.length - NumberOfBadLinks; //Сообщает количество перелинкованных формул
win.close()
}
Ошибка у Вас возникла в строке 382. Здесь это //???????????????????. Это проблемы с путями. Постараюсь понять, в чем проблема.
Попутно вопрос: у Вас файлы названы Eqn****.eps, "E" заглавная или строчная?