<?xml version='1.0' encoding='Shift_JIS' ?>

<doc xml:lang='ja'>
<head>
<title>SmartDocの構造</title>
<author>浅海 智晴</author>
<date>2002年3月31日</date>
</head>
<body>

本章では、SmartDoc文書の構造について説明します。

<section title="要素一覧">

SmartDocがサポートしている要素の一覧を<a href="#tab:elementList"></a>に
示します。

<table title="要素一覧" id="tab:elementList">
<thead>
カテゴリ,要素,機能,出自
</thead>
<tbody>
<ul>
  <li>文書要素</li>
  <ul>
    <tr>
      <td>doc</td>
      <td>SmartDoc文書のルート要素</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>head</td>
      <td>SmartDoc文書の文書情報</td>
      <td>HTML/head要素</td>
    </tr>
    <tr>
      <td>body</td>
      <td>SmartDoc文書の本体</td>
      <td>HTML/body要素</td>
    </tr>
  </ul>
  <li>ヘッダ要素</li>
  <ul>
    <tr>
      <td>title</td>
      <td>文書のタイトル</td>
      <td>LaTeX/titleコマンド</td>
    </tr>
    <tr>
      <td>subtitle</td>
      <td>文書のサブタイトル</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>author</td>
      <td>著者</td>
      <td>LaTeX/authorコマンド</td>
    </tr>
    <tr>
      <td>org</td>
      <td>組織</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>date</td>
      <td>日時</td>
      <td>LaTeX/dateコマンド</td>
    </tr>
    <tr>
      <td>hp</td>
      <td>ホームページアドレス</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>email</td>
      <td>Eメールアドレス</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>abstract</td>
      <td></td>
      <td>LaTeX/abstract環境</td>
    </tr>
    <tr>
      <td>header</td>
      <td>ページヘッダ情報</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>footer</td>
      <td>ページフッタ情報</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>prologue</td>
      <td>ページプロローグ情報</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>native</td>
      <td>ターゲットフォーマットのネーティブ記述</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>文書構造要素</li>
  <ul>
    <tr>
      <td>part</td>
      <td>部</td>
      <td>LaTeX/partコマンド</td>
    </tr>
    <tr>
      <td>chapter</td>
      <td>章</td>
      <td>LaTeX/chapterコマンド</td>
    </tr>
    <tr>
      <td>section</td>
      <td>節</td>
      <td>LaTeX/sectionコマンド</td>
    </tr>
    <tr>
      <td>subsection</td>
      <td>小節</td>
      <td>LaTeX/subsectionコマンド</td>
    </tr>
    <tr>
      <td>subsubsection</td>
      <td>少少節</td>
      <td>LaTeX/subsubsectionコマンド</td>
    </tr>
    <tr>
      <td>appendix</td>
      <td>付録</td>
      <td>LaTeX/appendixコマンド</td>
    </tr>
  </ul>
  <li>補助構造要素</li>
  <ul>
    <tr>
      <td>fyi</td>
      <td>コメント的な参考情報</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>note</td>
      <td>注釈</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>リスト要素</li>
  <ul>
    <tr>
      <td>ul</td>
      <td>番号なしリスト</td>
      <td>HTML/ul要素</td>
    </tr>
    <tr>
      <td>ol</td>
      <td>番号つきリスト</td>
      <td>HTML/ol要素</td>
    </tr>
    <tr>
      <td>li</td>
      <td>ulまたはolのリスト項目</td>
      <td>HTML/li要素</td>
    </tr>
    <tr>
      <td>dl</td>
      <td>定義リスト</td>
      <td>HTML/dl要素</td>
    </tr>
    <tr>
      <td>dt</td>
      <td>dlの定義項目</td>
      <td>HTML/dt要素</td>
    </tr>
    <tr>
      <td>dd</td>
      <td>dlの定義内容</td>
      <td>HTML/dd要素</td>
    </tr>
  </ul>
  <li>ブロック要素</li>
  <ul>
    <tr>
      <td>div</td>
      <td>矩形領域</td>
      <td>HTML/div要素</td>
    </tr>
    <tr>
      <td>p</td>
      <td>パラグラフ</td>
      <td>HTML/p要素</td>
    </tr>
    <tr>
      <td>pre</td>
      <td>整形済みテキスト</td>
      <td>HTML/pre要素</td>
    </tr>
  </ul>
  <li>テーブル要素</li>
  <ul>
    <tr>
      <td>table</td>
      <td>表のルート要素</td>
      <td>HTML/table要素</td>
    </tr>
    <tr>
      <td>thead</td>
      <td>ヘッダ情報</td>
      <td>HTML/thead要素</td>
    </tr>
    <tr>
      <td>tfoot</td>
      <td>フッタ情報</td>
      <td>HTML/tfoot要素</td>
    </tr>
    <tr>
      <td>tbody</td>
      <td>データ情報</td>
      <td>HTML/tbody要素</td>
    </tr>
    <tr>
      <td>tr</td>
      <td>レコード</td>
      <td>HTML/tr要素</td>
    </tr>
    <tr>
      <td>th</td>
      <td>ヘッダセル</td>
      <td>HTML/th要素</td>
    </tr>
    <tr>
      <td>td</td>
      <td>データセル</td>
      <td>HTML/td要素</td>
    </tr>
    <tr>
      <td>colgroup</td>
      <td>カラムグループの宣言</td>
      <td>HTML/colgroup要素</td>
    </tr>
    <tr>
      <td>col</td>
      <td>カラム情報の定義</td>
      <td>HTML/col要素</td>
    </tr>
    <tr>
      <td>tnote</td>
      <td>表の注釈</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>イメージ要素</li>
  <ul>
    <tr>
      <td>figure</td>
      <td>図版の取り込み</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>img</td>
      <td>イメージの取り込み</td>
      <td>HTML/img要素</td>
    </tr>
  </ul>
  <li>ハイパーテキストリンク要素</li>
  <ul>
    <tr>
      <td>a</td>
      <td>ハイパーテキストリンク</td>
      <td>HTML/a要素</td>
    </tr>
    <tr>
      <td>cite</td>
      <td>引用リンク</td>
      <td>HTML/cite要素</td>
    </tr>
  </ul>
  <li>引用要素</li>
  <ul>
    <tr>
      <td>blockquote</td>
      <td>長い引用</td>
      <td>HTML/blockquote要素</td>
    </tr>
    <tr>
      <td>q</td>
      <td>短い引用</td>
      <td>HTML/q要素</td>
    </tr>
  </ul>
  <li>数式要素</li>
  <ul>
    <tr>
      <td>equation</td>
      <td>数式の記述</td>
      <td>LaTeX/equation環境</td>
    </tr>
  </ul>
  <li>テキスト要素</li>
  <ul>
    <tr>
      <td>span</td>
      <td>テキストの範囲指定</td>
      <td>HTML/span要素</td>
    </tr>
    <tr>
      <td>em</td>
      <td>強調</td>
      <td>HTML/em要素</td>
    </tr>
    <tr>
      <td>strong</td>
      <td>強い強調</td>
      <td>HTML/strong要素</td>
    </tr>
    <tr>
      <td>dfn</td>
      <td>用語の定義</td>
      <td>HTML/dfn要素</td>
    </tr>
    <tr>
      <td>code</td>
      <td>プログラムコード</td>
      <td>HTML/code要素</td>
    </tr>
    <tr>
      <td>b</td>
      <td>ボールド体</td>
      <td>HTML/b要素</td>
    </tr>
    <tr>
      <td>i</td>
      <td>イタリック体</td>
      <td>HTML/i要素</td>
    </tr>
    <tr>
      <td>tt</td>
      <td>タイプライタ体</td>
      <td>HTML/tt要素</td>
    </tr>
  </ul>
  <li>プログラム要素</li>
  <ul>
    <tr>
      <td>program</td>
      <td>プログラムの記述</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>console</td>
      <td>コンソール画面の記述</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>特殊要素</li>
  <ul>
    <tr>
      <td>native</td>
      <td>ターゲットフォーマットのネーティブ記述</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>属性要素</li>
  <ul>
    <tr>
      <td>title</td>
      <td>タイトル属性</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>attribute</td>
      <td>属性値の指定</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
  <li>参考文献要素</li>
  <ul>
    <tr>
      <td>bibliography</td>
      <td>参考文献</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>bibliopole</td>
      <td>参考文献データ</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>book</td>
      <td>書籍</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>article</td>
      <td>記事</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>journal</td>
      <td>雑誌</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>author</td>
      <td>著者</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>editor</td>
      <td>編者</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>title</td>
      <td>タイトル</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>subtitle</td>
      <td>サブタイトル</td>
      <td>SmartDoc独自</td>
    </tr>
    <tr>
      <td>edition</td>
      <td>エディション</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>publisher</td>
      <td>出版社</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>year</td>
      <td>年</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>month</td>
      <td>月</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>volume</td>
      <td>巻</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>number</td>
      <td>号</td>
      <td>BibTeX</td>
    </tr>
    <tr>
      <td>a</td>
      <td>URI</td>
      <td>SmartDoc独自</td>
    </tr>
  </ul>
