主にInDesignによる新聞組版Tips中心です。Mac使いですが業務はWin多め。Win DTP Tipsを増やしたい

【InDesign】EDICOLOR機能を再現(4)オブジェクト作成後、自動で選択ツールに切り替え(2)

その(1)の続編です。

※停止スクリプト向けに内容を修正しました(2020.9.1)

※停止スクリプトの元ネタ・てんせーのLinkを、新サイトに修正(2021.12.11)


昨年4月に(1)の方法で一旦挫折した表題ですが、弊エントリーを見かけたあるふぁ(仮)さんが、Twitterでサクッと書いて下さいました。

素晴らしい、ズバリそのものです。転載を許可して頂きありがとうございます。今後もよろしk ←

Startup Scriptsなどに入れてお使い下さい。毎回自動で稼働するようになります。 Mac版はエイリアス

スクリプトパネル→ ユーザー(右クリック)→ エクスプローラー(Finder)で表示→ ここにStartup Scriptsフォルダを作成


長方形ツール等を使ったあと選択ツールになるようにする

※オブジェクト属性(パスオープン・クローズ等含む)が変化しないものは対象外(拡大縮小、回転、シアー、自由変形、スムーズ、グラデーション系、アンカーポイントの追加・切り替えツールなど)

※避けた方がいいもの:
文字=テキストツール(入力モードにした瞬間、選択ツールへ持ち替えてしまうよ)
ペンツール(新規アンカーを打つごとに選択ツールになってしまう)
アンカーの削除(いつ実行されるか予測が難しい)

//DESCRIPTION:何か作ったあと選択ツールになる

#targetengine tool1_v2022
f_= false;
t_= "|線ツール|長方形ツール|楕円形ツール|多角形ツール|長方形フレームツール|楕円形フレームツール|多角形フレームツール|横組みグリッドツール|縦組みグリッドツール|鉛筆ツール|"

app.toolBoxTools.addEventListener ("afterAttributeChanged", function(ev)
{
    if (t_.indexOf ("|" + ev.attributeValue + "|") >-1)
f_= true
    });
var listner = app.addEventListener("afterSelectionChanged", function(ev)
{
    if (f_)
    app.toolBoxTools.currentTool = UITools.SELECTION_TOOL, f_= false;
    });
listner.name = 'toolEvent';

EventListener afterAttributeChanged=属性が変更された時(after)のイベント

app.toolBoxTools.currentTool = UITools.SELECTION_TOOL=ツールのカレント(現在)を選択ツールにする

という内容。

この仕様を停止するには、下記のスクリプトを別途用意し

#targetengine tool1_v2022
app.eventListeners.itemByName('toolEvent').remove();

実行すると、デフォルトの仕様に戻ります。再度走らせるには、元のスクリプトをまた実行すればOK。

参考:てんせー

停止は以下でもOK。ちゃんと動きました

いずれもバージョンを同時に複数立ち上げる時には、#targetengine名の重複を避けて下さい(例の様に、バージョン名を末尾に追加するなど)

#targetengine tool1_v2022
listner.remove();

removeEventListeners というメソッドもあるらしいのですが、調べるとこれ少し面倒らしく、断念します。


あるふぁさん、ご指南ありがとうございます。多謝!

【InDesign】EDICOLOR機能を再現(4)オブジェクト作成後、自動で選択ツールに切り替え(1)

しばらく放置状態でした・・・すっかりMarkDownも忘れました

毎日なんとなく訪問者様があります、ありがとうございます。


Adobeさんは新規オブジェクトを作成後、ずっとそのツール(長方形ツールなど)に留まります。

そのままctrl(cmd)を押下すると一時的に選択ツールになり(※)、作成・移動(変形)の連続操作をシームレス且つ迅速に行えるというわけで、イラスト描きさんにはこの方が楽なのかもしれません。

※正確には、選択・ダイレクト選択のうち【前回使用した方】になる

ここが「一回作ったら即掴んで移動」で身についている人は、ツールの持ち替えにいちいち「全/半角キー→(半角Mode)V」と手順を踏まねばならず、更にWindowsはキーのフォーカスをいちいち奪われやすいため、時に「escのマッハ二度押し」も必要。マジイラつきます。マジ憎い、アクセラレーターキー。やや脱線


EDICOLORは新規作成後、必ず自動で選択ツールに戻る仕様となっています。意識せず即編集・移動作業へ移行できる。

逆に留めたい場合、Alt押下しながらツールをクリックでおけ。初級ユーザーを考慮し、且つユーザー側に選択権もある親切設計。素晴らしい設計思想だネッ!← いやマジで

