- The Simplest HTML Generator -
HTMLページをWikiライクなソースコードから生成するためのPerlスクリプトです。
Wikiは(キャッシュがあるとは言え)動的にページを生成しており、パフォーマンス上の問題があります。 また、生成されたページが全て同じスタイル・スキンで管理されるので、統一性はありますが、 ページごとに異なったスタイルを用いるなどの小回りが利きません。 更に、複数人で編集する必要がない「ちょっと相手に文書を見せる」ような用途にもWikiは大きすぎます。 かと言って.pdfや.docは専用のソフトがないと見られず、手軽さの面でHTMLには劣ってしまいます。
blogは、日記のような連続した、かつページ間での関連性が薄いコンテンツを数多く掲載するためには 非常に強力なツールになりますが、一方で「あるテーマに的を絞ったページ群」*1 を作ろうとすると、「カテゴリ」のような機能ではどうしても力不足で、一覧性も良くないため他のコンテンツに 埋没してしまいがちです。
そこで、単体で独立したHTMLページを生成するプログラムの必要性を感じ、このhtmlgen.plを作成しました。 似たようなものは探せば絶対に存在するはずですが、
…という理由で製作することにしました。
Wikiや各種blogツールよりはTeXが近いと思います。勿論TeXでもHTMLを出力することは可能なはずですが、 論文のような文書よりはHTML寄りに作られたものの方が、何かと役に立つ部分があるのではないかと。
スタティックなHTMLを生成しますので、Wikiやblogと比べると、サーバーへの負担が減ります。 同時にロード時間も短縮されるので「軽い」ページを製作したい方にお勧めです。
当然ですが、ディレクトリ構成も全て自分でやることができますので、blogのように見通しが悪くなることが ありません。
最新バージョンはこちらです。
Windowsなら「コマンドプロンプト」で
perl htmlgen.pl [options] <source file> > <output file>
または
perl htmlgen.pl [options] < <source file> > <output file>
とすると、<source file>から生成されたHTMLが<output file>に出力されます。
LinuxなどのOSを使っている方には特に説明する必要はないでしょう。
指定できるオプションは以下の通りです。
| オプション | 機能 |
|---|---|
| --nofooter | ページ最下部の著作権とhtmlgen.pl、XHTML Validatorの表示を削除します。 |
| --notopindex | #contents;で作成する目次に、トップレベル(h1相当)の見出しを含めないようにします。 |
| --template | ソースファイルのスケルトンを生成します。 |
| --template_css | スタイルシートのスケルトンを生成します。 |
| --output <file> | 標準出力の代わりに<file>に出力します。 |
| 機能 | 構文 |
|---|---|
| 機能 | 構文 |
| ページ全体の指定 | |
| タイトル | title : <title> |
| 文字セット | charset : <charset> |
| 言語 | language : <lang> |
| 著者 | author : <author> |
| 概要 | description : <description> |
| キーワード | keywords : <keyword>,<keyword>,...,<keyword> |
| 外部スタイルシートの利用 | stylesheet : [@]<url>, <media>*3 |
| 外部スクリプトの利用 | script : <script>, <mime type> |
| 著作権表示 | copyright : <copyright> |
| スクリプトへの指示 | pragma : [option][,option]...*4 |
| 出力ファイル | place : <file> |
| ブロック要素 | |
| 引用 | > ... |
| 複数行の引用 | >> ... << |
| 整形済みテキスト(pre) | >|| ... ||< |
| アスキーアート*5 | >$$ ... $$< |
| 定義リスト | :<word>|<desctiption> |
| 定義リスト(ブロック) | dl {} の中に:<word> {...} |
| 順序なしリスト*6 | - ... |
-- ... |
|
... |
|
--...- ... |
|
| 順序付きリスト*7 | + ... |
++ ... |
|
... |
|
++...+ ... |
|
| 見出し | * <level 1 title> |
** <level 2 title> |
|
... |
|
****** <level 6 title> |
|
| コードブロック*8 | [<class name>][#<id>] { ... contents ... } |
| HTMLタグを直接記述*9 | naked { ... <html source> ... } |
| 水平線 | ----- |
| 目次の生成 | #contents; |
| ファイルの取り込み | #include(<file>); |
| Table機能 | |
| 一般行 | |abc|def|...|ghi| |
| 見出し行(ヘッダ) | |header1|header2|...|headerN|h |
| 見出し行(フッタ) | |footer1|footer2|...|footerN|t |
| 見出し行(中間) | |header1|header2|...|headerN|m |
| 書式指定 | |<format1>|<format2>|...|<formatN>|f |
format=[(left|right|center)][,width=<width>][,header][,#id][,[class]] |
|
| 表題 | |<caption>|c |
| 左と連結 | < |
| 上と連結 | ^ |
| インライン要素 | |
| 強調(strong) | '' ... '' |
| 強調(emphasis) | ** ... ** |
| 斜体 | !! ... !! |
| 下線 | __ ... __ |
| 打ち消し | %% ... %% |
| 追加された部分*10 | ++ ... ++ |
-- ... -- |
|
| ルビ | ^<text>(<ruby>) |
| 二重ルビ*12 | ^^<text>(<ruby1>,<ruby2>) |
| 改行 | $$ |
| 脚注 | (( ... )) |
| プログラムのソースコード | {{ ... <code> ... }} |
| リンク | [[<link text>:<url>]] |
| 画像の挿入 | #img(url=<url>,alt=<alternative text>[,size=<width>x<height>][,nolink]); |
| nolink : 画像を画像へのリンクとしない。 | |
| 生成日時 | #now; |
| ソースファイルの作成日時 | #created; |
| ソースファイルの更新日時 | #modified; |
| タグ付け*13 | #span(class=<class>[,id=<id>]){ ... } |
| コメント | // ... |
| 後続の特殊文字のエスケープ | \ |
Perlの実行環境を入れるのが面倒だという人のために、実験ページを作りました。お試しください。
※ソースのエラーチェックは最低限です。