アウトライン・テキストからDocBook XMLを生成するシステム "oyaya" がほぼ完成に近づいた。
表組み、bibliographyあたりが落ち着いてきたので近くリリースできると思う。
サンプルとして「Windowsユーザーのための電子メモ術」というのを書いてみた。文科系の論文であれば、だいたいこれでいけそうである。
oyaya完成のせいで、論文を書けない理由がなくなってしまった。しかたない。論文を書きまくろう。
YAMLで本格的な文書処理をしているサイトが見つかった。
http://www.hpc.cs.ehime-u.ac.jp/~masato/goshin/
おもしろくてためになります。
Ruby の YAMLパーザは、日本語EUC-JPのキーを読めるらしい。Perlはだめみたいですね…
・章節構造はインデントで指定
・面倒なリストや表組、脚注はWiKi風
・インラインはPOD風
・エディタのアウトライン・モードで文書作成
……というあたりが、一番快適な文書作成環境ではないだろうか。
ということで、アウトライン・テキストをYAYADocに変換できるようにしてみました。
仕様を少し拡大すれば、実用になりそう。
とりあえずのドキュメントを、Outlined YAYADoc ("oyaya")で作成してみました。
DocBookで書いた原稿のメンテがあるので、本気でYAML文書作成システム(Yet Another YAML Document)にとりかかり中。
DocBookでは、大きな原稿でsectタグの平仄が合わなくなると、メンテ不能に漸近する。SDOCなどXML系の文書作成システムでは、どれも同じ問題があるはず。
WZエディタのアウトライン・モードは簡単で、実用性が高い。大きな文書でも、タグにわずらわされることがない。
しかし、章節構造には対応しきれていない。このため、無意識のうちに、見出しの構造を頭の中でネストにコンパイルしながら見てしまう。これが、結構ストレスになる。
結局、章節構造はインデントで表現されているのが、一番自然で、ストレスなく読み書きできるでしょう。
YAMLのインデント構造は、この点で文書作成に適合していますが、タギングでややもたつくのと、WZエディタなどのアウトライン・モードでの使い勝手がいま二つくらい。この2点をうまく解決できれば、常用できるようなシステムになると思われます。
このソースをDocBookに変換すると…--- - articleinfo: title: > YAMLで文書処理 author: > 随風老師 releaseinfo: > lastmod: 2004-02-25 - s: - id: readmefirst title: > はじめに - p: > DocBook でいえば sect1。 改行は無視されます。 - p: | DocBook でいえば sect1。 こちらでは、改行は保存されます。 - s: - title: > サブセクションのタイトル§1 - nested - s: - title: > §2 - p: > 2重にネストした段落。 DocBook でいえば sect2。 本文。 - p: | ネスト一段復帰。 改行は保存されます。 インデントは無視されます。 - p: > sect1の段落。 改行とインデントは無視されます。 - p: | それなりに快適。 これはいけそう!! - s: - id : discussion title: > YAMLで文書処理 - p: > DocBookも、 こんなに簡単に作れます。 ---
これをDocBook XSLTでHTML に変換。<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> <article> <articleinfo> <author>随風老師 </author> <title>YAMLで文書処理 </title> <releaseinfo>lastmod: 2004-02-25 </releaseinfo> </articleinfo> <sect1 id="readmefirst"> <title>はじめに </title> <para>DocBook でいえば sect1。 改行は無視されます。 </para> <para>DocBook でいえば sect1。 こちらでは、改行は保存されます。 </para> <sect2> <title>サブセクションのタイトル§1 </title> nested </sect2> <sect2> <title>§2 </title> <para>2重にネストした段落。 DocBook でいえば sect2。 本文。 </para> </sect2> <para>ネスト一段復帰。 改行は保存されます。 インデントは無視されます。 </para> <para>sect1の段落。 改行とインデントは無視されます。 </para> <para>それなりに快適。 これはいけそう!! </para> </sect1> <sect1 id="discussion"> <title>YAMLで文書処理 </title> <para>DocBookも、 こんなに簡単に作れます。 </para> </sect1> </article>
> xsltproc --output db0.html --stringparam section.autolabel 1 --stringparam section.label.includes.component.label 1 html/docbook.xsl db0.xmlできたものがこちら 。
目次も自動生成され、セクションのナンバリングもDocBook XSLTにお任せです。
WindowsでもLinuxでもOK。これは良いですねえ。
あとは、リストと表組みを作れば完成形。乞うご期待。