構造化テキスト

構造化テキスト

論説文でも創作類でも、文章・テキストが長文になればなるほど構造化して整理しなければ全体が把握できなくなる。長文ではなくてもそれぞれの部分の内容を区分しなければならない場合もある。具体的には、章立てをしたり見出しを付けたり、章の中に節や項を設けたり、見出しの配下に小見出しを設けたりする。

もちろん、文章・テキストの構造化には見出しや章立てというだけではなく、強調部分やリスト部分など数多くの要素が存在する。これらを定義づける方法として、HTMLなどのマークアップや、もっと簡単にはMarkdown記法方式などもあり、テキストエディタではこれらの書式にも対応しているのが普通である。
しかしながら、純粋なテキストで一般的な文章書きにおいては、見出し付けとその階層化程度で概ね十分であるし、必要なら一通り書き終えた後でそのような各種のマークアップを行っても良い。構造化テキストの基本となるのは見出し付け作業である。

構造化作業

構造化作業は、ただ単純に章名や見出しを付けるということで一応成り立つが、ワープロやテキストエディタにそういう構造的な処理をさせる前提として、見出しはどれ、内容部分がどこまでであると定義してやる必要がある。
たとえばテキストエディタではアウトライン機能を備えている物があり、見出しや章名として指定した部分を鍵にして、部分全体を見出しだけに絞り込んで俯瞰したり、特定の見出しの部分だけ表示させたり、見出し配下の部分全体を別の場所に移動させたり入れ替えたり、節を章に昇格させたり逆に降格させたりすることなどができる。

ワープロでの見出し定義は、当該行を範囲選択などしてそれがどの階層の見出しだと書式を指定してやる必要があるが、テキストエディタでは鍵となる文字または特定の文字列により指定する。
WZ EDITORもそういうアウトライン機能があり、テキストの構造化は、標準で行の先頭に半角のドット「.」がある箇所を見出し行として判別することにより行っている。半角ドットの個数が増えれば、次のようにその下の階層という判別をする。

 .第1章
 ..第1節
 ...第1節第1項
 ..第2節
 .第2章

半角のドットは目立たない文字であるため、行の先頭にあっても邪魔になることはなく、実に合理的である。設定で非表示にすることもできる。
行の先頭に自分で書き足しても良いし、アウトライン編集の機能で見出しを追加してもいい。[Ctrl]+[数字キー1~6]で目的の階層の見出し書式に変更するのも簡単である。

エディタでこういう文字記号を付加してしまうと、後でワープロで最終整形する際には邪魔になると考えられるが、必要なら最終段階で後述の置換機能を活用してまとめて削除すれば良い。
他のテキストエディタでも、だいたい同様の手法で先頭の文字を見出し記号とみなして同様の処理をする。見出し記号はたいていカスタマイズというか、任意の記号を指定することも可能で、さらには見出し部分を色分け表示できるようになっていたりもする。WZに倣って半角ドットを見出し記号の一つとして選択できるようになっているものや、サクラエディタのようにアウトライン構造のタイプを「WZ階層付テキスト」として認識させるようにしている物もある。

見出しの色分け

見出し部分の色分け表示のために正規表現でキーワードを指定する場合は、次のようにすると、指定できる。

 ^\.+.*$

これは正規表現で「行頭にドットが1個以上連続してあり、その後に改行以外の文字列が行末まで続く」という意味である。この部分がキーワードだと指定して、そのキーワードを色分け指定すれば良い。
方法はエディタにより異なるが、そういう機能を備えていないものもある。WZではキーワード指定をしなくても、最初から標準の見出し部分とされるので、あとは色分けやフォントの指定をするなどにより、目立って見やすくすることができる。

見出し記号の削除

文章・テキストが完成し、あとはワープロで内容を編集するので見出し記号が邪魔だという場合、一つ一つ見て作業するのも悪くないが、一気に削除をするなら次のような正規表現で置換機能を使う。

 ^\.+ ⇒ (何も入力しない)
 (検索文字列 ⇒ 置換文字列)

これは、「行頭にドットが1個以上連続してあるもの」を削除するという指定である。ドット部分だけ削除して見出しの文字列自体は削除されない。

一太郎でこの作業をするには、もちろん置換ダイアログで正規表現指定をする方法もあるし、マクロを使う方法もある。
キーボードマクロで記録してみると次のような1行のステートメントになる。

 正規表現全置換(.正規表現="^\.+",.置換文字列="",.検索方向=3,.比較方法=7,.確認=0)
  ……又は……
 ReplaceRegexpAll("^\.+","",3,7,0)

これだけのマクロは大袈裟、あるいはマクロ自体敷居が高いという場合は、一太郎プロンプトのスクリプトで処理するという方法もある。その場合の記述は次のような簡単なもの。一太郎プロンプトはコマンドのヘルプも表示されるので、マクロよりも取り掛かりやすい。

 s/^\.+//sg

HTML化

また、第一階層の見出しはHTMLのh1要素とし、第二階層の見出しはh2要素としたい場合は、タグ付き正規表現を使い次のようにする。(なお、エディタにより少し正規表現の解釈に違いがあるかも知れない。)

 ^\.([^\.].*$) ⇒ <h1>\1</h1>
 ^\.\.([^\.].*$) ⇒ <h2>\1</h2>
 (検索文字列 ⇒ 置換文字列)

一つ目は、「行頭にドットが1個あり、その後にドット以外の文字、改行以外の文字列が行末まで続く」部分のうち、「先頭のドットを除く文字列」部分をグループ化(タグ化?)して、置換文字列指定において、そのグループ化した部分をh1要素で囲むように指定している。
二つ目も同様で、「行頭にドットが2個あり、その後にドット以外の文字、改行以外の文字列が行末まで続く」部分のうち、「先頭2個のドットを除く文字列」部分をグループ化(タグ化?)して、置換文字列指定において、そのグループ化した部分をh2要素で囲むように指定している。

h1からh6まで、6回この置換作業をするのが面倒なら、エディタで連続置換、一括置換機能があればこの機能を活用する。あるいは、マクロが作れるならマクロで連続置換を行えば良いのである。WZでは、Grepツールを使うとその様な複数一括置換ができるようだ。

アウトライン編集

そういう構造化テキストを活かすには、アウトライン編集機能と組み合わせることが重要である。見出し行が強調表示されたり本文の文字色と別の色で表示されるというだけでも十分に、長文テキストが見やすくなるものだが、特定の見出しの部分だけを抽出して表示したり、見出しだけを抽出表示したり、あるいは見出し配下の本文の階層を上げ下げしたり、そっくり前の見出し段落と場所を入れ替えたりできると、長文編集の効率が格段に向上する。

そういう編集が出来るのが、アウトラインプロセッサと呼ばれるアプリケーションだが、WZや秀丸など高機能なテキストエディタにも同様の機能が付いているし、一部のワープロソフトにも同じような機能を持ったものがある。
アウトラインのウィンドウをサイドバーのようにエディタの脇に表示させておくと、見出し構造を常に参照しながら文章を書く作業が出来る。

WZのアウトライン編集は、幾つかモードもあり、アウトラインプロセッサのモードにすると見出し配下の本文だけが表示され編集できるモードになる。WZ EDITORにだいぶ前から付属しているWZ BOARD(かつてのWZ MEMO)は、このアウトラインプロセッサのモードを基本にしたメモツールであるし、WZのヘルプもアウトラインモードを基礎にした造りになっている。