2010/02/03

Grepのバグ?

久々にIndesignネタを。

簡易タグから段落スタイルの割り当てというスクリプトを作っていて、例えば

<ex>
文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列
</ex>

とタグがあってスクリプトを走らせると、現ドキュメントで使用している段落スタイルを選びそのタグで囲まれた文字列に割り当てられる、というもの。

上記の例でいえば
app.findGrepPreferences.findWhat = "(?s)^<ex>\r(.+?)<\/ex>\r";
app.changeGrepPreferences.changeTo = "$1";
としておいて、findGrep()の戻り値に段落スタイルを適用して、changeGrep()でタグを取り除く、という仕組みにした。一段落ずつ見ていってタグを取り除くより正規表現で置換した方が楽に思えたので。

何回か検証して問題がなかったように見えたのだが、よく見ると、タグを除去した後に、上付き文字の位置がずれている。正確に言うと、上付きの属性がかかる位置がずれているのである。例えば、「H20の・・・」となっていたところが「H2O・・・」となっているのである。。。

どうも置換する際に属性の位置が保たれていないようである。いやいや本格運用する前に気づいて良かった。
ってこれはスクリプトだけではなく、Indesignの検索置換ダイアログでも同様の症状のようだ。。

0 件のコメント: