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

<doc xml:lang='ja'>
<head>
<title>ノーマライザ</title>
<author>浅海 智晴</author>
<date>2002年3月31日</date>
</head>
<body>

ノーマライザは要素内のコンテンツを正規化するための機能です。
各要素の<code>normalizer</code>属性を使用して指定します。

<section title="ノーマライザ一覧">

SmartDocでサポートしているノーマライザの一覧を
<a href="#tab:normalizerList"></a>
に示します。

<table id="tab:normalizerList" title="ノーマライザ一覧">
<thead>
名前,機能,関連属性
</thead>
<tbody>
<tr>
  <td>none</td>
  <td>なにもしない</td>
  <td>-</td>
</tr>
<!--
<tr>
  <td>element(要調整)</td>
  <td>要素以外のデータを取り去る</td>
  <td>-</td>
</tr>
-->
<tr>
  <td>natural</td>
  <td>テキストエディタ入力で自然な形の入力をSmartDocの形式に変換</td>
  <td>xml:lang, xml:space</td>
</tr>
<tr>
  <td>naturallabel</td>
  <td>naturalノーマライザにラベル用途の処理を追加</td>
  <td>xml:lang, xml:space</td>
</tr>
<!--
<tr>
  <td>space</td>
  <td><code>xml:space</code>による指定を保存する</td>
  <td>xml:space</td>
</tr>
-->
<tr>
  <td>csv</td>
  <td>CSV形式を表形式に変換</td>
  <td>-</td>
</tr>
<!--
<tr>
  <td>csvthead</td>
  <td>-</td>
</tr>
<tr>
  <td>csvtfoot</td>
  <td>-</td>
</tr>
<tr>
  <td>csvtbody</td>
  <td>-</td>
</tr>
<tr>
  <td>spacetbody</td>
  <td>-</td>
</tr>
<tr>
  <td>tabtbody</td>
  <td>-</td>
</tr>
-->
<!--
<tr>
  <td>csvtr</td>
  <td>-</td>
</tr>
<tr>
  <td>spacetr</td>
  <td>-</td>
</tr>
<tr>
  <td>tabtr</td>
  <td>-</td>
</tr>
-->
<tr>
  <td>image</td>
  <td>イメージファイルのファイル名を調整</td>
  <td>src</td>
</tr>
<tr>
  <td>href</td>
  <td><code>href</code>属性の値をコンテンツに反映</td>
  <td>href</td>
</tr>
<tr>
  <td>program</td>
  <td>プログラムソースの修飾</td>
  <td>-</td>
</tr>
<tr>
  <td>console</td>
  <td>コンソールデータの修飾</td>
  <td>consolePrompt, consolePromptRegex</td>
</tr>
<tr>
  <td>line</td>
  <td>行番号の付加</td>
  <td>-</td>
</tr>
<tr>
  <td>regex</td>
  <td>正規表現によるテキストの編集</td>
  <td>regexExtract, regexHilight, regexUnit, regexRange, regexClass</td>
</tr>
<tr>
  <td>javasrc</td>
  <td>Javaプログラムソースの修飾</td>
  <td>javasrcKeyword, javasrcCount, javasrcHilight, javasrcSyntaxHilight</td>
</tr>
<!--
<tr>
  <td>autoTitle</td>
  <td><code>title</code>属性の自動設定</td>
  <td>-</td>
</tr>
<tr>
  <td>autoID</td>
  <td><code>id</code>属性の自動設定</td>
  <td></td>
</tr>
-->
<tr>
  <td>tex</td>
  <td>TeX数式-MathML変換</td>
  <td></td>
</tr>
</tbody>
</table>

</section>

<section title="デフォルトノーマライザ">

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

</section>

<section title="none">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>なし</td>
</tr>
<tr>
  <th>出力</th>
  <td>なし</td>
</tr>
</tbody>
</table>

<subsection title="機能">

noneノーマライザは何もノーマライザです。
noneノーマライザを指定することで、要素のデフォルトのノーマライザの動作を
抑止することができます。

</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

