logo logo_atte 日記 随筆 何処
ヘルプ
趣味のサイトである。お助けが必要な程の機能はまだない。
1 Tiki Syntax and Sample
1.1 文書構造
文書構造は、セクションの開始を'='で、パラグラフの開始を'-'で指示する。セクションにはセクション名をつけることが可能。セクションヘッダとして表示される。セクション名の先頭が'.'であった場合、'.'はセクション番号に変換される。パラグラフにも名前をつけることは出来るがヘッダとしての表示はされない。 '=='でサブセクション、'==='でサブサブセクションを開始できる。同様に、'--'や'---'で、サブパラグラフやサブサブパラグラフを開始できる。 '-+'でパラグラフを終了できる。 '=+'や'--+'のようにセクションやパラグラフ指示の直後に'+'を置くと、対応するレベルのセクションやパラグラフを終了できる。パラグラフのみ(サブパラグラフなどは含まない)字下げされる。
  • =Section Name
  • text in section
  • ==SubSection Name
  • -
  • text in paragraph
  • -+
  • text in subsection
1.2 ロケーター (locator)
リンクや画像ソースなどの外部資源を特定するための記述子。ページID(!ID)か、ISBN番号(@number)か、それ以外(URL)である。 ISBN番号の場合は、Amazonの対応するURLへと変換される。ページの添付ファイルを参照する場合は、 IDに続けて'/'と添付ファイルの相対パスを記述する(!ID/file)。 IDが省略されると現在のページのIDが利用される。相対パスに代えて添付ファイルの登録番号で指定することも可能。相対パスも登録番号も省略された場合は登録番号1が指定されているとする。
  • !sample-page
  • /sample.jpeg
  • @{text}(!/) => @{text}(!/[1]) => @{text}(!sample-page/sample.jpeg)
1.3 マークアップ (markup) リファレンス
基本書式は次の通り。
  • &[markup]{target}(option);
マークアップは'&で開始し';'で終了する。 markupはマークアップ名で、HTMLに変換される場合はclass属性としても設定される。 targetは実際にマークアップされて表示されるテキストである。省略可能なoptionはマークアップ毎に定義され、マークアップの効果を変更する。一部のマークアップにはショートカットが存在する。ショートカットでは開始と終了を指示する最初の'&'と最後の';'は必要ない。
1.3.1 太字
|{text}
&[bold]{text};
  • これは|{太字}の例です。これも&[bold]{太字};の例です。
source
これは太字の例です。これも太字の例です。
sample
1.3.2 斜体
/{text}
&[italic]{text};
  • これは/{斜体}の例です。これも&[italic]{斜体};の例です。
source
これは斜体の例です。これも斜体の例です。
sample
1.3.3 下線
_{text}
&[underline]{text};
  • これは_{下線}の例です。これも&[underline]{下線};の例です。
source
これは下線の例です。これも下線の例です。
sample
1.3.4 拡大/縮小
${text}(scale)
&[size]{text}(scale);
文字の大きさをscale指示に従って変更します。 scaleは任意の文字列ですが、'>'と'<'以外の文字は無視されます。 scaleを前方から走査して'>'があれば1.2倍に、 '<'があれば0.8倍に文字のサイズが変更されます。 scaleが'><'であれば1.2*0.8=0.96倍に、'>><'であれば1.2*1.2*0.8=1.152倍になります。
  • 文字が${大きく}(>)なったり、${小さく}(<)なったりします。${とっても大きく}(>>>)なったりもします。 scaleを省略すると${一段階だけ大きく}なります。
