アウトライン・テキストから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点をうまく解決できれば、常用できるようなシステムになると思われます。
---
- 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に変換すると…
<?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>
これをDocBook XSLTでHTML に変換。
> 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。これは良いですねえ。
あとは、リストと表組みを作れば完成形。乞うご期待。