<code>none</code>ノーマライザの使用例を
<a href="#prog:noneSdoc"></a>に示します。

<program src="src/normalizer/none.sdoc" id="prog:noneSdoc" title="none.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<!--
<section title="tag">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>要素,テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>要素</td>
</tr>
</tbody>
</table>

<subsection title="機能">

tagノーマライザは、要素内の内容を要素のみにするノーマライザです。

</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

<code>tag</code>ノーマライザの使用例を
<a href="#prog:tag"></a>
に示します。

<program src="src/normalizer/tag.sdoc" id="prog:tag" title="tag" encoding="Shift_JIS"/>

</subsection>

</section>
-->

<section title="natural">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>要素,テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td><code>p</code>要素</td>
</tr>
</tbody>
</table>

<subsection title="機能">

naturalノーマライザは、テキストに関して以下の正規化を行うノーマライザです。

<ul>
  <li>空白のみの行を区切り記号にしてパラグラフを識別</li>
  <li>レイアウト上の改行コードを自動削除</li>
</ul>

naturalノーマライザを使うことで、テキストエディタ上での編集が容易になります。

SmartDocで文章を入力する際に使用する要素はほとんどがこの<code>natural</code>
ノーマライザがデフォルトになっています。

</subsection>

<subsection title="属性">

<table title="naturalノーマライザ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>xml:lang</td>
  <td>言語</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

naturalノーマライザの使用例を<a href="#prog:naturalSdoc"></a>に示します。

<program src="src/normalizer/natural.sdoc" id="prog:naturalSdoc" title="natural.sdoc" encoding="Shift_JIS"/>

この例では、<code>div</code>要素内に空行で区切られた2つのパラグラフがあります
が、
naturalノーマライザの働きにより2つの<code>p</code>要素に変換されます。

</subsection>

</section>

<section title="naturallabel">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>要素,テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td><code>p</code>要素,テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

naturallabelノーマライザは、naturalノーマライザと同様に、テキストに関する
正規化を行うノーマライザです。

正規化の結果、テキストが2つ以上のパラグラフで構成されていた場合には、
そのまま<code>p</code>要素のリストを出力します。

パラグラフが1つしかなかった場合には、<code>p</code>要素は出力せず、
テキストのみを出力します。

naturallabelノーマライザは、<code>td</code>要素や<code>li</code>要素など、
パラグラフ処理の必要のない短いテキストが多用される要素で有効です。

</subsection>

<subsection title="属性">

<table title="naturallabelノーマライザ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>xml:lang</td>
  <td>言語</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

naturallabelノーマライザの使用例を<a href="#prog:naturallabelSdoc"></a>に
示します。

<program src="src/normalizer/naturallabel.sdoc" id="prog:naturallabelSdoc" title="naturallabel.sdoc" encoding="Shift_JIS"/>

この例では、<code>table</code>要素の中の<code>td</code>要素において、
以下の2つのパターンの文字列が記述されています。

<ul>
  <li>ラベル的な使い方をするテキスト</li>
  <li>文章を記述する目的の長いテキスト</li>
</ul>

naturalノーマライザはこの2つのテキストを自動判定し、
前者の場合は<code>p</code>要素の出力を行わず、
後者の場合は<code>p</code>要素でパラグラフを明示する処理を行います。

</subsection>

</section>

<!--

<section title="space">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

spaceノーマライザは、<code>xml:space</code>属性による
空白の取り扱いを行うためのノーマライザです。

<code>xml:space</code>属性に&quot;preserve&quot;が指定された要素内に
格納されているテキストは、空白に対する正規化処理を行わず、そのまま
処理が実行されます。

この情報はジェネレータでも、できるだけ忠実に反映されるように処理されます。

</subsection>

<subsection title="属性">

<table title="spaceノーマライザ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>xml:space</td>
  <td>空白の取り扱い方法</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

spaceノーマライザの使用例を<a href="#prog:spaceSdoc"></a>に示します。

<program src="src/normalizer/space.sdoc" id="prog:spaceSdoc" title="space.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

-->

