索引に含まれる全項目のノンブルをずらす

4月 9th, 2006
[`evernote` not found]
Facebook にシェア

あくまで仮の話なのだが、書籍の編集作業をしていて、本文記事の編集も終わり、索引のテキストデータ(項目とノンブル(ページ番号))もきっちり作ったとする。仮に、仮にだ、そういう状況になってから、「やっぱり本文記事のノンブルを変更することにします。全部2ページ後ろにずれます」なんてことをいわれたら、ちょっとばかりブルーになるのが人情というものだ。DTPソフトによっては索引用のプラグインが提供されていることもあるのでこれを使えば一発だと思うかもしれない。しかし、作業の進行によっては索引を複数人で分担して作らなければいけないこともあるし、本文での表記をそのまま索引で使わないこともあったりするから、意外と索引用プラグインの出番は少なかったりする。そもそもDTPのプロダクションが索引用プラグインを持っていなかったらどうしようもないし。
じゃあ、作った索引のノンブルを手作業で変更するか? 私も1桁の足し算くらいは余裕でこなすが、それを2000も3000も間違いなくこなす自信はない。今、脳トレーニングなんてやりたい気分でもない。

そこで、正規表現とExcelを使うことにする。


例えば、索引のテキストデータが、次のような形式になっているとする。この場合は上下巻で、項目名とノンブルの間はタブで区切られている。

項目名1 上○○○,○○○,下○○○
項目名2 下○○○,○○○


まず、Excelで処理できるよう、ノンブルの区切りをすべてタブに置換する(本当は最初から索引がExcelで作ってあるとよいのだけど)。テキストエディタ上で正規表現の使える置換機能を呼び出し、「\t.+([0-9]),([0-9])」→「\1\t\2」と指定する(正規表現はエディタによって微妙に違うので注意)。これによって、(タブのあとにある)数字ではさまれたカンマがタブに置き換わった。例では「上」や「下」といった文字が付く数字もあるので、それらも「上 タブ 数字」などとなるよう処理しておく。
こうやって処理したテキストデータをExcelに読み込む。そうしたら、新しいシートを作り、そこに項目名の行をコピーする。
ノンブルについては、すべて「2」を足したい。そのため、新しいシートの対応セル(例えばA3セル)には「=IF(Sheet1!A3=””,””,Sheet1!A3+2)」と入力する。これは、Sheet1のA3セルが空なら、このシートのA3セルも空、空でないなら2を足した値を入れる」という意味だ。入力したセルの右隅をドラッグして範囲を広げれば、すべてのセルに同じ式を簡単に入力できる(参照するセルもきちんと対応したものになる)。
「上」「下」と入っている部分は数値でないためエラーになるが、これについてはExcelの検索・置換機能で修正してしまえばいい。いろいろテクニックを使えばこの辺りもスマートに解決できるのだが、とりあえずはスピード優先だ。
こうして出来上がった表をコピーして、再度テキストエディタに貼り付ける。そして最初に行った処理の逆、つまり数字と数字の間をカンマにするといった処理を行えばいい。なお、例は上下巻とも2ページ足しているが、増やすページが上下で違うとちょっとややこしいことにはなる(上下巻それぞれの索引を作って、あとでマージすることになるだろう)。
あとは、できた索引のテキストデータを入稿すると……。いや、以上はあくまでも仮の話だけど。

Leave a Reply

Comments links could be nofollow free.