公開日:2018年4月19日
丸数字の番号を1ずつ上下するスクリプトです※。途中で丸数字の項目に削除の指定が入り、他の番号を動かさないといけないときなどに有効です。
※[箇条書き]機能を使っている場合は、このスクリプトの出番は少ないでしょう。
1.スクリプトを実行すると、「丸数字をひとつずらす」ウインドウが表示されます※。
※「palette」で表示しているので、ウインドウを閉じない限りはずっと表示されています。各種パネルのような感じで使えるということで。
title=”スクリプトを実行”/>
2.テキストの丸数字を選択して、[▲]ボタンをクリックすると、丸数字の番号が上がります。[▼]ボタンでは番号が下がります。
/*
選択している文字が丸数字なら次の番号にする
動作チェックは、Windows10/InDesign CS5、Mac10.11、InDesign CC 2018で行なっています。
黒丸数字、51以降の丸数字には非対応
*/
#target indesign
#targetengine "MaruSuu"
//UI表示
var decW = new Window("palette","丸数字をひとつずらす",[0,0,170,120]);
decW['plus']=decW.add('button', [20,20,145,50],"▲");
decW['minus']=decW.add('button', [20,70,145,100],"▼");
decW.center();
var diaShow=decW.show();
decW['plus'].onClick=function(){
plus();
decW.destroy();
}
decW['minus'].onClick=function(){
minus();
decW.destroy();
}
//選択文字のユニコード番号を呼び出す
function CHARCODE(){
var doc=app.activeDocument;
var sel=doc.selection[0];
var con=sel.contents;
var StC=con.charCodeAt(0).toString(16);
return [sel,StC] ;//選択したオブジェクトの種類と文字のコード番号を返す
}
//番号増やす
function plus(){
var m=CHARCODE();
var RNUC=["2460","2461","2462","2463","2464","2465","2466",
"2467","2468","2469","246a","246b","246c","246d","246e",
"246f","2470","2471","2472","2473", "3251","3252","3253",
"3254","3255","3256","3257","3258","3259","325a","325b","325c",
"325d","325e","325f","32b1","32b2","32b3","32b4","32b5",
"32b6","32b7","32b8","32b9","32ba","32bb","32bc","32bd","32be","32bf"];
//①-㊿までをユニコードで取得
if(m[0].constructor.name=="Character"){
for(var i = 0; i < RNUC.length-1; i++){//50でストップ
if(RNUC[i] === m[1]){
i++;
var UCtC=parseInt("0x"+RNUC[i],16);
m[0].contents=String.fromCharCode(UCtC)
break;
};
};
}else{
//文字を選択していなかった場合はスルー
};
}
//番号減らす
function minus(){
var m=CHARCODE();
var RNUC=["2460","2461","2462","2463","2464","2465","2466",
"2467","2468","2469","246a","246b","246c","246d","246e",
"246f","2470","2471","2472","2473", "3251","3252","3253",
"3254","3255","3256","3257","3258","3259","325a","325b","325c",
"325d","325e","325f","32b1","32b2","32b3","32b4","32b5",
"32b6","32b7","32b8","32b9","32ba","32bb","32bc","32bd","32be","32bf"];
//①-㊿までをユニコードで取得
if(m[0].constructor.name=="Character"){
for(var i = RNUC.length; i >0; i--){//1でストップ
if(RNUC[i] === m[1]){
i--;
var UCtC=parseInt("0x"+RNUC[i],16);
m[0].contents=String.fromCharCode(UCtC)
};
};
}else{
//文字を選択していなかった場合はスルー
};
};
return文を初めて使いました。
ところで、このスクリプト書くために「配列内に特定のものがないか探す方法」をググっていて、ECMAScript 5では配列に対してindexOf()
が使えることがわかったんですが、Adobeのアプリで使えるのはまだECMAScript 3(1999年の規格)なので配列.indexOf()は使えず頭から探す方法に。
新しいQuarkXPressではこういうところに目をつけてきたのか、ECMAScript 8対応でスクリプトが使えるようなので、どうかAdobeさんも対応お願いします…
こちらは丸数字上げ下げの派生版で、“選択している文字が「あ」なら「い」にする”のように50音を前後の音にするものです。
[あ-ん]は[箇条書き]機能で付加できない自動番号スタイルなので、このスクリプトはそれを少しでも補うためのものです。
手順は丸数字上げ下げと同様なので割愛します。
[<]ボタンでひとつ前の音に、[>]でひとつ後の音になります。