InDesignのeventListnerでどうにか仕込めないか…と、2019.4開催DTPerのスクリプトもくもく会にてビッグ3、Yusukeさんこうちゃんさんお〜まちさんに相談しました。

が、上記のeventは「ちょっと現実的ではない」「他の方法は思いつかない」という回答。

結果、以下が妥協点です。


F1ショートカットキーに「選択ツールに持ち替え」スクリプトを割り当てる

(menuAction:選択ツールを選ぶ)

//DESCRIPTION:F1ショートカットキーに「選択ツールに持ち替え」スクリプトを割り当てる(らーで閣下)
// このスクリプトに、ショートカットキー「F1」を割り当てて下さい。
//(メニュー)編集→ キーボードショートカット→ 機能エリア=スクリプト→(このスクリプトに新規ショートカット)F1割当→ 保存(Myセットを保存)

#target "InDesign"
app.menuActions.item('$ID/Selection Tool').invoke();

要するにほぼ敗北ですが、仕方ない orz

因みに私はIllustratorも、選択を解除=F1にしています(escと連携しやすい)。

F1デフォルトはいわゆる「ヘルプ」ですが、単一で使え且つ扱いやすい位置というと、これが無難かなと。…Windowsは有効キーが少なくていけない。 escは選択トグル関係で外せないため、却下。WIN/変換/無変換はユーティリティを導入しないと使えない。


余談ですが、テキスト入力モードからフレーム選択状態へ(選択ツール)ショートカットは、デフォルトでesc。

これを一歩進んで、

選択を解除= esc(割り当て追加)
セル/テキストの選択へトグル= 削除(空欄)

f:id:chocomarine:20200821150155j:plain
機能エリア:テキストと表

で、escを完全に「入力モードのトグル」&「選択解除」に限定させてしまうと、世界が変わったかの様に色々と捗ります。

Yusukeさん、教えてくれて本当に感謝します!

あと個人的な悩みなんですが、表のセル内でタブ入れるのに適したショートカットキーって、何がいいでしょうかねえ。


※その2 に続きます

【InDesign】EDICOLOR機能を再現(3)【オブジェクトを均等アキに分布】

今回は、自作ではなくご紹介です。



こういうオブジェクト群があるとき、

f:id:chocomarine:20200529165125j:plain

我々が望む等間隔の整列(分布)とは

f:id:chocomarine:20200529165157j:plain

大体こうだろうと思うんですが、整列パネルの「分布」を使うと

f:id:chocomarine:20200529165236j:plain
整列(パネル)→(選択範囲に揃える)→ 分布(左)

f:id:chocomarine:20200604152205j:plain

結果はこうなります。違う、そうじゃない・・

そりゃま算数で数値を出したりひと手間加えれば出来ますが、速攻でやって欲しいわけです。



EDICOLORでは出来ます

f:id:chocomarine:20200529171358j:plain
公式ユーザーズガイド(v10)
も、もういいよね?出しちゃっても

で、これをInDesignで実現するには、スクリプトという事になります

dtptokadensyo.blog.fc2.com DTPとか電書(ゆう様)

この結果を得たい時は、整列パネルが必ずこうである必要があります

f:id:chocomarine:20200529172641j:plain
(チェック)選択範囲に揃える 間隔を指定=OFF

スクリプトを実行

属性

結果 ↓

f:id:chocomarine:20200529165157j:plain
だーーーーーーん
ただ配布のままだとctrl + Z一回で「実行前」までに戻れないので、下記にdoScript追加版を記します。


doScript(ctrl + Zで処理前まで戻れる)版(水平)

//DESCRIPTION:水平(左右)方向:均等アキ整列(CS6以降)
(function()
{
    app.doScript (Main, ScriptLanguage.JAVASCRIPT, null, UndoModes.FAST_ENTIRE_SCRIPT);
    function Main()
    {
        var 
        mD = app.activeDocument,
        mS = app.selection,
        selKey = mD.selectionKeyObject;
        if (dType)
        {
            var dType = mS[0].constructor.name;
            }
        if(mS == 0 || dType =="Text"|| dType =="Paragraph"|| dType =="TextColumn"|| dType =="Character")
        { //選択オブジェクトが左記以外ならなにもしない
            } else {  //何か選択していて、
                if (selKey == null)
                { //キーオブジェクトが選択されていなければ選択範囲内で、
                    mD.distribute (
                    mS,
                    DistributeOptions.HORIZONTAL_SPACE,  //水平方向に等間隔に分布
                    // DistributeOptions.VERTICAL_SPACE,  //垂直方向に等間隔に分布
                    AlignDistributeBounds.ITEM_BOUNDS,);
                    } else {  //キーオブジェクトを起点に、
                        var dis = prompt("左右何ミリ空きにしますか?","0","間隔を指定して、水平方向に等間隔に分布");
                        if(dis != null)
                        {
                            mD.distribute (
                            mS,
                            DistributeOptions.HORIZONTAL_SPACE,  //水平方向に等間隔に分布
                            // DistributeOptions.VERTICAL_SPACE,  //垂直方向に等間隔に分布
                            AlignDistributeBounds.KEY_OBJECT,
                            true,
                            dis+"mm",
                            mD.selectionKeyObject ,);
                            }else{
                                }
                            }}
                    }
                })();

