GNSの日記マスタで使用することのできる命令の文法を解説します。これらをひとつも使わなくても日記マスタを書くことは可能ですが、覚えることでより便利な表現が使えるようになります。

  1. 基本形とエスケープ
  2. 日付属性に関する命令
  3. ブロック属性に関する命令
  4. 段落属性に関する命令
  5. 段落内命令
  6. システム変数

基本形とエスケープ

GNSの命令と、後述するURI置換・マクロなどの特殊文は、すべて"@"で始まります。"@"で始まる文を含む行は、以下の順序で処理されます。

  1. 「ユーザーマクロ・システムマクロ」による置換を行います。
  2. 「URI置換」による置換を行います。
  3. GNSのシステム変数による置換を行います。

いかなる場合でも"@"という文字そのものが表示されるように日記マスタなどに記述したいときは、"@"の文字の代わりに"@"という文字列を書いてください。これを「エスケープする」といいます。

日付属性に関する命令

「日付属性」とは、ある日付の日記に与える固有の情報のことです。たとえばその日の「天気」などが、これにあたります。

「日付属性」は、ダイジェストやベースページ内では、日付と同じ部分に表示されます。言い換えると、日付部分に表示するもののことを「日付属性」と呼ぶことになります。

@time
(1): @time 12:34
(2): @time 24:34:56
(3): @time full 2004/06/15 12:34:56
(4): @time file
この日の日記を、指定した時間に記述したことにします。このデータは「RSSファイル」に出力され、RSS上での記述時刻を設定することができます。
時刻の書き方には、4種類の方法があります。以下では、"hh"は「時」、"mm"は「分」、"ss"は「秒」を示します。
  1. "hh:mm"。最も単純な時刻表記です。「時」は24以上を指定することができ、翌日の時刻となります。
  2. "hh:mm:ss"。「秒」を付加した時刻表記です。「時」は24以上を指定することができ、翌日の時刻となります。
  3. "full YYYY/MM/DD hh:mm:ss"。日付を完全に記す時刻表記です。
  4. "file"。日記マスタの更新時刻になります。
"@time"による指定がない場合、この日の日記の記述時刻は「日記マスタの更新時刻」となります。
@topic
@topic 今日のできごと
この日の「話題」を記述します。このデータはダイジェスト・ベースページの他に「インデックスページ」「RSSファイル」にも出力され、見出し情報となります。
@weather
@weather 晴時々曇
この日の「天気」を記述します。このデータはダイジェスト・ベースページに出力されます。
天気の記述方法には、特にルールはありません。自由に書いてかまいません。

ブロック属性に関する命令

「ブロック」とは、ある日付の日記をいくつかの表題に分けて記述するときの、個々の文章のことです。ブロックには「表題」のほか、「カテゴリ」や「時刻」などの情報を与えることができます。

@title
@title 今日の夕飯
ブロックの始まりを示し、また「表題」を記述します。このデータはダイジェスト・ベースページの他に「インデックスページ」「RSSファイル」にも出力され、見出し情報となります。
@time
(1): @time 12:34
(2): @time 24:34:56
(3): @time full 2004/06/15 12:34:56
(4): @time file
このブロックを、指定した時間に記述したことにします。このデータは「RSSファイル」に出力され、RSS上での記述時刻を設定することができます。
時刻の書き方には、4種類の方法があります。以下では、"hh"は「時」、"mm"は「分」、"ss"は「秒」を示します。
  1. "hh:mm"。最も単純な時刻表記です。「時」は24以上を指定することができ、翌日の時刻となります。
  2. "hh:mm:ss"。「秒」を付加した時刻表記です。「時」は24以上を指定することができ、翌日の時刻となります。
  3. "full YYYY/MM/DD hh:mm:ss"。日付を完全に記す時刻表記です。
  4. "file"。日記マスタの更新時刻になります。