</ul>
</tbody>
</table>

</section>

<section title="文書の基本構造">

SmartDocの最も基本的な文書構造を<a href="#prog:frameworkSdoc"></a>に示します。

<program src="src/structure/framework.sdoc" id="prog:frameworkSdoc" title="文書構造の例" encoding="Shift_JIS"/>

ここから分かる通り、
SmartDocの基本的な文書構造は
<code>doc</code>、<code>head</code>、<code>body</code>の3つの要素
から構成されています。
SmartDocではこれらの3つの要素を<dfn>文書要素</dfn>と呼んでいます。

<code>doc</code>要素は、SmartDoc文書のルート要素になり、
<code>head</code>要素はSmartDoc文書の文書情報、<code>body</code>要素は
SmartDoc文書の本体を格納する要素となります。

</section>

<section title="ヘッダ要素">

SmartDocでは、<code>head</code>に以下の要素を格納することが
できます。
これらの要素を<code>ヘッダ要素</code>と呼びます。
ヘッダ要素は、他の要素と名前が同じ場合がありますが、意味的には全く
別のものとして扱われます。

<dl>
  <dt>title</dt>
  <dd>タイトル</dd>
  <dt>subtitle</dt>
  <dd>サブタイトル</dd>
  <dt>author</dt>
  <dd>著者</dd>
  <dt>org</dt>
  <dd>組織</dd>
  <dt>date</dt>
  <dd>日時</dd>
  <dt>hp</dt>
  <dd>ホームページアドレス</dd>
  <dt>email</dt>
  <dd>Eメールアドレス</dd>
  <dt>abstract</dt>
  <dd>概要</dd>
  <dt>header</dt>
  <dd>ページヘッダ情報</dd>
  <dt>footer</dt>
  <dd>ページフッタ情報</dd>
  <dt>prologue</dt>
  <dd>ページプロローグ情報</dd>
  <dt>native</dt>
  <dd>ターゲットフォーマットのヘッダ情報</dd>
