アウトライン解析

アウトライン解析について一生懸命書いたのですが, ViVi 本体のアウトライン解析機能の大幅な機能向上により, ここにかつて書いてあったことは不要となりました. 私が個人的に気に入ってる, ViVi の機能. 階層構造で構築されているテキストファイル(例えば, プログラムのソースなど)をその階層構造に従って把握できる機能.
超便利です. 超便利な割りには冷遇されている機能だと思います(ToT)

 

基本,

略

 

TeX ファイルのアウトライン解析

行頭文字を以下の様にしてみましょう. 綺麗に文書の階層構造が抜き取れると思います.
\\part{,\\chapter{,\\section,\\subsection{,\\subsubsection{,\\paragraph{,\\subparagraph{
\記号を表現するには, \\ だと思います. その様な仕様は公開されておりませんが, どうやらそれっぽいです.
すぐに気がつくと思いますが, これには問題があります.
\section{はじめに}
の様な記述があると, \section{ が行頭文字列となり, はじめに} がそれ以降の表題(?)となります.
よって, このブロックを代表する文字列は, はじめに} となり, アウトラインにはその様に表示されます. 多くの人にとって, 最後の "}" は不要でしょう.
アウトラインの解析を"行頭文字列"でやっている限りこれが限界ですが, TeX のソースに \section{}, \subsection{} などの単位でアクセスできるのでよしとしましょう. 以下の様に, \section{} の後に label を張ったりすると目も当てられないのですが, 最近は ViVi でアウトライン解析をすることを考慮して, こういうことはしないように心がけています.
\section{はじめに} %この章で, 本研究の必要性と既存の研究の不十分な点を紹介する. 

 

IETF draft ファイルのアウトライン解析

仕事上, (読みたくないのに) IETF draft なんぞを読むハメになっております. これらの文書は, 高度に階層化されておりますので, これを考慮して効率的に読むことを考えましょう.
ここでは例として, http://www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-20.txt を取り上げます.
先に申し上げておきますが, IETF draft にアウトライン解析を行うには,「文書への改変」が要求されます. また, IETFの方が章立てに基づいてアウトライン解析してくれている PDFファイル も存在ます. ViVi によるアウトライン解析の必要性の判断は各自にお任せいたします.
このドラフトは, 全13章構成で, 章, 節, 項 ... とかなり深くまで階層化されています.
例えば,
3.2.2.1  Command Numbering and Acknowledging
なんて記述があります. これは, TeXであれば section 3, subsection 2, subsubsection 2, paragraph 1 と言ったところでしょうか?
日本語では, 3章 2節 2項 1?... この後の1は日本語でなんと呼ぶのか?:(

さて, この文書は 以下のルールにより構築されています. さて, 以下の様に書かれており, 章/節/項 番号の前に何も目印が入っていない以上, アウトライン解析ができません.
3.2.2.1  Command Numbering and Acknowledging
よって, 「閲覧の為に文書に変更を施す」という暴挙が必要となります. まぁ, 納得いかないかもしれませんが, 私はやってしまいました (もちろん, オリジナルファイルのbackupはとって) . 個人的には, 便利になるとは思いますが...

具体的には, アウトライン解析で検出すべき章/節/項の開始位置の行にのみ, 行頭文字を挿入してしまう という方法で行きます.
では, 行頭文字列が,
章,節,項,い,ろ,は
となっているとしましょう. 幸いにしてこの文書は英語なので, 日本語文字列を挿入しても他とかち合うことがありません:p
ではまず, 章の開始位置の行に「章」という文字を突っ込みます. 章の開始位置の行の検出を考えましょう.
章の開始位置の行は例えば,
2. Definitions and Acronyms
です. 数字から始まり, ピリオドが続きます. 幸いにして章/節/項 以外は行頭が空白なので, 「行頭に数字がある」という条件が章の開始位置の行の検出のヒントになりそうです.
ちなみに, 節の開始位置の行は
2.1  Definitions
なので, 節の開始位置の行を排除するためには, 「ピリオドの後が空白なら"章"」で, 「ピリオドの後がさらに数字なら節」とすれば良さそうです.
よって,
:g/^[0-9]+\. /s/^/章/
でいけそうですね!! :D と, 思ったらダメです. これじゃ, 目次まで引っかかってしまいます(T_T)
これは, 手動で対処しましょう<(><)>. この文書は, 951行目までが目次で, それ以降には目次が無いので
:952,$g/^[0-9]+\. /s/^/章/
これで成功です. 後は簡単です.
:952,$g/^[0-9]+\.[0-9]+ /s/^/節/
:952,$g/^([0-9]+\.){2}[0-9]+ /s/^/項/
:952,$g/^([0-9]+\.){3}[0-9]+ /s/^/い/
行頭に, "章節項いろは"という文字が入ってしまうのがあなたの美的センスに反するなら(笑), 行頭文字を"●,◎,○,■,□"などあなたの美的センスが受け入れるものでやってみてください.
ちなみにこの文書は, Appendix が入っています. Appendix は
A.3.2   OFMarkInt, IFMarkInt
の様な書式で書かれています. 同様に対処してください.

 

アウトライン解析 : 今後の予定

今後は,
  • RFC のアウトライン解析について
  • ViViScript を用いて自動変換
    などを考える予定. 予定は未定.