HTMLフォーマッタ FORMHTML

[| ]  最終更新: 2011/02/10 19:59:38

FormHTMLの概要

これは HTML を拡張し、統一的な文書作成を可能にするための フォーマッタです。HTMLとTeXの中間的な性格をもちます。
基本的にHTMLですが、タグを追加し、スタイルを一定にするための 各種機能を装備し、PSファイル、TeX数式の張り込みの挿入を 可能にします。

特徴

ダウンロード

ここにマニュアルらしき物がありますが、試験用に作っているサンプルデータであって、まっとうなマニュアルはありません。
それでも、この変換システムにご関心がある場合は、下記よりダウンロードして下さい。 AS IS 提供です。作った本人もよく分からなくなり始めて、自分の要望を自分でかなえるためにしょっちゅういじっているので、動かない瞬間の可能性もありえます。

formhtml.pl size:21,866 bytes last-modified:2003/09/26 23:24:00
ps2imgが別途必要です。

テスト

_LAST_MODIFILED:   2011/02/10 19:59:38
_CURRENT_TIME:     2012/07/20 08:17:29
_SOUCE_FILE:       formhtml.bhtml
_SOUCE_SIZE:       21476
_DESTINATION_FILE: formhtml.html

使い方

起動

ソースファイル(推奨拡張子 .bhtml)を用意し、

formhtml (オプション) ファイル名.bhtml
とします。ファイルは複数指定でき、もしなければ、標準入力から 標準出力へのフィルタになります。実行するたびにインデックスファイル "sectionindex.html" を新作しますので、目次をまとめたい一群は 一括して指定します。

オプションには、formhtmlそのもののオプションとして

  -indexfile=目次ファイル    目次の出力先、デフォルトは sectionindex.bhtml
があります。そのほか、条件付き処理のために指定します。

その他のオプション:

  -includepath=<path>    path: 追加するincludeパス
                         (必要なら -includepath は複数指定可)
  -dsuffix=<suffix>      出力ファイルの拡張子を指定
                         例: .bhtml -> .html .bhtml -> _s.html
  -timeformat=<format>   時間形式指定 (YYYY/MM/DD hh:mm:ss)
  -timezone=<zone>       タイムゾーン 0でGMT, 9でJST  (9)
  -debug=<debug-level>   debug-level: メッセージの表示レベル

なお、別途 GIF変換関係の処理のためライブラリ "psimglib.pl" が必要です。

条件付き処理

すべてのタグ(含むHTML)を条件付きで処理できます。

source.bhtml:
## 通常(CSS版)
<OVERWRITE TYPE="SECTION">
<H1 Class="section">\TITLE\</H1><P>
<DIV Class="contents">
</OVERWRITE>
<OVERWRITE TYPE="/SECTION"></DIV><BR CLEAR="ALL"><HR SIZE=3></OVERWRITE>

## シンプル版(単純HTML)
<OVERWRITE TYPE="SECTION" IF="simple">
<H1>\TITLE\</H1><P>
</OVERWRITE>
<OVERWRITE TYPE="/SECTION" IF="simple"><BR CLEAR="ALL"><HR SIZE=10></OVERWRITE>

--------------------------
% formhtml source.bhtml          
    後者のOVERWRITEが無効=前者の OVERWRITE が有効
% formhtml -simple source.bhtml  
    後者のOVERWRITEが有効
基本的にはタグの中に IF="オプション" UNLESS="オプション" を 加えます。IF の場合には formhtml の起動時に "-オプション" が していされていた場合に有効、UNLESS の場合は指定されていない 場合に有効になります。何もない場合は常に有効です。

もし、閉じタグ(<TAG> に対する </TAG>)があった場合、 そこまで一括して無効化します。条件によって全体のスタイルを 変える場合などは、<COMMENT>とあわせて使うとよいでしょう。<P>


ファイル入出力タグ

<INCLUDE>

<INCLUDE FILENAME="ファイル名">
"ファイル名" で示されたファイルを文字通り挿入します。 ただ、読み込んで繋ぐだけなので、自分自身を読み込むと、たぶん、 おちます。

<DESTINATION>

<DESTINATION TITLE="ファイルタイトル" FILENAME="ファイル名">
以後の処理結果を"ファイル名"で示したファイルに出力します。 デフォルトでは、ソースファイルの拡張子をとり、".html"を つけたファイルに出力されています。 このタグによってひとつのソースファイルを複数の出力に分割できます。

