印刷を目的としない文章を、修正個所を判りやすく指示 (つまり「校正」) しながら遠くにいる人ととともに作っていくにはどうするか。メールでやりとりすることを念頭において考えていたことをまとめてここにメモしておく。
ごく短いプレーンテキスト
「2 段落めの最初の文、ふたつめの『ロボット』を『人間』に置換」という感じの、電話で口伝えするような、長たらしい指示。 ごく短い文書で校正個所が少ないときにはこれでも伝わるが、増えてくると嫌になる。
指示を受け取った側 (この文章では「著者」と呼ぶことにする) は、その指示にしたがって元の文書を書き換える。
改行が少ない文書
自然言語の単純なテキストファイルや HTML の文書など[1]。
校正の内容は、プレーンテキストなら文字種や大きさはないので、ほとんど削除・挿入のみ (置換は「削除して挿入」で表現できる) となる。
タグによる校正記号
<del> と <ins> で表現する。校正に関するコメントは著者と校正者で了解して <comm> にするとか、あるいは HTML の範囲内のタグを流用する。
ロボットは他の<del>ロボット<comm>これは「人間」のはず</comm></del><ins>人間</ins>に危害を加えてはならない.
HTML を知っている人には意味が通じやすい。しかし、人間に伝えるためのもので、実際に HTML のタグとして機能するわけではない[2]ので注意が必要である。エディタは HTML 対応のもので代用できるかもしれない。
校正の作業
校正者は対象ファイルにエディタで直接タグを書き込んでいく。置換の場合、<del> と <ins> が連続することになる。
ruby を使える環境なら Docdiff (単語あるいは文字単位の差分でとる) を利用する方法がある。docdiff.conf で
tag_del_start = <del> tag_del_end = </del> tag_add_start = <ins> tag_add_end = </ins> tag_change_before_start = <del> tag_change_before_end = </del> tag_change_after_start = <ins> tag_change_after_end = </ins>と設定しておく。
元ファイルを別に保存しておき、対象ファイルは校正後の形に書き換える。
docdiff --format=user example.txt.orig example.txtで校正記号入りテキストを作成する[3]。コメントには対応していないので、その後エディタで開いて書き込む。
著者の作業
校正記号入りテキストを受け取った著者は、エディタで <del> のタグで囲まれた部分 (もし校正者の指摘を受け入れられなければ <del> ではなく <ins> で囲まれた部分) や <comm> で囲まれた部分を削除する。さらに <ins> タグを (囲んでいる内容は残して) 削除する。
HTML 文書
HTML 文書の場合、上記の <del> や <ins> のタグを使う方法では校正記号が目立たない。また、タグ自体の校正をするときに特に混乱する。たとえば
<ul> <li>ロボットは他の人間に危害を加えてはならない.</li> <del></ol><comm>閉じタグが間違っています</comm></del><ins></ul></ins>となってしまう。そもそも上記の方法で用いたタグは人間のためのもので、著者と校正者で了解できていれば何でもよく、<del> や <ins> でなければならないわけではない。
それを一般化した 真鵺道 Manued というものがある。もちろん HTML 以外のプレーンテキストにも使える。規則は少ないのですぐに覚えられる。たとえば上の例は
<ul> <li>ロボットは他の人間に危害を加えてはならない.</li> 【</ol>/</ul>#閉じタグが間違っています】のように書くことができる[4]。
真鵺道 Manued の最大の特長は機械処理が可能という点である。Emacs (系) には manued.el がある。しかし残念ながらほかのエディタの対応は見かけない。
校正の作業
対象ファイルにエディタで校正記号を書き込んでいく。Emacs で manued.el を使えば楽である。
校正ファイルの先頭に、アプリケーション (Emacs の manued.el のみなのか) に対する修正記号定義コマンドと、人間に対する注意書 (著者と校正者がしっかり了解していればなくてもいい) を付ける。
defparentheses [ ] defdelete / defswap | defcomment ; defescape ~ deforder newer-last defversion 0.9.5 校正記号は次のとおりです。 [α/β] αをβに変更する [/α] αを挿入する (変更の特殊形) [α/] αを削除する (変更の特殊形) [α|γ|β] αγβをβγαに並べ換える [α||β] αβをβαに並べ換える(並べ換えの特殊形) [;コメント] 校正に関するコメント
ruby を使える環境なら、Docdiff (単語あるいは文字単位の差分でとる) を利用する方法がある。
元ファイルを保存しておき、
docdiff --format=manued example.txt.orig example.txtとする。
真鵺道 Manued 自体は上述の定義コマンドで修正記号を変更できる。しかし Docdiff は真鵺道のデフォルトの修正記号 (上記のもの) に固定されていて自由に変更できない。また Docdiff はコメントには対応していないので、後でエディタで書き込んでいく。
著者の作業
もし著者が Emacs で manued.el を使えるなら、受け取った校正記号入りテキストで、個々の校正記号についてオリジナルか修正指示のどちらを選択するかを簡単な操作でできるし、校正記号を含まない元の文書または修正された文書の全体を取り出すことも簡単にできる。
もしそれを使えない場合は、前述のタグ表現の場合と同じように、いちいち校正個所を直していく。
改行を多く含む文書
もちろん適宜改行されているテキストに対しても上記の方法は適用できる。 そのほかに diff を使うことができる。元ファイルを保存しておき、
diff -u example.txt.orig example.txtとする。ディレクトリごとまとめて扱うこともできる。 プログラムのソースコードなどに向いている。よく改行されている HTML 文書や TeX の文書に使うこともできる。
校正コメントは使えない。
著者は diff ファイルを受け取ったら、patch で元ファイルに反映させることができる。
書き換えてしまう
ここまで「変更個所および変更内容をわかるように指示する」ことに留意して、ファイルを直接書き換えてしまう (オリジナルを残さずに) ことは考えなかった。
だんだん「校正」から逸れてきたが、履歴がきちんと残るのなら直接書き換えてしまうということも考えられる。メールでのやりとりではないが Wiki という手もある。しかし短い単なるテキストを扱うには大袈裟すぎる。それに校正段階では一般に公開しないのが普通で、そのためには認証のしくみをつけて、いちいちログインしてもらうようにしなければならない。いわゆる一般人にはそれだけでも敬遠される。
cvs, subversion などと適切なブラウザの組み合わせも、変更点がわかるので「校正」と言えなくもない。しかしこれもプログラマやそれと同じ程度にコンピュータに興味を持って向かい合える人以外にはなかなか受け入れてもらえないだろう。
朱を入れる
OpenOffice.org Writer, MS Word, PDF などの文書に「朱」を入れる。それぞれのデータを扱えるソフトを著者と校正者がそれぞれ所有していて、その「コメント機能」の類を使えることが前提となる。商用ソフトが必須となったり Linux では揃えられなかったりと障壁が大きい。
文字種や大きさ、レイアウトなどの校正は、ここで言う文字校正の範囲を越える。文字校正だけなら、テキストに変換して上記の方法を適用することも考えられる。
最後の手段は、紙にプリントして朱を入れる。もはや「電子テキスト」からも逸脱する。ついでなのでここにメモしておくが、「印刷校正記号 JIS Z 8208:2007」は 2007-01-20 改正になっている。これは有料となっているが、日本工業標準調査会のサイトで、JIS規格番号「Z8208」で検索すれば閲覧できる。
- HTML の地の文で適当に改行を入れると、たいてい微妙に空白がはいってレンダリングされる。英語などでは改行は単語間空白という取り扱いで問題ないのだが、日本語では格好悪いので 1段落のあいだ改行を入れないことが多い。pTeX はこのへんをうまくやってくれるので気にせず適当な文字数で改行をいれたほうがいい (エラーの際に行番号が表示されるので場所を特定しやすい)。↑
- 全体を <pre> で囲むだけでもブラウザでそれなりに見えるかもしれない。↑
- Docdiff には –format=html というオプションもある。変更点を HTML で美しく表示できるようにするものである。しかしその表示のためにたくさんのタグなどがはいるので、著者が校正結果を抽出するのにやや手間がかかる。↑
- defparentheses を【 】、defdelete を/、defcommentを#と設定している場合。↑