"@time"による指定がない場合、このブロックの記述時刻は「ひとつ前のブロックと同じ時刻」となります。最初のブロックで省略した場合は、日記マスタの「属性」の"@time"命令で設定した時刻になります。それすらも存在しない場合は、「日記マスタの更新時刻」となります。
@category
@category PC,買い物
このブロックが属する「カテゴリ」を記述します。このデータはダイジェスト・ベースページの他に「インデックスページ」「RSSファイル」にも出力され、見出し情報となります。特に、「カテゴリインデックスページ」は、このカテゴリごとにまとめられたリストとなって表示されます。
複数のカテゴリに属するブロックは、","で複数のカテゴリを区切って記述することができます。

段落属性に関する命令

「段落」とは、コンテンツの本文となる個々の文章のことです。段落には、「どのような文章を記述するか」という情報を与えることができます。何も指定しない場合は、"@p"が省略されているものとして、段落が始まります。

@p
プレーンな「段落」です。何のオプションも付きません。
@s
行頭に「アンカー」が付く「段落」です。アンカーは、日記に対するリンク先となります。アンカーとなる文字は"_"(アンダーバー)や"."(ピリオド)などの比較的目立たない文字で表示され、この文字をブラウザで右クリックすることで、簡単にリンク先となるURIをコピーすることができます。
アンカーとなる文字は、自由に設定することができます。以下をご覧ください。
@s1
@s1
<TABLE ALIGN="right" border><TR VALIGN="middle">
<TD ALIGN="center"><IMG SRC="test.gif" WIDTH=120 HEIGHT=90 ALT="てすと画像"><BR>
<SMALL>てすと画像</SMALL></TD>
</TR></TABLE>
@s2
右の画像は、「てすと画像」です。"&#64;s1", "&#64;s2"のサンプルとして、例示したものです。
@sの動作のうち、アンカー文字の直前までを処理します。文章の途中に画像や表などを右詰・左詰で表示したいとき、右のように記述することができます。
この命令を使わずにテーブルなどを表示した場合、アンカー文字とテーブルと文章の位置が正しく表示されないことがあります。
右の例では、"@"の文字が「命令」でないことを明示するため、"@"を"&#64;"と表記しています。日記ページには、「"@s1", "@s2"のサンプルとして〜」と表示されます。
@s2
@s1の後に続けて、本文を記述するための「段落」です。
@c
センタリング・拡大して表示される「段落」です。強調効果を持たせることができます。
@q
「引用」を記述する「段落」です。これ以降、「行に関する命令」または「タイトルに関する命令」がある行まで、日記マスタの改行や空白がそのまま(<PRE>タグで囲ったように)日記ページに出力されます。
@qcode
「プログラムコードとしての引用」を記述する「段落」です。"@q"との違いは、「プログラムコードに適したフォントになる」ことです。
タグ文字("<"・">")は、日記マスタに記述する時点で「&lt;」「&gt;」と(自分で)変換しておく必要があります。"<"・">"を生で書かないよう、注意してください。
@ul
@ul
<LI>その1
<LI>その2
<LI>その3
<UL>〜</UL>によるリスティングを記述する「段落」です。次の行以降、<LI>とともに、リスティングされる内容を記述します。
@ol
@ol
<LI>その1
<LI>その2
<LI>その3
<OL>〜</OL>によるリスティングを記述する「段落」です。次の行以降、<LI>とともに、リスティングされる内容を記述します。
@f
@s
脚注@*を試すサンプルです。

@f
ここに脚注を書きました。
脚注を記述する「段落」です。脚注マークを"@*"で記述し、その脚注を"@f"で記述するようになっています。
"@*"と"@f"の対応は、日記マスタの先頭(上)から文脈順になります。"@*"を3つ記述した場合、最初の"@f"が最初の"@*"に、2番目の"@f"が2番目の"@f"に、というリンクが設置されます。
@foot
@foot
この段落は、最後に置かれます。
「後書き」として、その日の最後に置かれる行となります。
@close
@s
ここまでで行管理を停止します。
@close

<TABLE align="center">
<TR><TD>GNSの行管理を離れて、表を置きます。</TD></TR>
</TABLE>

