# SmartDocサンプル

浅海 智晴
http://www.XMLSmartDoc.org
2002年1月28日

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

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

# 文章

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

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

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

# リスト

SmartDoc
のリストは3種類あります。

最初のリストは点。

- 最初のリスト
- 次のリスト
- その次のリスト

次のリストは数字。

1. 最初のリスト
2. 次のリスト
3. その次のリスト

次は定義。

用語甲
  最初の説明
用語乙
  次の説明
用語丙
  その次の説明

## HTML

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

## LaTeX

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

# 表

SmartDoc
の表の表現力はHTMLと同等です。 では`rowspan`、`colspan`を駆使した表組み、`align`によるテキストの配置の指定を行っています。

カラム(align=left,class=key) | カラム(align=center) | カラム(align=right)
--- | --- | ---
データ | データ | データ
データ(align=center) | データ(align=right) | データ(align=left)
データ(rowspan=2) | データ | データ
データ(colspan=2)
データ(rowspan=2,colspan=2,align=center) | データ
データ
データ(colspan=3,align=right)

またに示すように木構造の表を簡単に作成するための機能も持っています。

大分類 | 中分類 | 小分類
--- | --- | ---

- 動物

- 哺乳類

- 犬
- 猫
- 馬

- 爬虫類

- 蛇
- 蛙

- 昆虫

- 蜻蛉
- 蝶
- 蜂
- 蟋蟀

- 植物

- 針葉樹

- 杉

## HTML

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

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

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

## LaTeX

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

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

# 脚注

文章に脚注

脚注はこのようになります。

をつけることができます。

## HTML

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

## LaTeX

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

# 図

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

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

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

最初の例はコンポーネント部分を指定する方 法です。 タグには`figure`と指定していますが、HTMLでは`figure.gif`、LaTeXでは`figure.eps`に読みかえられます。

図の例(src="figure")

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

図の例(src="figure.eps, figure.gif")

## HTML

図は`figure` タグで表示されます。

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

## LaTeX

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

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

# プログラム

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

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

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

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

## 外部からの取り込み

プログラム例

## 内部での定義

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

プログラム例(その2)

public class Sample { public static void main(String[] args) { // <em>"Hello"</em> System.out.println("Hello"); } }

## HTML

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

## LaTeX

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

# コンソール

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

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

コンソールの例

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

## HTML

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

## LaTeX

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

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

ascmacを使うためには`latex2e.box`に`AscmacLaTeX2eBoxhandler`を指定します。

# FYI

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

ちょっとした情報

本文を補足する情報をここにいれる。

## HTML

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

## LaTeX

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

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

# リンク

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

- に取り込んだ図を示します。
- 図の例に取り込んだ図を示します。
- に取り込んだ表を示します。
- サンプルの表に取り込んだ表を示します。
- に取り込んだコンソールを示します。
- コンソール上での実行に取り込んだコンソールを示します。
- に取り込んだプログラムを示します。
- プログラムソースの例に取り込んだプログラムを示します。
- にアクセスしよう。
- あさみくんのほーむぺーじにアクセスしよう。

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

ここではを参照してみます。

リンクのデモ

## HTML

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

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

## LaTeX

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

# 定義

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

ここではSmartDocを定義してみました。

## HTML

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

## LaTeX

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

# インデクス

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

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

- SmartDoc
- マクロ
- タグ

# 参考文献

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

SmartDoc
の開発では特にXML完全解説、日本語LaTeX2eブック、LaTeX2e階梯がとても参考になりました。 この他にも頻繁に参照しました。

## HTML

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

# その他

## 時間

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

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

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

# フォーマット固有処理

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

LaTeXをやっている人にはおなじみの \LaTeX L<small>A</small>T<sub>E</sub>X LaTeX です。 どう表示されましたか？

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

\[ y = \frac{5x^2}{a} \]
<center> y = (5x<sup>2</sup>) / a </center>
y = (5x^2) / a

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

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

これが表示されたら失敗
村田 真

## XML入門

日本経済新聞社
1998
XML/SGMLサロン

## XML完全解説

技術評論社
1998
シーズ

## 改定新版HTMLポケットリファレンス

2
技術評論社
1998
中野 賢

## 日本語LaTeX2eブック

アスキー
1996
藤田 眞作

## LaTeX2e階梯

アジソン・ウェスレイ・パブリッシャーズ・ジャバン
1996