Last modified : 2014. 10. 13

Basic Syntax

このページでは KARAS の基本の構文について解説します。

レベル について

KARAS は レベル(Level) という概念を持っています。例えば、KARAS では行頭に = を書くと見出し要素 <h1> を出力しますが、== のように記号を2つ書くと、 <h2> を出力します。 = が1つの時をレベル1= が2つの時をレベル2と呼びます。 KARAS では、このように出力結果が変わる単位をレベルと定義しています。

見出しと区切り

行頭に = を書くと見出しを出力します。最大レベルは 6 です。構文のレベルが上がるごとに出力される見出しのレベルは1つ下がります。また :: の後に続いて書かれたテキストは ID として出力されます。

Input
= Heading level 1
== Heading level 2 :: ID
=== Heading level 3
==== Heading level 4
===== Heading level 5
====== Heading level 6
Output
<h1>Heading level 1</h1>
<h2 id="ID">Heading level 2</h2>
<h3>Heading level 3</h3>
<h4>Heading level 4</h4>
<h5>Heading level 5</h5>
<h6>Heading level 6</h6>

行頭に7つ以上 = を書くと水平線を出力します。7より上のレベルは、すべて水平線を出力します。= の後に続くテキストは出力されません。

Input
=======
======== 8
Output
<hr>
<hr>

リスト

標準のリスト

行頭に - を書くとリストを出力します。最大レベルはありません。レベルが上がるとリストはネストされます。

Input
- Item 1
- Item 2
-- Item 2-1
- Item 3
Output
<ul>
    <li>Item 1</li>
    <li>Item 2
        <ul>
            <li>Item 2-1</li>
        </ul>
    </li>
    <li>Item 3</li>
</ul>

順序付きのリスト

行頭に + を書くと順序付きのリストを出力します。最大レベルはありません。レベルが上がるとリストはネストされます。

Input
+ Item 1
++ Item 2
Output
<ol>
    <li>Item 1
        <ol>
            <li>Item 2</li>
        </ol>
    </li>
</ol>

リストの開始番号を変更するためには :: を使用します。開始番号を指定したリストと同じグループのリストは、再び開始番号が変更されるまで、番号が変更されます。

Input
+ Item 1
++ Item 1-5 :: 5
++ Item 1-6
+ Item 2
++ Item 2-1
Output
 <ol>
    <li>Item 1
        <ol>
            <li value="5">Item 1-5</li>
            <li>Item 1-6</li>
        </ol>
    </li>
    <li>Item 2
        <ol>
            <li>Item 2-1</li>
        </ol>
    </li>
 </ol>

定義リスト

行頭に ; を書くと定義リストを出力します。最大レベルは 2 です。レベル1では定義用語を、レベル2では定義を書きます。定義用語と定義はいくつでも追加することができます。

Input
; Definition term
;; Definition description 1
;; Definition description 2
Output
<dl>
    <dt>Definition term</dt>
    <dd>Definition description 1</dd>
    <dd>Definition description 2</dd>
</dl>

装飾と意味の追加

太字と重要性

テキストを ** で閉じると太字として出力します。最大レベルは 2 です。レベル1では、テキストは太字として区別されたテキストになります。レベル2では、テキストは強い重要性を持ちます。

Input
** Bold text **
*** Strong text ***
Output
<b>Bold text</b>
<strong>Strong text</strong>

斜体と強調

テキストを // で閉じると斜体として出力します。最大レベルは 2 です。レベル1では、テキストは区別されたテキストになります。レベル2では、テキストは強調されていることを(stress emphasis)を示します。

Input
// Italic text //
/// Emphasized text ///
Output
<i>Italic text</i>
<em>Emphasized text</em>

ただし、http:// や ftp:// などの (プロトコルを表す) テキストに含まれる // は無視されます。

下線と追加

テキストを __ で閉じると下線付きで出力します。最大レベルは 2 です。レベル1では装飾だけ持ちます。レベル2では追加されたテキストの示します。

Input
__ Underline text __
___ Inserted text ___
Output
<u>Underline text</u>
<ins>Inserted text</ins>

打消しと削除

テキストを %% で閉じると打消し線付きで出力します。最大レベルは 2 です。レベル1では装飾だけ適用されます。レベル2では削除されたテキストを示します。

Input
%% Striked text %%
%%% Deleted text %%%
Output
<s>Striked text</s>
<del>Deleted text</del>

定義用語

テキストを ?? で閉じると定義用語として出力します。最大レベルは 2 です。レベル1では定義用語として出力されます。レベル2では定義用語の略語として出力されます。

Input
?? Definition text ??
??? Abbreviated definition text ???
Output
<dfn>Definition text</dfn>
<dfn><abbr>Abbreviated definition text</abbr><dfn>

入力と出力

テキストを $$ で閉じると入力や出力を示すテキストを出力します。最大レベルは 2 です。レベル1では、テキストは入力として出力されます。レベル2では、テキストは改行を含まない短い出力として出力されます。この構文でマークアップされたテキストに含まれる < や > などの特定の文字は文字参照に変換されます。

Input
$$ < Keyboard text > $$
$$$ > Sample text $$$
Output
<kbd>&lt; Keyboard text &gt;</kbd>
<samp>&gt; Sample text</samp>

変数とコード

テキストを `` で閉じると変数やコードとして出力します。最大レベルは 2 です。レベル1では、テキストは変数 (var) として出力されます。レベル2では、テキストは改行を含まない短いコード (code) として出力されます。この構文でマークアップされたテキストに含まれる < や > などの特定の文字は文字参照に変換されます。

Input
`` <Variable text> ``
``` > Code text ```
Output
<var>&lt;Variable text&gt;</var>
<code>&gt; Code text</code>

レベル1の var 要素は、数式やソースコードの変数、定数などを記述することができます。レベル2の code 要素は XML の要素名や、ソースコードのほかに、ファイル名などを記述することができます。

上付き文字とルビ

テキストを '' で閉じると上付き文字として出力します。最大レベルは 2 です。レベル1のときは上付き文字を出力します。レベル2のときはルビを出力します。

Input
''Superscript text''
Output
<sup>Superscript text</sup>

ルビの構文はとても特殊な構文です。レベル2の構文を使ってルビを書くときは、それぞれの単語とルビをオプションの構文 :: で区切ります。

Input
'''KANJI::ruby'''
'''KAN::ru::JI::by'''
Output
<ruby>KANJI<rp> (</rp><rt>ruby</rt><rp> )</rp></ruby>
<ruby>KAN<rp> (</rp><rt>ru</rt><rp> )</rp>JI<rp> (</rp><rt>by</rt><rp> )</rp></ruby>

下付き文字

テキストを ,, で閉じると上付き文字として出力します。最大レベルは 1 です。

Input
,, Subscript text ,,
Output
<sub>Subscript text</sub>

引用と出典

作品タイトル

テキストを @@ で閉じると、作品タイトルを出力します。最大レベルは 2 です。レベル1では作品のタイトルを出力します。レベル2では細則 (例えば著作者や免責事項) を出力します。

Input
@@ Cite text @@
@@@ features disclaimers, caveats, legal restrictions, or copyrights @@@
Output
<cite>Cite text</cite>
<small>features disclaimers, caveats, legal restrictions, or copyrights</small>

小さな引用

テキストを "" で閉じると、引用したテキストとして出力します。最大レベルは 1 です。テキスト中に、セリフや短いテキストを引用するときに使います。

Input
"" Quoted text ""
Output
<q>Quoted text</q>

大きな引用

行頭に > を書くと引用したテキストのブロックを出力します。 最大レベルはありません。レベルが上がると引用テキストはネストされます。改行を含むなどする大きな1つの文章を引用テキストとするときはこの方法を使用します。

