Logo address

tt 文書の文法 ( ver.4.2 )

English page

2016/07/05 改訂(ver.4.2)
2015/01/21 改訂(ver.4.1)
2014/08/27 改訂(ver.4.0)
2007/10/16 更新
2007/10/02 改訂(ver.3.1)
2007/09/23 改訂(ver.3.0)
2005/07/15 更新

この頁は tt 形式のファイルを変換して作成されています。もとの tt 形式のファイル

1. 一般規則

1.1. HTML 属性

tt タグの中には、そのタグが使用している HTML タグの属性が指定できるものがあります。それらの形式は
属性名="値" 属性名="値" ...
のようなものです。「値」の中には空白を入れてはなりません。クラスの指定は一番左に書いて下さい。また、クラスに関しては簡単に値だけで指定できます。指定できるクラスはスタイルシートで定義されています。例えば画像であれば
I: cat.jpg width="400"
のように表示幅を指定できます。

値は必ず二重引用符で囲みます。どのような属性が指定できるかはタグ毎に異なります。広く使えるのはスタイルを示す style 、配置を示す align、表示幅を示す width です。スタイルシートでクラスが定義されていれば class も使えます。

スタイルに関する情報を HTML 属性で指定するのは可能ならば避けるのが好ましく、一般的な好みはスタイルシートを使用するのが良いでしょう。

2. 表題

HTML の h1, h2, h3, h4 に対応して、以下のタグが定義されています。
H1	H2	H3	H4
"H1:" タグは必須です。 “H1:” に続く文字列はページのタイトルとして大きな文字で表示されるばかりではなく、ウィンドウの名前としてウィンドウの上部に表示されます。

目次は表題を基に自動的に作成されます。但し

2.1. "H1:" のオプション

H1: [-lteqn] 表題
ここに [   ] の中はオプションです。

なお、このページは “-eqn” オプションで作成されています。二重引用符の見え方はブラウザとフォントに依存しています。ブラウザで日本語文字フォントが指定されている場合には、“ と ” は(まるで全角文字フォントで代用したかのように)大きな空白が発生する場合があります。(Mac の場合、Safari や Opera は奇麗な二重引用符を表示しますが Camino や Firefox はダメです。それから Windows の場合 IE7.0 の二重引用符はため息が出る程ひどい!)

追記: 変な事(嫌な事)を見つけました。 “<html lang=”en">" が指定されている時には二重引用符が Camino や Firefox でも奇麗に表示されるのです。このページは lang 属性を “en” にしてありますが、日本語の文字には問題はありません。(文字コードが指定されているからね...) でも検索エンジンで英語のページに分類されるかも知れません。

3. リスト

3.1. リストのタグ

リストの表現には以下の3つのタグが準備されています。
UL:
番号づけないリスト
OL:
番号を付けるリスト
DL:
定義付けリスト
リストの項目は “- ” で開始します。すなわちマイナス記号で行を開始し、空白を1つ以上続けます。
"UL:" は省略できます。従って番号づけない項目は単に
- 項目1
- 項目2
-
のように、マイナス記号の後に空白文字を入れて行を開始します。
定義付けリストは
DL:
- 名前1
名前1の説明
- 名前2
名前2の説明
-
のように書きます。

3.2. リスト項目の終了

リストの項目の終了は空行あるいは “-” だけの行、あるいはヘッダタグによって示されます。

筆者の経験ではリスト項目の終了は常に “-” で示すよう習慣づけた方が良い。

3.3. リストの “-a” オブション

リストに対して
-a
のオプションがある場合には最初のフィールドはリンクであると見なされます。すなわちこの場合には項目は
UL:-a
- パス1	説明文1
- パス2	説明文2
-
のように書きます。ここにバスとは「説明文」をクリックしたときに表示されるファイルへのパスです。パスは表示されません。


注意: リストの “+a” オブションは ptt 4.2 で廃止された。(不要なオプションだから)

4. 画像

画像の取り込みは “I:” タグまたは “II:” タグを使って行われます。

4.1. 一つの画像

一つの画像の取り込みは
I: cat.jpg
のように書きます。この結果は
のようになります。

パスに続けて表示の大きさを指定することもできます(注)。例えば

I: cat.jpg width=400
とすれば、横幅 400 ピクセルで表示します。