doScript(ctrl + Zで処理前まで戻れる)版(垂直)

//DESCRIPTION:垂直(天地)方向:均等アキ整列(CS6以降)
(function()
{
    app.doScript (Main, ScriptLanguage.JAVASCRIPT, null, UndoModes.FAST_ENTIRE_SCRIPT);
        function Main()
        {
            var
            mD = app.activeDocument,
            mS = app.selection,
            selKey = mD.selectionKeyObject;

            if (dType)
            {
                var dType = mS[0].constructor.name;
                }
            if (mS == 0 || dType =="Text"|| dType =="Paragraph"|| dType =="TextColumn"|| dType =="Character"){ //選択オブジェクトが左記以外ならなにもしない
                } else {  //何か選択していて、
                    if (selKey == null)
                    { //キーオブジェクトが選択されていなければ選択範囲内で、
                        mD.distribute (
                        mS,
                        //DistributeOptions.HORIZONTAL_SPACE,  //水平方向に等間隔に分布
                        DistributeOptions.VERTICAL_SPACE,  //垂直方向に等間隔に分布
                        AlignDistributeBounds.ITEM_BOUNDS,);
                        } else {  //キーオブジェクトを起点に、
                            var dis = prompt("上下何ミリ空きにしますか?","0","間隔を指定して、垂直方向に等間隔に分布");
                            if (dis != null)
                            {
                                mD.distribute (
                                mS,
                                //DistributeOptions.HORIZONTAL_SPACE,  //水平方向に等間隔に分布
                                DistributeOptions.VERTICAL_SPACE,  //垂直方向に等間隔に分布
                                AlignDistributeBounds.KEY_OBJECT,
                                true,
                                dis+"mm",
                                mD.selectionKeyObject ,);
                                }else{
                                    }
                                }}
                        }
                    })();




因みに、「等間隔に分布」の使い方だけさらっと。

属性

f:id:chocomarine:20200529175337j:plain
「選択範囲に揃える」チェック時

【InDesign】条件テキストで文字校正 2/2(ブックのインジケーターを一括変更)

1/2より続き。(2023.12.30 スクリプト内confirm文章を、意味が通じやすいように修正)



前項で、条件テキストの使い方と実行スクリプトを説明しました。

この条件テキストとインジケーターを変更する事で、後からちまちまちまちまAcrobatでハイライトと注釈を書き込んだり(※ツラい)、そもPDF注釈機能など見てもらえない層の方々(涙)への質問事項などを、データに変更を与えず安全に可視化させる事ができるわけですが、

インジケーターの変更
「表示と印刷」にすると、PDFにも反映されます

インジケーター変更が、ドキュメントの「別名で保存」でないと更新されないことは前項に書きましたが、これがブックだった場合。

ドキュメントが数十統合されたブック

ひとつひとつ開いて全て別名保存。つらいしバカバカしい。

同期オプションの「条件テキスト設定」を実行してみましたが、

インジケーターはこの「条件テキスト設定」に含まれません。(なんでや)

ということで、えっちらスクリプトを書いてみました。



フォルダ内inddドキュメントのインジケーターを一括変更

//DESCRIPTION:条件テキストインジケーターを変更+上書き保存(らーで閣下)

