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

<doc xml:lang="ja">
<head>
<title>SmartDocサンプル</title>
<author>浅海 智晴</author>
<hp>http://www.XMLSmartDoc.org</hp>
<date>2002年1月28日</date>

<abstract>
このドキュメントは<index>SmartDoc</index>の機能をデモするためのサンプルです。

本文に加えて目次、参考文献、索引が自動生成されます。
</abstract>

</head>
<body>

<section title="文章">

普通の文章はこのようになります。

<index>SmartDoc</index>ではセンテンスの区切りはHTMLのような<index>タグ</index>ではなく、LaTeX方式の空白行を用います。

センテンスの途中に改行があっても、論理的な改行とはみなされないのはHTML
やLaTeXと同様です。

</section>

<section title="リスト">

<index>SmartDoc</index>のリストは3種類あります。

最初のリストは点。

<ul>
<li>最初のリスト</li>
<li>次のリスト</li>
<li>その次のリスト</li>
</ul>

次のリストは数字。

<ol>
<li>最初のリスト</li>
<li>次のリスト</li>
<li>その次のリスト</li>
</ol>

次は定義。

<dl>
<dt>用語甲</dt><dd>最初の説明</dd>
<dt>用語乙</dt><dd>次の説明</dd>
<dt>用語丙</dt><dd>その次の説明</dd>
</dl>

<subsection title="HTML">

点、数字、定義のリストはそれぞれ<code>ul</code>, <code>ol</code>, <code>dl</code>に変換されます。

</subsection>

<subsection title="LaTeX">

点、数字、定義のリストはそれぞれ<code>itemize</code>, <code>enumerate</code>, <code>description</code>に変換されます。

</subsection>

</section>

<section title="表">

<index>SmartDoc</index>の表の表現力はHTMLと同等です。
<a href="#表のサンプル"/>では<code>rowspan</code>、<code>colspan</code>を駆使した表組み、<code>align</code>によるテキストの配置の指定を行っています。

<table title="表のサンプル">
<colgroup>
<col align="left" class="key" />
</colgroup>
<colgroup span="2">
<col align="center"/>
<col align="right"/>
</colgroup>
<thead>
<tr>
<th>カラム(align=left,class=key)</th>
<th>カラム(align=center)</th>
<th>カラム(align=right)</th>
</tr>
</thead>
<tbody>
<tr>
<td>データ</td>
<td>データ</td>
<td>データ</td>
</tr>
<tr>
<td align="center">データ(align=center)</td>
<td align="right">データ(align=right)</td>
<td align="left">データ(align=left)</td>
</tr>
<tr>
<td rowspan="2">データ(rowspan=2)</td>
<td>データ</td>
<td>データ</td>
</tr>
<tr>
<td colspan="2">データ(colspan=2)</td>
</tr>
<tr>
<td rowspan="2" colspan="2" align="center">データ(rowspan=2,colspan=2,align=center)</td>
<td>データ</td>
</tr>
<tr>
<td>データ</td>
</tr>
<tr>
<td colspan="3" align="right">データ(colspan=3,align=right)</td>
</tr>
</tbody>
</table>

また<a href="#木構造の表"/>に示すように木構造の表を簡単に作成するための機能も持っています。

<table title="木構造の表">
<thead>
<tr>
<th>大分類</th>
<th>中分類</th>
<th>小分類</th>
</tr>
</thead>
<tbody>
<ul>
<li>動物</li>

<ul>
<li>哺乳類</li>
<ul>
<li>犬</li>
<li>猫</li>
<li>馬</li>
</ul>

<li>爬虫類</li>
<ul>
<li>蛇</li>
<li>蛙</li>
</ul>

<li>昆虫</li>
<ul>
<li>蜻蛉</li>
<li>蝶</li>
<li>蜂</li>
<li>蟋蟀</li>
</ul>
</ul>

<li>植物</li>
<ul>
<li>針葉樹</li>
<ul>
<li>杉</li>
</ul>
</ul>

</ul>

</tbody>
</table>

<subsection title="HTML">

<index>SmartDoc</index>の表はほぼそのままHTMLの表に変換されます。

<index>タグ</index>に指定した<code>class</code>と<code>key</code>がそのままHTMLの<index>タグ</index>
に反映されるので、これに対してCSSで表示の属性を指定すればOKです。

ちなみのこのデモでは<code>td</code><index>タグ</index>の<code>class=key</code>はSalmon色の背景色を使うように設定しています。

</subsection>

<subsection title="LaTeX">

LaTeXの表機能はかなり制限がありますが、<index>SmartDoc</index>ではできるだけ忠実に表
組みを試みます。
シンプルな表ならほぼ大丈夫です。

ヘッダの文字と<code>class</code>が<code>key</code>のカラムの文字は強調のためボールド体になります。

</subsection>

</section>

<section title="脚注">

文章に脚注<note>脚注はこのようになります。</note>をつけることができます。

<subsection title="HTML">