注意: 表示の大きさを指定した場合には IE 6.0 は、正しく印刷してくれないようです。表示だけなら問題はありません。

画像はセンター配置です。画像に続けて画像の説明を書く事が多いでしょう。その場合には C: タグあるいは CC: タグを使ってセンター配置で説明するとよいでしょう。

一般的な形式は

I: 画像ファイル [表示サイズ] [その他のオプション]

4.2. 画像配列

複数の画像を並べるには
II: 終了文字列 [オプション0]
表題1	画像ファイル1 	[オプション1]
表題2	画像ファイル2 	[オプション2]
...
終了文字列
画像配列はテーブルを用いて実現しています。

「オプション0」はテーブル全体に関するオプション(テーブル属性)で、実際には

width="90%"
のように、行幅に対する画像配列の幅を “%” で指定するのが唯一の使い方だろうと思われます。このオプションを省略すると、画像が1個の場合には 60% 、複数の場合には 90% が仮定されます。

「オプション1」、「オプション2」... はテーブルの個々の要素に対するオプションで、やはり実際には

width="30%"
のように、個々の画像幅の占める割合を “%” で指定するのが唯一の使い方だろうと思われます。 これらを省略すると均等分割として扱われます。

例えば

II:!
リリー lily.jpg
アイリス iris.jpg
ポーチェラカ portyeraka.jpg
!
で次のようになります。
lily.jpg iris.jpg portyeraka.jpg
リリー アイリス ポーチェラカ

注意: IE6.0, IE7.0 では正しく表示されない。多分 IE5.0 も同様であろう。
IE には問題が多すぎる!

Win系 では Opera, Firefox は正しく表示される。
OSX では Safari, Firefox, Opera も OK

(2007/02/09)

理想的には画像の高さで自動調整してくれた方が良いのですが、HTML の仕様のなかにはそれを可能にするものは見当たりません。

クリックすれば別頁に大きく表示される。
なお、この写真のポーチェラカは変わり花である。

画像配列にはテーブルが使用されており、オプションは table の td タグに与える HTML の属性を指定できる。
例えば

II:!
リリー lily.jpg width="30%"
アイリス iris.jpg  width="40%"
ポーチェラカ portyeraka.jpg width="20%"
!

lily.jpg iris.jpg portyeraka.jpg
リリー アイリス ポーチェラカ
となる。合計 100% になっている必要は無い。

表題に空白文字が含まれる場合には '(引用符) または "(二重引用符) で囲む。

5. テーブル

5.1. 簡単な例

初等的ではあるが、ありふれたテーブルから解説します。例えば
名前 年齢 性別
alice 16
bob 20
を表示するには
Ta:
名前 年齢 性別
alice 16 女
bob 20 男

と書きます。テーブルの終了は空行で示されています。

この例では、テーブルはマトリックス形で、どのデータにも空白文字が含まれていません。最初の行は、項目の説明欄で太字になっています。各行の最初の項目は、行の説明で、やはり太字で表示されています。

上の例では空白文字がデータを区切っていました。それではデータに空白が含まれる場合にはどのように書けばよいのか。誰でも考える事でしょうが、データを区切る文字(区切り文字)を指定できれば解決できます。区切り文字を “|” として指定するには

Ta: |
名前 | 年齢 | 性別
alice | 16 | 女
bob | 20 | 男

のように、 “Ta:” に続いて “|” を書きます。

5.2. 形式

テーブルの表現は単純形、すなわち、碁盤の目のような形のものを基礎にしています。tt 形式での記述は
Ta: 区切り記号  属性
Ca: テーブルの説明
項目名:書式 	項目名:書式  項目名:書式
行説明  区切り記号	データ  区切り記号 	データ
行説明  区切り記号 	データ  区切り記号 	データ

のようなものです。
区切り記号は項目名やデータを区切る記号で1文字で示します。省略すると空白文字が区切り記号として使用されます。「属性」には HTMLの table タグの属性を
HTML のテーブル属性の例
属性名 値の例
align right left center
width 40%

などで

Ta: align="right"
のように指定します。詳しくは HTML に関する解説書を見てください。

項目名が全て省略された場合には、その行は表示されません。例えば

Ta: |
 |  |
alice | 16 | 女
bob | 20 | 男

と書くと
alice 16
bob 20
となります。また項目の書式で “-” を指定するとその列は表示されません。例えば
Ta: |
 :- |  |
