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を書いていないので、変数名など変だと思う。

2016年1月31日

中古のMacを買うとき:バッテリー寿命

中古でMacを買うときはバッテリーの寿命も調べておこう。

Appleサポート「Mac ノートブックのバッテリーの充放電回数を確認する」
https://support.apple.com/ja-jp/HT201585


わたしのMBAの場合、きょうで715回。あと28%くらい。

買ったときには80数%あった。4年は使ったかな。けっこう長持ちしてる。けど、そろそろ買い替えの資金を準備し始めよう。

2016年1月1日

謹賀新年

明けましておめでとうございます。

子曰、甚矣、吾衰也、久矣、吾不復夢見周公也、  
〔『論語』述而五〕

昨年は、胆嚢を取ってやれやれと思ったら、左脚の神経痛が起こったり、加齢の順調さに苦笑いする一年でしたが、夢をどこかに置き忘れたかもしれません。孔子に倣い、理想を追いかけ続けようと思います。定年まであと十年、頑張らねば。



2015年12月31日

パーソナル編集長ファイルから写真を取り出す

パーソナル編集長ファイルから写真を取り出すのは、なんとも簡単だった。

  1. パーソナル編集長(試用版でも可)でファイルを開け、取り出したい写真を選んでコピー。
  2. Windows付属のペイントを起動して、そこにペースト。これで元のサイズの写真が復活。
  3. 必要ならペイント上でトリミングやサイズ変更。
  4. TIFなりBMPなり画質を落とさない形式で保存。

2015年5月22日

書体見本を自動生成する

大阪DTPの勉強会の隔週勉強会で「書体見本を自動生成する」という宿題が出た。
それを今日、発表することになってしまった。そのためのレジュメ代わり。
(22日21:36 いろいろ修正しました)

書体見本の自動生成

処理の方針:


タブ区切りのフォントリストから、タグ付きテキストを作り、それをInDesingに配置する。自分のコンピュータで使えるすべてのフォントをふくむリストの作り方はこの記事の末尾に書いておきましたが、ここではフォントリストサンプルのダウンロード )ができているとして、それからタグ付きテキストを作る方法を紹介します。

スタート:フォントのファミリー名とスタイル名がタブで区切られているリストから、
小塚明朝 Pr6N R
游ゴシック体 ミディアム
……
……
ゴール:次のようなInDesignの「タグ付き」テキストを作る。
<UNICODE-MAC>
<vsn:9.3><fset:InDesign-Japanese>
<pstyle:><cf:小塚明朝 Pr6N><ct:R>小塚明朝 Pr6N R
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>
<pstyle:><cf:游ゴシック体><ct:ミディアム>游ゴシック体 ミディアム
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>
……
……

処理の実際:


1)最初に1回だけ、ファイル開始タグを書き出す。
<UNICODE-MAC>
<vsn:9.3><fset:InDesign-Japanese>
2)フォントリストの1行ずつについて次の操作を繰り返す。
2-1)ファミリー名を変数$1に、スタイル名を変数$2に読み込む。
2-2)雛形の$1$2ファミリー名スタイル名を代入して出力する。

雛形:
<pstyle:><cf:$1><ct:$2>$1 $2
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>

これをPerlやAWKスクリプトで実現すると次のようになる。

Perlスクリプト ダウンロード
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
binmode STDIN, ':utf8';
print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>\n";
#print "<UNICODE-WIN>\n<vsn:9.3><fset:InDesign-Japanese>\n";
while (<>) {
 /([^\t]+)\t(.+)/;
 print "<pstyle:><cf:$1><ct:$2>$1 $2\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\
祇辻飴葛蛸鯖鰯噌庖箸とか\
Lorem ipsum dolor sit amet,\
1234567890とか\
12234567890\
<ct:><cf:>";
}

実行例:$ perl -f addtag.pl < fontlist.txt | iconv -t utf-16le > fontsample.txt

AWKスクリプト ダウンロード
BEGIN {
 FS = "\t"
 print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>"
}
{ print \
"<pstyle:><cf:" $1 "><ct:" $2 ">" $1 " " $2 "\n\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \n\
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\n\
祇辻飴葛蛸鯖鰯噌庖箸\n\
Lorem ipsum dolor sit amet,\n\
1234567890\n\
12234567890\
<ct:><cf:>"
}

実行例:$ awk -f addtag.pl < fontlist.txt | iconv -t utf-16le > fontsample.txt

留意点:


(ア)ファイル開始タグと改行コードの組み合わせ:
<UNICODE-MAC>とした場合は改行コードをLFに、
<UNICODE-WIN>とした場合は改行コードをCRLFに。
(イ)途中の処理はUTF-8で行っているので、配置する前にUTF-16LEに変換しておく。
上の実行例ではiconvコマンドを使って変換した。
(ウ)配置する際、「グリッドフォーマットの適用」のチェックを外しておく。