"ファイルタイトル" は目次ファイル sectionindex.html に出力する ファイルの見出しです。あれば見出しが出力されます。

どちらかを省略することが可能です。
(両方省略するとほとんどなにもしないタグになります)


スタイル規定タグ

<HEADER>, <FOOTER>

<HEADER>   へっだ    </HEADER>
<FOOTER>   ふった    </FOOTER>
<DESTINATION>タグで複数の出力ファイルを指定した 場合に、すべてのファイルに自動的にヘッダ・フッタを挿入します。 <INCLUDE>によって、<HEADER> タグを含むファイルを 読み込むことで、ソースファイル群で統一的な設定が可能になります。

<OVERWRITE>

<OVERWRITE TYPE="タグタイプ">定義</OVERWRITE>
以後"<タグタイプ>"というタグが現れる度に "定義" と 置き換えます。これのOVERWRITEたる由縁は、既存のタグさえ 置き換えてしまいます。

定義の中に "\オプション\"という文字列があった場合、 "<タグタイプ オプション="内容">" と表記すると、 "\オプション\" 部分が "内容" で置換されます。

本文書で説明されているタグ類は置換の影響を受けませんが、 以下に説明する<SECTION> </SECTION>は 例外的に影響をうけます。目次を作成するなどの動作は 変化しませんが、見出しのスタイルはこれで変化します。 <TITLE>の定義では "\TITLE\" を入れることで、 タイトルの文字列が表示されます(それ以外の \\ は無視されます)。


文章構造タグ

<SECTION>

<SECTION TITLE="見出し" INDEX="目次見出し">   
1節分の文章(HTML)
</SECTION>
節を区分するタグです。この外側にある文章は出力されません。 <SECTION>タグでは、節の見出しを作成するほか、目次ファイル sectionindex.html にリンク付きの見出しをつくります。

見出しは TITLE= で与えます。スタイルは <OVERWRITE>で 指定可能です。INDEX= は省略可能ですが、ある場合は目次には この文字列を使用します。また、"noindex" が指定された場合、 目次には出力されません。

</SECTION> は節を閉じます。スタイルは <OVERWRITE> で指定可能です。

<INDEXTARGET>

<INDEXTARGET TARGET="ターゲット">
目次の出力を別ウインドウや別フレームに出力するための規定で、 具体的には <A HREF="..." TARGET="ターゲット">という 出力になります。指定しなければ、特に TARGET= は生成されません。

その他のタグ

<COMMENT>

<COMMENT> こめんと </COMMENT>
HTMLにもコメントはありますが、このフォーマッタはそれには 反応しません。そのかわり、<COMMENT> </COMMENT> で囲まれた領域を無視します。
条件付きでコメントアウトする場合は
<COMMENT IF="condition"> 
こめんと 
<COMMENT></COMMENT>
とします。 これは、<COMMENT>タグは、文字列"</COMMENT>"までをコメントにします。 そのため、IF=(UNLESS=)を付けた場合、<COMMENT>にはIFを付けられません。 そこで、ダミーを一つ入れます。IF=が満たされない場合にも相殺します。

<SUBSTITUTE> <#> !-???-!

<SUBSTITUTE TAG="subtag">auau<SUBSTITUTE>
<#>subtag</#> → auau
!-subtag-! → auau
文書上で置換します。<SUBSTITUTE>によって置換の登録を行い、<#>によって置換を実行します。 たとえば、用語解説をつくったりするとき、キーワードそのものを置換対象にして、リンクしたいところで、<#>で囲むという使い方ができます。
さらに強力で危ない?のが、!- -!です。 <#>と同様に機能しますが出力直前に置換を行うため、制限がありません(SECTIONの中身は通常は置換できない、PROTECT中は置換できないなど)。 ただ、何が起こるかよく分からない機能です。 以下は定義済み置換です。
_LAST_MODIFILED:   ソース更新日   2011/02/10 19:59:38
_CURRENT_TIME:     現在時         2012/07/20 08:17:29
_SOUCE_FILE:       ソースファイル formhtml.bhtml
_SOUCE_SIZE:       同サイズ      21476
_DESTINATION_FILE: 出力ファイル   formhtml.html

