2017年1月1日

2017年始まりのご挨拶に代えて


パウル・クレーが「Die Zwitscher-Maschine」を描いたのは1922(大正11)年。

この年、ワシントン海軍軍縮条約、中国の主権・独立・領土保全を認める9カ国条約が結ばれています。日本では全国水平社創立、日本農民組合結成、女性の集会参加を許す治安警察法改正などがありました。日本共産党結党も同年7月。その一方、イタリアでは10月にムッソリーニのファシスト政権が成立し、翌月「年末まで」と限り「秩序回復」名目に独裁権が与えられます。ロシアではスターリンが党書記長に就任しています。ドイツでヒトラーがミュンヘン一揆を起こし、失敗したのは翌23年ですが、そののちナチス・ドイツ成立の1933年、この作品は「退廃芸術展」に展示されることになります。

95年後のいま、さえずることとは? レバーを回すのはだれ? いろいろ考えたくなります。


絵の画像データはWikimedia Commonsから:https://commons.m.wikimedia.org/wiki/File:Die_Zwitscher-Maschine_(Twittering_Machine).jpg#mw-jump-to-license

2016年10月28日

InDesignもワンライナーで行こう

活版時代の縦組みでは、本文中の括弧内などに本文より小さい活字が入る場合、右寄セ組(InDesignの用語だと「文字揃え=仮想ボディの右」)としていた。
活版ならではの物理的制限からきた習慣なのだろうけど、それをInDesignで再現しようとすると、縦中横など90度回転させたものの文字揃えが中央のままになってしまう。



これを他の文字同様、仮想ボディの右で揃えるには、文字パレットのオプションにある縦中横設定で「左右位置」を補正すればよい。本文が9ポ、括弧書きが8ポなら左右位置を0.5ポにすればよい。





でも、何箇所もあるから、縦中横設定パネルをいちいち出して、いちいち補正値を入力するのは大変。
修正箇所は検索パネルで探して(すると修正箇所が選択状態になる)、そこに、たった1行のこのスクリプトを当てればいいのだ。
app.activeDocument.selection[0].tatechuyokoYOffset = 0.5;

(文字の並び方向がX軸なので、縦組みの場合、左右方向はY軸になる。ややこしい)

修正箇所の検索までスクリプトで行おうとすると、例外の扱いとかややこしいけど、検索パネルと組み合わせれば、とても簡単。スクリプトにショートカットを設定しておけば、さらに手数は少なくて済むのだ。どう?

2016年10月20日

選択部分の漢数字を単純に洋数字に書き換える

InDesignで選択部分の漢数字を単純に洋数字に書き換えるスクリプト。

var Num = app.activeDocument.selection[0].contents;
var Num = Num.replace(/一/g,"1");
var Num = Num.replace(/二/g,"2");
var Num = Num.replace(/三/g,"3");
var Num = Num.replace(/四/g,"4");
var Num = Num.replace(/五/g,"5");
var Num = Num.replace(/六/g,"6");
var Num = Num.replace(/七/g,"7");
var Num = Num.replace(/八/g,"8");
var Num = Num.replace(/九/g,"9");
var Num = Num.replace(/〇/g,"0");
app.activeDocument.selection[0].contents = Num;

小道具を組み合わせて仕事をするというunixの流儀にしたがって、InDesign本体の検索・置換といっしょに使う。検索・置換をすると対象の文字列が選択されたままになっているので、そこにこのスクリプトをあてるのだ。

もっとも、コードは、使えるからええねん的。これもunix流儀かもしれないし、バッドノウハウかもしれない。

2016年10月9日

ルビふり単純スクリプト

InDesignでのルビふりをちょっと楽にしようと単純なスクリプトを書いてみた。

var mySel = app.activeDocument.selection;
var myStr = mySel[0].contents.replace(/)/, ""); 
var myWord = mySel[0].characters;
var strAry = myStr.split ("("); 
var oyamozi = strAry[0];
var rubi = strAry[1];
myWord.itemByRange(0,oyamozi.length-1).rubyString = rubi;
myWord.itemByRange(0,oyamozi.length-1).rubyFlag = true;
myWord.itemByRange(oyamozi.length,-1).contents= "";

親文字列の後ろに半角パーレンで囲んだルビ文字列を書く。
モノルビの区切りは空白(全角でも半角でもよい)。
例: 単純(たん じゆん)

これを選択して、上のスクリプトを実行する。
スクリプトにキーボードショートカットを割り当てておくと楽。
グループルビにしたいときは後から手作業で修正。

ちょっとコードを説明してみると…
  • 2行目:ルビを囲っていた閉じパーレンは不要なので消去する
  • 4〜6行目:選択している文字列を開きパーレンで前後に分割する。前が親文字列(oyamozi)、後ろがルビ文字列(rubi)となる。
  • 7〜8行目:選択している文字列のうち親文字数分(最初の文字が0番目なので、0〜oyamozi.length-1となる)にルビをつける。
  • 9行目:開きパーレン以降(-1は末尾を意味する)は不要になったので消去する。

(2020-03-02追記)
2行目の置換のところを、
replace(/[((]([^(())]+)[))]/, "($1"); 
とするとパーレンは半角全角を問わなくなって便利かも。

    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-16 (LE BOM付) に変換しておく。
    上の実行例では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日

    陽当たりのよい道

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

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

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

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

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




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

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


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