もうちょっとPerlらしいスクリプト ダウンロード
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
binmode STDIN, ':utf8';
print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>\n";
while (<>) {
 chop;
 ($family, $style) = split(/\t/, $_);
 print "<pstyle:><cf:$family><ct:$style>$family $style\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\
祇辻飴葛蛸鯖鰯噌庖箸\
Lorem ipsum dolor sit amet,\
1234567890\
12234567890\
<ct:><cf:>";
}

資料集:


PerlとAWK

OS Xには両方とも最初から入ってます。
Windowsにはどちらも入っていません。Perlなら下のサイトからインストールできます。
ActivePerl:http://www.activestate.com/activeperl

『ADOBE INDESIGN CS5 タグ付きテキストユーザーガイド』

http://www.adobe.com/go/learn_id_taggedtext_cs5_jp
(実際には次のURLへリダイレクトされる)
http://help.adobe.com/ja_JP/indesign/cs/taggedtext/indesign_cs5_taggedtext.pdf

Adobe製品のjavascript入門編

古籏一浩さんの「OpenSpace」 http://www.openspc2.org

利用できるフォント(書体)の名前をテキストフレームに書き出す
CC2014用:http://www.openspc2.org/book/InDesignCC2014/easy/font/002/index.html
CC用:http://www.openspc2.org/book/InDesignCC/easy/font/002/index.html
CS6用:http://www.openspc2.org/book/InDesignCS6/easy/font/002/index.html
これで書き出したフォントのリスト(タブ区切りテキスト):fontlist.txt


フォントリストの作り方:

自分のコンピュータで使えるフォントのリストを作るには前項、古籏氏作の「利用できるフォント(書体)の名前をテキストフレームに書き出す」javascriptが便利です。javascriptの実行の仕方も古籏氏の「OpenSpace」のInDesign自動化の項に詳しく書いてあります。

実行すると、InDesign文書上にファミリー名とスタイル名の一覧が現れますので、
  1. テキストを全て選択
  2. ファイル→書き出し
  3. 形式「テキストのみ」
  4. エンコーディング「UTF-8」
  5. fontlist.txtなど適当な名前で保存
以上です。



2015年3月25日

陽当たりのよい道

幹線道路から右へそれると、ごく緩やかな登り坂。

車は通らない。舗装もされていない。道の両側は畔のようにきれいに刈ってある。

明るい穏やかな陽がさしている。

坂のてっぺん(あまり緩やかなのでてっぺんともいいにくいけど)の右側に参道の入り口がある。尾根が平地に降りきるその少し上を横ぎる形で坂道が通っていて、その尾根にそって参道が登っているわけだ。

参道の入り口には灯篭や松並木があるだけで、鳥居や山門はない。お寺なのかお宮さんなのか分からない。




……これもいつだったか、うたたねで見た夢。ここには行ったことがない。どこなのか、それすら分からない。夢では坂道の途中から参道の方を眺めているだけ。その明るい陽の中でぼんやり喜んでいる。

ひいおばあさんが古布などを入れていたみかん箱ほどの木箱に、高野山だろうか、お寺がいくつもある山の絵が貼ってあった。その中の道なのかもしれない。


……いつか私がその参道を登っていく日が来るんだろうな。向こうで母が待っているかもしれない。


2015年3月24日

入れ子の夢

うたたねをするといやな夢をみる。

子どもを一人亡くしてしまう。
溺れてしまったのだ。
探して探して、見つけた時には、手のひらに載るほど小さな体になっていた。その小さな冷たい背中を撫でてやる。

私は疲れて眠っている。

どこなのか、大きな吹き抜けのあるコンクリート造りの家。いとこの誰かのところなんだろうか。

インターホンでそこの奥さんが「これなに?」と夫に尋ねる。「オウゴンゾウムシだな。珍しいから写真に撮っておきなさい」と応えている。屋上ではそこのうちの子ども(成人している)たちがバーベキューで歓声をあげている。

下階に降りていくとお寺のような広いよく磨かれた木の廊下。「あ、お父さん」と私を見つけてうちの娘が声をかける。三男もいる。私はそのまま廊下を歩いていく。どこへ?

…というところで目が覚めたので、起き上がる。うたたねをしていたつもりなのに、ズボンもシャツも脱いでいた。

ズボンを履きかけたところで、本当に目が覚めた。


(溺れた子どもは長男でも次男でもないと思う。その前、生まれてこなかった二人の子どもたちなのかもしれない。)

