【问题标题】:Indesign Script: Looping ALL paragraphs (including in overset)Indesign Script:循环所有段落(包括在overset中)
【发布时间】:2021-01-22 16:47:51
【问题描述】:

在选定的 TextFrame 中寻找所有段落的选择器,包括溢出中的“不可见的”。脚本已经在工作并循环显示可见段落:

[...]

if(app.selection[0].constructor.name=="TextFrame") {

    var myParagraphs = app.selection[0].paragraphs;     // only visible ones?!
    var myArray = myParagraphs.everyItem().contents;

    for (var i=0; i<myArray.length; i++) {

        // do some fancy styling - WORKING
        myParagraphs[i].appliedParagraphStyle = app.activeDocument.paragraphStyles.item('Format XYZ');
    }
}

当我为 TextFrame 设置另一个高度时,myArray.length 会发生变化。但是我如何处理所有段落?已经用相同的结果测试了 .anyItem() :(

【问题讨论】:

    标签: adobe-indesign extendscript


    【解决方案1】:

    好吧,overset 中的段落不是文本框架的段落,因此在您的脚本中跳过它们是有道理的。要访问文本框架的所有段落+溢流部分的所有段落,您将需要访问父故事的所有段落(故事是描述链接文本框架和溢流文本中的所有文本的文本实体)文本框。

    你可以这样做:

    if(app.selection[0].constructor.name === "TextFrame") {
      var myParagraphs = app.selection[0].parentStory.paragraphs;
    
      for (var i = 0; i < myParagraphs.length; i++) {
        myParagraphs[i].appliedParagraphStyle = app.activeDocument.paragraphStyles.item("Format XYZ");
      }
    }
    

    请注意,这将处理链接到您的文本框架的所有文本框架中的所有段落,以防万一。

    此外,由于您似乎需要在整个故事的每个段落上应用段落样式,您不妨直接将段落样式应用于整个故事,而不是循环遍历段落:

    app.selection[0].parentStory.appliedParagraphStyle = app.activeDocument.paragraphStyles.item("Format XYZ");
    

    【讨论】:

    • .parentStory 工作得很好,非常感谢!在我的情况下,循环是必需的,因为段落样式取决于内容;)
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 2023-04-01
    • 2015-06-11
    • 1970-01-01
    • 2011-08-15
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多