自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

EWBのツールとフロー

adventar.org

この記事はEWBアドベントカレンダー2019の3日目の記事です。

2019年12月5日追記: ツールの用途についてコメント頂きました!

EWBのツール群にはkakasiやxemacsなどが含まれる これらのツールは、EWB本体に必要なツールではなく、エディタでマークアップするのが苦手なアスキー社員でもEWBを使えるよう、GUIツールを追加した際に含まれるようになったものだったと記憶しています。 XEmacsはマウスで範囲選択できるようにするため、KAKASIは索引作成時に候補を表示させるために使われていたんだったかな。

2日目の記事にコメントくださっていて、3日目の記事のところで私が予想していたものが大体合致していたようです。こういうレスポンスが欲しくて始めたので嬉しいですね。

EWBの構成概略

さて、2日目の記事ではEWBの歴史を軽くなぞりました。 歴史的なソフトウェアのつくりについて考えるとき、 ハードウェア事情といった時代背景を欠くことはできません。

EWBが構築されるにあたってのコンセプトは

  • 作業工程の維持
  • 作業分担の維持
  • 効率化
  • コストを下げる
  • 既存の環境を利用
  • 品質

といったことだとEWBハンドブック一部二章で書かれています。 結果、UNIX(Like)環境で、主要ツール以外は既存のアプリケーション を利用するなどしたシステムが誕生しました。また、 ビルドを行うEWBサーバと、ドキュメントの編集を行うクライアントに 分かれた構成も技術書出版会社の面目躍如といったつくりです。多分。

インストール要件

EWB3.3の動作環境と必要アプリケーションは以下のようになっています。

ツール種別 ツール名
マシン PC-UNIX系のOSがインストールされたコンピュータ
Printer UNIXから利用できるPostScriptプリンタ
ターミナル X Window対応の端末 (無くとも可)
TeX pTeX p3.0.1 (EUCバージョン)
LaTeX pLaTeX <2001/09/04> (EUCバージョン)
DVI->PS変換 dvipsk 5.86 p1. 5f
和文VF作成 makejvf 1.1a
索引整形 mendex 2.5
PSインタプリタ ghostscript (日本語対応版で5.0以降)
PSビューア ghostview または gv
漢字コード変換 nkf
文字置換フィルタ sed (日本語対応版)
テキストエディタ jvim (日本語対応 vi)
Java実行環境 jdk1.1.8以上
X Windowシステム XFree86等 (X11R6またはそれ以降)
X Window漢字端末 kterm
Tcl/Tkインタプリタ tcl8.0/tk8.0 (日本語対応版)
perlインタプリタ perl5
テキストエディタ xemacs
かな漢字逆変換 kakasi
漢字変換インターフェイス kinput2

(FreeBSD 4.9-RELEASE, RedHat Linux 8.0, Vine Linux 2.6r1 で動作確認済み)

いやー。ははは。これを維持するのは相当……。 外部に投げられるところを投げるとそれが更新 されない場合のリスクがあるということですね。皆さんはOSSの維持に貢献していますか?

EWB3.3本体はJavaですから、他が補助的に必要になる訳ですね。 なお、3日目の時点では某書についてきたバイナリEWBを開いて 確かめるなどはしていません。

LaTeX系のツール群としてp\TeX{}p\LaTeX{}、dvipsk、makejvf、mendex。 PostScriptレベルでのの処理用にghostscriptとghostview。 EUC-JPしか処理できなかったp\TeX{}のために文字コードを変換するnkf。 置換処理用のsedCLIでの文章編集のためのjvim。 Perlは通常のスクリプト用として、Tcl/TkがGUI操作用のインターフェース画面を 作っていたんでしょうか。 入力補助用のkakasikinput2があり。 そうなるとxemacsはクライアント側でのエディタでしょう。

EWBで使うファイル

どうでもいいですが、 EWBハンドブックの1部4章1節のタイトル「一般知識」ですよ。強い。

dat 体裁入力ファイル

