indesign 脚本中“&”的正确转义
Proper escape for "&" in an indesign script
我有一个用于 indesign 的脚本,可以用用户指定的文本替换文本元素中的一些文本。有时该文本包含 &
,每次出现时 indesign 脚本都会搞砸。我已经尝试了所有常见的转义字符 "/,\,^,..."
等,但它们不起作用。
有趣的是,如果我通过 indesign 界面在文本替换对话中放置一个符号,我不需要转义它。任何人都知道如何解决这个问题?我试过谷歌搜索,但没有找到相关信息。
//@target indesign
//open template
var template = app.open("/Users/pad/Desktop/PAD Master Templates/B-MASTER.indd");
main();
function main(){
//hide all layers
var doc = app.activeDocument;
for (var i = 0; i < doc.layers.length; i++) {
var item = doc.layers[i];
item.visible = false;
}
//show appropriate design layer
var padFont = doc.layers.item("Font");
padFont.visible = true;
var padArt = doc.layers.item("Artwork");
padArt.visible = true;
var links = doc.links;
var link;
var update = false;
for (var i = links.length-1; i >= 0; i--) {
link = links[i];
if (link.name == 'some_design.eps') {
newLink = new File(link.filePath.replace('some_design.eps', "new_design.eps"));
update = true;
}
if (update == true && newLink.exists) {
link.relink(newLink);
try {
link.update();
}
catch(err) {}
}
}
//Find and replace text.
app.findTextPreferences = NothingEnum.NOTHING;
app.changeTextPreferences = NothingEnum.NOTHING;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.findWhat = "line 1";
//this is a line where I need to escape the "&"
app.changeTextPreferences.changeTo = "R&T";
doc.changeText();
app.findTextPreferences.findWhat = "line 2";
//this is a line where I need to escape the "&"
app.changeTextPreferences.changeTo = "Q&A";
doc.changeText();
//Exprt as jpeg
doc.exportFile(ExportFormat.JPG, "/path/name.jpg");
//Close the file without saving.
doc.close (SaveOptions.NO);
}
尝试转义("Q&A")。参见:https://www.w3schools.com/JSREF/jsref_escape.asp
document.write(escape("Q&A"));
修改indesign文档的字体和页面布局后,错误不再出现。不能说是什么原因造成的,但我们改变了一些东西来修复发生的一切。感谢您的建议!
我有一个用于 indesign 的脚本,可以用用户指定的文本替换文本元素中的一些文本。有时该文本包含 &
,每次出现时 indesign 脚本都会搞砸。我已经尝试了所有常见的转义字符 "/,\,^,..."
等,但它们不起作用。
有趣的是,如果我通过 indesign 界面在文本替换对话中放置一个符号,我不需要转义它。任何人都知道如何解决这个问题?我试过谷歌搜索,但没有找到相关信息。
//@target indesign
//open template
var template = app.open("/Users/pad/Desktop/PAD Master Templates/B-MASTER.indd");
main();
function main(){
//hide all layers
var doc = app.activeDocument;
for (var i = 0; i < doc.layers.length; i++) {
var item = doc.layers[i];
item.visible = false;
}
//show appropriate design layer
var padFont = doc.layers.item("Font");
padFont.visible = true;
var padArt = doc.layers.item("Artwork");
padArt.visible = true;
var links = doc.links;
var link;
var update = false;
for (var i = links.length-1; i >= 0; i--) {
link = links[i];
if (link.name == 'some_design.eps') {
newLink = new File(link.filePath.replace('some_design.eps', "new_design.eps"));
update = true;
}
if (update == true && newLink.exists) {
link.relink(newLink);
try {
link.update();
}
catch(err) {}
}
}
//Find and replace text.
app.findTextPreferences = NothingEnum.NOTHING;
app.changeTextPreferences = NothingEnum.NOTHING;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.findWhat = "line 1";
//this is a line where I need to escape the "&"
app.changeTextPreferences.changeTo = "R&T";
doc.changeText();
app.findTextPreferences.findWhat = "line 2";
//this is a line where I need to escape the "&"
app.changeTextPreferences.changeTo = "Q&A";
doc.changeText();
//Exprt as jpeg
doc.exportFile(ExportFormat.JPG, "/path/name.jpg");
//Close the file without saving.
doc.close (SaveOptions.NO);
}
尝试转义("Q&A")。参见:https://www.w3schools.com/JSREF/jsref_escape.asp
document.write(escape("Q&A"));
修改indesign文档的字体和页面布局后,错误不再出现。不能说是什么原因造成的,但我们改变了一些东西来修复发生的一切。感谢您的建议!