gpt4 book ai didi

javascript - 应用超链接目标时,Indesign 脚本 GREP 出现困惑

转载 作者:行者123 更新时间:2023-12-03 06:29:31 25 4
gpt4 key购买 nike

在 InDesign 中偶然发现了一个与脚本、GREP 和超链接有关的非常奇怪的问题。我正在尝试编写一个脚本(js)来自动创建一本大书(电子书)的超链接。我已经成功编写了术语表超链接脚本,但这仅供章节引用。这个想法是进行 GREP 搜索,找到与标题样式(下划线,本例中为 20pt)匹配的所有单词,然后在该点插入超链接目标。奇怪的是,当脚本运行时,它会弄乱从上一行查找文本的 GREP 搜索结果。

 
var doc = app.activeDocument;

doc.hyperlinkTextDestinations.everyItem().remove();
doc.hyperlinkTextSources.everyItem().remove();
doc.hyperlinks.everyItem().remove();

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.pointSize = 20;
app.findGrepPreferences.underline = true;
app.findGrepPreferences.findWhat = '';

var results = app.activeDocument.findGrep();

for (var i=0; i < results.length; i++) {
var text = results[i].texts.firstItem();
$.writeln(text.contents);
doc.hyperlinkTextDestinations.add(
text,
{
name: text.contents
}
);
}

在以下文本上运行此脚本(已删除 indesign 样式):充满信任的头衔一些文字控制力和确定性一些文字标题一些文字在 InDesign 中编写脚本一些文字

将以下内容输出到控制台:

值得信赖的头衔控制力和确定性

标题xt在 InDesi 中编写脚本

前 2 个是正确的,但后 2 个弄乱了。如果我注释掉对添加超链接目标方法的调用,我会在控制台中看到正确的文本:

值得信赖的头衔控制力和确定性标题在 InDesign 中编写脚本

非常感谢任何帮助。

谢谢

最佳答案

将文本从结尾更改为开头。反转您的 for 循环,或者(更简单)更改返回找到的结果的顺序:

var results = app.activeDocument.findGrep(true);

(请参阅 an online reference 了解此处 bool 值的含义)。

它从头到尾不起作用的原因是因为您将结果列表存储到变量中,并且当您随后更改文本时它不会更新。不幸的是,这就是“插入超链接目标”的作用:它在运行文本中插入一个隐藏字符。从那时起,所有以前找到的位置都不再可信,因此您必须重新执行 findGrep 命令(并跳过第一个找到的结果) - 或者从头到尾处理结果开始,因此您所做的任何更改都不会影响您仍需要处理的文本。

关于javascript - 应用超链接目标时,Indesign 脚本 GREP 出现困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com