InDesign Endnote自动化

问题描述

我正在使用这个简单的脚本来抓取[ENDNOTE][/ENDNOTE]标记中包裹的文本,并将其制成实际的InDesign尾注。我遇到的问题是,尾注标记之间仅放置了前4个字符(请参见下面的屏幕截图),您知道为什么会发生这种情况,或如何使其正常工作吗?

var doc = app.activeDocument;

function footnotetoEndnotes () {
    app.findGrepPreferences = null;
    app.findGrepPreferences.findWhat = '\\[ENDNOTE\\](.+?)\\[\\/ENDNOTE\\]';
    var endnote,fnotes = doc.findGrep();

    for (var i = fnotes.length-1; i >= 0; i--) {
        var taggedText = fnotes[i].contents.replace('[ENDNOTE]','').replace('[/ENDNOTE]','');
        endnote = fnotes[i].insertionPoints[0].createEndnote();
        endnote.texts[0].contents = taggedText;
        fnotes[i].remove();
    }
}

if (parseInt (app.version) < 13) {
    alert ('This script requires InDesign CC2018 or later');
    exit();
}

doc.endnoteOptions.frameCreateOption = EndnoteFrameCreate.NEW_PAGE;
footnotetoEndnotes();

enter image description here

解决方法

因此,当我设置insertionPoints[0]的内容时,完整的尾注将结束于尾注标记内。但是,字符串的末尾有一个多余的制表符...我把它剥离了,它的工作就像我想要的一样!

我替换了这一行:

endnote.texts[0].contents = taggedText;

有了这些:

endnote.texts[0].insertionPoints[0].contents = taggedText;
endnote.texts[0].contents = endnote.texts[0].contents.replace('\t','');