<section title="csv">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>CSV形式テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td><code>tbody</code>要素, <code>tr</code>要素, <code>th</code>要素, <code>td</code>要素</td>
</tr>
</tbody>
</table>

<subsection title="機能">

csvノーマライザは、CSV形式の入力からテーブルの構成情報を生成する
ノーマライザです。

csvノーマライザは、指定された要素の種別に合わせた要素を生成します。
指定された要素と生成する要素の対応を
<a href="#tab:elementsByCsvNormalizer"></a>に示します。

<table title="csvノーマライザが生成する要素" id="tab:elementsByCsvNormalizer">
<thead>
指定された要素,生成する要素
</thead>
<tbody>
<tr>
  <td><code>table</code>要素</td>
  <td><code>tbody</code>要素</td>
</tr>
<tr>
  <td><code>thead</code>要素</td>
  <td><code>th</code>要素によって構成される<code>tr</code>要素のリスト</td>
</tr>
<tr>
  <td><code>tfoot</code>要素</td>
  <td><code>th</code>要素によって構成される<code>tr</code>要素のリスト</td>
</tr>
<tr>
  <td><code>tbody</code>要素</td>
  <td><code>td</code>要素によって構成される<code>tr</code>要素のリスト</td>
</tr>
<tr>
  <td><code>tr</code>要素</td>
  <td><code>td</code>要素または<code>th</code>要素のリスト</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

csvノーマライザの使用例を<a href="#prog:csvSdoc"></a>に
示します。

<program src="src/normalizer/csv.sdoc" id="prog:csvSdoc" title="csv.sdoc" encoding="Shift_JIS"/>

この例では、<code>table</code>要素の<code>thead</code>要素および
<code>tbody</code>要素のデータの入力にcsvノーマライザを使用しています。

このような簡単なデータの場合は、<code>tr</code>要素や<code>td</code>要素を
駆使しなくても、csvノーマライザを使用することで
手軽に表を記述することができます。

なお、以下の要素のデフォルトのノーマライザはcsvノーマライザと
なっていますので、そのままcsvノーマライザを前提とした入力ができます。

<ul>
  <li><code>table</code>要素</li>
  <li><code>thead</code>要素</li>
  <li><code>tfoot</code>要素</li>
  <li><code>tbody</code>要素</li>
  <li><code>tr</code>要素</li>
</ul>

</subsection>

</section>

<!--
<section title="csvthead">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

<program src="src/adapter/text.sdoc" id="prog:textSdoc" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="csvtfoot">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

<program src="src/adapter/text.sdoc" id="prog:textSdocAdapter" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="csvtbody">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

<program src="src/adapter/text.sdoc" id="prog:textSdoc" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="csvtr">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

<program src="src/adapter/text.sdoc" id="prog:textSdoc" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="image">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td><code>src</code>属性</td>
</tr>
<tr>
  <th>出力</th>
  <td><code>src</code>属性</td>
</tr>
</tbody>
</table>

<subsection title="機能">

imageノーマライザは、イメージファイル名を自動選択するための
ノーマライザです。

<code>src</code>属性に指定されたイメージファイルの情報から、適切な
イメージファイル名を生成し、<code>src</code>属性に設定します。

イメージファイル名の生成は以下の手順で行われます。

<ol>
  <li>イメージファイル情報がサフィックスありの場合はイメージファイル名とみなす</li>
  <li>サフィックスがない場合には、出力フォーマットごとに定められた優先順位でサフィックスを補完したファイル名のファイルの存在を確認し、存在していればそのファイル名を<code>src</code>属性に設定する</li>
  <li>ファイルが存在していない場合には、優先順位の一番高いサフィックスを付加したファイル名を<code>src</code>属性に設定する</li>
</ol>

出力フォーマットごとのデフォルトの優先順位は
<a href="#tab:priorityInAutoimage"></a>となります。
この優先順位は...オプションで変更することができます。詳しくは...を
参照してください。