@s
ここからまた行管理が始まります。
現在の「段落」をここで終了し、次の「段落属性に関する命令」または「ブロック属性に関する命令」がある行まで、GNSによる管理機能が停止されます。
GNSによらない独自制御の文章構造や表などを挿入したいとき、この命令を使用します。
@macro
@macro マクロ名 マクロ内容
ユーザーマクロの登録をします。詳細は、「ユーザーマクロ」の項をご覧ください。

段落内命令

「段落」は、コンテンツの本文となる部分です。この中に、GNS命令を挿入することができます。

@*
脚注マークを設置します。これに対応する"@f"の段落へジャンプするリンクとなります。
HTMLタグ
段落内には、各種HTMLタグを挿入することができます。ただし、文章構造を崩すタグ(P・DIV・TABLEなど)は使わないほうが無難です。これらを使いたい場合は、"@s1"で「表の挿入を前提とした属性の段落」を作ったり、"@close"で「GNSによる文章管理機能を停止」するのがよい方法です。

システム変数

「システム変数」は、GNSが内部的に持っている値です。日記マスタや、日記ページに埋め込まれるデータの中で、これらの値を出力することができます。

変数名説明
@/lastmodified/ 最後にGNSによりページ作成作業が行われた時刻になります。日付やブロックごとの更新時刻ではないことに注意してください。
@/lastyear/ ベースページに対する「去年」の数値になります。2004年のベースページの場合は"2003"となります。
@/year/ ベースページに対する「今年」の数値になります。2004年のベースページの場合は"2004"となります。
@/nextyear/ ベースページに対する「来年」の数値になります。2004年のベースページの場合は"2005"となります。
@/month/ ベースページに対する「今月」の数値になります。6月のベースページの場合は"06"となります。
@/date/ ベースページに対する「今日」の数値になります。15日のベースページの場合は"15"となります。
@/part/ ベースページに対する「上旬・中旬・下旬」を示す文字になります。1〜10日は"a"、11〜20日は"b"、21〜31日は"c"となります。
@/PART/ ベースページに対する「上旬・中旬・下旬」を示す数値になります。1〜10日は"1"、11〜20日は"2"、21〜31日は"3"となります。
@/prevfile/ ベースページに対する「前の旬のファイル」を示すファイル名になります。2004年6月上旬のベースページの場合は、"200405c.html"となります。
@/prevfile/ ベースページに対する「次の旬のファイル」を示すファイル名になります。2004年6月上旬のベースページの場合は、"200406b.html"となります。
@/DIARY_GENERATOR/ config.phで定義した、GNSのバージョン文字列($GENERATOR)になります。"GNS/3.00"などとなります。
@/DIARY_TITLE/ config.phで定義した、日記名($DIARY_TITLE)になります。
@/DIARY_AUTHOR/ config.phで定義した、著者名($DIARY_AUTHOR)になります。
@/DIARY_EMAIL/ config.phで定義した、著者メールアドレス($DIARY_EMAIL)になります。
@/DIARY_EMAIL_NOSPAM/ 著者メールアドレス($DIARY_EMAIL)になりますが、"@"を" @(at) "に、"."を" .(dot) "に置き換えます。これは、メールアドレス収集ロボットを抑制するためのメールアドレス表記です。
@/DIARY_DESCRIPTION/ config.phで定義した、日記の説明($DIARY_DESCRIPTION)になります。
@/DIARY_COPYRIGHT/ config.phで定義した、著作権表記($DIARY_COPYRIGHT)になります。
@/DIARY_CHARSET/ config.phで定義した、文字コード($CHARSET)になります。
@/DIARY_DIGESTNAME/ config.phで定義した、ダイジェストページのファイル名($DIGESTNAME)になります。
@/DIARY_RSSNAME/ config.phで定義した、RSSファイルのファイル名($RSSNAME)になります。
@/DIARY_PUTDIR/ config.phで定義した、日記ページを出力するディレクトリ名になります。
@/DIARY_URLBASENAME/ config.phで定義した、日記ページを配置するWWWサーバ上のURLディレクトリ名($URLBASENAME)になります。

これらを組み合わせて、例えば「@/DIARY_URLBASENAME/@/DIARY_DIGESTNAME/」などと書くことで、ダイジェストページのURLにすることができます。