2021年5月29日

註合印を入れるInDesign javascript

本文中のアンカー箇所(文字)を選んで、註番号を入力していく。

var Anker = app.activeDocument.selection[0];
var AnkerChar = Anker.contents;
var indexStr = prompt("Der Anker ist " + AnkerChar + ".\n Welche Indexnummer?", "");
if (indexStr) {
    Anker.rubyFlag = true;
    Anker.rubyString = "(" + indexStr + ")";
    var cStyle = app.activeDocument.characterStyles.item('註合印'); 
    Anker.applyCharacterStyle(cStyle);
} 

2021年5月16日

旧暦・新暦

きょうは「旅の日」だそうだ。
松尾芭蕉が「おくのほそ道」の旅に出立した元禄二年三月二十七日はグレゴリオ暦だと1689年のきょう5月16日であることに因んでのことらしい(NHK R1情報)。

九月六日=10月18日までの旅だけど、どうしてまた、これから梅雨という時期に出かけたんだろう。夏の盛りの徒も辛かろうに。

和暦と西暦変換はこちらが便利;
 https://keisan.casio.jp/menu/system/000000000230

中国のはこちらだな;
https://sinocal.sinica.edu.tw/


 

2021年5月11日

JIS90年版とJIS2004年版フォントの字形差:モリサワの資料

「字形差」資料の冒頭


現行のフォントはJIS X 0213の2004年版の字形によってる。しかし、印刷所によっては90年版以前のフォントを新組みにも使い続けている場合がある。そういったゲラを校正するとき、この資料があると便利だ。しかし、モリサワのサイトでは奥の方にあって探しづらいのでここにリンクをメモしておこう。

フォント/ 

フォントディレクトリにある、
も、なかなか役に立つハンドブックなのだ。

2021年3月5日

寺田浩晃「三途の川アウトレットパーク」

いつの間にか、一世代回ってしまった。
若者たちもなかなか良い生き方をしている。
がんばれ!

2018年9月29日

Windows10のクイックアクセスからピン止めが外せない時

〔自分用備忘録〕

Windows10 のエクスプローラーの「クイックアクセス」にピン止めしたものが外れないことがある。エクスプローラーの「オプション>全般>エクスプローラーの履歴を消去する」でも消えないことがある。私の場合、ピン止めしていたFTPサーバが不要になったので外そうとしてなかなかうまくいかなかった。

その場合は、次の2つのディレクトリの中身を削除すればよい。ただし、これらはエクスプローラーで「隠しファイルを表示」としても見えないので、コマンドプロンプトでの操作となる。全部消すと他のピン止めしたのも消える。

%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\
%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\


2018年1月1日

2018年、新年のごあいさつ

恭 賀 新 年


旧年中は一方ならぬ御高配にあずかり誠にありがとうございました
皆様のご多幸をお祈り申し上げます

さて戌年 弊社も出番です イヌ科です

もともと極東にしかおりませんでしたので学名「Nyctereutes procyonoides」―属名は〝夜の探索者〟種小名は〝アライグマのようなもの〟―のように

  • 「raccoon dog 」〔英〕(アライグマ犬)
  • 「Енотовидная собака」〔露〕(アライグマ犬)
  • 「Marderhund」〔独〕(テン犬)

など欧米の人たちからはそれぞれに身近な生き物の名を借りて呼ばれています

  • 日本では「狸」
  • 韓国でも「너구리」の리は「狸」でしょう
  • ところが中国では「貉 hé」

あれ? 「狸 lí」は〝山猫〟なのだそうです 弊社の社章 実は「九条ねこ」なのですが案外「窮狸」を正しく表しているようです

本年も何卒ご指導ご鞭撻の程よろしくお願いいたします

  共通暦二〇一八年 元旦

2017年7月29日

ちょいスクリプト:索引の種

InDesignの索引作成機能がどうも使いづらいので、語句を拾いながら、スクリプトで「ノンブル(タブ)語句」の組をファイルに書き出すようにした。