<table title="イメージファイルの優先順位" id="tab:priorityInAutoimage">
<thead>
フォーマット,順位,サフィックス,イメージフォーマット
</thead>
<tbody>
<ul>
  <li>HTML4</li>
  <ul>
    <tr>
      <td>1</td>
      <td>gif</td>
      <td>GIF</td>
    </tr>
    <tr>
      <td>2</td>
      <td>jpeg</td>
      <td>JPEG</td>
    </tr>
    <tr>
      <td>3</td>
      <td>jpg</td>
      <td>JPEG</td>
    </tr>
    <tr>
      <td>4</td>
      <td>png</td>
      <td>PNG</td>
    </tr>
  </ul>
  <li>HTML3</li>
  <ul>
    <tr>
      <td>1</td>
      <td>gif</td>
      <td>GIF</td>
    </tr>
    <tr>
      <td>2</td>
      <td>jpeg</td>
      <td>JPEG</td>
    </tr>
    <tr>
      <td>3</td>
      <td>jpg</td>
      <td>JPEG</td>
    </tr>
  </ul>
  <li>LaTeX2e</li>
  <ul>
    <tr>
      <td>1</td>
      <td>eps</td>
      <td>Encapsulated PostScript</td>
    </tr>
    <tr>
      <td>2</td>
      <td>ps</td>
      <td>Encapsulated PostScript</td>
    </tr>
    <tr>
      <td>3</td>
      <td>gif</td>
      <td>GIF</td>
    </tr>
  </ul>
</ul>
</tbody>
</table>

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>イメージファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

imageノーマライザの使用例を<a href="#prog:imageSdocNormalizer"></a>に示します。

<program src="src/normalizer/image.sdoc" id="prog:imageSdocNormalizer" title="image.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

-->

<section title="href">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td><code>href</code>属性</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

hrefノーマライザは、<code>href</code>属性に設定されている情報を、
テキストに反映させるノーマライザです。

テキストへの反映は、テキストが設定されていない時に行われます。

</subsection>

<subsection title="属性">

<table title="hrefノーマライザ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>href</td>
  <td>ハイパーテキストリンク</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

hrefノーマライザの使用例を<a href="#prog:hrefSdoc"></a>に示します。

<program src="src/normalizer/href.sdoc" id="prog:hrefSdoc" title="href.sdoc" encoding="Shift_JIS"/>

hrefノーマライザを指定することで、<code>href</code>属性の内容が
<code>a</code>要素の内容に反映されています。

</subsection>

</section>

<section title="program">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>修飾されたテキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

programノーマライザは、プログラムテキストを修飾するためのノーマライザです。



</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

programノーマライザの使用例を<a href="#prog:programSdocNormalizer"></a>に示します。

<program src="src/normalizer/program.sdoc" id="prog:programSdocNormalizer" title="program.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="console">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>修飾されたテキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

consoleノーマライザは、コンソール出力のテキストを修飾するための
ノーマライザです。

consoleノーマライザでは以下の3つの領域から構成されるコンソール出力を想定して
しています。

<ul>
  <li>プロンプト</li>
  <li>ユーザ入力</li>
  <li>実行結果</li>
</ul>

consoleノーマライザでは、これらの領域を自動的に検出し、適切な表示が行われる
ように出力を修飾します。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>consolePrompt</td>
  <td>プロンプトの文字列</td>
</tr>
<tr>
  <td>consolePromptRegex</td>
  <td>プロンプトの正規表現</td>
</tr>
<tr>
  <td>consolePromptRange</td>
  <td>有効なプロンプトの範囲</td>
</tr>
</tbody>
</table>

<subsubsection title="consolePrompt属性">

<code>consolePrompt</code>属性は、プロンプトの右端の文字を指定します。
デフォルト値は「>」なので、Windowsのコンソールの場合は、
デフォルト値のままで使用できます。

プロンプトの右端の文字に続く空白はプロンプトの一部として処理されます。

</subsubsection>

<subsubsection title="consolePromptRegex属性">

<code>consolePromptRegex</code>属性は、プロンプトを正規表現で指定します。
プロンプトの右側の空白も含めてプロンプト全体がマッチする
正確な指定をする必要があります。

</subsubsection>

<subsubsection title="consolePromptRange属性">

