2016年9月16日

ひとつのページに2系統のノンブルをつける

雑誌などで、その号単独のノンブルだけでなく、通巻ノンブルを併記する場合がある。

でも、InDesignの「ページ番号とセクションの設定」では、ノンブルは1系統しかつけられない。そこで、javascriptを書いてみた。

  1. 2行目の 変数prev_issueに前の号の最後のノンブルを代入する。(下の例は前の号が96ページで終わっている場合)
  2. いま編集している号の各ページの通巻ノンブルを置きたいところ(マスターページにではなく、各ページの上)に「#PTV」と書いておく。
  3. スクリプトを実行する。
var prev_issue = 96;
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
for (var j = 0; j < app.activeDocument.pages.length; j++){
    var pageObj = app.activeDocument.pages[j];
    for (var i = 0; i < pageObj.textFrames.length; i++){
        var page_thrghout_vol = String(parseInt(pageObj.name) + prev_issue);
        app.changeTextPreferences.changeTo = page_thrghout_vol;
        app.findTextPreferences.findWhat = "#PTV";
        if (pageObj.textFrames[i].parentStory.contents.length>0){
            pageObj.textFrames[i].parentStory.changeText();
            }
        }
    } 

  • 紺色文字のところは、ページを順繰りに処理し、各ページの上のテキストフレームを順繰りに選び、その内のストーリーを処理していくループ(定石らしい)。
  • 各ページのノンブルは、pageObj.nameだけど、これは文字列なので、前の号の最終ノンブルと足し算をするために、いったんparseInt( )関数で数値化している。そして、足し算のあと、また文字列に戻すのにString( )関数を使っている。
  • 各ページのノンブル(pageObj.name)に前号の最終ノンブル(prev_issue)を足したものが通巻ノンブル(page_thrghout_vol)となる。それをページ上の文字列「#PTV」と置換しているだけ。
  • 普段、javascriptを書いていないので、変数名など変だと思う。