============================================== 1999.10.25 発行 =========
         極私的 Emacs カスタマイズ紹介マガヂン
            Emacs をわたし色に染めて♪
------------------------------------------------------------------------
         第 15 回 便利なマクロ (3) HTML タグの入力と外道な数式
------------------------------------------------------------------------
※あなたのカスタマイズをぜひ教えてください。一般的なものから、他の人は
 絶対にしないような「外道」なものまで、何でも結構です。

※解除の方法は、このメールの末尾をごらんください。
========================================================================

	こんにちは。でるもんた・いいじまです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆今回のお題☆

	私はあるとき、数式を HTML で入力するという暴挙にでました。つまり、
		<i>x</i><sup>2</sup> + <i>y</i><sup>2</sup>
					= <i>z</i><sup>2</sup>
	といった形で延々とタグを書き並べるということをしました。

	でも、さすがにこれをすべて手で入力するのは非人間的なので、
	何とか楽をできないか、と考えてつくったマクロがあります。
	今回はそれのご紹介です。

	なお、当初の目的は数式でしたが、もちろん数式以外の HTML にも
	使えるように機能を拡張してあります。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆暴挙の理由☆

	第 12 回でお話ししたように、うちの大学では、期末試験の過去問を
	WWW に載せるということが行われてきました。ところがじつは、
	「WWW に載せる」とはいっても、実は TeX で組版したものを
	ダウンロードする、という形式が多く、HTML によるものはほとんど
	ありませんでした。

	【解説】TeX というのは、ご存じの方も多いと思いますが、論文を
	    コンピュータ上で組版するためのシステムの一つで、特に
	    数式を含んだ文章に強みを発揮します。そもそも、TeX の
	    原作者 Donald E. Knuth 博士が、数学の本を執筆する際に
	    当時の DTP の性能に不満を持って、組版システムを自作した
	    というのが TeX の始まりなのですから、当然といえば当然
	    です。現在では、日本語対応も十分に進み、数学に限らず、
	    色々な書籍が TeX で組版されているそうです。

	というのは、過去問サイトには、「必修『情報処理』で TeX での自由
	作文の課題が出たのだが、いい例が見あたらないから数学の過去問を
	写してしまおう」というきっかけで発足したものがいくつかあり、
	他のサイトでも、「数式なら TeX に限る」と思っていたふしがあった
	からです。

	【補足】今は大学でも MS Word がまともに使えるようになったので、
	    これからは Word によるものも増えるかもしれません。

	ところが、使ったことがある人は分かると思いますが、TeX は、
	書く人にとっては「慣れないと大変」なシステムですし、読む人に
	とっても、HTML ほど簡単ではありません。

	そこで私は、「HTML で数式を組んでみよう」という事を思い立ちまし
	た。この結果として否応なく、数式用のタグ入力マクロを Emacs で
	作ることになったわけです。

	なお、以上のような背景の詳しいことについては、
		http://user.ecc.u-tokyo.ac.jp/~l94102/alte/
	の中の「das KHK Manifesto」をご覧ください。

	【後日注】このページは引っ越しました。
		http://www.ht.sakura.ne.jp/~delmonta/alte/ へどうぞ。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆問題点の整理☆

	さて、数式で問題になるのは、主として
		○ギリシャ文字など、特殊な記号の入力
		○上付き・下付き文字
		○斜字・太字にする文字、しない文字
		○縦ベクトル・マトリックス・Σ記号などの扱い
	といった点です。この点について、順に見ていきましょう。

◇ギリシャ文字など

	何も考えずに、「あるふぁ→α」のように単語登録してしまいましょう。
	Wnn なら最初から「あるふぁ」(Wnn6 の場合は「@あるふぁ」)で
	「α」が出てきます。

	【蛇足】quail/jis-greek というものを使う方法もありますが、
	    ここでは解説しません。

◇上付き・下付き文字

	これは、原理としては簡単です。数式ではありませんが化学式を
	例にとってみると、
		H<sup>+</sup> + OH<sup>-</sup> ←→ H<sub>2</sub>O
	といった具合で、<sup> や <sub> を使えば問題ありません。

	ただし、毎回入力するのは面倒ですから、何とかしたいと思いたく
	なりますね。

	【蛇足】Internet Explorer 4/5 では、<sup> や <sub> の入れ子が
	    正常に処理されません。たとえば、2<sub>2<sup>2</sup></sub>
	    と書くと、「2 の (2 の 2 乗) 乗」ではなく「2 の 22 乗」の
	    ように表示されてしまいます。どなたか、この解決策をご存じ
	    でしたら教えてください。