<NAMEDLINK>

<NAMEDLINK HREF="url#日本語">....</NAMEDLINK>
formhtmlで出力されたファイルには、セクションごとに<A NAME="">が付与されています。内容は章のタイトルそのものですが、JISのシフトコードなどの有害コードを除去した物になっています。 そのままだとリンクしづらいので<A代わりに使える物を用意しました。
また、タグにRWSをいれておくと、オプション -dsuffix による置換を行います。
<NAMEDLINK HREF="formhtml.bhtml">あ</NAMEDLINK>
<NAMEDLINK HREF="formhtml.bhtml#その他のタグ">い</NAMEDLINK>
<NAMEDLINK RWS HREF="formhtml.bhtml">う</NAMEDLINK>
<NAMEDLINK RWS HREF="formhtml.bhtml#その他のタグ">え</NAMEDLINK>




※ CSS版とCSS無し版で比べると違いがあります。

<PROTECT>

<PROTECT>  <A HREF= </PROTECT>
<PROTECT> </PROTECT> で囲まれた領域は HTML の タグ的にほごされます。この間にある <, >は &lt;, &gt; に変換されます。ソースリストなど、無意識に <, > を含む 文書を安全に出力できます。

<CPROGRAM> <SHELL>

<OVERWRITE TYPE="C-COMMENT">#c00000</OVERWRITE>
<OVERWRITE TYPE="C-RESERVED">#0000ff</OVERWRITE>
<OVERWRITE TYPE="C-PREPROCESSOR">#ff00ff</OVERWRITE>
<OVERWRITE TYPE="SHELL-ROOT">#ff00ff</OVERWRITE>
<OVERWRITE TYPE="SHELL-USER">#0000ff</OVERWRITE>
<CPROGRAM>C言語ソース</CPROGRAM>
<SHELL>シェルコマンド</SHELL>
<PROTECT>の仲間ですが、それっぽいキーワードに勝手に色を付けます。 見やすくなるかは不明です。また、適当に置換しているのでかなりいい加減です。 SHELLのほうなんか、%と#しかみてません。
<CPROGRAM>
#include <stdio.h>
int main(void)
{ // コメント 
  printf("%s","hello world!\n");
} /* コメント */
</CPROGRAM>

#include <stdio.h>
int main(void)
{ // コメント 
  printf("%s","hello world!\n");
} /* コメント */

<SHELL>
% ユーザのコマンド 
# ルートのコマンド
</SHELL>

% ユーザのコマンド 
# ルートのコマンド

挿入系タグ

<FIG>

<FIG SRC="画像ファイル" ALT="代理文字列" (WIDTH="幅" HEIGHT="高さ" MAG="倍率")>
<IMG SRC=...>の上位タグです。<IMG SRC=...>を使う場合に 幅、高さを指定しておくと今時のブラウザは表示が速くなったりしますが、 いちいちチェックするのは面倒です。<FIG> はGIF,JPEGについては 自動的に幅・高さをチェックします。"倍率" は縦横相似に画像を伸縮させます (WIDTH, HEIGHT のみ)。WIDTH, HEIGHT を明示的に指定した場合は、その 値を使用します。

<FIG>タグにはもうひとつ、PostScript(PS)ファイルの自動変換という 機能があります。画像ファイルとしてPSファイルを指定すると、自動的に GIFに変換し、リンクしてくれます。
この場合、オプションが増えて

<FIG SRC="画像ファイル" ALT="代理文字列" (WIDTH="幅" HEIGHT="高さ" 
     DEST="GIFファイル名" BGCOLOR="背景色" DEFAULT_BGCOLOR="デフォルト背景色")>
となります。幅などをなにも設定せずに使用すると、PSファイルに 含まれるBoundingBoxから 幅と高さを計算し、その大きさのGIFを生成します。 逆にBoundingBoxは必ず含まれていなければなりません。必要なら ps2epsiを使用します。
変換結果は DEST= が指定されていればそれに、指定されていなければ、 "画像ファイル.gif"というファイルに出力されます。

WIDTH および HEIGHT についてですが、指定の仕方で結果が変わります。