脚注はセクションの後ろにまとめられ、文書全体の通し番号が割り振られます。

</subsection>

<subsection title="LaTeX">

脚注はfootnote<index>マクロ</index>によりページの下に表示されます。

</subsection>

</section>

<section title="図">

HTMLではGIF、LaTeXではPostScriptを取り込むことができます。

図にIDをつけるとアンカーによるリンクを設定することができます。
IDはid属性を使いますが、id属性を指定せずにtitle属性を指定するとtitle属性の値がid属性にも流用されます。

図の指定はファイル名のコンポーネント部分を指定する方法と、サフィックス
まで含める方法の２つがあります。

<a href="#figure1">最初の例</a>はコンポーネント部分を指定する方
法です。
<index>タグ</index>には<code>figure</code>と指定していますが、HTMLでは<code>figure.gif</code>、LaTeXでは<code>figure.eps</code>に読みかえられます。

<figure id="figure1" src="figure" title="図の例(src=&quot;figure&quot;)" />

<a href="#figure2">次の例</a>はファイル名をサフィックスを含めて指定する方法です。
ファイル名を個別に指定するので、フォーマットごとに名前が異なっていても大丈夫です。

<figure id="figure2" src="figure.eps, figure.gif" title="図の例(src=&quot;figure.eps, figure.gif&quot;)" />

<subsection title="HTML">

図は<code>figure</code><index>タグ</index>で表示されます。

使用できるイメージの種類はGIFまたはJPEGとなります。

</subsection>

<subsection title="LaTeX">

印刷用コマンドには<code>dvi2ps</code>と<code>dvips</code>を想定しています。

<code>dvi2ps</code>を使う場合には<code>eclepsf</code><index>マクロ</index>が、<code>dvips</code>を使う場合には<code>includegraphics</code><index>マクロ</index>が、図の取り込みに使用されます。

</subsection>

</section>

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

プログラムと本文の内容を常に同期させておくことは結構手間のかかる作業です。

動作確認の済んだプログラムをわざわざ文書内に取り込むのはあまりにもめんどくさいので<index>SmartDoc</index>ではプログラムを外部から取り込む機能を用意しました。

もちろん本文内にプログラムを記述することもできます。

プログラム内のコメントで特別な記述を行うと、取り込んだテキストの該当箇所を強調することができます。

<subsection title="外部からの取り込み">

<program src="Sample.java" title="プログラム例" />

</subsection>

<subsection title="内部での定義">

なお内部で定義する場合にはXMLの標準エンティティをエスケープしなければならないことに注意が必要です。

<program title="プログラム例(その2)">
public class Sample {
    public static void main(String[] args) {
// &lt;em&gt;"Hello"&lt;/em&gt;
	System.out.println("Hello");
    }
}
</program>

</subsection>

<subsection title="HTML">

ユーザの入力部分の強調は<code>em</code><index>タグ</index>によって行われます。

</subsection>

<subsection title="LaTeX">

ユーザの入力部分の強調は下線によって行われます。

</subsection>

</section>

<section title="コンソール">

<index>SmartDoc</index>はコンソール上でのオペレーションを記述するための機能を用意しています。

ユーザの入力部分は強調されます。

<console src="sample.console" title="コンソールの例" />

コンソールもプログラムと同じようにして外部のファイルを取り込むことができます。

<subsection title="HTML">

ユーザの入力部分の強調は<code>kbd</code><index>タグ</index>によって行われます。

</subsection>

<subsection title="LaTeX">

ユーザの入力部分の強調は下線によって行われます。

ASCII pLaTeX用<index>マクロ</index>ascmacを使えば、コンソールの中身がそれらしい枠で囲
まれます。

ascmacを使うためには<code>latex2e.box</code>に<code>AscmacLaTeX2eBoxhandler</code>を指定します。

</subsection>

</section>

<section title="FYI">

雑誌記事のコラムのような囲み記事をFYIとして使うことができます。

<fyi title="ちょっとした情報">
本文を補足する情報をここにいれる。
</fyi>

<subsection title="HTML">

HTMLの場合には、その場に出力されます。
(そのうちハイパーリンク化するかもしれません。)

</subsection>

<subsection title="LaTeX">

LaTeXの場合には、ページの上か下、ページに収まりきらない場合には別ページに出力されます。

<code>ascmac</code>を使えばノートのような形状のボックス内に記述されます。

</subsection>

</section>

<section title="リンク">

リンクではリンクの対象に応じて表示が最適化されます。

<ul>
<li><a href="#figure1"/>に取り込んだ図を示します。</li>
<li><a href="#figure1">図の例</a>に取り込んだ図を示します。</li>
<li><a href="#表のサンプル"/>に取り込んだ表を示します。</li>
<li><a href="#表のサンプル">サンプルの表</a>に取り込んだ表を示します。</li>
<li><a href="#コンソールの例"/>に取り込んだコンソールを示します。</li>
<li><a href="#コンソールの例">コンソール上での実行</a>に取り込んだコンソールを示します。</li>
<li><a href="#プログラム例"/>に取り込んだプログラムを示します。</li>
<li><a href="#プログラム例">プログラムソースの例</a>に取り込んだプログラムを示します。</li>
<li><a href="http://www.netpassport.or.jp/~wtasami"/>にアクセスしよう。</li>
<li><a href="http://www.netpassport.or.jp/~wtasami">あさみくんのほーむぺーじ</a>にアクセスしよう。</li>
</ul>

