title : htmlgen.pl Manual Page charset : euc-jp language : ja author : Tomoya NAKAGAWA description : htmlgen.pl Manual Page stylesheet : htmlgen.css, all copyright : (c) 2007 Tomoya NAKAGAWA. All rights reserved. place : index.html pragma : notopindex { header { [[[日本語:index.html]]|[[English:index.en.html]]] } * htmlgen.pl Manual Page subtitle { \- The Simplest HTML Generator - } ----- contents { ** 目次 #contents; ** 概要 HTMLページをWikiライクなソースコードから生成するためのPerlスクリプトです。 Wikiは(キャッシュがあるとは言え)動的にページを生成しており、パフォーマンス上の問題があります。 また、生成されたページが全て同じスタイル・スキンで管理されるので、統一性はありますが、 ページごとに異なったスタイルを用いるなどの小回りが利きません。 更に、複数人で編集する必要がない「ちょっと相手に文書を見せる」ような用途にもWikiは大きすぎます。 かと言って.pdfや.docは専用のソフトがないと見られず、手軽さの面でHTMLには劣ってしまいます。 blogは、日記のような連続した、かつページ間での関連性が薄いコンテンツを数多く掲載するためには 非常に強力なツールになりますが、一方で「あるテーマに的を絞ったページ群」((新聞の連載形式のようなもの)) を作ろうとすると、「カテゴリ」のような機能ではどうしても力不足で、一覧性も良くないため他のコンテンツに 埋没してしまいがちです。 そこで、単体で独立したHTMLページを生成するプログラムの必要性を感じ、このhtmlgen.plを作成しました。 似たようなものは探せば絶対に存在するはずですが、 - 文法などが好みに合わせられる - 他の人が作ったものを改造するよりも、自分で1から作った方が勉強になるし融通も利く - そもそも探すのが面倒くさかった(死 …という理由で製作することにしました。 Wikiや各種blogツールよりはTeXが近いと思います。勿論TeXでもHTMLを出力することは可能なはずですが、 論文のような文書よりはHTML寄りに作られたものの方が、何かと役に立つ部分があるのではないかと。 スタティックなHTMLを生成しますので、Wikiやblogと比べると、サーバーへの負担が減ります。 同時にロード時間も短縮されるので「軽い」ページを製作したい方にお勧めです。 当然ですが、ディレクトリ構成も全て自分でやることができますので、blogのように見通しが悪くなることが ありません。 ** 機能 - 生成されたページはXHTML 1.1標準に準拠((naked { ... } ブロック内に準拠しないコードを書いた場合は除く。)) - 列方向の連結やcolgroupのサポートなど、多彩なtable機能。 - 必要十分な文字飾り。 - 文法を拡張することなく任意のタグを記述できる naked { ... } ブロック。 - リスト(ulなど)の深さ制限など、本質的ではないスクリプトによる文法の制限の排除。 - 人間にも読みやすいソースを出力。 ** 更新履歴 #include(version.txt); ** ダウンロード [[最新バージョン:htmlgen.zip]]はこちらです。 ** 使い方 Windowsなら「コマンドプロンプト」で >> {{perl htmlgen.pl [options] > }} << または >> {{perl htmlgen.pl [options] < > }} << とすると、から生成されたHTMLがに出力されます。 LinuxなどのOSを使っている方には特に説明する必要はないでしょう。 ** オプション 指定できるオプションは以下の通りです。 |header||f |オプション|機能|h |--nofooter|ページ最下部の著作権とhtmlgen.pl、XHTML Validatorの表示を削除します。| |--notopindex|#contents;で作成する目次に、トップレベル(h1相当)の見出しを含めないようにします。| |--template|ソースファイルのスケルトンを生成します。| |--template_css|スタイルシートのスケルトンを生成します。| |--output |標準出力の代わりにに出力します。| ** 文法一覧 syntax_table { |header||f |機能|構文|h |機能|構文|t |ページ全体の指定|<|m |タイトル|{{title : }}| |文字セット|{{charset : <charset>}}| |言語|{{language : <lang>}}| |著者|{{author : <author>}}| |概要|{{description : <description>}}| |キーワード|{{keywords : <keyword>,<keyword>,...,<keyword>}}| |外部スタイルシートの利用|{{stylesheet : [@]<url>, <media>}}((urlにファイルを指定し、@をつけるとCSSを出力ファイル内に埋め込みます。))| |外部スクリプトの利用|{{script : <script>, <mime type>}}| |著作権表示|{{copyright : <copyright>}}| |スクリプトへの指示|{{pragma : [option][,option]...}}((nofooterとnotopindexが指定できます。))| |出力ファイル|{{place : <file>}}| |ブロック要素|<|m |引用|{{> ...}}| |複数行の引用|{{>> ... <<}}| |整形済みテキスト(pre)|{{>\|\| ... \|\|<}}| |アスキーアート((<div class='ascii_art'>としてマークアップされます。))|{{>$$ ... $$<}}| |定義リスト|{{:<word>\|<desctiption>}}| |定義リスト(ブロック)|{{dl {} }}の中に{{:<word> {...} }}| |順序なしリスト((深さに制限はありません。))|{{- ...}}| |^|{{-- ...}}| |^|{{...}}| |^|{{--...- ...}}| |順序付きリスト((深さに制限はありません。))|{{+ ...}}| |^|{{++ ...}}| |^|{{...}}| |^|{{++...+ ...}}| |見出し|{{* <level 1 title>}}| |^|{{** <level 2 title>}}| |^|{{...}}| |^|{{****** <level 6 title>}}| |コードブロック((pre, address, naked, body以外は<div class='<class name>' id='<id>'> ... </div>としてマークアップされます。))|{{[<class name>][#<id>] { ... contents ... } }}| |HTMLタグを直接記述((いかなる変換もなしに出力されます。))|{{naked { ... <html source> ... } }}| |水平線|{{-----}}| |目次の生成|{{#contents;}}| |ファイルの取り込み|{{#include(<file>);}}| |Table機能|<|m |一般行|{{\|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}}| |左と連結|{{<}}| |上と連結|{{^}}| |インライン要素|<|m |''強調(strong)''|{{'' ... ''}}| |**強調(emphasis)**|{{** ... **}}| |!!斜体!!|{{!! ... !!}}| |__下線__|{{__ ... __}}| |%%打ち消し%%|{{%% ... %%}}| |++追加された部分++((編集過程で追加した部分を指定します。))|{{++ ... ++}}| |--削除された部分--((編集過程で削除した部分を指定します。))|{{-- ... --}}| |ルビ|{{^<text>(<ruby>)}}| |二重ルビ((<text>の上下にルビを振ります。))|{{^^<text>(<ruby1>,<ruby2>)}}| |改行|{{$$}}| |脚注|{{(( ... ))}}| |プログラムのソースコード|{{\{{ ... <code> ...}} }}| |リンク|{{[[<link text>:<url>]]}}| |画像の挿入|{{#img(url=<url>,alt=<alternative text>[,size=<width>x<height>][,nolink]);}}| |^|nolink : 画像を画像へのリンクとしない。| |生成日時|{{#now;}}| |ソースファイルの作成日時|{{#created;}}| |ソースファイルの更新日時|{{#modified;}}| |タグ付け((<span class='<class>' id='<id>'>としてマークアップされます。))|{{#span(class=<class>[,id=<id>]){ ... } }}| |コメント|{{// ...}}| |後続の特殊文字のエスケープ|{{\}}| } ** 例 - 例1:[[サンプルページ:sample.html]] -- サンプルページとその[[ソース:sample.txt]]です。 - 例2:このページ -- [[このページのソース:htmlgen.html.ja.txt]]です。 ** テスト Perlの実行環境を入れるのが面倒だという人のために、[[実験ページ:./test/index.html]]を作りました。お試しください。 ※ソースのエラーチェックは最低限です。 ** 備考 - \マークの問題があるので、ソースコードはEUCで書いた方がいいでしょう。 - このページ自身もhtmlgen.plによって生成されています。 ** 注意 - バグ、使いにくい点などありましたら、簡単なサンプルを添えて私までお知らせください。 できる限り対応します。 - 再配布は禁止します。 ** 奥付 colophon { :Author|Tomoya NAKAGAWA :Last Update|#modified; } } }