さらに、COLOR= で色を指定(red などの色文字列もしくは#RRGGBBの16進RGB形式) を指定すると、図の背景色を指定可能です。図をページに溶け込ませる場合に 有効です(<BODY BGCOLOR="色">と一致させる)。DEFAULT_BGCOLOR= で 指定した場合には以後のPSファイルの背景はすべて指定色になります。
なお、作図段階で白で上書きして線を消した、という様な場合には そこだけ白くなってしまいます。
ファイルの変換は、PSファイル・GIFファイルの変更日時と縦横サイズを 監視して、もしPSが古くてサイズも問題なければ、変換作業をスキップします。 色の変更には対応しませんので PSファイルをtouchするか、GIFを 削除するかしてください。
<FIG SRC="fig/contsystem.eps" ALT="eps test 1" HEIGHT=128 BGCOLOR="#ffc0ff">

<THUMBLINK>

<THUMBLINK SRC="画像ファイル" ALT="代理文字列" 
(WIDTH="幅" HEIGHT="高さ" MAG="倍率")
(TWIDTH="サム幅" THEIGHT="サム高">
<THUMBLINK>は<FIG>とほとんど同じです。 ただし、インラインイメージは縮小版を貼り、原図にリンクします。 そのサイズはTWIDTH,THEIGHTで決めます。
<THUMBLINK SRC="fig/mpsamp.gif" ALT="eps test 1" TWIDTH=100>

<DOWNLOAD>

<LOWNLOAD FILE="ファイル名" 
 FORMAT="出力フォーマット" CAPTION="キャプション" 
 IMG="イメージ" ALT="IMGのALT">
FORMAT: 適当なフォーマット文字列
 <A>...</A>  <A>がファイルへのリンクに展開される(無ければ両端)
  \NAME\ ファイル名  \DATE\ 更新日 \TIME\ 更新時刻
 \SIZE\ サイズ \IMG\ IMGで指定されるイメージ
 \CAPTION\ 引数のCAPTION
FORMAT, IMG, CAPTION, ALT は DEFAULT_??? が指定可能
ファイルや映像のダウンロードのフォーマットを統一します。 DEFAULT_FORMATを指定しておくことにより、ファイル名を指定するだけで サイズなどを伴ったダウンロードリンクを作ることが出来ます。
<DOWNLOAD FILE="fig/mpscreen.gif" CAPTION="ダウンロード" FORMAT="\NAME\">
<DOWNLOAD FILE="fig/mpscreen.gif" CAPTION="ダウンロード" 
 FORMAT="\NAME\(\DATE\ \TIME\更新, \SIZE\)" >
mpscreen.gif
mpscreen.gif(2003/08/16 00:31:10更新, 104,980 bytes)

<EQN>

<EQN SRC="TeX数式" (DEST="GIFファイル" MAG="倍率" DEFAULT_MAG="デフォルト倍率"
     BGCOLOR="背景色" DEFAULT_BGCOLOR="デフォルト背景色" ALT="代替文字列")>
HTMLできれいな数式を埋め込みたい、という要望は古くからありました。 手っ取り早いのは なんらかのソフトで数式を表示し、それをキャプチャ する、というものです。ですが、これはわりと手間がかかります。 そこで、その処理をTeXを使って自動化したのがこの機能です。 TeXの数式の形式で SRC を記述すると、GIFファイルに変換してくれます。

DEST= が指定されている場合はそのファイルを使いますがデフォルトでは "ソースファイル名.eqn通し番号.gif" に格納されます。大きさは MAG= で指定します。倍率に比例して大きくなります。COLOR= は <FIG>同様に背景色を指定します。それぞれ DEFAULT_MAG, DEFAULT_BGCOLOR で 以降のデフォルトを変更可能ですので、最初に一度指定すれば、 いちいち指定する必要がなくなります。

例:
<EQN SRC="f(x)=\sum^{10}_{i=0}x^i" BGCOLOR="#c08585" MAG=2>

f(x)=\sum^{10}_{i=0}x^i
<FIG>同様、変換作業は最低限のみにしています。変換の 情報を格納するため "GIFファイル.tgi" というファイルが出来ます。 このファイルは最終的には不要なので、今後変換しない場合には 削除してもかまいません。

なお、この変換では pLaTeX → dvips → ps2epsi → gs → ppmscale → ppmtogif と多数のプログラムが動作するため、 処理に時間を要します。



熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]