</dl>

ヘッド要素を使ったSmartDoc文書は以下のようになります。

<program src="src/structure/head.sdoc" id="prog:headSdoc" title="ヘッド要素の例" encoding="Shift_JIS"/>

</section>

<section title="文書構造要素">

SmartDocでは、「章」や「節」といった文書の論理的な区切りを指定する要素
を用意しています。
この目的に使用する要素をSmartDocでは<dfn>文書構造要素</dfn>と呼んでいます。

<program src="src/structure/logical.sdoc" id="prog:logicalSdoc" title="文書構造要素の例" encoding="Shift_JIS"/>

<code>part</code>(部)、<code>chapter</code>(章)、<code>section</code>(節)、
<code>subsection</code>(小節)、<code>subsubsection</code>(小小節)、
<code>appendix</code>(付録)
の各要素が
文書構造要素となります。

</section>

<section title="補助構造要素">

SmartDocでは、文書の論理構造を補完するための補助的な記述をのための
要素を用意しています。

<program src="src/structure/note.sdoc" id="prog:noteSdoc" title="補助構造要素の例" encoding="Shift_JIS"/>

このような補助的な論理構造を示す要素を<dfn>補助構造要素</dfn>と
呼びます。
<code>fyi</code>、<code>note</code>の各要素が補助構造要素となります。

</section>

<section title="リスト要素">

SmartDocでは名前なしリスト、名前付きリスト、定義リストの3種類のリストを
用意しています。
これらのリストを構成する要素を<dfn>リスト要素</dfn>と呼びます。

<program src="src/structure/list.sdoc" id="prog:listSdoc" title="リスト要素の例" encoding="Shift_JIS"/>

<code>ul</code>、<code>ol</code>、<code>li</code>、
<code>dl</code>、<code>dt</code>、<code>dd</code>の各要素が
リスト要素です。

</section>

<section title="ブロック要素">

矩形エリアを記述するための要素として、
<code>div</code>、<code>p</code>、<code>pre</code>の各要素
が用意されています。

<program src="src/structure/block.sdoc" id="prog:blockSdoc" title="ブロック要素の例" encoding="Shift_JIS"/>

</section>

<section title="テーブル要素">

SmartDocで表を記述する場合<code>table</code>要素を使用します。
この<code>table</code>要素には、
<code>colgroup</code>、<code>col</code>、<code>thead</code>、
<code>tfoot</code>、<code>tbody</code>、
<code>tr</code>、<code>th</code>、<code>td</code>、
<code>tnote</code>といった要素が格納されます。
これらの要素を<dfn>テーブル要素</dfn>と呼びます。