(function(){
    flagA=confirm("次で指定するフォルダー内全ての*.inddに対して実行します。\rWinの場合ネットワーク内の通信が重くなるため、予め対象フォルダーをShift+→クリック→「パスのコピー」を取ってから実行して下さい。\r\r実行しますか?")
    if(flagA == false)
    {
        alert("終了します");
        exit();
        }
    else
    {
        var folderObj = Folder.selectDialog ("処理するInDesignファイルのあるフォルダを選択");
        if (! folderObj)
        { alert ("キャンセルが押されました。終了します"); exit(); }
        else
        {
            makeList (folderObj); // Dialog pathに対して、下の関数を実行
            function makeList (folderObj) // inddファイルを求める関数
            {
                // ファイルとフォルダを取得
                var fileList = folderObj.getFiles ("*.indd");
                var array = [];
                for (i=0; i<fileList.length; i++)
                // Windowsから見えるAppleDouble(._xxxx.indd)を除外
                if (fileList[i].name.match ("^[^\.]"))
                {
                    array.push(fileList[i]);
                    var arrayFile = app.open(array);

        /////////////////ここに処理を書く/////////////////////////
        app.activeDocument.conditionalTextPreferences.showConditionIndicators = ConditionIndicatorMode.HIDE_INDICATORS;
        /*
        HIDE_INDICATORS 1698908520 (隠す)
        SHOW_AND_PRINT_INDICATORS   1698908528 (表示と印刷)
        SHOW_INDICATORS 1698908531 (表示のみ)
        */
        /////////////////////////////////////////////////////////////

                    for (j=arrayFile.length-1; j>=0; j--)
                    {
                        var arrayFilePath = arrayFile[j].fullName;
                        var saveINDD = new File (arrayFilePath) ;
                        arrayFile[j].save(saveINDD);
                        arrayFile[j].close(SaveOptions.no);
                        }
                    }
                }

            }
        })();

※不可視ファイル(AppleDouble)除外版に差し替えました(2020.6.17)


単純なものしか書けませんごめんなさい

これだと別名保存と同じ意味合いになり、インジケーター変更も更新されます。

適用したくないドキュメントは、別フォルダを作り一時退避させて下さい。(子フォルダ内は処理しません)


フォルダ内の一括処理、また再帰処理などのテンプレには、いつもこちらを参考にしています。

rokuyan.hatenablog.com

tu-kazu.jp http://nakatoji.lolipop.jp/index.php/extendscript/js-gen/jslist/9-2014-05-09-04-06-48nakatoji.lolipop.jp

下記のは、1年前の私には紐解くに能力不足だった・・・・

uske-s.hatenablog.com

cs5.xyz

今ならもう少し理解できそう。

 

追記:

鯵ぼんさんが、「ブックのドキュメントからパスを取得する」という指定にしたら再帰処理要らないやろ、とアドバイスを!

さあ、続きを待て!←

 

-----------翌日談------------

鯵ぼんさん、Uskeさんのお叱りを受けながら()頑張ってみました。

ブックコンテンツの条件テキスト・インジケーターを一括変更

//DESCRIPTION:Bookの条件テキストインジケーターを変更(らーで閣下)

    (function(){
    flagA = confirm ("activeBookが対象です。「1つだけ」開いていますか?");
    if (flagA == false)
    {
        alert("対象ブックを開いてからやり直して下さい。\r\r【終了】");
        exit();
        }
    else
    {
        var myBook = app.activeBook;
        var myBookContents = myBook.bookContents;
        for (i=0; i<myBookContents.length; i++)
        {
            var fileObjPath = myBookContents[i].fullName;
            app.open(File(fileObjPath));
            var myDoc = app.activeDocument;
            myDoc.conditionalTextPreferences.showConditionIndicators = ConditionIndicatorMode.SHOW_INDICATORS;
            /*
                HIDE_INDICATORS 1698908520 (隠す)
                SHOW_AND_PRINT_INDICATORS   1698908528 (表示と印刷)
                SHOW_INDICATORS 1698908531 (表示のみ)
                */
            var saveINDD = new File(fileObjPath) ;
            myDoc.save(saveINDD);
            myDoc.close(SaveOptions.no);
            }
        }

    })();

 

これなら不可視ファイルも、ブック対象外inddも拾わずに済みますね。

毎度至らない永遠の末弟子(ぇ?)ですが、いつもいつもありがとうございます!!

試行錯誤しながらのエントリーだったので、散漫になってしまいましたね。(反省)

※エラー処理を追加しました
※細かい記述ミスを修正しました(ごべんなさい)
※不可視ファイルについて文章と記述を修正しました
※(2023.12.1)最初のconfirm文章を直しました

不可視ファイルについては、そのうち別に纏めたいと思っています。

【InDesign】【JavaScript】条件テキストで文字校正(ハイライトで可視化)1/2

みんな大好き、条件テキスト えっっ違う?

(2021.9.9)ネタ元のTenさんリンクを、お引越し先へ修正しました



そもそもの使い方は多分こちらなんですが

f:id:chocomarine:20200525162352j:plain
だーーーっと入力しておいて、それぞれの月の条件テキストを付ける
f:id:chocomarine:20200525162511j:plain
ひとつだけを目玉ONにすると
f:id:chocomarine:20200525162550j:plain
f:id:chocomarine:20200525162840j:plain
5月ボタン1つで、一度に切り替わる

5月Mayという「条件」を作り、関連した文字列を選択し設定をクリック。後は目玉ひとつで切り替え。

数十、数百の統一修正箇所を都度入力し直すのは大変&見逃し・取りこぼしが起こります。またその為のチェックに時間、人的資源も必要でコストが嵩む。

そんな無駄を一気に解消できる便利機能です。

欠点らしい欠点といえば、英数字の横幅を桁数によっての切り替えが出来ない事(スタイルかレイヤーの切り替えで対処は可能)



が、カタログ仕事とかでないと、この用途で使う機会があまり巡ってきません。

随分昔で定かでありませんが、Twitterで業務上の何かを愚痴っていた時Tenさんが、

条件テキスト(ハイライト)を正規表現で一発セットするjsx

を書いて下さり、以来「テキストのチェック機能」として超有効活用しています。いや、手動で検索できr(ゴホンゴホン

でもこのページ、何故か「条件テキスト」の一言がページ上にないため、「ハイライト」でしか検索で辿り着けません。周りにも知ってる人が殆どいない。実に勿体ない。こんなに便利なのに!!

ということで、改めて紹介&補助Tips(jsx)です。

条件テキストにはこんな便利な使い方もあるんですよと、広く知って貰いたい。

highlightってとっても便利ですよねぇ〜 | Automation Skill

またまたhighlight | Automation Skill

Glyphをハイライトしてみよう | Automation Skill


応用した正規表現検索バージョンが、以下。

正規表現でハイライト(条件テキスト)を付ける

flag = confirm ("「葛」ハイライトチェック\r\r「葛」字形を一時的にR250(レッド)表示。\r実行しますか?(らーで閣下)");

if (flag)
{
    // 邪魔なハイライト群を非表示
    var myDoc = app.activeDocument;
    var myTextPrefs = myDoc.textPreferences;
    myTextPrefs.highlightSubstitutedFonts = false; //代替フォント= OFF
    myTextPrefs.highlightSubstitutedGlyphs = false; // 代替字形OFF
    myTextPrefs.highlightKinsoku = false; // 組版→禁則OFF
    myTextPrefs.highlightCustomSpacing = false; // 組版→カスタマイズされた〜OFF
    myTextPrefs.highlightHjViolations = false; // 組版→H&J違反OFF
    myTextPrefs.highlightKeeps = false; // 組版→H&J違反保持OFF

    // 検索置換条件の初期化
    app.findGrepPreferences = null; // 検索形式
    app.changeGrepPreferences = null; // 置換形式
    // if (myDoc.conditions.item ("葛チェック") != null) 
    // myDoc.conditions.item ("葛チェック").remove();

    // main ----------------------------------------------------
    myDoc.conditions.add (
    {
        name: "葛チェック", 
        indicatorColor: [250,0,0], //(RGB指定)
        indicatorMethod: ConditionIndicatorMethod.useHighlight
        });
    // useUnderline=下線 useHighlight=ハイライト
    app.findGrepPreferences.findWhat = "\u845B"; // 検索正規表現
    app.changeGrepPreferences.appliedConditions = ["葛チェック"];
    myDoc.changeGrep();

    // 使用した検索置換条件を消去
    app.findGrepPreferences = null; // 検索形式
    app.changeGrepPreferences = null; // 置換形式
    // mainここまで---------------------------------------------
    // 複数作る場合、mainをここに複製・編集

    myDoc.layoutWindows[0].screenMode = ScreenModeOptions.previewOff; //スクリーンモードの変更
    }
else
{
alert ("処理を中止しました");
}
alert ("end:\r視認チェック後、環境設定→組版から「代替フォント」のハイライトをONに戻して下さい");

大昔(9年前!)に書き散らしたままなので、今見ると落ち度があるかもしれない…

記述内「葛チェック」となっているところが、条件テキスト名になります。

条件テキスト設定(お〜まち様)

indesign.cs5.xyz

f:id:chocomarine:20200526011211j:plain
連続で検索置換をかける or スクリプト内で記述を複製する

※注! チェック用途の場合、パネルの目玉は絶対「非表示」にしないで下さい!ハイライトではなく、文字自体が見えなくなります

f:id:chocomarine:20200526011041j:plain
(例)こんなミスチェックに使います

インジケーターを「表示と印刷」にすると、お客様へのPDFや校正紙にハイライトを印字することができます。

f:id:chocomarine:20200526012342j:plain
f:id:chocomarine:20200526012615j:plain

不要になったら、インジケーターを「隠す」もしくは条件設定を削除(ゴミ箱アイコン)でOK。

このインジケーター設定は上書き保存では変更が更新されず、必ずドキュメントを「別名で保存」する必要があります。

しかし私ときたら、9年前から今とレベルが大して変わってないのですね orz

2/2へ続く→

【InDesign】【行取りと段落行取りを一度に処理】【11字以上の行取りが可能】行取り専用パレット

・・・・・・また予告をガン無視しました。 そんなもんです←

※説明に「11字以上の行取りを設定」を追加(2021.4.22)

f:id:chocomarine:20200522100615j:plain
段落パネル→ 行取り
f:id:chocomarine:20200522100905j:plain
段落パネル→ オプション→ 段落行取り

この2つ、何故パネルにチェックボックスで並べようという発想がないのか。隣にちゃんとエリアが空いているのに。

二度手間ですよね。ほぼセットだし。なので、ちょっとした小物です。コントロールの端にでも常駐させて下さい。

f:id:chocomarine:20200525120027j:plain
行取りPanel(段落行取り強制)

※入力0で「自動」且つ「段落行取りOFF」(=行取り解除)


Mac利用の場合、若干不具合あります。こちらも参照下さい。

* アプリケーションフレームOFFで、コントロールやパネルの背面に潜ってしまう

*パネルオプションを開くなどのアクションで、ドキュメントの背面に潜ってしまう

アプリケーションフレーム・アプリケーションバーを適宜ON/OFFしてからドキュメントをずらし、背面から手前に引き出して下さい やってらr(

f:id:chocomarine:20200522115056j:plain
アプリケーションフレームOFF(パネル・コントロールの背面に回る)
f:id:chocomarine:20200522115153j:plain
アプリケーションバーのみON→ 背面にいるパレットをドキュメントの手前に引き出し→ アプリケーションフレームON

Mac版CCは手元に環境がなく、検証できません。


更にこちらは、通常段落パネルからは最大10字までだった行取りを、制限なしに設定可能になります。むしろこちらの方が、大きなメリットかも。

段落パネルで11字以上を指定すると、はじかれます


最小化ボタンでうっかりたたんでしまった場合、Windowsの方はタスクバーから、Macの方はDockから取り出して下さい。(ショートカットでもいいけど)

行取り専用パレット

//DESCRIPTION:(段落)行取り専用パレット・Windows最適化(らーで閣下)
// 段落行取り強制
// 後年InDesignのバージョン変更に伴いレイアウトが崩れるようなら、ワイズ(サイズ)・スペーシング・マージン既定行をエスケープして下さい。(行の先頭に半角スラッシュ2つ)2020.5
#target indesign
#targetengine "GyoDORI"

alert ("Mac版…\rパレットが背面に隠れる場合、アプリケーションフレーム・アプリケーションバー表示を適宜ON/OFFし、前面に引き出して下さい\rWin版…\r「最小化」でたたんでしまった場合、タスクバーから戻して下さい");

var win = new Window("window","行取りPanel");
    win.orientation = "row";
    win.alignChildren = ["center","center"];
    win.spacing = 4;
    win.margins = 4;
    win.add('statictext', undefined, '(段落行取り ON)0=自動');
        var edittext1 = win.add("edittext",[10,7,40,30],"2");
        button1 = win.add("button", undefined, undefined, {name: "OK"});
        button1.text = "実行"; 
        button1.preferredSize.width = 60;
win.show();

button1.onClick = function()
{
    GyoDORI = parseInt (edittext1.text);
    sel = app.selection;
    if (sel == 0)
    {
    alert ("対象の段落を選択して下さい"); return;
    }
else
{

    app.doScript (main, ScriptLanguage.JAVASCRIPT, null, UndoModes.FAST_ENTIRE_SCRIPT);
    function main()
    {
        for (var i=0; i<sel.length; i++)
        for (var j=0; j<sel[i].paragraphs.length; j++)
        if (GyoDORI >0)
        {
            sel[i].paragraphs[j].paragraphGyoudori = true; 
            sel[i].paragraphs[j].gridGyoudori = GyoDORI;
            }
        else if (GyoDORI == 0)
        {
            sel[i].paragraphs[j].paragraphGyoudori = false; 
            sel[i].paragraphs[j].gridGyoudori = GyoDORI;
            }
        else
        { alert ("不正な入力です(全角不可)"); return; }
            }
        }

    }

段落行取りのみパレット

常駐パレットなら、小さければ小さいほど良し(?)

f:id:chocomarine:20200525120231j:plain
これ以上小さくは無理だった

//DESCRIPTION:段落行取りのみ(らーで閣下)
// 後年InDesignのバージョン変更に伴いレイアウトが崩れるようなら、ワイズ(サイズ)・スペーシング・マージン既定行をエスケープして下さい。(行の先頭に半角スラッシュ2つ)2020.5

#target indesign
#targetengine "DanGyoDORI"
alert ("Mac版…\rパレットが背面に隠れる場合、アプリケーションフレーム・アプリケーションバー表示を適宜ON/OFFし、前面に引き出して下さい\rWin版…\r「最小化」でたたんでしまった場合、タスクバーから戻して下さい");

var win = (function () {
    var win = new Window("window"); 
    win.text = "段落行取り";
    win.preferredSize.width = 220;
    win.orientation = "row"; 
    win.alignChildren = ["center","center"]; 
    win.spacing = 4; 
    win.margins = 4;
    var checkbox1 = win.add("checkbox", undefined, undefined, {name: "checkbox1"}); 
        checkbox1.text = "段落行取り"; 
        button1 = win.add("button", undefined, undefined, {name: "OK"}); 
        button1.text = "実行"; 
        button1.preferredSize.width = 60; 
win.show();

button1.onClick = function()
{
    sel = app.selection;
    if (sel==0)
    {
        alert ("対象の段落を選択して下さい"); return;
    }
else
{
    app.doScript (main, ScriptLanguage.JAVASCRIPT, null, UndoModes.FAST_ENTIRE_SCRIPT);
    function main()
    {
        for (var i=0; i<sel.length; i++)
        for (var j=0; j<sel[i].paragraphs.length; j++)
        if (checkbox1.value)
        { sel[i].paragraphs[j].paragraphGyoudori = true; }
        else
        { sel[i].paragraphs[j].paragraphGyoudori = false; }
        }
    }
}

})();

たまたまタブ込みでコピペしたらまぁ不思議、念願のシンタックスカラーが← ※実話(行き当たりばったり)

functionが重なる以外は非常に単純な内容ですね。(いつまでも初級者)サイズやマージンの既定は悪手なのかなぁとも思いますが、小さくしたかったんですよ… 後年InDesignのバージョン変更に伴いレイアウトが崩れるようなら、これらの行をエスケープして下さい。

私の記述はやたら改行が多く行を無駄に取ってますが、まだカッコを明確に視認しながらじゃないと不安なんです… いつまでも初k

リネーマー【練馬】親ディレクトリから名前を部分的に取得

急遽、自分用の備忘録です。

前回、EDICOLOR対策連載予定なんて大きくぶっこいたクセにコレですよ。まあそんなもんです←

練馬(NERIMA)

yamatan.jpn.org

ウチのRIP下版システムは、銘柄コード・種類・号数・ページNo・サイズ等を正確に命名UPしないと、正常処理できません。

…みんな手作業でリネームして、よく間違えないなと。私は自信ない。いえ、結構事故は起きt(

これに落ち着いた理由は、

  • ファイル名・親フォルダ名から文字列を抜き出す自由度が高い

    ところ。

    会社組織だと、ドキュメントやディレクトリー名称を個人の自由に出来ないんですよ…リネーマー重要。

    でこれ、Windows用フリーツールの常で、操作が非常に分かり辛い。特に設定の作り方。日が空くと必ず忘れ去る。

    ヘルプがあるにはあるんですが、

    f:id:chocomarine:20200415113108j:plain
    ヘルプ→トピック→練馬ヘルプ→使用方法→複合処理
    記録開始…そうじゃない、基本の登録順序とかをしっかり知りたいの!

    ヘルプじっくり読めばそのうち思い出すけど、大抵は即使用する必要があって瞬時に思い出したいのです。

    ということで、備忘録です。

(ダウンロード)

f:id:chocomarine:20200415112418j:plain
TOP→PRODUCT→ファイル操作
よほど理由がない限り、Unicode版をダウンロードして下さい。x64版は出るんでしょうかね・・ Vectorに飛ばされるので、「今すぐダウンロード」。解凍後、どこに置いてもOK。

やりたいこと

  • 英数字を半角に統一

  • 先頭に銘柄コードを付加

  • ディレクトリから号数下1桁を取得

  • ファイル名から2桁ノンブルを取得(3桁にするためその前に0を付加)

  • 版サイズコードを付加(BかT)

複合処理設定を作成する

1)複合処理タブ→ 右ペイン「登録名」入力(※命名自体は最後でも可です)

f:id:chocomarine:20200415140925j:plain
左ペインの既存設定には影響しないので、選択状態でも大丈夫
2)フィルタタブ→ 左ペイン「全半角変換」→「全角→半角」ダブルクリック
f:id:chocomarine:20200415141150j:plain
今回関係ないんですが、作法として一応半角カタカナはOFF
3)メニュー「記録」→ 追加 f:id:chocomarine:20200415141325j:plain 複合処理に、まず「全角→半角」が追加される
f:id:chocomarine:20200415141442j:plain
まだ左ペインに設定登録はされない
4)マクロタブ→ 右ペイン「ファイル名」に以下を記述
f:id:chocomarine:20200415141525j:plain
記述は、メニュー→ ヘルプ→ 練馬基本マクロヘルプ を参照
012… 銘柄コード
/o<5,1>… 親フォルダ名の5字目から、1字だけを抜き出し(号数の下1桁)
0… ページ番号を3桁表示にするための0
/f<7,2>… ファイル名の7字目から、2字だけを抜き出し(ページ番号2桁)
B… サイズコード(ブランケット)

