April 16, 2004

Outlined YAYADoc完成か

[ yaml]

アウトライン・テキストからDocBook XMLを生成するシステム "oyaya" がほぼ完成に近づいた。
表組み、bibliographyあたりが落ち着いてきたので近くリリースできると思う。

サンプルとして「Windowsユーザーのための電子メモ術」というのを書いてみた。文科系の論文であれば、だいたいこれでいけそうである。

oyaya完成のせいで、論文を書けない理由がなくなってしまった。しかたない。論文を書きまくろう。

March 19, 2004

YAML文書の先例

[ yaml]

YAMLで本格的な文書処理をしているサイトが見つかった。
http://www.hpc.cs.ehime-u.ac.jp/~masato/goshin/

おもしろくてためになります。
Ruby の YAMLパーザは、日本語EUC-JPのキーを読めるらしい。Perlはだめみたいですね…

March 17, 2004

アウトラインからの変換

[ yaml]

・章節構造はインデントで指定
・面倒なリストや表組、脚注はWiKi風
・インラインはPOD風
・エディタのアウトライン・モードで文書作成

……というあたりが、一番快適な文書作成環境ではないだろうか。

ということで、アウトライン・テキストをYAYADocに変換できるようにしてみました。
仕様を少し拡大すれば、実用になりそう。
とりあえずのドキュメントを、Outlined YAYADoc ("oyaya")で作成してみました。

March 09, 2004

YAYADoc

[ yaml]

DocBookで書いた原稿のメンテがあるので、本気でYAML文書作成システム(Yet Another YAML Document)にとりかかり中。

DocBookでは、大きな原稿でsectタグの平仄が合わなくなると、メンテ不能に漸近する。SDOCなどXML系の文書作成システムでは、どれも同じ問題があるはず。

WZエディタのアウトライン・モードは簡単で、実用性が高い。大きな文書でも、タグにわずらわされることがない。

しかし、章節構造には対応しきれていない。このため、無意識のうちに、見出しの構造を頭の中でネストにコンパイルしながら見てしまう。これが、結構ストレスになる。

結局、章節構造はインデントで表現されているのが、一番自然で、ストレスなく読み書きできるでしょう。

YAMLのインデント構造は、この点で文書作成に適合していますが、タギングでややもたつくのと、WZエディタなどのアウトライン・モードでの使い勝手がいま二つくらい。この2点をうまく解決できれば、常用できるようなシステムになると思われます。

February 25, 2004

YAMLで文書処理!

[ yaml]
YAML で文書処理をしてみた。
HTMLやXMLより書きやすく、見やすい。
HTML や DocBook への変換もできるので実用性も問題なし。
この手の「簡単フォーマット」は、SOX, SDOC, xWiki など乱立気味ですが、
  • SOXはXML記述用でドキュメント作成には向かない。
  • SDOCはXMLなので閉じタグが面倒。JAVAでしか動かない。
  • xWikiではネストした章節構造が実現されていない。(headerのレベル設定しかできないので、DocBookのような章節構造に変換するには、別途パーザを作らないといけないのがネック(T_T))
といったところで、どれも帯に短し襷(たすき)に長し。
YAML系とアウトライン・テキストの"something in between" あたりが正解ではないか、と思っています。

まずはこんな感じで。これなら簡単に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に変換すると…
<?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。これは良いですねえ。

あとは、リストと表組みを作れば完成形。乞うご期待。