2015年2月19日

Excelでカレントセルのアドレス・内容を呼び出す

Excelで条件付き書式を複数のセルにいっぺんに当てるには、カレントセルのアドレスや内容を関数で呼び出しておく方がいい(というか、そうしないといっぺんに当てられない)。そのための備忘メモ。
  • 行位置:row()
  • 列位置:column()
  • セル番地:address(row(), column())
  • 内容:indirect(address(row(), column()))
要するにrowとcolumnのふたつの関数は引数を空にしておけばカレントセルの行・列位置を返してくれるってことなんだな。

これを使えば、カレントセルの内容が左隣のセルより1大きいという条件は、
=indirect(address(row(), column()-1))+1=indirect(address(row(), column()))
これを条件付き書式で「数式を使用して、書式設定をするセルを指定」の欄に書けばいい。けっこう面倒だな。(しかもこの欄では、入力補完も関数のヘルプ参照もない。カーソルキーを叩こうものなら……)

そうそう、この欄に書く「数式」の左端の等号は、式の残りの式の真偽を吟味するという意味なので、上の式だと真ん中の等号とは意味が違う。これもややこしい話。


2014年11月27日

紙の重さ

自分のための備忘録です。

紙のパッケージに「B4 100枚 40g/m2」と表示してあることがあるけど、この「40g/m2」は“つぼりょう(grammage)”というもので、単位をみればわかるけど、その紙の1m2あたりの重さ。



A0版の面積は1m2、B0版の面積は1.5m2だから、坪量G (g/m2) の用紙1枚の重さは次のように計算できる。
  • An版用紙1枚の重さ=G/2n (g)
  • Bn版用紙1枚の重さ=1.5G/2n (g)

このトレーシングペーパーだと、1.5×40÷24=3.75 (g) ということになるらしい。

2014年6月22日

漢数字を無思慮に洋数字に変える

縦組みだからとせっかく漢数字に直したけど、Blogで公開するときは横組み。漢数字のままでもいいんだけど、世間に迎合して洋数字に書き換えよう。

ということで、またまたperlスクリプトを書いてみた。ただ単純に置換しているだけだから、数字の入った漢字熟語まで無思慮に変換してしまうのでご注意を。

(『すぐわかるPerl』『すぐわかる オブジェクト指向 Perl』『文字コード「超」研究』の著者・深沢千尋さんがご自身のBlog「イジハピ!」に、このスクリプトの“すぐわかる”解説を書いてくれました。うれしい!  http://blog.query1000.com/archives/39051213.html


#!/usr/bin/perl

use utf8;
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
binmode STDIN, ':utf8';

while(<>) {
  # 単位語の前に数字がない場合「一」を補う
    s/(?<![一二三四五六七八九千百十])(?=[兆億万])/一/g;
    s/(?<![一二三四五六七八九])(?=[千百十])/一/g;
  # 欠けている桁をゼロとして復活させる
    s/(?<=兆)(?![一二三四五六七八九][十百千万]?億)/〇億/g;
    s/(?<=億)(?![一二三四五六七八九][十百千]?万)/〇万/g;
    s/(?<=[兆億万])(?![一二三四五六七八九]千)/〇千/g;
    s/(?<=千)(?![一二三四五六七八九]百)/〇百/g;
    s/(?<=百)(?![一二三四五六七八九]十)/〇十/g;
    s/(?<=十)(?![〇一二三四五六七八九])/〇/g;
  # 単位語のうち千百十を消す
    s/[千百十]//g;
  # 億万でゼロを整理
    s/〇〇〇〇[億万]//g;
    s/(?<=[兆億万])〇+//g;
  # 洋数字に変換
    y/〇一二三四五六七八九/0123456789/;
  # 3桁毎にコンマを挿入
    s/(?<=\d)(?=(\d\d\d)+(?!\d))/,/g;

    print $_;
}


*7月7日訂正:次の赤字部分を付け加えました。これがないと「二億二百万」などで4桁余分の0が入ってしまいます。

  # 欠けている桁をゼロとして復活させる
    s/(?<=兆)(?![一二三四五六七八九][十百千万]?億)/〇億/g;
    s/(?<=億)(?![一二三四五六七八九][十百千]?万)/〇万/g;

*7月8日補正:単位語のうち兆億万は残して、ゼロの羅列を減らしました。

*7月9日訂正:億万でゼロを整理のところの2行目で洋数字の0は間違いで漢数字の〇にしないといけませんでした。
  # 億万でゼロを整理
    s/〇〇〇〇[億万]//g;
#   s/(?<=[兆億万])0+//g; #誤
    s/(?<=[兆億万])+//g; #正