<code>consolePromptRange</code>属性は、<code>consolePrompt</code>属性や
<code>consolePromptRegex</code>属性にマッチするプロンプト候補の中で、
何番目のものを使うのかを指定するものです。
デフォルトは1、つまり最初のものを使用する、となっています。

<code>consolePromptRegex</code>属性には、以下のような指定ができます。

<ul>
  <li>数字 (例 1)</li>
  <li>数字の範囲 (例 1-10)</li>
  <li>数字の指定 (例 1,2,4,5)</li>
</ul>

</subsubsection>

</subsection>

<subsection title="使用例">

consoleノーマライザの使用例を<a href="#prog:consoleSdocNormalizer"></a>に
示します。

<program src="src/normalizer/console.sdoc" id="prog:consoleSdocNormalizer" title="console.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="line">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

lineノーマライザは、テキストに行番号を付加するノーマライザです。

</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

lineノーマライザの使用例を
<a href="#prog:lineSdoc"></a>
に示します。

<program src="src/normalizer/line.sdoc" id="prog:lineSdoc" title="line.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="regex">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>修飾されたテキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

regexノーマライザは、正規表現を使用してテキストの部分抽出とハイライト表示を
行うノーマライザです。

</subsection>

<subsection title="属性">

<table title="regexノーマライザ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>regexExtract</td>
  <td>抽出対象の正規表現</td>
</tr>
<tr>
  <td>regexHilight</td>
  <td>ハイライト対象の正規表現</td>
</tr>
<tr>
  <td>regexUnit</td>
  <td>抽出する対象の単位(行または領域)</td>
</tr>
<tr>
  <td>regexRange</td>
  <td>有効な検索結果の範囲</td>
</tr>
<tr>
  <td>regexClass</td>
  <td>生成する<code>em</code>要素のクラス</td>
</tr>
</tbody>
</table>

<subsubsection title="regexExtract属性">

<code>regexExtract</code>属性は
抽出する範囲を表す正規表現を指定します。

</subsubsection>

<subsubsection title="regexHilight属性">

<code>regexHilight</code>属性は
ハイライト表示する範囲を表す正規表現を指定します。

</subsubsection>

<subsubsection title="regexUnit属性">

<code>regexUnit</code>属性は
抽出する範囲の特定方法を指定します。

<dl>
  <dt>spot</dt>
  <dd>正規表現のパターンにマッチした文字のみを抽出</dd>
  <dt>line</dt>
  <dd>正規表現のパターンにマッチした文字を含む行をすべて抽出</dd>
</dl>

</subsubsection>

<subsubsection title="regexRange属性">

正規表現がテキスト内の複数の領域にマッチする場合、何個目のマッチから何個目の
マッチまでを有効にする、といった指定が行えると便利です。
<code>regexRange</code>属性は、このような目的で、マッチした領域の中から、
有効となる領域を指定するために使用します。

<code>regexRange</code>属性には、以下の形式が指定できます。

<dl>
  <dt>数字</dt>
  <dd>指定された数字番目のマッチが有効</dd>
  <dt>数字-数字</dt>
  <dd>ハイフンで指定された範囲のマッチが有効</dd>
</dl>

</subsubsection>

<subsubsection title="regexClass属性">

<code>regexClass</code>属性は、出力される<code>em</code>要素の
<code>class</code>属性に設定される値を指定します。

</subsubsection>

</subsection>

<subsection title="使用例">

regexノーマライザの使用例を<a href="#prog:regexSdoc"></a>に示します。

<program src="src/normalizer/regex.sdoc" id="prog:regexSdoc" title="regex.sdoc" encoding="Shift_JIS"/>

この例では、<code>regexHilight</code>属性を使用して、ハイライトを行う範囲を
指定しています。
<code>regexHilgith</code>属性に指定されている&quot;System[^;]+;&quot;という
正規表現は、「&quot;System&quot;で始まり、&quot;;&quot;でない文字列が1つ以上続き最後は&quot;;&quot;で終わる文字列」という意味ですが、これは<code>program</code>
要素内の「System.out.println(&quot;hello&quot;);」にマッチし、この部分がハイライト表示されるわけです。

