stat.phys.kyushu-u.ac.jpこのマニュアルではSmartDoc文書をmanページ(roff -manフォーマット)に変換する方法について説明してます。具体的には.sdoc文書をPureSmartDocフォーマットに変換し、XSLTを用いてmanページに変換します。
以下の機能に対応しています。
(逆に、それ以外には対応していないとも言う(^ ^;;。)
ドキュメントとスタイルシートのアーカイブはsdoc2man-0.3.1.tar.gzです。
以下に、具体的な実行の手順を示します。SmartDoc文書をfoo.sdocとします。
XSLスタイルシートをつかって、manページに変換します。SmartDocがインストールされ、sdoc2man.xslが文書と同じディレクトリにあると仮定します。次のコマンドを実行します。
% sdoc -format:xslt -xslt.xsl:sdoc2man.xsl -xslt.suffix:man \
-xslt.encoding:EUC-JP \
-xslt.prepareRegexRule:sdoc2man_rule.xml \
foo.sdoc
SmartDoc 0.67で追加されたXSLTジェネレータ機能、0.6.9betaで追加された正規表現処理を使っています。これでfoo.manが生成されます。
コマンドの入力が面倒な場合にはSmartDoc.propertiesファイルを同じディレクトリに作ると良いでしょう。
# argument0=sample.sdoc verbose=true toc=true # index=true format=html4,xslt,pure packager=dir # latex2e.box=AscmacLaTeX2eBoxHandler # latex2e.program=AllttLaTeX2eProgramHandler # latex2e.table=ArrayLaTeX2eTableHandler # latex2e.imageLoc=htb # latex2e.encoding=EUC-JP xslt.xsl=sdoc2man.xsl xslt.suffix=man xslt.encoding=EUC-JP xslt.prepareRegexRule=sdoc2man_rule.xml html4.encoding=Shift_JIS
最後に正しくmanページに変換されたかどうかを確認します。
% cd xslt/ % ls -l foo.man -rw-r--r-- 1 ryouk users 3219 Sep 22 16:21 foo.man % groff -t -Tnippon -man foo.man
-Tnipponオプションはjgroffで日本語を出力するためのものです。一般的なシステムでは-Tasciiオプションを使います。このページを変換してみた結果がこのサンプルと表示です。まだいろいろ問題点があります。
sdoc2man.xslの最初のほうに3つのパラメータがあります。以下の部分です。
<xsl:param name="preamble_section" select="'1'"/> <xsl:param name="preamble_source" select="''"/> <xsl:param name="use_tbl" select="false()"/>
これらは変換の細かい仕様を決定します。必要に応じて書き換えてください。XSLTプロセッサによってはコマンドラインでこれらの値を設定できるものがあります。
簡単なtableに対応しています。
XML文書ではピリオド、バックスラッシュを自由に使うことが出来ますがmanualページ(roff -manフォーマット)の中では特別な意味があるのでエスケープする必要があります。この処理はまだ実装していません。したがって現段階では文書を書く時に気をつける必要があります。これはSmartDoc0.6.9betaから搭載された正規表現機能で処理できるようになる予定です。以下にmanualページで良く使うエスケープを載せます。
| 文字 | manページでの表記 |
| \ | \e |
| - | \- |
| . | \&. |
| ` | \` |
| ' | \' |
| " | \" |
例えばmanページにはジャンルを示すセクション番号が必要ですがSmartDocにはこれを指定する場所がありません。現在はスタイルシートの中で1と仮定しています。簡単にカスタマイズできるようにスタイルシートのトップレベルのところでパラメータとして指定できます。セクションによってマニュアルページの構成はかなり変わるのでセクションごとに典型的なスタイルシートを作成することになると思います。
sdoc2man.xslはまだできたばかりでやるべきことがたくさんあります。いくつかここにあげておきます。