◇斜字・太字にする文字、しない文字

	数式では、一般に「数・量を表す文字」は斜字にするならわしです。
	たとえば、「y=ax+b」と書いたとき、y、a、x、b はすべて斜字です。

	いっぽう、数・量を表さない文字は原則として斜字にはしません。
	たとえば、「sin x」と書いたとき、斜字にするのは x だけで、
	「sin」の 3 文字は立体にするのが正統な組版方法です。

	ちょっと複雑な例として、「電子の質量 m<sub>e</sub>」という場合、
	m は斜字ですが、添え字の e は量を表すのではなく electron の頭文字
	(ないしは、電子を表す記号 e<sup>-<sup> に由来するもの)ですから、
	立体にすべき、というのが理屈どおりということになります。

	さて、原理的には <i> (または <em>)タグを使って「sin <i>x</i>」
	のようにすればいいのですが、問題は、「斜体にすべき文字と、立体に
	すべき文字が混在している場合」です。たとえば、上の「y=ax+b」では、
	「=」と「+」は立体でなければなりません。したがって、「<i>y</i>=
	<i>ax</i>+<i>b</i>」という、ややこしい形にする必要があります。

	これもやはり入力が面倒です。

	【余談】実際には、一筋縄ではいかないルールがあります。たとえば、
	    f(x) の f は、上のルールを杓子定規に適用すると立体ですが、
	    普通は斜字にします。また、たとえば古典力学では運動量 p
	    は量ですが、量子力学では演算子なので、その意味では立体に
	    すべきなのですが、これもやはり斜字が普通です。

	    また、それぞれの分野や各学会によってもルールがあります。
	    たとえば、微分を表す dx/dt の d は、高校数学の教科書では
	    斜字ですが、日本物理学会の規定では立体だそうです。自然対数
	    の底 e、円周率 π、虚数単位 i,j も同様に物理学系では立体に
	    することが多いようです。

	【補足】e、i/j、π が立体になるのは、基本的には上記の場合だけです。
	    e を素電荷の意味で使ったり i /j を添え字として使ったりする
	    場合、 a から順番に名前をつけて e や i が出てきた場合、
	    π を確率の意味で使う場合などは、斜体にします。

◇縦ベクトル・マトリックス・Σ記号などの扱い

	これは <table> を使うことになります。もっとも、Σだけは
		Σ<sub>i=0<sub><sup>∞</sup> i<sup>-2</sup>
	のようにごまかしてしまうこともできるのですが、縦ベクトルや
	マトリックスはどうしようもありませんので、<table> が必要になります。

	たとえば、次のようになります。

	<table noborder>
	<tr><td rowspan=3>det <td rowspan=3><font size=7>(</font></td>
		<td>1<td>2<td>3<td rowspan=3><font size=7>)</font></td>
						<td rowspan=3>= 0</td>
	<tr>    <td>4<td>5<td>6</td>
	<tr>    <td>7<td>8<td>9</td>
	</table>

	さらに、この各要素の中にさらに <i> や <sup> などを入れることに
	なるので話は面倒になります。

	【蛇足】TeX でも、行中の数式 $...$ では、上限・下限はΣ記号の
	    右につきます。別行立ての $$...$$ ならば上下につきます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆そこでマクロの登場☆

	そこで私は、タグを簡単に入力するマクロを作りました。
	今回もやはり文法的に複雑になるので、文法解説はせず、
	使い方を中心にしたいと思います。