alice | 16 | 女
bob | 20 | 男

と書くと
16
20
となります。

5.3. 項目名の省略

一部の項目名が省略された場合には、その前の項目名が使用されます。例えば
Ta: |
:- | 2000 | | | 2010 | |
   | <b>名前</b> | <b>年齢</b> | <b>性別</b> | <b>名前</b> | <b>年齢</b> | <b>性別</b>
   | <b>alice</b> | 16 | 女 | <b>alice</b> | 26 | 女
   | <b>bob</b> | 20 | 男 | <b>bob</b> | 30 | 男


2000 2010
名前 年齢 性別 名前 年齢 性別
alice 16 alice 26
bob 20 bob 30
となります。

この表をグローバルな視点で見ると、表の中に表が埋め込まれていると解釈できます。そのような見方からこの表を構成することもできます。後の「長い文字列定義」を参照して下さい。

5.4. 書式

項目の書式は次のように指定できます。

項目名:<表示幅 データを左寄せで配置します
項目名:>表示幅 データを右寄せで配置します
項目名:表示幅 データを中央に配置します
項目名:-表示幅 この項目の列は捨てられます(データを隠すのに便利です)

ここに書いた書式の説明には実はテーブルが使用されており、このテーブルは次のように記述されています。

Ta: | class=noborder width="70%" align="center"
  :<150	| :<70%
項目名: < 表示幅 | データを左寄せで配置します
項目名: > 表示幅 | データを右寄せで配置します
項目名:表示幅 | データを中央に配置します
項目名:-表示幅 | この項目の列は捨てられます(データを隠すのに便利です)
注意

6. ブロック

6.1. センター配置

行単位でセンター配置を指定する時の構文は
C: 文
です。
複数の行を纏めてセンター配置を指定する時の構文は
CC: 終了文字列
文1
文2
...
終了文字列
です。

6.2. プログラムコード

プログラムコードを示すには、タブで書き始める方法の他に、
P: 終了文字列 [tab=n]
プログラムの内容
終了文字列
の形式を使用できます。この形式を使用すると、書かれた文字がそのまま表示され、背景に色が付けられます。(実現にはテーブルが使用されています)

タブサイズはオプションとして指定できます。省略されれば tab=8 が使用されます。

例えば次の C のプログラムコードを表示するには

#include <stdio.h>
main(){
	printf("OK\n");
}
tt 形式では
P:!
#include <stdio.h>
main(){
	printf("OK\n");
}
!
と書きます。(プログラムをそのまま Cut&Paste で持ってこれる事に注目しましょう)

6.3. 注釈

注釈は
注釈の内容は右にインデントされて表示されます。例えば次のようにです。
これは長い注釈の例です。長い注釈の中では
なども扱えます。例えば次の画像は長い注釈の中で扱われています。
でもこれはまだ新しい機能なので殆どディバッグされていません。

6.3.1. 短い注釈

文や単語に注釈を1行で付けたい場合には
N: 注釈
の形式で表します。

6.3.2. 長い注釈

文や単語に注釈を付けたい場合には
NN: 終了文字列
注釈
終了文字列
の形式で表します。

注釈は終了文字列またはヘッダによって終了します。


長い注釈には水平線によって視覚的な効果を持たせることができます。

これは次のように書かれています。
NN:!
<hr>
長い注釈には水平線によって視覚的な効果を持たせることができます。
<hr>
!

6.4. 引用

引用には HTML の blockquote が使用されています。

6.4.1. 短い引用

「短い引用」とは1行からなる引用文です。
Q: 引用

6.4.2. 長い引用

2行以上の引用は
QQ: 終了文字列
引用
...
終了文字列
と書きます。

6.5. コメント

コメント」の部分は翻訳された HTML の文書の中には現れません。プログラミング言語におけるコメントのような機能を果たします。

6.5.1. 短いコメント

tt 形式の文書の中にコメントを1行で書きたいときには
#: コメント
の形式で入れることができます。

6.5.2. 長いコメント

tt 形式の文書の中にコメントを何行にも渡って書きたいときには
##: 終了文字列
コメント
終了文字列
の形式で入れることができます。

6.6. 純粋 HTML モード