大まかなレイアウトに関する情報を入力するファイルです。 内容については後日の記事でやりますが、ここにビルドに必要な補助情報と 全体のレイアウトを記述します。 そう、EWBを使っている人はバックエンドの\LaTeX{}を意識することなく 書籍が作れるのです! 設定項目からどんな命令に置換されるのか透けて見えますが。

本文部分のものと、索引体裁があったようです。

doc ドキュメントファイル

ドキュメント本文が入るファイル群ですね。.docMS-Wordの専有に近い拡張子となるのは Windows95以降くらいらしいので、 それより古い起源を持つソフトウェアが使い続けていても仕方無いですね。

最初tar.gzから解凍したとき3時間くらい悩んだよ……。

contents.ewb ファイル

docファイルをセクション順にトリガを用いて記述してあります。 このファイルを元にファイル内容を取得して全体を構成する訳ですね。

trigger.def

EWBのマークアップ\LaTeX{}のCSの橋渡しですね。 書籍毎に処理を弄れるように外に出ていたのでしょうか。

PDFStyle

PDF時の特殊処理を記述したファイルですね。dvipsの方がメジャーだった時代。

yakumono.sed

約物の処理はsed任せだったようですね。


以上に加えて、画像や、表を別ファイルに記述したものなどを合わせると EWBでドキュメントを作成するための準備ができます。 漏れがあったら後日こっそり足します。

EWB-Shelf

ツール群全体のことをEWBと称してきましたが、組版処理を担うプログラムは EWB-Shelfと呼ばれています。 「トリガ解析をして文法ミスをチェック」する作業も含まれると ありますので、p\TeX{}に処理を渡す前にエラーのほとんどを 潰せるようにしたのでしょうか。組版トリガはスルーしてた可能性もありますが。 この辺りは後半の記事にご期待ください。

私がヤベーと思うのは、コイツ体裁ファイル処理して.clsファイルを ジェネレイトするんですね。現代的な(あるいはプリミティブな思想の) \LaTeX{}ではなかなかやらないと思います。

guisted

体裁入力ファイルをGUIで作るためのツール、とのことです。 TeXWorksの初期設定的なやつや、 kmutoさんが開発中のRe:VIEWのブラウザで動作するレイアウトエディタなどが近いでしょうか。 特徴として。EPS画像を扱えるのでより装飾の強いレイアウトが可能です。 それぞれのトリガの動作詳細もGUIで調整できます。確かに強い。

past

図表の組み込みフローのところに記載された強そうな文字列。 「物理属性エディタ」なるツールによって原稿中の図表の入力、設定を行い、 「物理属性ファイルに保存」をするらしいです。 EWBの組版トリガはほぼ\LaTeX{}そのままなので、 仮組からの修正が利きやすいのでしょう。 テーブルなどが別ファイル記述な理由もここでの修正を視野に入れたものなのでしょうね。

物理属性エディタの名前はpastです。 usephyというオプションをEWB-Shelfの処理上に記載し、 pastを展開します。原稿中の図表位置につけたトリガの位置を取得し、 表れた設定画面で値を埋めていくと良い感じになるとのことです。


細かいツールはまだまだあるんですが、まあEWBハンドブックを見ましょう。

フロー

大まかなフローを更に簡略化すると

組版チーム

  1. 体裁ファイル作成

原稿チーム

  1. 原稿作成
  2. 図表作成
  3. EWBフォーマットに原稿を落としこむ

どっちかのチーム

  1. EWBフォーマットの図表リスト

組版チーム

  1. 流しこんで組版
  2. チェック
  3. 図表位置など修正

現代、特に同人誌などになると著者と編集と組版がごったになって様々な箇所で 地獄を見ていることを考えると、この分担フローを改めて考えてみるのもよいかも しれませんね。よし、綺麗に終わった*1

Next

4日目は@hid_alma1026さんです!

adventar.org

*1:折を見て綺麗に構成を組み直そう。そうしよう