var curSlc = app.activeDocument.selection[0];
var curStr = curSlc.contents;
//var curNom = app.layoutWindows[0].activePage.name;
var curNom = curSlc.parentTextFrames[0].parentPage.name;
var outFile = new File("/Users/tak/Dropbox/索引/writeout.txt");
outFile.encoding = "UTF-8";
outFile.lineFeed = "Unix";
if ( outFile.open("a")) {
    outFile.writeln(curNom + "\t" + curStr) ;
    outFile.close();
//    alert (curNom + "\t" + curStr +" を追加しました。");
    } else {
    alert("書き出しファイルが開けません");
 }

索引に拾う語句をドラッグで選択して、このスクリプトを実行(ショートカットをCtrl+Opt+Cmd+iにした)。alertで書き込めたことを確認してもいいけど面倒なので、tail -f を使って書き込み具合をterminalで監視しておく方が楽。


〔2017-07-30追記〕ノンブルを取得する方法を変えた。はじめはコメントアウト部分のようにしていたが、これだと対象の語句がある頁ではなく、画面上いちばん多く見えている頁のノンブルを取得してしまい、対象語句が次頁にわたっている場合など、別の頁のノンブルを拾ってしまう。

2017年2月6日

ちょいスクリプト:12時制を24時制に書き換える

「午後4:05」→「16時5分」、「午前8時半」→「8時30分」という具合に12時制の時刻を24時制の「hh時mm分」の形式に書き換える。

ただし、「午後12時」は本来「夜中の0時」のはずだけど、「昼の12時15分」のつもりで「午後12時15分」と書く人もいるので、「午後12時」については疑問出しをするようにした。

perl

#!/usr/bin/perl
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
binmode STDIN, ':utf8';

while (<>) {
        y/1234567890:/1234567890:/;
        s/(\d+):(\d+)/\1時\2分/g;
        s/(?<=時)半/30分/g;
        s/00分//g;
        s/午後0/12/g;
        s/午後10/22/g;
        s/午後11/23/g;
        s/午後12(?=時\d+分)/昼?夜?0/g;
        s/午後12(?!時\d+分)/0/g;
        s/午後1/13/g;
        s/午後2/14/g;
        s/午後3/15/g;
        s/午後4/16/g;
        s/午後5/17/g;
        s/午後6/18/g;
        s/午後7/19/g;
        s/午後8/20/g;
        s/午後9/21/g;
        s/午前(?=\d+)//g;
    print $_;
}

javascript

var mySel = app.activeDocument.selection;
var myStr = mySel[0].contents;
myStr = myStr.replace(/0/g, "0");
myStr = myStr.replace(/1/g, "1");
myStr = myStr.replace(/2/g, "2");
myStr = myStr.replace(/3/g, "3");
myStr = myStr.replace(/4/g, "4");
myStr = myStr.replace(/5/g, "5");
myStr = myStr.replace(/6/g, "6");
myStr = myStr.replace(/7/g, "7");
myStr = myStr.replace(/8/g, "8");
myStr = myStr.replace(/9/g, "9");
myStr = myStr.replace(/:/g, ":");
myStr = myStr.replace(/(\d+):(\d+)/g,  "$1"+"時"+"$2"+"分");
myStr = myStr.replace(/(?<=時)半/g, "30分");
myStr = myStr.replace(/00分/g, "");
myStr = myStr.replace(/午後0/g, "12");
myStr = myStr.replace(/午後10/g, "22");
myStr = myStr.replace(/午後11/g, "23");
myStr = myStr.replace(/午後12(?=時\d+分)/g, "昼?夜?0");
myStr = myStr.replace(/午後12(?!時\d+分)/g, "0");
myStr = myStr.replace(/午後1/g, "13");
myStr = myStr.replace(/午後2/g, "14");
myStr = myStr.replace(/午後3/g, "15");
myStr = myStr.replace(/午後4/g, "16");
myStr = myStr.replace(/午後5/g, "17");
myStr = myStr.replace(/午後6/g, "18");
myStr = myStr.replace(/午後7/g, "19");
myStr = myStr.replace(/午後8/g, "20");
myStr = myStr.replace(/午後9/g, "21");
myStr = myStr.replace(/午前(?=\d+)/g, "");
mySel[0].contents = myStr;