source
文字が大きくなったり、小さくなったりします。とっても大きくなったりもします。 scaleを省略すると一段階だけ大きくなります。
sample
1.3.5 薄字/色文字
%{text}(fg,bg)
&[color]{text}(fg,bg);
文字の前景色(fg)と背景色(bg)を変更します。色はHTMLのカラーコードで指定します。背景色は省略できます。前景色も省略した場合には'#999'(薄字)となります。
  • %{赤字}(red)にしたり、%{青背景に黄文字}(#FF0,#00F)だったり、%{マトリックス}(#0F0,#000)だったりします。前景色も省略すると%{薄字}になります。
source
赤字にしたり、青背景に黄文字だったり、マトリックスだったりします。前景色も省略すると薄字になります。
sample
1.3.6 リンク
#{target}(locator)
&[link]{target}(locator);
リンクを作成する。 targetはリンクされる文字列。 locatorはリンクの遷移先で、PageID(!ID)かISBN番号(@number)かURLである。リンクのショートカットは'#'で、'#{target}(locator)'と書いてもよい。
  • これは#{リンク}(!index-home)の例です。これも&[link]{リンク}(http://www.google.co.jp/);の例です。
source
これはリンクの例です。これもリンクの例です。
sample
1.3.7 画像
@{alt}(locator)
&[image]{alt}(locator);
画像を表示する。
  • @{画像}(/_img/sample.jpeg) 画像表示の例です。
source
画像 画像表示の例です。
sample
1.3.8 動画
&[movie]{text}(locator);
動画を表示する。
  • &[movie]{動画}(/_img/sample.webm); 動画表示の例です。
source
動画表示の例です。
sample
1.3.9 音声(未実装)
&[sound]{text}(locator);
1.3.10 画像リンク
&[image-link]{alt}(image-locator,link-locator);
画像を表示してリンクを設定する。
  • &[image-link]{ロゴ}(/_img/logo_atte.png,!index-home); 画像リンクの例です。
source
ロゴ 画像リンクの例です。
sample
1.3.11 画像セット
&[image-set]{alt}(locator,locator1 width1,locator2 width2, ...);
適切なサイズの画像を選択して表示する。 locatorはデフォルトサイズの画像ソース。 locatorNは、幅widthN(px)が想定された画像ソース。画像は画面幅に収まるように自動伸縮する。 image登録された画像は下記イメージスコープを利用するほうが良い。
  • &[image-set]{画像}(!image-20180921S001/20180921S001S.jpeg, !image-20180921S001/20180921S001S.jpeg 320, !image-20180921S001/20180921S001M.jpeg 640, !image-20180921S001/20180921S001L.jpeg 960); 画像セットの例です。
source
画像 画像セットの例です。
sample
1.3.12 イメージスコープ
&[image-scope]{alt}(ImageID,good=[?:F,H,L,M,S,T],fine=[?:F,H,L,M,S,T],mini=[?:F,H,L,M,S,T],set=[*:F,H,L,M,S,T],group=[?:group name]);
詳細は画像ヘルプを参照。 image登録された画像を表示する。
1.3.13 脚注
^{text}
&[annotate]{text};
^{text}(name)
&[annotate]{text}(name);
脚注へのリンクをつける。脚注はfootnoteレイアウトで表示させる。脚注には名前nameをつけることができる。名前つきの脚注は後からレイアウト形式の脚注で内容を追加できる。これは脚注が長い場合や脚注をマークアップしたい場合に有用です。
  • 文章中に脚注^{脚注とは補足説明文です。}をつけることができます。
  • 脚注には名前^{名前とは識別子です。}(foo)をつけることができます。
  • 脚注の内容は名前を参照して後から追加できます。
  • +[annotate](foo)言ってしまえばただの記号です。
  • 脚注の追加は脚注番号で指定することもできます。
  • +[annotate](-1)とは言え、愛着の対象でもあります。
source
文章中に脚注[1]をつけることができます。 脚注には名前[2]をつけることができます。 脚注の内容は名前を利用して後から追加できます。 脚注の名前のかわりに番号で指定することもできます。
  1. [1] 脚注とは補足説明文です。
  2. [2] 名前とは識別子です。言ってしまえばただの記号です。とは言え、愛着の対象でもあります。
sample
1.3.14 汎用
&[id]{target}(option);
&[class]{target}(option);
&[style]{target}(option);
HTMLへの変換の場合、spanタグで対応する属性が設定される。何でもできてしまうため多用すべきではないとする。上記はそれぞれ以下のHTMLソースを出力する。
  • <span id="option">target</span>
  • <span class="option">target</span>
  • <span style="option">target</span>
HTML source
1.4 レイアウト (layout) リファレンス
基本書式は次の通り。
  • +[layout]{target}(option) text
layoutはレイアウト名で、HTMLに変換される場合はclass属性としても設定される。 targetは多くの場合、ヘッダーやキャプションとして表示される。 optionはレイアウト毎に定義され、レイアウトの一部を変更するなどの効果を持つ。
レイアウト書式に続く行頭の'+ (SPACE)'は継続行で直前の行に連結される。以下の二つは同値。
  • +[layout]{target}(option) word1 word2
source
  • +[layout]{target}(option) word1
  • + word2
source
行頭が'+|'であれば後続行となる。大抵のマークアップテキストでは改行が空白に変換されるため、継続行と後続行で見た目は変わらないが、 HTMLソースで参照するとスペースを間に挟んで連結されているか、新しい行になっているかが確認できる。行の区切りが意味を持つレイアウト(listやconsoleなど)も多く存在する。
行頭の'+'の数によって入れ子を表現できる。以下は入れ子になったレイアウトの例である。
  • +[outer]
  • +|outer line1
  • +|outer line2
  • ++[inner]
  • ++|inner line1
  • ++|inner line2
  • +|outer line3
source
なお、行テキスト前後の空白は(継続行や後続行も含めて全て)無視される。
1.4.1 一行メッセージ
+< left aligned test
+> right aligned test
+= center aligned test
+[line](align=*,indent=*) text
前後で改行して一行分のメッセージを表示する。 alignはleft,right,centerのいづれかである。 indentはem単位でalignに応じて、左から、右から、両側からの字下げ量を指定する。 align,indentともに省略できる。デフォルトのalignはleft、indentは0である。
  • +[line](align=left,indent=2) left
  • +[line](align=right,indent=2) right
  • +[line](align=center,indent=2) center
source
3種のショートカットが存在する。 '<'はalign=left、'>'はaligen=right、'='はalign=centerと同じ。ショートカットを連続して配置すると、字下げ量も指定できる。以下は同値。
  • <<< left text
  • --> +[line](align=left,indent=2) left text
  • >>>> right text
  • --> +[line](align=right,indent=3) right text
  • = center text
  • --> +[line](align=center,indent=0) center text
source
一行メッセージとあるが、別に一行でなくともかまわない。
1.4.2 メッセージボックス
+[area](style=*) text
任意のメッセージボックス。 styleでスタイルシートを記述する。
1.4.3 リスト
+[list]{pretext}(type=*) item
リストを表示する。 typeは'none|disc|circle|square|decimal'のいずれか。 typeが省略されれば'decimal'となる。行の区切りでリスト項目を識別するため、後続行の形式で項目を列挙する。 pretextが存在すれば、リストの前にpretextを表示する。リストの入れ子で有用。ただし、pretextはマークアップされない。
  • +[list](type=disc)
  • +|item1
  • +|item2
  • +|item3
source
ショートカットは'-'である。
  • +-item1
  • +|item2
  • +|item3
source
リストは入れ子にすることも可能。
  • +[list]
  • +|item1
  • +|item2
  • ++[list]{item3}
  • ++|item31
  • ++|item32
  • +|item4
source
1.4.4 ペアリスト
+[pair]{caption} name:value
ペアリストを表示する。ペアの項目名(name)と項目値(value)は':'で区切る。項目名、項目値ともに省略可能。 ':'が存在しない場合は項目値が省略されているとされる。ペアは複数列挙でき、原則、行の区切りが各ペアの区切りとなる。項目名を省略した行を持つことができる(単一の項目名に複数の項目値を持てる)ため、厳密には項目名の出現の直前でペアは区切られることになる。
  • +[pair]{sample}
  • +|name1:value1
  • +|name2:value2
  • +|name3 (only name)
  • +|:value3 (only value)
  • +|:value3' (second value)
source
1.4.5 事例
+[case]{caption}
汎用的に使える囲み記事。
  • +[case]{sample} some case
source
some case
sample
1.4.6 注意
+[remark]{caption}
注意、注目などを記述する囲み記事。
  • +[remark]{sample} some remark
source
some remark
sample
1.4.7 備考
+[comment]{caption}
その他、コメントを記述する囲み記事。
  • +[comment]{sample} some comment
source
some comment
sample
1.4.8 コンソール
+[console]{caption} line
コンソール表示(monospace)を行う。マークアップは無視される。改行はそのまま扱われるため、後続行指定で複数行が表示される。
  • +[console]{sample}
  • +|line1
  • +|line2
source
  • line1
  • line2
sample
1.4.9 プログラム
+[program]{caption} line
プログラム表示(monospace)を行う。マークアップは無視される。改行はそのまま扱われるため、後続行指定で複数行が表示される。プログラムは行番号とともに表示される。 (TODO)ignore markup.
  • +[program]{sample}
  • +|line1
  • +|line2
source
  1. line1
  2. line2
sample
1.4.10 改頁
+[break]
要素の回り込みを解除する。
1.4.11 罫線
+[rule]
罫線を引く。
1.4.12 脚注(annotate)
+[annotate](name)
脚注を追加する。名前をつけられた脚注を追記する。名前の変わりに番号で追記対象を指定してもよい。脚注番号は脚注の出現順に割り当てられる1から始まる整数である。負数であれば現[annotate]までの脚注を後ろからの順で指すことができる。マークアップ形式とは異なり(マークアップ形式の脚注は内部にマークアップをもてない)、脚注にマークアップを含めることができる。
  • 脚注内でマークアップ^{}(markup)してみました。
  • 追記もしてみました。
  • +[annotate](markup) マークアップってハイパーリンクのことだと思っていました。
  • +[annotate](-1) そんな時代もありました。
  • +[footnote]
脚注内でマークアップ[3]してみました。 追記もしてみました。
  1. [3] マークアップってハイパーリンクのことだと思っていました。そんな時代もありました。
1.4.13 脚注(footnote)
+[footnote]
脚注を表示する。脚注はannonoteマークアップとannonoteレイアウトで用意する。
1.4.14 イメージスコープ
+[image-scope](ImageID,good=[?:F,H,L,M,S,T],fine=[?:F,H,L,M,S,T],mini=[?:F,H,L,M,S,T],scale=[?:F,H,L,M,S,T],group=[?:group name])
詳細は画像ヘルプを参照。 image登録された画像を表示する。
1.4.15 トラックスコープ
+[track-scope](TrackID,link=locator,scale=[?:F,H,L,M,S,T])
詳細は軌跡ヘルプを参照。 track登録された軌跡を表示する。
1.5 数式(TeX)
&[tex]{TeX Source};
+[tex] TeX Source
数式はTeXで記述する。実装はKaTeXなので、サポートされるコマンドなどは、 KaTeXのドキュメントを参照のこと。マークアップ形式はspanタグ、レイアウト形式はdivタグに変換される。加えて、レイアウト形式では先頭行として'\displaystyle'が挿入される。
  • 数式は&[tex]{\TeX};で記述します。
  • &[tex]{\KaTeX};によるクライアントサイドでの実装です。
  • 下のサンプルはネイピア数の定義(行末に'\'を置くと行連結となるため注意)。
  • +[tex]
  • +|\begin{aligned}
  • +|\mathrm{e} &= \lim_{n \to \infty} \left( 1 + \frac{1}{n} \right) ^n
  • +| \\ &\approx 2.71828\,18284\,59045\,23536\,02874\,71352\,\cdots
  • +|\end{aligned}
source
数式は\TeXで記述します。 \KaTeXによるクライアントサイドでの実装です。 下のサンプルはネイピア数の定義(行末に'\'を置くと行連結となるため注意)。
\displaystyle \begin{aligned} \mathrm{e} &= \lim_{n \to \infty} \left( 1 + \frac{1}{n} \right) ^n \\ &\approx 2.71828\,18284\,59045\,23536\,02874\,71352\,\cdots \end{aligned}
sample
2 Tiki Developper Notes
2.1 Pickup形式 (pickup form)
query := (qs)?
qs := q (SPACE q)*
q := seed-letter (like-query ('+' between-query)?)? (arrange-letter)?
seed-letter := ['!' '@' '#' '$' '%' ':' ';' '?' '^' '|' '/']
like-query := [^ '+' SPACE]*
between-query := [^ SPACE]*
arrange-letter := ['<' '>']
pageデータをclass情報を元に取得する。空白で区切られたqueryの要素を条件としてAND検索が行われる。条件を適用する対象をseed-letterで指定し、前方一致する文字列をlike-queryとして検索する。 like-queryに続けて'+'が存在すれば、開始をlike-query、終了をbetween-queryとする範囲検索を行なう。
  • query := ""
  • -->
  • SELECT P._name FROM _page P
sample1
  • query := "!image-"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='name' AND C1._index=1
  • WHERE C1._value LIKE 'image-%'
sample2
  • query := "!image- @201804+201810<"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='name' AND C1._index=1
  • LEFT JOIN _class C2
  • ON C2._name=P._name AND C2._type='date' AND C2._index=1
  • WHERE C1._value LIKE 'image-%' AND C2._value BETWEEN '201804' AND '201810'
  • ORDER BY C2._value ASC
sample3
  • query := "@> ^image"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='date' AND C1._index=1
  • LEFT JOIN _class C2
  • ON C2._name=P._name AND C2._type='category' AND C2._index=1
  • WHERE C1._value LIKE '%' AND C2._value LIKE 'image%'
  • ORDER BY C1._value DESC
sample4
範囲検索の両端を同値にすると実質的に完全一致と同じである。
  • query := "^image+image"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='category' AND C1._index=1
  • WHERE C1._value BETWEEN 'image' AND 'image'
sample5
seed-letterの後、like-queryの前に'-'を記述すると条件を反転できる。
  • query := "@-2018+2019 ^-image"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='date' AND C1._index=1
  • LEFT JOIN _class C2
  • ON C2._name=P._name AND C2._type='category' AND C2._index=2
  • WHERE C1._value NOT BETWEEN '2018' AND '2019' AND C2._value NOT LIKE 'image%'
sample6
特例としてlike-queryが'%'であれば無条件となる。 sample7とsample8の違いは、後者ではC1._valueがNULLの場合が選択されない。
  • query := "@%"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='date' AND C1._index=1
sample7
  • query := "@"
  • -->
  • SELECT P._name FROM _page P
  • LEFT JOIN _class C1
  • ON C1._name=P._name AND C1._type='date' AND C1._index=1
  • WHERE C1._value LIKE '%'
sample8
これは取得するpageデータにNULL値を含めたい場合に利用できる。 ipickup関数の6番目の引数は結果セットにqueryの値を含めるフラグである。
  1. tiki.pager.ipickup("$%", 9999, nil, -1, nil, true)
2.2 GeoTEXT(GeoTEXT Format)
GeoTEXT(GeoTEXT Format)は、位置情報、及び、位置に関連づけられた諸情報を格納するファイルフォーマットである。 GeoTEXTは行指向のテキストデータで各行は、「見出し(index)」「経度(longitude)」「緯度(latitude)」と、省略可能な「高度(altitude)」「時刻(timestamp)」「その他の属性」から構成される。
index:longitude,latitude,altitude,ts=timestamp,key1=value1,key2=value2,...
  • 0:138.9844,35.780495,537.0,ts=1540677218.0
  • 0:138.98428,35.78049,537.0,ts=1540677225.0
  • 0:138.98419,35.780457,542.0,ts=1540677233.0
  • 1:138.91763,35.79156,632.0,ts=1540708326.0
  • 1:138.91783,35.791576,632.0,ts=1540708335.0
GeoTEXT Sample
数字のindexはセグメントで、同一のセグメントに属するデータは軌跡を構成する(連続している)。逆に言えば異るセグメントのデータは分離している(不連続である)。セグメントとデータは':'で区切り、データの各属性は','で区切られる。 longitudeは東経を正とした度単位での経度、 latitudeは北緯を正とした度単位での緯度である。 altitudeはメートル単位の高度で省略可能である。経度、緯度、高度以外の属性は「key=value」の形式で、出現順序は問わず、また、全て省略可能である。 'ts'属性の値timestampはUNIX時間で表現された時刻である。数字以外のindexとその他の属性の意味は、それを解釈するアプリケーション次第であり自由に拡張してよい。
image:longitude,latitude,src=ImageURL
  • image:139.741357,35.658099,src=https://upload.wikimedia.org/wikipedia/commons/d/dc/Japan_geodetic_datum.jpg
GeoTEXT Sample
位置情報とその位置に関連する画像のURLを持つ行の例である。
GeoTEXTはデータ交換のための簡易で拡張可能なフォーマットとして設計された。位置情報データ形式としては、GPXやKML、GeoJSONなどが広く利用されているものの、サービスやアプリケーション毎に対応する形式は異なっている。傾向として、GPSロガーはGPX、Google製品はKML、 Leafletなどオープンソースの世界ではGeoJSONが優勢であり、これらの利用に応じてデータを相互に変換する必要がある。 GeoTEXTは変換のための中間形式(変換元)として、各種データ形式の最大公約数(最小サブセット)となることを意識している。
GeoTEXTからGPXへの変換サイトを用意しておく。