<code>tnote</code>要素以外の要素は、HTML 4.0のテーブル要素とほぼ同じ動きを
します。
<code>tnote</code>要素は表の注釈を記述する要素です。

<program src="src/structure/table.sdoc" id="prog:tableSdocStructure" title="テーブル要素の例" encoding="Shift_JIS"/>

</section>

<section title="イメージ要素">

イメージの取り込みは<code>figure</code>要素または
<code>img</code>要素を使用します。
この2つの要素を<dfn>イメージ要素</dfn>と呼びます。

<code>figure</code>要素はキャプション付きの図版を記述します。

<program src="src/structure/image.sdoc" id="prog:imageSdoc" title="イメージ要素の例" encoding="Shift_JIS"/>

</section>

<section title="ハイパーテキストリンク要素">

SmartDoc文書からハイパーテキストリンクを使用すると
<a href="#prog:linkSdoc"></a>
のようになります。

<program src="src/structure/link.sdoc" id="prog:linkSdoc" title="ハイパーテキストリンク要素の例" encoding="Shift_JIS"/>

<code>a</code>、<code>cite</code>が<dfn>ハイパーテキストリンク要素</dfn>です。

</section>

<section title="引用要素">

SmartDoc文書で、引用を記述する場合には
<a href="#prog:quoteSdoc"></a>
となります。

<program src="src/structure/quote.sdoc" id="prog:quoteSdoc" title="引用要素の例" encoding="Shift_JIS"/>

<code>blockquote</code>、<code>q</code>が引用要素です。
この2つの要素を<dfn>引用要素</dfn>と呼びます。

</section>

<section title="索引要素">

SmartDoc文書では索引の自動生成を行うことができます。
この索引を作成する場合の候補となる文字列を指定するために使用するのが
<code>index</code>要素です。
この要素を<dfn>索引要素</dfn>と呼びます。

<program src="src/structure/index.sdoc" id="prog:indexSdoc" title="索引要素の例" encoding="Shift_JIS"/>

</section>

<section title="数式要素">

<dfn>数式要素</dfn>は、数式を記述するための要素です。
現在は番号付きの数式を記述するための<code>equation</code>要素がサポート
されています。

<program src="src/structure/math.sdoc" id="prog:mathSdoc" title="数式要素の例" encoding="Shift_JIS"/>

</section>

<section title="テキスト要素">

テキスト要素は、SmartDoc文書中に記述されているテキストの修飾を行うための
要素です。

<program src="src/structure/text.sdoc" id="prog:textSdoc" title="テキスト要素の例" encoding="Shift_JIS"/>

<code>span</code>、
<code>em</code>、<code>strong</code>、
<code>dfn</code>、<code>code</code>、
<code>b</code>、<code>i</code>、<code>tt</code>が<dfn>テキスト要素</dfn>です。
それぞれ以下の機能を持っています。

<dl>
  <dt>span</dt>
  <dd>テキストの範囲指定</dd>
  <dt>em</dt>
  <dd>強調</dd>
  <dt>strong</dt>
  <dd>強い強調</dd>
  <dt>dfn</dt>
  <dd>用語の定義</dd>
  <dt>code</dt>
  <dd>プログラムコード</dd>
  <dt>b</dt>
  <dd>ボールド体</dd>
  <dt>i</dt>
  <dd>イタリック体</dd>
  <dt>tt</dt>
  <dd>タイプライタ体</dd>
</dl>

</section>

<section title="プログラム要素">

SmartDocではプログラムのソースコードや実行結果を表示するための
専用要素として<code>program</code>と<code>console</code>を用意しています。
これらの要素を<code>プログラム要素</code>と呼びます。

<program src="src/structure/program.sdoc" id="prog:programSdocStructure" title="プログラム要素の例" encoding="Shift_JIS"/>

</section>

<section title="特殊要素">

<dfn>特殊要素</dfn>は、特別な処理に使用される要素です。

<program src="src/structure/special.sdoc" id="prog:specialSdoc" title="特殊要素の例" encoding="Shift_JIS"/>

<code>native</code>要素が特殊要素です。

</section>

<section title="属性要素">

<program src="src/structure/attr.sdoc" id="prog:attrSdoc" title="属性要素の例" encoding="Shift_JIS"/>

<dfn>属性要素</dfn>は、属性値を要素として扱うための要素です。
<code>title</code>、<code>attribute</code>
の各要素が属性要素です。

</section>

</body>
</doc>