2017年1月27日

ちょいスクリプト:ルビを統合する

韓国の人の姓名にカタカナのふりがなをつけていた(姓と名のふりがなは「・」で区切る)。

当初、字音ルビとして1文字ずつのモノルビとしたけれど、連音もあるので名の部分についてはグループルビにとの指示があったので、そのように直した(姓はモノルビのまま)。
ところが、こんどは、字間が開きすぎているから、姓・名全体をグループルビにしてほしいと新たな指示が……

モノルビにせよグループルビにせよ、分けて付けてあるルビを一つにまとめようとすると、手作業ではいま付いているルビをいったん消して、新たにルビを付け直すことになる。これでは入力ミスが起こりかねないので、スクリプトで処理することにした。

//統合したい部分は検索など何らかの方法で選択してあるものとする。
var oyaStr = app.activeDocument.selection[0];
var oyaChars = oyaStr.characters;
var newRuby = "";
var prevcharRuby = "";

//親文字列1文字ずつについてルビを読んでいく。
for ( C = 0; C < oyaChars.length; C++ ) {

//前の親文字のルビと同じだったら何もしない。
//【注意!】同じ読みが連続している場合は一つ消えるので、後で修正が必要。
//そうでなければ、新しいルビ文字列に書き足す。
        if ( oyaChars[C].rubyString !== prevcharRuby ) {
                newRuby = newRuby + oyaChars[C].rubyString;
        }
//現在の親文字のルビを、次の親文字のルビと比較するため、変数prevcharRubyに取っておく。
        prevcharRuby = oyaChars[C].rubyString;

//現在の親文字のルビを消し、前後のアキも「自動」に戻す。
        oyaChars[C].rubyString = "";
        oyaChars[C].rubyFlag = false;
        oyaChars[C].leadingAki = -1;
        oyaChars[C].trailingAki = -1;
}
//以上の操作で収集したルビ文字列を選択部分のルビとする。
oyaStr.rubyString = newRuby.replace(/\u0020|\u3000/g,"");

//以下は組方の設定。
oyaStr.rubyType = RubyTypes.GROUP_RUBY;
oyaStr.rubyAlignment = RubyAlignments.RUBY_JIS;
oyaStr.rubyParentSpacing = RubyParentSpacing.RUBY_PARENT_121_AKI;
oyaStr.rubyFlag = true;
oyaStr.rubyXOffset = 0;

グループルビでは、全体のルビが個々の親文字それぞれのルビ文字列だとされているようなので、ルビ文字列をただ連結していくと、同じルビが繰り返されることになる。それを避けようと、同じルビ文字列は付け足さないようにしている。
ただし、同じ読みを重ねるような姓名の場合、一つ消えてしまうことになるので注意!

〔1月28日修正〕
  • if文のところが冗長だったので整理した。(elseは必須でないのにいまごろ気付いた)
  • 収集したルビ文字列を選択部分のルビとするとき、モノルビの箇所で区切りに使っていた空白文字が残っているのを削除するようにした。

なお、このスクリプトは、たけうちとおるさんの「グループルビをモノルビに、モノルビをグループルビに」を参考にさせていただいた。

2017年1月25日

ちょいスクリプト:モノルビをグループルビに

モノルビにしていたのに、あとでグループルビにという指示が出たとき、これでちゃちゃっと。

var OyaStr = app.activeDocument.selection[0];
//ルビ文字列から区切りの空白(全角・半角)をトル。
var newRuby = OyaStr.rubyString.replace(/[  ]/, ""); 
OyaStr.rubyString = newRuby;
//種類をグループルビに。
OyaStr.rubyType = 1249011570; 
//揃えを1-2-1(JIS)ルールに。
OyaStr.rubyAlignment = 1249012339 ;


それにしても、InDesignのオブジェクトのプロパティって、オブジェクトモデルビューアで調べるわけだけど、それぞれにちゃんと名前がついているのにスクリプトではこうやって番号で指定しないといけないのは不便じゃないのかな。