2018年03月27日

InDesign上の表組みを上下に2分割するスクリプト

DTP作業者にとっての難易度 ★☆☆☆☆(1)

【2018.4.5にサンプルデータを追加しました(15時に更に修正)】

InDesign上の表組みを上下に2分割するスクリプトを書いてみました。使い方は「上側の行(またはセル)を選択→スクリプトを実行」と、とても簡単です。ヘッダやフッタが存在しても動作します。では動画をご覧ください。

短いスクリプトですが、表組みを扱う際に覚えておきたい内容がいくつも含まれています。自分で覚えておくためにも今回ブログにアップしておくことにしました。

[メモ]今回勉強して分かったこと

・cellのparentはtable、tableのparentはtextframe。
・storyをつかまえたい時はtextframeのparentStoryで。
・tableが挿入されている位置はstoryOffset.indexで取得できる。
・tableをペーストする位置はinsertionPoints[index]で指定する。
サンプルデータはこちら《split_table_0326c.zip》です。

サンプルデータを追加しました(2018.4.5・15時)

クリップボードを使わずduplicateで表を複製するように書き換えたものです。
使用方法は先に公開したものと同じです。
サンプルデータ(2018.4.5・15時追加分)はこちら《split_table_dupPara_0405b.zip》です。
posted by 照山裕爾 at 02:22| Comment(5) | InDesign-その他の機能 | このブログの読者になる | 更新情報をチェックする

2017年05月30日

文字スタイル部分・下線部分などを索引化する【改良版】

DTP作業者にとっての難易度 ★☆☆☆☆(1)

※2017.8.27にサンプルデータを更新(置換の設定ミスでいくつかのアルファベットが削除される問題を修正しました)

※2017.9.14にサンプルデータを更新

※2019.2.21にスクリプトを含むサンプルデータを更新


以前『文字スタイル部分・下線部分などを索引化する』で索引用テキストを抽出するJavaScriptをご紹介しました。私自身は便利に使っているのですが、文字スタイル名や下線などの設定を変更するにはJavaScriptファイルそのものを書き換える必要があり、あまり使いやすくない(かなぁ)と感じてきました。今回は、手軽にダイアログで操作できるように改良してみました。

まずは動画をご覧ください。
以下、簡単に説明します。

文字スタイルから索引用テキストを抽出する

0529-003.png

InDesignドキュメントを表示した状態でスクリプトを実行するとダイアログが表示されます。ドロップダウンリストにはドキュメントに設定されている文字スタイルがすべて表示されますので、索引化したいものを選択して実行してください。テキストファイルはドキュメントと同階層に生成されます。

●文字スタイルの取得にはInDesignerの悪あがき(DOTさん)の『グループ化された段落スタイルを取得』を使わせていただきました。


下線・打ち消し線・文字色から索引用テキストを抽出する

0529-002.png

こちらも同様にダイアログが表示されます。必要な項目をチェックし、ドロップダウンリストから線種や色(スウォッチ名)を選択してください。

●先日開催された「DTPerのスクリプトもくもく会」で@Uske_Sさん、@AJABONさんからダイアログについていろいろ教えていただいたおかげで形にすることができました。ありがとうございました。


複数の索引用テキストを合体してソートする

こちらはオマケのスクリプトです。複数の索引用テキストが入ったフォルダを選択して実行すると、それらの内容を合体した上でソートし、重複項目を整理します。合体したテキストファイルは元フォルダと同階層に生成されます。

いずれも、いつにも増して手探りで書いたスクリプトなのでお試しになる際は十分にテストされるようお願いします。

★2017.8.27、2017.9.14にサンプルデータを更新

サンプルデータ(2017.9.14)はこちら《sakuin_new_0914a.zip》です。


スクリプトを更新しました(2019.2.21)

内容を知りたい方は以下を参照ください

旧スクリプトを使っていて困ったことがありました。あるドキュメントで見開きをまたぐフレームグリッドに本文を流していたのですが、左ページに存在する用語も右ページに存在する用語も索引を抽出すると“同じページに存在する”と認識されてしまったのです。

※縦組みで傍注を設けたいと考え、やむなく左右ページをまたぐフレームを使用しました。

gz011.png

旧スクリプトは「その用語を含むテキストフレーム(フレームグリッド含む)が“どのページに置かれているか”」を抽出するものでした。“どのページに置かれているか”は、そのフレームの左右中央の座標で判断されるようです(詳しくはUske_Sさんのhttp://uske-s.hatenablog.com/entry/2017/08/13/132800を参照)。ですから同じフレームに属していれば用語自体が左右どちらのページに表示されていても“同じページに存在する”と認識されてしまうわけです。

※同じ座標に置かれた同じサイズ(パレットの数値上)のフレームでも作成手順によって“右ページに存在する"と認識されたり“左ページに存在する"と認識されたりすることがありました(ガイドへの吸着などの作業手順が怪しい印象)。ここを正しく処理するのは面倒ですし、目で見て確認しづらいので危険だと思いました。


こちらが今回のスクリプトで処理した結果です。左右ページが正しく認識されています。
gz013.png

今回考えた解決方法は単純です。たとえば縦組みで用語(正しくは用語の先頭文字の左上角)が左ページに存在する(これはhorizontalOffsetで取得)のに得られたページが偶数だった場合、「見開きの左ページに存在するんだから奇数でなければおかしい」と考え、得られたページの値に1を加える……などといった処理をおこないます。「縦組み/横組み」×「偶数/奇数」の計4パターンしか存在しないのでさほど負担はありませんでした。
gz001.png

なお、矛盾が生じていない用語については無視されますので旧スクリプトと同様に同じように抽出されます。

あれこれ試しながら組み立てたスクリプトです。何らかのミスが潜んでいる可能性もありますので運用は慎重に、十分テストした上でご使用ください。
サンプルデータはこちら《sakuin_2019_0221a.zip》です。
posted by 照山裕爾 at 04:04| Comment(0) | TrackBack(0) | InDesign-その他の機能 | このブログの読者になる | 更新情報をチェックする

2017年02月01日

必要なページを抜き出してまとめるJavaScript

DTP作業者にとっての難易度 ★☆☆☆☆(1)

【2018.8.29にスクリプトを追加しました】

データ結合で作成した複数ページのうち必要なものだけを抜き出してまとめることはできないか……と考えていたところ、たけうととおるさんの「ページを移動」という記事に辿り着きました。ここで紹介されているJavaScriptをベースにすればリストに従ってページを別ドキュメントにまとめることができるのではないかと考え、試してみました。

用意するものは【A】元となるInDesignドキュメント(各ページにコードを配置)、【B】抽出リスト(抽出するページのコードを記したテキストファイル)、そして【C】移動先となるInDesignドキュメント(1ページのみで構成されたもの)です。

【C】を表示してJavaScriptを実行し、元となるInDesignドキュメント【A】と抽出リスト【B】を指定することで【A】からページが抽出されて【C】に複製されます。

※このJavaScriptでは【B】のリストに書かれている文字列を検索することで対象ページを特定します。したがって【B】には必ずしも「a001」のようなコードを書く必要はなく、会社名や商品名などを書いても構いません。


サンプルデータはこちら《minimum_2017_0201.zip》です。

2018.8.29/スクリプトを追加しました

まとめ先のドキュメントに移動したページを元ドキュメントから削除し、別名ドキュメントとして保存するスクリプトを追加しました。
サンプルデータはこちら《minimum_2018_0829.zip》です。
posted by 照山裕爾 at 04:57| Comment(0) | TrackBack(0) | InDesign-その他の機能 | このブログの読者になる | 更新情報をチェックする