◇インストール

	最初に、第 10 回の ds-line.el に倣ってインストールをします。

	まず、
		http://user.ecc.u-tokyo.ac.jp/~l94102/emacs/ds-html.el
	をダウンロードしてください。

	【注意】ds-html.el は断りなく随時バージョンアップしています。
	    ご了承ください。

	【後日注】このページは引っ越しました。
		http://www.ht.sakura.ne.jp/~delmonta/emacs/ds-html.el
	へどうぞ。

	続いて、.emacs に

                (autoload 'delmonta-html-mode "ds-html"
                                "Delmonta's HTML helper mode" t)

	と書いてください。load-path の設定をしていない場合は、
	第 10 回の記述を参考に設定してください。

	以上が終わってから、
		M-x delmonta-html-mode RET
	と入力して、モードライン(反転表示行)に DS-HTML と出れば、
	インストールは成功です。この状態を「DS-HTML モード」といいます。
	もういちど M-x delmonta-html-mode RET でこの表示は消えます。

	通常の入力モードと DS-HTML モードは頻繁に切り替えて使いますので、
		(global-set-key "\C-oh" 'delmonta-html-mode)
	のように何かのキーに割り当てておくとよいでしょう。

◇簡単な使い方

	まず、DS-HTML モードでない普通の状態で、y=Ax+b と入力してください。
	続いて、y にカーソルをあわせ、DS-HTML モードに入って i を押して
	ください。y の前に、<i> と入力されたはずです。続いて、カーソル
	キーを押してカーソルを y の後ろに移動し、それからもういちど i を
	押してください。今度は </i> が出てきます。

	このように、短いキー入力で、簡単にタグを書き込むことができます。
	今度はカーソルを A の位置に動かして、「i b → b → i」と入力して
	見てください。「<i><b>A</b>x</i>」となったはずです。このように、
	タグの入れ子も正しく認識します。

	なお、このほかにサポートされている「開始タグ・終了タグ」のペアは、
	現時点では

		B=blockquote、C=center、P、T=table、c=code、e=em、f=font、
		k=kbd、n=nobr、p=pre、s=strong、t=tt、u、^=sup、_=sub、
		+=big、-=small

	です。そのほかに、閉じタグを持たないタグとして、

		<=<!--、>=-->、/=br、w=wbr

	があります。

◇タグの訂正

	たとえば、i を押すつもりで間違って b を押してしまい、<b> と出て
	しまった場合は、基本的にはもういちど b をおして <b></b> という
	形にしてから、バックスペースで消してください。これは、b を押した
	段階でそのことを覚えているので、そのままでは、次に本当に <b> が
	欲しくて b と入力したときに </b> が出てきてしまうことになるから
	です。

	あるいは、q をタイプすると、今まで記憶していた内容をきれいさっぱり
	忘れますので、そちらを使ってもいいでしょう。

◇縦ベクトル・マトリックスなど

	これもいちいち <table> や <tr> などを入力していると面倒なので、
	DS-HTML モードで M を押すと、「行列の行数は?」と聞かれ、それに
	答えると

		<tr align="center">
			<!-- (  ) -->
			<td rowspan=5>* =</td>
			<td rowspan=5><font size=7>(</font></td>
				<td></td>
				<td></td>
			<td rowspan=5><font size=7>)</font></td>
			<td rowspan=5> + </td>
		<tr align="center">
			<td></td>
			<td></td>

	のように出てきます。「行数」として入力した値は rowspan= の右辺に
	表示されます。この空欄を埋めていってください。なお、行列の前後に
	1 行の式を書くことを考え、「* =」「 + 」というダミーを入れてあり
	ますので、これを必要に応じて書き換えるか、不要なら削除するかして
	ください。

	【注意】このコマンドでは、<tr> や <td> は 2×2 サイズのものしか
	    出てきませんので、必要な個数だけコピー&ペーストして
	    使ってください。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆次回予告☆

	次回の予定は…未定です(^^;)

	とりあえずの予定としては、以前に紹介した「vz.el」の研究をしたいと
	思います。vz.el では、物理行(画面上の 1 行)単位でのカーソル移動
	ができるので、その原理などを調べてみたいと思います。

	もし、その件が間に合わなければ、番外編的に「xmodmap によるキー
	カスタマイズの使い方」をお送りしたいと思います。今までやってきた
	「Emacs 上でのカスタマイズ」では、Control キーの機能を変更すると
	いうことはできませんでしたが、この xmodmap を使えば、「Control
	キーと Caps Lock キーを入れ替える」ということが簡単にできてしまい
	ます。

	それではまた♪

========================================================================
極私的 Emacs カスタマイズ紹介マガジン Emacs をわたし色に染めて♪

☆発行人☆

        でるもんた・いいじま <L94102@mail.ecc.u-tokyo.ac.jp>
                        http://user.ecc.u-tokyo.ac.jp/~l94102/emacs/

                ※このメールマガジンで取り上げてほしいテーマ、ご意見など
                 ありましたら、上のメールアドレスまでお気軽にどうぞ。

☆配信☆
        このメールマガジンは、「インターネットの本屋さん・まぐまぐ」を
        利用して配信しています。
                http://www.mag2.com     (マガジン ID=0000013484)

☆バックナンバー・登録解除・メールアドレス変更は☆

        上記のホームページまでどうぞ。
        なお、手動での登録解除は行っておりませんのでご了承下さい。
=========================================================================

Copyright © IIJIMA Hiromitsu aka Delmonta, 2016/03/10 15:09 JST
これは「古文書」です。 古くなった情報も原則未修正で保存していますのでご注意ください。

古文書本館トップ | 電脳外道学会