またリンクにhrefを指定しなかった場合には、自動的にリンクを張ることもで
きます。

ここでは<a/>を参照してみます。

<table title="リンクのデモの表">
<tbody>
<tr>
<td>リンクのデモ</td>
</tr>
</tbody>
</table>

<subsection title="HTML">

基本的には通常のアンカー<index>タグ</index>と同様の動きをします。

文字列が指定されていなかった場合にはリンク対象に合わせて適切な文字列を補います。

</subsection>

<subsection title="LaTeX">

文字列が指定されていなかった場合にはリンク対象に合わせて適切な文字列を補います。

</subsection>

</section>

<section title="定義">

<dfn>SmartDoc</dfn>では用語の定義を指定することができます。

ここでは<index>SmartDoc</index>を定義してみました。

<subsection title="HTML">

定義された文字はボールド体で表示され、索引にも定義としてリンクされます。

</subsection>

<subsection title="LaTeX">

定義された文字はボールド体で表示されます。

</subsection>

</section>

<section title="インデクス">

<index>SmartDoc</index>ではインデクス用のラベルを自動的に本文中に設定する機能を持っています。

このサンプルでは以下の3つがインデクス用の用として指定されています。

<ul>
<li><index>SmartDoc</index></li>
<li><index>マクロ</index></li>
<li><index>タグ</index></li>
</ul>

</section>

<section title="参考文献">

<index>SmartDoc</index>では参考文献の参照を行う機能を提供しています。

<!-- DOM仕様書 -->
<index>SmartDoc</index>の開発では特に<a href="#xmlperfect">XML完全解説</a>、<a
href="#platex2ebook">日本語LaTeX2eブック</a>、<a
href="#kaitei">LaTeX2e階梯</a>がとても参考になりました。
この他に<a href="#prhtml"/>も頻繁に参照しました。

<subsection title="HTML">

HTMLではまだ参考文献機能を実装していません。

</subsection>

</section>

<section title="その他">

<subsection title="時間">

文書の中に<index>SmartDoc</index>によって生成された時間を埋め込むことができます。

HTMLによるページ作成に便利だと思います。

ちなみにこの文書が生成された時間は<time/>です。

</subsection>

</section>

<section title="フォーマット固有処理">

<index>SmartDoc</index>では<index>SmartDoc</index>の文法にはない各フォーマットの固有処理を直接記述することができます。

LaTeXをやっている人にはおなじみの
<or>
<native format="latex">\LaTeX </native>
<native format="html">L&lt;small&gt;A&lt;/small&gt;T&lt;sub&gt;E&lt;/sub&gt;X</native>
<native>LaTeX</native>
</or>
です。
どう表示されましたか？

数式の場合はこうなります。

<or>
<native format="latex">
\[
y = \frac{5x^2}{a}
\]
</native>
<native format="html">
&lt;center&gt;
y = (5x&lt;sup&gt;2&lt;/sup&gt;) / a
&lt;/center&gt;
</native>
<native>
y = (5x^2) / a
</native>
</or>

プログラムやコンソールと同じようにしてフォーマット固有の記述がされたテキストを外部から取り込むこともできます。

特にHTMLは&lt;や&gt;をエスケープしなくてもすむので直接<index>SmartDoc</index>の文章に埋め込むよりかなり楽になります。

<or>
<native format="latex" src="latex.tex"/>
<native format="html" src="html.html"/>
<native>
これが表示されたら失敗
</native>
</or>

</section>


<bibliography>
<book id="xmlprimer">
<author>村田 真</author>
<title>XML入門</title>
<publisher>日本経済新聞社</publisher>
<year>1998</year>
</book>
<book id="xmlperfect">
<author>XML/SGMLサロン</author>
<title>XML完全解説</title>
<publisher>技術評論社</publisher>
<year>1998</year>
</book>
<book id="prhtml">
<author>シーズ</author>
<title>改定新版HTMLポケットリファレンス</title>
<edition>2</edition>
<publisher>技術評論社</publisher>
<year>1998</year>
</book>
<book id="platex2ebook">
<author>中野 賢</author>
<title>日本語LaTeX2eブック</title>
<publisher>アスキー</publisher>
<year>1996</year>
</book>
<book id="kaitei">
<author>藤田 眞作</author>
<title>LaTeX2e階梯</title>
<publisher>アジソン・ウェスレイ・パブリッシャーズ・ジャバン</publisher>
<year>1996</year>
</book>
</bibliography>

</body>

</doc>
