読者です 読者をやめる 読者になる 読者になる

k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

ちょっと訳ありでSJISテキストの編集
CSVテキストの各フィールド(10列分)の先頭の数字が0なら1に置換したい。

#!usr/bin/ ruby -Ks

while line = ARGF.gets
	line.gsub!(/0(\d\d\d\d\d,)([^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,])/) {"1#{$1}#{$2}"}
	line.gsub!(/,0/) {",1"}
	print line
end

このとき,CSVファイルのファイル名は3桁の数字であり,結構たくさんある。
なので,ターミナルにドロップしたらそのファイル名を受け取り,250プラスしたファイル名に変更した上で書き出したい。
つまり,ターミナル上にはスクリプトファイルと置換元のCSVファイルを投げるだけで,置換先のCSVファイルを自動生成したかったのだ。
下のようなイメージなのかな,と思ってやってみた。

#!usr/bin/ ruby -Ks
require "ftools"

path_name = File.split(ARGV[0])
file_name = path_name[1].split"."
new_name = file_name[0].to_i + 250
nf_name = File.join(path_name[0], new_name.to_s + "." + file_name[1])

File.copy(ARGV[0], nf_name)

2016/04/18追記:csvファイルの中身をいじるわけではないのでエンコードの指定がSJISである必要はない。上記ソースのままだと動かないが、エンコードをKuにしたら動いた。(2016/04/18追記・以上)
一応,プラス250したファイル名のCSVは同じフォルダに出来ている。
 
最初のスクリプトをくっつけてみる。

#!usr/bin/ ruby -Ks
require "ftools"

path_name = File.split(ARGV[0])
file_name = path_name[1].split"."
new_name = file_name[0].to_i + 250
nf_name = File.join(path_name[0], new_name.to_s + "." + file_name[1])

File.copy(ARGV[0], nf_name)

File.open(nf_name, 'w') do |io|
	while line = io.gets
		line.gsub!(/0(\d\d\d\d\d,)([^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,])/) {"1#{$1}#{$2}"}
		line.gsub!(/,0/) {",1"}
		print line
	end
end

IOErrorと怒られちゃった(泣)
2016/04/18追記:csvファイルをユニコードに置換し、エンコードをKuにして試しても、やはりダメだった。(2016/04/18追記・以上)
コピーしたファイルが存在するんだから普通に開けると思ったのに。
中年オヤジ,この時点で根気が尽きる。
もう帰る〜,って感じでした。

Edicolorの正規表現

EdicolorはVer.8からドキュメント上で正規表現検索置換が可能となった。
だが。たとえばこんなテキストがあったとして。
最初は最小一致検索で指定してみたんだけどエラーが出た。
f:id:k_iki:20140203105141p:plain
そこで最小一致検索をあきらめ、より具体的な検索パターンに切り替えてみる。
f:id:k_iki:20140203104542p:plain
(上記画像は正規表現チェックボックスをONにする前に画面キャプチャを保存してしまったが、実際はチェックしてから検索している)
f:id:k_iki:20140203104549p:plain
一行目は最初のパターンしか置換しない上、そのまま「$1」に置換されてしまった。
正規表現のバージョンがInDesignと違うんだな、と思って置換側にバックスラッシュ+1で呼び出してみたけど、やはりうまくいかない。それどころか一度はヒットしたはずの検索パターンもうまくヒットしてくれない。
何度かやるとたまにヒットするんだけど、置換後はやっぱりバックスラッシュ+1となってしまう。
マシン固有のエラーかもしれないので、次に時間ができたら他の端末に入っているEdicolor10でも試してみる。

ICCプロファイルが埋め込めない

Illustratorの保存オプションにおいて、ICCプロファイルの埋め込みの可否を選択できる。
ICCプロファイルの埋め込みに関しては、埋め込まないのを原則としているところは少なくない。
しかし、自社内フローで完結する場合、及び他社間で印刷する場合でも互いの環境を合わせているならば、ICCプロファイルを埋め込むことを原則としているところもある。
で、スクリプトで埋め込みたかったのだが。
Illustrator CS6 保存スクリプト - k_ikiの雑記帳
上記で調査中として以来、結局埋め込むには手作業で行ってきた。
時間ができたので調査してみたが、もともとチェックが入っているものをスクリプトで外すのは可能。
しかしもともとチェックされていないものをスクリプトでチェック入れるのは不可能。
なんじゃそりゃ。

正規表現で字形を選択

