HTMLで数式を記述してみよう |
HTML3.0で採用されたはずの数式表現用のタグが、
実際にはほとんどブラウザが対応してくれなくて使えない。
みなさん、数式の部分だけ画像で埋め込んだり、
PDF文書にしたりいろいろ苦心してる。
Symbolフォントを活用できればそこそこいけるんだけれど、
どうやらNetscape7.0では表示させてくれないらしい。
そこで、なんとかスタイルシートと実体参照特殊文字を使ってやってみることにしました。
たとえばこんなかんじ(RAS)になります。
|
数式用のテーブルとフォント |
数式は一行毎にテーブルにして、配置を調整します。
paddingは上下を0、左右を2ptぐらい。配置は上下左右中央がいいでしょう。
いちいち設定するのは面倒なんで、スタイルシートにしちゃおう。
実体参照文字は、基本的には「&(=&)」のように、「& + # + Code + ;」で指定します。
いくつかの文字は「&(=&)」のようにキーワードで参照することもできます。
実体参照文字の一覧。
キーワードによる実体参照,
コードによる実体参照,
数式作成用のCSSコード。
CSS Code
<style type="text/css">
<!--
table.eq
{ /* Eqation */
text-align:center;
vertical-align:center;
padding:0 2pt;
}
-->
</style>
|
|
---|
これを使って、数学記号毎にセルを区切ったテーブルを組みます。
例えばこんな感じ。
HTML Code
<table class=eq><tr>
<td>ƒ(x)=</td> <!-- 関数 -->
<td align=left><b>⌠</b><sup>t1</sup><br>
<b>⌡</b><sub>t0</sub></td> <!-- 積分 -->
<td><font size=+2>Σ</font></td> <!-- 和 -->
<td>X<sup>2</sup>dt</td> <!-- 指数とか -->
</tr></table>
|
|
---|
|
配列 |
配列の場合は、左右に大きめの括弧を置いて、
その間のセルにテーブルの入れ子を作ります。
大きいカッコは、きれいな特殊文字が無いのでセルのBorderを利用します。
スタイルシートに設定しておきましょう。
丸いカッコはあきらめて、かわりにBorderの太さでカッコのレベルを表現します。
ここでは、二重カッコも含めて5種類定義しています。
CSS Code
/* Brackets */
td.lbr1{border:1pt solid black;border-right:0pt;}
td.rbr1{border:1pt solid black;border-left:0pt;}
td.lbr2{border:2pt solid black;border-right:0pt;}
td.rbr2{border:2pt solid black;border-left:0pt;}
td.lbr3{border:3pt solid black;border-right:0pt;}
td.rbr3{border:3pt solid black;border-left:0pt;}
td.lbrd2{border:2pt double black;border-right:0pt;}
td.rbrd2{border:2pt double black;border-left:0pt;}
td.lbrd3{border:3pt double black;border-right:0pt;}
td.rbrd3{border:3pt double black;border-left:0pt;}
|
|
---|
|
solid 1 |
|
, |
|
solid 2 |
|
, |
|
solid 3 |
|
, |
|
double 2 |
|
, |
|
double 3 |
|
これを使って、たとえば次のように。
ベクトル
配列 |
A-1= |
|
a11 | a12 | a13 |
a21 | a22 | a23 |
a31 | a32 | a33 |
|
|
-1 |
|
→ |
A-1= |
|
a11 | a12 | a13 |
a21 | a22 | a23 |
a31 | a32 | a33 |
|
|
-1 |
|
HTML Code
<table class=eq>
<tr>
<td><b>A</b><sup>-1</sup>=</td>
<td class=lbr1> </td> <!-- 括弧 -->
<td><table> <!-- 配列の中身(テーブルの入れ子) -->
<tr><td>a<sub>11</sub></td><td>a<sub>12</sub></td><td>a<sub>13</sub></td></tr>
<tr><td>a<sub>21</sub></td><td>a<sub>22</sub></td><td>a<sub>23</sub></td></tr>
<tr><td>a<sub>31</sub></td><td>a<sub>32</sub></td><td>a<sub>33</sub></td></tr>
</table>
</td>
<td class=rbr1> </td> <!-- 括弧 -->
<td valign=top><sup>-1</sup></td>
</tr>
</table>
|
|
---|
|
分数 |
分数の表記にもひと工夫必要です。
分数の横線は、セルのTopのBorderだけ表示させます。
これもスタイルシートに設定しておきましょう。
CSS Code
td.div
{ /* Divide */
text-align:center;
border-top:1pt solid black;
padding-top:2pt;
}
|
|
---|
これを使って、たとえば次のように。
HTML Code
<table class=eq><tr>
<td><table class=eq><tr> <!-- 分数の入れ子 -->
<td class=lbr1> </td>
<td><table>
<tr><td>X</td></tr>
<tr><td class=div>Y</td></tr> <!-- 分母 -->
</table>
</td>
<td class=rbr1> </td>
</tr></table>
</td>
<td>= A × </td>
<td class=lbr2> </td>
<td><table class=eq> <!-- 分数の入れ子 -->
<tr><td>A + B</td></tr>
<tr><td class=div> <!-- 分母 -->
<table class=eq><tr> <!-- 分数の入れ子 -->
<td class=lbr1> </td>
<td><table>
<tr><td>C × D</td></tr>
<tr><td class=div>A</td></tr> <!-- 分母 -->
</table></td>
<td class=rbr1> </td>
</tr></table>
</td></tr>
</table></td>
<td class=rbr2> </td>
</tr></table>
|
|
---|
ルートは「√」があるのですが使い物にならないし、
他にいい文字が見当たらないのであきらめます。(1/x)乗して下さい。
|
上付き記号 |
変数の上に「~、^、→」等の記号をつける方法です。
centerタグの改行幅とパディングを調整します。
この応用で、行列で使う「…(=…)」の縦と斜めも作ることができます。
CSS Code
/* Upper character */
td.up{line-height:0.2em;padding:0.6em 0 0.5em;}
td.up2{line-height:0.5em;padding:0 0 0.3em;}
td.dot{line-height:0.3em;}
td.sub{line-height:1em;}
|
|
---|
tdセレクタをいじるので、添え字等は除いて独立したセルにしましょう。
上寄りの記号をつける場合は[up]クラス、中心にある記号をつける場合は[up2]クラス、
行列のドットは[dot]クラスを使用します。
~ a |
, |
^ B |
, |
- c |
, |
→ D |
, |
· E |
, |
· · · |
, |
· · · |
HTML Code
<table class=eq>
<tr>
<td class=up>~<br>a</td>
<td class=up>^<br>B</td>
<td class=up2>-<br>c</td>
<td class=up2>→<br>D</td>
<td class=up2>·<br>E</td>
<td class=dot>· <br> ·
<br> ·</td>
<td class=dot>·<br>·<br>·</td>
</tr>
</table>
|
|
---|
これを少し応用して、Sum記号等の上と下の文字を書いてみる。
HTML Code
<table class=eq>
<tr>
<td class=sub> <!-- Sum記号1 -->
<small>m</small><br>
<font size=+2>Σ</font><br>
<small>i = 1</small></td>
<td class=sub> <!-- Sum記号2 -->
<small>n</small><br>
<font size=+2>Σ</font><br>
<small>j = 1</small></td>
<td>x<sub>ij</sub> <!-- Sumの内容 -->
</tr>
</table>
|
|
---|
|
数式番号 |
数式番号を付けます。数式全体を大きいテーブルで囲み、右端セルに番号を入れます。
番号に括弧をつける場合、番号と括弧の間に空白を入れない方がいいでしょう。
n Σ j = 1 |
xij = yi (i = 1,...,m) |
|
(1) |
HTML Code
<table align=center><tr> <!-- 数式番号用の外枠 -->
<td width=600>
<table class=eq align=center><tr> <!-- 数式テーブル -->
<td class=sub><small>n</small><br>
<font size=+2>Σ</font><br>
<small>j = 1</small></td>
<td>x<sub>ij</sub> = y<sub>i</sub>  (i = 1,...,m)</td>
</tr></table>
</td>
<td>(1)</td> <!-- 数式番号 -->
</tr></table>
|
|
---|
・・・しかし、かなり面倒なのには変わりなし。
数式用スタイルシート付きの数式サンプルを用意しました。ご利用ください。
スタイルシートは別ファイルにした方が便利です。
|