Input
> Blockquote text,
2nd line.
>> Blockquote text in Blockquote.
>>> Blockquote text in Blockquote.
Output
<blockquote>
<p>Blockquote text,
 2nd line.</p>
    <blockquote>
    <p>Blockquote text in Blockquote.</p>
        <blockquote>
        <p>Blockquote text in Blockquote.</p>
        </blockquote>
    </blockquote>
</blockquote>

テキストを (()) で閉じると、リンクとして出力します。最大レベルは 2 です。レベル1では一般的なリンクとして出力されます。レベル2では埋め込まれたメディアとして出力されます。

テキストリンク (alias) を書くときは、 オプション構文 :: の後に、そのテキストを書きます。

Input
(( URL ))
(( ImageURL.jpg ))
(( URL :: Alias text ))
Output
<a href="URL">URL</a>
<a href="ImageURL.jpg">ImageURL.jpg</a>
<a href="URL">Alias text</a>

レベル2の出力結果は、指定された URL に依存します。URL の末尾の拡張子が画像ファイルを示すときは、出力結果は画像を表示するために最適な形式になります。音声と動画の場合も同じです。これらのメディアにパラメータを追加するときは、 オプションの構文 :: の後に書きます。

標準のコンバータでは、 オプションの構文 :: に続いて書かれたテキストは、一切変更されずにオプションとして追加されます。 また obj などのネストされた要素に対しては、適切なパラメータに変換してから追加します。オプションのテキストは、分割されて、予約されたオプションかどうか解析されます。

画像の場合です。

Input
((( ImageURL.jpg )))
((( ImageURL.jpg :: alt="white image" width="100" height="100" )))
Outut
<img src="ImageURL.jpg">
<img src="ImageURL.jpg" alt="white image" width="100" height="100">

動画の場合です。

Input
((( VideoURL.mp4 )))
((( VideoURL.mp4 :: width="100" height="100" loop controls )))
Output
<video src="VideoURL.mp4">
    <object data="VideoURL.mp4">
        <embed src="VideoURL.mp4">
    </object>
</video>
<video src="VideoURL.mp4" width="100" height="100" controls>
    <object data="VideoURL.mp4" width="100" height="100">
        <param name="controls" value="true">
        <embed src="VideoURL.mp4" width="100" height="100" controls="true">
    </object>
</video>

音声の場合です。

Input
((( AudioURL.mp3 )))
((( AudioURL.mp3 :: loop )))
Output
<audio src="AudioURL.mp3">
    <object data="AudioURL.mp3">
        <embed src="AudioURL.mp3">
    </object>
</audio>
<audio src="AudioURL.mp3" loop>
    <object data="AudioURL.mp3">
        <param name="loop" value="true">
        <embed src="AudioURL.mp3" loop="true">
    </object>
</audio>

その他の場合です。例えば FLASH(.swf) はその1つです。

Input
(((UndefURL.swf)))
(((UndefURL.swf :: width="100" height="100" allowfullscreen)))
Output
<object data="UndefURL.swf">
    <embed src="UndefURL.swf">
</object>
<object data="UndefURL.swf" width="100" height="100">
    <param name="allowfullscreen" value="true">
    <embed src="UndefURL.swf" width="100" height="100" allowfullscreen="true">
</object>

出力形式は KARAS が導入されるシステムに依存します。このページでは、KARAS の標準的なコンバータによる変換結果を示しています。正確な情報が必要なときは、そのシステムが提供する変換結果の例を参照してください。開発者は、レベル2の構文が使われるときに、そのメディアに最適化された結果を出力することができるシステムを開発する必要があります。

テーブル

行頭に || を書くとテーブルを出力します。同じ行に || を書くと、次のセルを出力します。テーブルの行は、改行によって制御されます。

スペースの数や || の位置を揃える必要はありません。ただしセルの数が多かったり、セルの中の文字の数がそれぞれ大きく異なるときは可読性のために揃えることを推奨します。