5)メニュー「記録」→ 追加 f:id:chocomarine:20200415141708j:plain 6)複合処理→ 左ペイン内を右クリック→ 登録

f:id:chocomarine:20200415141846j:plain
何か選択していても、上書きはしません
これで、マイ複合処理設定ができました。
f:id:chocomarine:20200415142031j:plain
左ペインに、分類フォルダを作る事もできるようです

リネーム運用

1)ドキュメントを、決められたディレクトリにまとめて置きます

f:id:chocomarine:20200416130744j:plain
(親フォルダ)の直下
2)練馬「ファイル選択」タブ→ 右ペイン or 下ペインに纏めてドロップ
f:id:chocomarine:20200415145535j:plain
右・下どちらでも可

何故か個別追加は上手くできなかった為、まとめて一気にドロップします(個別削除はできた)

3)複合処理→ 左ペインの設定をダブルクリック→ 処理が入る→ 変換

f:id:chocomarine:20200415145910j:plain

「複合処理」の下ペインで正しいリネーム結果を確認できたら、そのまま「リネーム実行」タブへ移動 f:id:chocomarine:20200415150148j:plain
ここで「リセット」を押すと、取り消しになります

5)「リネーム実行」タブ→ 「チェック」押す f:id:chocomarine:20200415150507j:plain