tt の加工を受けない純粋な HTML のモードに移行できます。そのためには
!!: nantarakantara
この間の文は純粋な HTML の文書として扱われる
nantarakantara
のように、
!!: 終了文字列
で純粋 HTML モードを終了させる文字列を定義します。
僕の終了文字列の好みは単に「!」。びっくりマークだけの文など滅多に現れないからね。
このモードは古い HTML 文書を処理するのに特に便利ですね。

Ptt 3.2 では純粋 HTML モードのニーズは殆ど無くなりました。現在では保険的な機能になっています。

7. 文字列定義

7.1. 単純な定義

7.1.1. 短い定義

D: 文字列 定義
の形式で、文字列が定義でます。ここで定義された文字列は定義で置き換えられます。例えば
D: {	<code>
D: }	</code>
となっていると、文中の
{sample.txt}

<code>sample.txt</code>
に変換されます。この例では文字列は1文字で構成されていますが、複数個の文字で構成しても構いません。

7.1.2. 長い定義

定義に必要な行が複数に渡る場合には “DD” を使えます。
DD: 文字列 終了文字列
定義の内容
...
終了文字列
この定義の内容を tt の規則に従って変換したい場合には “DD+:” が使えますが、あまり推奨はしません。


注意: Ptt ver.3.0 から仕様が変更されています。ver.3.0 の “DD:” は ver.3.1 では “DD+:” の意味です。

"DD+:" はテーブルの中に複雑な内容、例えばテーブルを書きたい場合などに役に立ちます。

2000 2010
名前年齢性別
alice16female
bob20male
名前年齢性別
alice26female
bob30male
これは次のように書いています。
DD+: $1 !
Ta: class=noframe
名前 年齢 性別
alice 16 female
bob   20 male

!

DD+: $2 !
Ta: class=noframe
名前 年齢 性別
alice 26 female
bob   30 male

!

Ta: class=nopad align="center"
:-   2000 2010
-   $1 $2

空行はテーブル記述の終了を表しており、 “DD+:” の中でも必要です。ここで “noframe” と言うのは、外枠の無いテーブルです。この場合には次のようになっています。

名前年齢性別
alice16female
bob20male

これをテーブルに埋め込む場合には、padding されていると、罫線が繋がりません。 “nopad” は padding なしのテーブルのクラスです。 “nopad” も “noframe” もスタイルシートで定義されています。

Ptt 3.1 では、複雑なテーブルの構成を、「テーブル要素の中へのテーブルの埋め込み」によって解決しています。

7.1.3. 定義の取り消し

D: 文字列
または
DD: 文字列
によって「文字列」の定義を取り消します。

7.1.4. 考察

"DD+:" の使用は屢々 HTML の正しい記述スタイルから外れる原因を作ります。これは HTML のパラグラフの考え方が、我々の日常的な感覚と外れていることと関係があります。例えば Ptt は
<div>
alice
X
bob
</div>
に出会った時に、 “alice” から “bob” までを一つのパラグラフと見なして、正しく
<div>
<p>
alice
<br>X
<br>bob
</p>
</div>
を吐き出します。しかし “X” が
DD+: X !
Q: carol
!
と定義されている場合にも同様に一つのパラグラフと見なして
<div>
<p>
alice
<br><blockquote>carol</blockquote>
<br>bob
</p>
</div>
となりますが、これは HTML の正しい規則から外れます。HTML では “<p>” と “</p>” の間にブロックタグを入れてはならないからです*。この問題の解決は非常に難しい問題で、また解決する価値があるかどうかもはっきりしません。(僕には禁止する理由もよく分からない!)

注*: http://www.w3.org/TR/html401/struct/text.html#h-9.3

8. その他

8.1. スタイルシート

スタイルシート等のファイルの取り込みは
In: ファイル
で行えます。
例えば
In: style.css
のようにします。
ドキュメントルートのスタイルシートは
In: /style.css
となります。

8.1.1. テーブルのスタイル

Ptt ver.3.1 で使用されている新しいスタイルシートではテーブルの罫線スタイルが指定されており、その場合には HTML のテーブルタグの罫線の指定
<table border="0">
が無効になります。従って罫線を除去するためにテーブルタグ “Ta:” で “border=0” と指定しても効果はありません。新しいスタイルシートではテーブルのクラス “noborder” が定義されているので、罫線の無いテーブルを作る時には “noborder” を指定して下さい。

8.2. Body タグの中でのオプション