</subsection>

</section>

<section title="javasrc">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>修飾されたテキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

javasrcノーマライザは、Javaのソースコードを修飾するためのノーマライザです。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>javasrcKeyword</td>
  <td>表示する内容を指定するキーワード</td>
</tr>
<tr>
  <td>javasrcCount</td>
  <td>キーワードに対する何番目のマッチを表示するかの指定</td>
</tr>
<tr>
  <td>javasrcHilight</td>
  <td>ハイライトする領域の指定</td>
</tr>
<tr>
  <td>javasrcSyntaxHilight</td>
  <td></td>
</tr>
</tbody>
</table>

<subsubsection title="javasrcKeyword属性">

<code>javasrcKeyword</code>属性は、抽出領域を特定するためのキーワードを
指定します。

</subsubsection>

<subsubsection title="javasrcCount属性">

<code>javasrcCount</code>属性は、キーワードにマッチした何番目の領域を
抽出領域とするかを指定します。

</subsubsection>

<subsubsection title="javasrcHilight属性">

<code>javasrcHilight</code>属性は、ハイライト処理を行う領域を指定するための
正規表現を指定します。

</subsubsection>

<subsubsection title="javasrcSyntaxHilight属性">

<code>javasrcSyntaxHilight</code>属性は、Java文法を意識したハイライト表示を
行うか否かを指定します。

</subsubsection>

</subsection>

<subsection title="使用例">

javasrcノーマライザの使用例を<a href="#prog:javasrcSdoc"></a>に示します。

<program src="src/normalizer/javasrc.sdoc" id="prog:javasrcSdoc" title="javasrc.sdoc" encoding="Shift_JIS"/>

この例では、<code>main</code>メソッドの切り出しを<code>javasrcKeyword</code>属性を用いて行っています。

javasrcノーマライザは
<code>javasrcKeyword</code>属性で指定された正規表現にマッチした文字列を
見つけると、この文字列を含んでいる行および行内の「{」に対応する「}」を含む
行までを切り出します。

この例で用いたように、Javaのメソッドを切り出したい時に、この指定はとても
便利です。

</subsection>

</section>

<!--

<section title="autoTitle">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">



<program src="src/adapter/text.sdoc" id="prog:textSdocNormalizer" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

<section title="autoID">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキストファイル</td>
</tr>
<tr>
  <th>出力</th>
  <td>テキスト</td>
</tr>
</tbody>
</table>

<subsection title="機能">

textアダプタは、テキストファイルを取り込むためのアダプタです。

取り込んだテキストの内容は、指定された要素内にそのままテキストとして
格納されます。

</subsection>

<subsection title="属性">

<table title="textアダプタ属性一覧">
<thead>
属性,意味
</thead>
<tbody>
<tr>
  <td>src</td>
  <td>テキストファイルのURI</td>
</tr>
</tbody>
</table>

</subsection>

<subsection title="使用例">

<program src="src/adapter/text.sdoc" id="prog:textSdoc" title="text.sdoc" encoding="Shift_JIS"/>

</subsection>

</section>

-->

<section title="tex">

<table>
<tbody>
<tr>
  <th>入力</th>
  <td>テキスト</td>
</tr>
<tr>
  <th>出力</th>
  <td>MathML</td>
</tr>
</tbody>
</table>

<subsection title="機能">

texノーマライザは、TeX数式をMathMLに変換するノーマライザです。

</subsection>

<subsection title="属性">

なし

</subsection>

<subsection title="使用例">

texノーマライザの使用例を<a href="#prog:texSdoc"></a>に示します。

<program src="src/normalizer/tex.sdoc" id="prog:texSdoc" title="tex.sdoc" encoding="Shift_JIS"/>

この例では、<span normalizer="tex">y=\frac{a+b}{z}</span>という数式を
TeX数式の形式で記述しています。
SmartDocではMathML数式を記述することができますが、
テキストエディタから数式を入力する場合にはTeX数式を使う方が
はるかに便利です。

</subsection>

</section>

</body>
</doc>