6)上ペインで再度結果を確認し、「実行」で確定。 f:id:chocomarine:20200415150755j:plain

実データを見てみると f:id:chocomarine:20200415150940j:plain

/o/fから取り出す時の数え方は「0」スタート。全半角は関係ナシ。

範囲=個数は1スタート(1、2、3)で数えます。練馬マクロヘルプを参照下さい。

尚、設定を作らず現在あるテンプレートからリネームする場合は、

f:id:chocomarine:20200415152457j:plain
練馬メニュー「ヘルプ」→ トピック より
目当ての処理があるタブから「変換」→ リネーム実行タブ でチェック・実行をかけます。

「リネーム実行」タブに行く前までは、複数の処理を次々連続でかけられます。作った設定と違う例外が発生した場合、各タブからひとつひとつ実行する事で対処します。

作者さんのページに、ドキュメント内のテキストを拾って名前を付けたりするプラグインもあるようです。

またアーカイブ内のリネーム、ドキュメント名のUnicode文字変換や正規化、Exif情報付加など色々できるよう。

その辺、既に対応アーカイバや他のツールで済ませてしまっているので、これらの機能は全然使いこなせていません…リネームは殆どAdobe Bridgeですし。

不満点は、

  • 設定の書き出し・読み込みができない? バージョンアップで設定を持ち込めない。割と致命的

  • 更に上位のフォルダ名から取得できない フレキシブルリネーマーだと確か名称全てになってしまった

  • 比較的順調にバージョンアップされている方ですが、将来性。

    ひょっとしたら読めていないマニュアルに書いてあるのかもしれませんが←

    しかしこういう業務だと本来は、決められたホットフォルダに投げて銘柄を指定するだけでリネームしてくれる確実なシステムが欲しいところ。(そんなものを作れる実力はない)

最後に

rinameって、何ですからーでさん!!orz