例えば、茨城県の「茨」について。
リュウミンの標準字形だと、にすいの部分の上側の画は右下がりの形だ。
これをくさかんむりと平行な画の字形にしたいなら、字形パネルで変更すればいい。
で、字形パネルで確認すれば、その異体字はエキスパート字形だとわかる。
 
ドキュメント中に出てくる茨をすべてエキスパート字形にしたければ、
まず文字スタイルを作っておく。
f:id:k_iki:20131129161317p:plain
 
段落スタイル中で正規表現スタイルを作れば、
そのスタイルで使われる茨はすべてエキスパート字形に。
f:id:k_iki:20131129161330p:plain
 
茨城のときだけエキスパート字形に、という場合は肯定先読みで対応できるけど、
たとえば「茨城の茨という文字」などというテキストに対しては、
もちろん前者の茨しか置換しないので要注意だ。

テキストのドラッグ&ドロップ

環境:Mac OSX 10.7.5 / InDesign CS6 および CC
 
InDesignのフレームグリッド内のテキストを、別のフレームグリッドまたは編集中のフレームグリッド内の別の段落などにコピー&ペーストすると書式が外れる。
具体的には、部分的に書式を変更しておいた場合にコピー&ペーストすると……
f:id:k_iki:20131120162101p:plain
上図、一行目は文字スタイルを適用せず、二行目には文字スタイルを適用してある。
通常のコピー&ペーストでは、いずれも下図のように書式が外れてしまう。
f:id:k_iki:20131120162054p:plain
文字スタイルパネルで確認すると、オーバーライドマークがついている。
これを直すには、パネル上の文字スタイルをクリックしてオーバーライドを解消するしかない。
f:id:k_iki:20131120162106p:plain
書式の変更箇所が多ければ多いほど面倒だ。
そこで、環境設定を確認。
テキストのドラッグ&ドロップ編集を、レイアウトビューで有効となるようチェックを。
f:id:k_iki:20131120162113p:plain
テキストを選択し、マウスカーソルを重ねるとポインタの形がIビームポインタでなく、図のような形に変わる。
そこで、オプションを押しながら目的の場所までドラッグ&ドロップ。
f:id:k_iki:20131120162119p:plain
下図の通り、書式を保ったままコピー&ペーストできる。
ストーリー丸ごとドラッグ&ドロップも可能。
f:id:k_iki:20131120162125p:plain
こんなこと、誰でも知ってるかも知れない。
でも、知らない人もいるかも知れない。
なので、念のため。
 
そして追記。
普通にコピーした後、ペースト時のコマンドで「グリッドフォーマットを適用せずにペースト」するのと同じ結果です。
AJABON博士に指摘されるまですっかり忘れとったわw

うっかりコマンド+H

普段、イラストレータの表示機能において、「境界線を隠す」なんて使わない。
バウンディングボックスは、隠したり隠さなかったりするけれども。
なので、時間が無いときは特に、何らかの拍子にうっかりコマンド+Hなどをやらかすと焦る。
なにせ、テキストを選択しても編集画面の見た目でなんの変更もないのだから。
ついでにバウンディングボックスを非表示にしているとさらに焦る。
選択できてないとしか思えないのだから。
いらいらしながら何度かクリックし、ふとした拍子にドラッグすると、それに応じてオブジェクトが動く。
「なんだ、選択できてんじゃん」
そこでようやく気づく。
ああ、境界線を隠していたのか、と。
ガイドを隠すのは便利だけど、境界線は隠す必要がないのになあ、とか思ったり。
検索してみると、案外この機能でつまづく「初心者」さんがいらっしゃる。
大丈夫、何年やっててもとまどう人もいます。(全然大丈夫じゃない)
普段使ってない機能なんて、咄嗟の時には思い出せないんだよぉ。
 
と、いうことで。
テキストを選択したはずなのに反転表示されないときは、とりあえずコマンド+Hしてみましょう。
おそまつでした。
f:id:k_iki:20131102173111p:plain

テキストフレームを選択順に結合

InDesignerの悪あがき様にテキストフレーム結合スクリプトがありました。
古い記事ですが、CS6でもCCでも動作します。
かなり前のことになりますが、「テキストフレームを選択順に結合したいんだ」と言ってがんばってて、結局断念したことがあったのに。
まさかこんなに簡単にできるなんて(苦笑)
ですが今となっては実務で使用する場面が思い浮かびません……。
いずれまた、必要なときが来るかも知れないということで、とりあえずメモ。