アイデア:日本の事務書類に見られる複雑な表組みをLispのS式で書く
日本の事務書類に見られる複雑な表組みを、論理的な構造を保ちつつテキストファイルで書きたい。 (参考:奥村 晴彦:「ネ申 Excel」問題 [PDF])
そう考えていたとき、LispのS式で書くことを思いついた。
このアイデアのポイントは、下記である:
- 表組みを罫線で区切るのではなく、(左側に置く)ラベルと(右側に置く)コンテンツの2つで構成される「ブロック」として考える
- プログラマの方には、keyとvalueに例えた方が分かりやすいかもしれない。
- 1つの表組みは、垂直に並んだブロック(行ブロック)の集合である
- 1つの行ブロックには、複数のブロック(列ブロック)を水平に並べることができる
- ラベルとコンテンツを、S式を使って
("ラベル" "コンテンツ")
の形で書く
これを、Lisp Tableと呼ぼう。
例
これだけでは分かりにくいので、例として、手元にある文書のうち表組み部分をLispで書きおこしてみた。 すると、これぐらいの複雑さであれば素直にS式で書けることが分かった。
見本
Lisp Tableによる表現
;; Lisp Table
(("フリガナ" "")
("氏 名" "")
("所 属" "")
("職名・学年" ""))
(("申請者の区分\n(いずれかに○)" "教職員 大学院学生等 学部学生等 事務所職員 業 者 その他")
(("学内内線番号" "") ("車 種\n(いずれかに○)" "四 輪 二 輪"))
(("車両番号" "") ("申 請 期 間\n※ 和 暦" " 年 月 から\n 年 月末まで"))
("現 住 所" "〒 - \n")
(("自動車等を利用したときの自宅からの距離" " km") ("公共交通機関を利用した場合の所要時間" " 時間 分"))
(("申請理由" "") (("確認者氏名" "印")))
("通勤手当受給者欄" "□ 通勤届を自動車等(四輪車・原付を含む二輪車)で提出済み(予定)\n(該当する場合、□にチェックを入れてください)"))
(("入構・駐車整理料金" "")
("許可番号" "")
("駐車場所" ""))
将来について
まず、詳細な仕様については全然詰めてないので、決める必要がある。
この記法をHTMLのTableかLaTeXのtabular環境に直せたら、実用的になるかもしれない。 できれば、Pandocに流してWord文書とかExcel文書に直せるようになったら最高。
時間ができたら自分で実装したいが、誰か実装してくれるとうれしい。 その際、Haskellで実装してくれると、Pandocに組み込むときに楽なのでさらに嬉しい。