忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[InDesign]
複数段落選択中は各段落の先頭にタブを挿入するようにするスクリプト

前回に続いてメニューアクションにイベントリスナーをつける例をもう一つ。

InDesignではタブの入力は通常の文字入力と異なり、『タブを挿入』のメニューコマンドをタブキーに割り当てられたキーボードショートカットで実行するという形になっています。そこにイベントリスナーで処理を割り込ませ、特定の状況下で挙動を変えてやろうという試みです。具体的には複数段落にわたるテキストを選択している場合、各段落の先頭にタブが挿入されるようにします。さらにデフォルトでShift+Tabに割り当てられている『右インデントタブを挿入』では、各段落の先頭のタブを消去するようにしてみます。

使い方は前回と同様、以下のコードを拡張子jsxで保存してStartup Scriptsフォルダに入れるだけ。
"beforeInvoke"でメニューアクションの実行前に割り込み、条件に当てはまる場合はpreventDefaultで通常のタブ挿入をキャンセルしています。

#targetengine "CopipeCheck"
function addEL(obj, eventName, handler, name) {
    var el0 = obj.eventListeners.item(name);
    if (el0.isValid) el0.remove();
    obj.addEventListener(eventName, handler).name = name;
}

addEL(app.menuActions.itemByID(119698), "beforeInvoke", function (ev){
    var sel0=app.selection[0];
    if (sel0 && sel0.hasOwnProperty("paragraphs") && sel0.paragraphs.length>1){
        ev.preventDefault();
        app.doScript(function(){
            var paras=sel0.paragraphs.everyItem().getElements();
            for (var i=paras.length-1;i>=0;i--) paras[i].insertionPoints[0].contents="\t";
        },ScriptLanguage.JAVASCRIPT,[],UndoModes.ENTIRE_SCRIPT);
    }
}, "Tab1");

addEL(app.menuActions.itemByID(119673), "beforeInvoke", function (ev){
    var sel0=app.selection[0];
    if (sel0 && sel0.hasOwnProperty("paragraphs") && sel0.paragraphs.length>1){
        ev.preventDefault();
        app.doScript(function(){
            var paras=sel0.paragraphs.everyItem().getElements();
            for (var i=paras.length-1;i>=0;i--) {
                var c0=paras[i].characters[0];
                if (c0.contents=="\t") c0.contents="";
            }
        },ScriptLanguage.JAVASCRIPT,[],UndoModes.ENTIRE_SCRIPT);
    }
}, "ShiftTab1");
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)