Input
|| Cell 1 || Cell 2
|| Cell 3 || Cell 4
Output
<table>
    <tr><td>Cell 1</td><td>Cell 2</td></tr>
    <tr><td>Cell 3</td><td>Cell 4</td></tr>
</table>

ヘッダを出力するときは、セル構文の左側の記号を変更して !| と書きます。

Input
!| Cell 1 !| Cell 2
|| Cell 3 || Cell 4
Output
<table>
    <tr><th>Cell 1</th><th>Cell 2</th></tr>
    <tr><td>Cell 3</td><td>Cell 4</td></tr>
</table>

左揃えされたセルにするときは、セルの構文の右側の記号を変更して |< と書きます。右揃えのセルにするときは |> と書きます。中央揃えのセルにするときは |= と書きます。また右揃えのヘッダにするときは !> と書きます。

標準のセルの文字の整列方向は、システムか、あるいは、CSS のようなレイアウト機能よって変更される可能性があります。

Input
!| Cell 1 !> Cell 2
|< Cell 3 |= Cell 4
Output
<table>
    <tr>
        <th>Cell 1</th>
        <th style="text-align:right;">Cell 2</td>
    </tr>
    <tr>
        <td style="text-align:left;">Cell 3</td>
        <td style="text-align:center;">Cell 4</td>
    </tr>
</table>

セルを水平方向に結合するには、セルの中に :: だけを書きます。:: が書かれたセルは左側のセルに結合されます。セルを垂直方向に結合するには、セルの中に ::: だけを書きます。::: が書かれたセルは上のセルに結合されます。

Input
|| Cell 1 ||  ::    || Cell 2 || Cell 3
|| Cell 4 || Cell 5 ||  :::   || Cell 6
||  :::   || Cell 7 ||  :::   || Cell 8
Output
<table>
    <tr>
        <td colspan="2">Cell 1</td>
        <td rowspan="3">Cell 2</td>
        <td>Cell 3</td>
    </tr>
    <tr>
        <td rowspan="2">Cell 4</td>
        <td>Cell 5</td>
        <td>Cell 6</td>
    </tr>
    <tr>
        <td>Cell 7</td>
        <td>Cell 8</td>
    </tr>
</table>

その他

<> 記号

構文としてではなく、記号 <> を書くためには、&lt;&gt;のように、文字参照として書く必要があります。

パラグラフ

テキストが特別な記号を行頭に持たないときは、そのテキストは1つのパラグラフとして出力されます。特別な記号は、 = + - ; < > と、記号の組み合わせ (( || |> |< |= !| !> !< != です。

Input
This text become a paragraph. 
Output
<p>This text become a paragraph. </p>

テキストは改行されても1つのパラグラフとして出力されます。1つ以上の空行がテキストの間あるときは、それぞれ異なるパラグラフになります。

Input
This text become a paragraph.
2nd line.
 
Paragraph is divided by blank line.
Output
<p>This text become a paragraph.
2nd line.</p>
<p>Paragraph is divided by blank line.</p>

パラグラフの中で改行が必要なときは、改行の前に ~ を書きます。1つのパラグラフに空行を入れるときは、その行に ~ だけを書きます。

Input
This text become a paragraph. ~
2nd line.

This text become a paragraph.~
~ 
2nd line.
Output
<p> This text become a paragraph.<br> 
2nd line.</p>
 
<p>This text become a paragraph.<br>
<br>
2nd line.</p>

コメントアウト

## で閉じられたテキストは出力されません。最大レベルは1です。

Input
## Comment out text ##
Output
Nothing is output.

エスケープ

KARAS の構文は、エスケープ \ (バックスラッシュ / 円マーク) によって無効にすることができます。例えば = から始まるパラグラフを書くときは、\= と書きます。

Input
\= This text become a paragraph.
Output
<p>= This text become a paragraph.</p>

エスケープは記号を1つだけ無視します。また、エスケープ記号 \ を書きたいときは、エスケープを2つ書きます。

Input
\***Bold text.**
Write a \\ mark.
Output
*<b>Bold text.</b>
Write a \ mark.