DTP駆け込み寺
  1. [18432] Indesignのスクリプトで置換形式を指定する方法 たやま 2015/12/28 21:39
    1. [18433] Re: Indesignのスクリプトで置換形式を指定する方法 よもやま 2015/12/28 23:10
      1. [18434] Re: Indesignのスクリプトで置換形式を指定する方法 よもやま 2015/12/28 23:18
        1. [18435] できました! たやま 2015/12/29 09:14
          1. [18436] Re: できました! 流星光輝 2015/12/30 01:24
            1. [18437] Re^2: できました! たやま 2016/01/02 15:35

[ 返信 ]

Indesignのスクリプトで置換形式を指定する方法

はじめまして。

Windows7 SP1、IndesignCS6を用いています。

今回、HTMLタグの文字修飾がいっぱい入ったテキストを流し込み、
タグに対応した文字修飾をそれぞれあてていく、
というものをやることになり、
浅学ながら見よう見まねでスクリプトを
書かざるを得ず、お力をお借りしたいのです。

一つ一つのタグ囲みを正規表現で検索置換し、
置換形式で「上付」や「下線」を入れていく、
という一言で言えば簡単な作業ですが
あまりにも種類が多く、納期もバラバラのため、
一括検索置換ができない状態です。
毎回、入稿の度に正規表現を手動で行っていると、
とても一人でこなせそうにありません。

そこで、スクリプトである程度は自動化したいのです。

以下、いろいろネットで調べて、書いてみたものです。
この「●●」にあたるところに
「置換形式を指定して、上付や下線、斜めをあてる」
といったことをやればよいのかと思うのですが、
いったい何を書き込めばいいのか
まったく見当がつかず、困っております。

app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;

//<sup>囲みを上付きに
app.findGrepPreferences.findWhat = "(<sup>)(.+)(</sup>)";
app.changeGrepPreferences.changeTo = "$2";
app.changeGrepPreferences.●● = "●●";
app.changeGrep();

//<sub>囲みを下付きに
app.findGrepPreferences.findWhat = "(<sub>)(.+)(</sub>)";
app.changeGrepPreferences.changeTo = "$2";
app.changeGrepPreferences.●● = "●●";
app.changeGrep();

//<i>囲みを斜体に
app.findGrepPreferences.findWhat = "(<i>)(.+)(</i>)";
app.changeGrepPreferences.changeTo = "$2";
app.changeGrepPreferences.●● = "●●";
app.changeGrep();

//<u>囲みを下線に
app.findGrepPreferences.findWhat = "(<u>)(.+)(</u>)";
app.changeGrepPreferences.changeTo = "$2";
app.changeGrepPreferences.●● = "●●";
app.changeGrep();

スクリプトでこうしたHTMLタグを変換することって
あまりないのでしょうか、ネットでもなかなかヒットしません。。。

もし、教えていただけますと大変助かります。

[18432] たやま (2015/12/28 Mon 21:39)

[ 返信 ]


Re: Indesignのスクリプトで置換形式を指定する方法

■上付・下付
app.changeGrepPreferences.position = Position.SUPERSCRIPT;
app.changeGrepPreferences.position = Position.SUBSCRIPT;
■斜体
app.changeGrepPreferences.skew = 20;
■下線
app.changeGrepPreferences.underline = true;

などとなります。
見当の付け方としては、Extend Script Toolkitのヘルプ→オブジェクトモデルビューアでchangeGrepPreferencesを検索して、それらしいものを探す手順になります。

もしInDesign側であらかじめ斜体等の文字スタイルを作っておくのが手間でなければ、
app.findGrepPreferences.findWhat = "<i>(.+)</i>";
app.changeGrepPreferences.changeTo = "$1";
app.changeGrepPreferences.appliedCharacterStyle = app.activeDocument.characterStyles.item("斜体");
app.changeGrep();
などと置換後にスタイルを適用する段取りにするのでもよさそうです。
スクリプト側で出したい書式に対応するプロパティを探す手間が省けます。

[18433] よもやま (2015/12/28 Mon 23:10)

[ 返信 ]


Re: Indesignのスクリプトで置換形式を指定する方法

あ、正規表現のところは
× <i>(.+)</i>
○ <i>(.+?)</i>
の方がよいですね。

[18434] よもやま (2015/12/28 Mon 23:18)

[ 返信 ]


できました!

レスありがとうございました。
あとから斜体や下線の設定を変えられるよう、
文字スタイルをあてる事にしました。

今朝、早速仕事で使ってみたところ、無事に動きました!感動です!

調べ方も教えていただき、ありがとうございます。
ネットを使わなくてもちゃんとコマンドを調べられたんですね…。

本当に助かりました。ありがとうございました。

[18435] たやま (2015/12/29 Tue 09:14)

[ 返信 ]


Re: できました!

もう終わった話と思ったのですが、
同じようなことを数年前(6〜7年前かな…)にやっていて、
a<u>b<i>c</i>d</u>e のような、
ネスト(入れ子)している部分の文字スタイルの適用をどうしようか…
と一人悶々としていた記憶があります。

結果、内側になるタグと外側になるタグを事前に調整しておき、
Scriptで置換をしました。
書式適用後にタグを一括除去したような…

[18436] 流星光輝 (2015/12/30 Wed 01:24) web

[ 返信 ]


Re^2: できました!

返信ありがとうございました。

そういわれてみれば、二重にかかっているところは、
片方の情報だけがかかってしまうようになりますね…。
文字スタイルの二重がけにもならないようです。

ちなみに今回やった仕事では
二重にタグがかかっているものはなかったので大丈夫でしたが、
次回もこのスクリプトを使うつもりなので、
まずスクリプトで文字スタイルを一気にあてるとき、
タグを削除してしまわずの残しておき、
タグだけを後で目で見て確認して削除するのが確実っぽいですね。

[18437] たやま (2016/01/02 Sat 15:35)