次の形式で与えます。
BO: オプション
この結果は
<body オプション>
となります。このタグは “H1:” タグの前に書きます。

8.3. ラベルと参照

リストの labelref に相当する Ptt 4.0 の仕様です。

LaTex Ptt
\label{foo} <lab(key:bar)>
\ref{foo} <ref(key:bar)>
ここに “foo” は任意のラベル名である。"foo" に相当するのが “key:bar” ですが、Ptt では key ごとにシリアルに番号が振られます。
<lab(key:bar)>や <ref(key:bar)> では ( ) の代わりに { } も使えます。

LaTex と異なり、番号は同じ key で増加します。文献リストのために特別の記法を必要としていません。

8.3.1. 考察

Ptt の記法を LaTex の記法と同じにしなかったのは html2tex のようなツールとの関係である。

8.4. rit 対応

先頭行が
#!/
で始まる場合にはプログラムが埋め込まれると仮定されます。その場合にはプログラムコードは
${
プログラムコード
}$
の形式で挿入されるとして rit に適した形式で処理します。これは筆者のサーバ向けの仕様です。

8.5. 漢字空白

漢字空白に対して警告メッセージが表示されます。意識的に漢字空白を使用したのであれば、この警告メッセージは無視して構いません。

9. 補足

9.1. タグのまとめ

以下の表の中で
タグ表
タグ 意味 形式 作用範囲
H1: 表題
(H2:,H3:,…,も同様)
H1:[-lte] 文字列 行末まで
KW: keyword KW: keyword, ... 行末まで
BO: body オプション BO: オプション 行末まで
UL: 番号なしリスト
(省略可能)
UL:[-a][+a]
- 説明
- 説明
空行まで
OL: 番号付けリスト OL:[-a][+a]
- 説明
- 説明
空行まで
DL: 定義リスト DL:[-a][+a]
- 説明
- 説明
空行まで
C: センター配置 C: 文字列 行末まで
CC: 複数行にわたるセンター配置 CC: 終了文字列
テキスト
終了文字列
終了文字列まで
I: 画像 I:パス [サイズ [属性]] 行末まで
II: 画像の配列 II: 終了文字列 [属性]
表題 画像ファイル [属性]
...
終了文字列
終了文字列まで
Ta: テーブル Ta:[記号] [属性]
[C:文字列]
文字列[:書式] [記号] 文字列[:書式] [記号] …
文字列 [記号] 文字列 [記号] …
空行まで
Ca: キャプション
Ta:の直後に使用する
Ca:文字列 行末まで
P: プログラムコード P:終了文字列 [tab=n]
プログラムコード
終了文字列
終了文字列まで
N: 短い注釈 N:注釈 行末まで
NN: 長い注釈 NN:終了文字例 [属性]
注釈
...
終了文字列
終了文字列まで
Q: 短い引用 Q:引用 行末まで
QQ: 長い引用 QQ:終了文字例 [属性]
引用
...
終了文字列
終了文字列まで
#: コメント #:文字列 行末まで
##: 長いコメント ##:終了文字例
コメント
終了文字列
終了文字列まで
D: 文字列定義
文字列1を文字列2で置き換える
D: 文字列1 文字列2 行末まで
DD:
DD+:
文字列定義
文字列を文字列ブロックで置き換える
DD: 文字列 終了文字列
文字列ブロック
終了文字列
終了文字列まで
!: 純粋HTMLモード !: 行末まで
!!: 純粋HTMLモード !!:終了文字列
HTMLコード
終了文字列
終了文字列まで

9.2. 制限事項

注* 多重のリストを作成しようと思えば “DD+:” を使って作成できますが、推奨しません。

9.3. 知られたバグ

擬似二重引用符の自動変換アルゴリズムは次の考察に依存しています。
  1. コードやデータを記述するエリアは変換しない
  2. タグの中の二重引用符は変換しない
  3. 左の二重引用符と右の二重引用符は対になって現れる
  4. 左の二重引用符は、行の先頭、あるいはその前が空白
  5. 右の二重引用符は、行末、あるいはその次が空白または “,.;:!?” の中の文字のいずれか

日本語の文書の中では「。」、「、」などの文字に関するルールをさらに追加すべきですが、今の所それを行っていません。特に “、” や “。” に続く二重引用符には注意して下さい。