yuuji@72: %%
yuuji@72: %% Q and A on yahtml
yuuji@72: %%
yuuji@72: %% C-u C-x $ とすると質問項目だけ表示されます。C-x $ で元に戻ります。
yuuji@72: %%
yuuji@72: (新項目: ・font-lockって使えますか?)
yuuji@72:
yuuji@72:
yuuji@72: ■インストール関連
yuuji@72: ・LaTeX使わないんだけど野鳥も入れなきゃダメですか?
yuuji@72:
yuuji@72: や、別にええっす。
yuuji@72: http://www.yatex.org/ のソースアーカイブリンク
yuuji@72: のなかに、"yahtml" で始まるファイルがあるので次からはそれを持っ
yuuji@72: て来ればよござんす。
yuuji@72:
yuuji@72: ■カスタマイズ関連
yuuji@72: ・font-lockって使えますか?
yuuji@72:
yuuji@72: はい。yahtml-1.69から使えます。あらかじめ font-lock をロードしてお
yuuji@72: きましょう。以前、yahtml が font-lock に対応する前に
yuuji@72:
yuuji@72: (put 'yahtml-mode 'font-lock-defaults 'another-html-mode)
yuuji@72:
yuuji@72: などを ~/.emacs に書いた人は、その設定を削除して下さい。
yuuji@72:
yuuji@72: ・いつもは EUC にしてたまに JIS コードのファイルを作りたいんだけど。
yuuji@72:
yuuji@72: ~/.emacs で
yuuji@72: (setq yahtml-kanji-code 3) ;3はEUC
yuuji@72: しておけば普段のhtmlコードはEUCになります。で局所的に変える方法。
yuuji@72: サーバーはApacheですね? ならそのディレクトリに .htaccess という
yuuji@72: ファイルを用意して、
yuuji@72:
yuuji@72: AddType "text/html; charset=iso-2020-jp" .html
yuuji@72:
yuuji@72: という行を書きましょう。するとApache君はそのディレクトリのhtmlファ
yuuji@72: イルを「iso-2022-jp(いわゆるJIS)だよー」とお客さんにあらかじめ伝
yuuji@72: えるようになります。yahtmlもこれに従い、そのディレクトリ以下のファ
yuuji@72: イルは漢字コードをJISに設定します。
yuuji@72:
yuuji@72: なに、apacheではないとな。なら明示的にhtmlソースのお尻に、
yuuji@72:
yuuji@72:
yuuji@72:
yuuji@72:
yuuji@72:
yuuji@72: と書いておけばそのファイルだけJISになります。
yuuji@72: ただし、Emacs-20 や XEmacs の場合、漢字コードのシンボルの両端の*
yuuji@72: は付きません。
yuuji@72:
yuuji@72: ・を
yuuji@72: 認識して漢字コードを設定して欲しいなー。
yuuji@72:
yuuji@475: HTML5 で書くのであればこの構文を使うのはやめ、文字集合はUTF-8に
yuuji@475: 絞り と記しましょう。
yuuji@475:
yuuji@72: 文書の中にファイルのエンコード法を書いてもそもそもそのMETAなんちゃ
yuuji@72: らを読めない可能性があるので charset をMETAで指定するのは本当に
yuuji@72: 期待した通りには機能しません。たとえば、多国語文書を書く必要が出
yuuji@72: たとします。すると今のところUTF-7でエンコードするのが一番無難で
yuuji@72: しょう。NetscapeでもIEでもUTF-7はちゃんと読むことができます。と
yuuji@72: ういことで、ファイルを開いてブラウザがちゃんとUTF-7と認識するよ
yuuji@72: うに、HTML文書の先頭に次のように書きました。
yuuji@72:
yuuji@72:
yuuji@72:
yuuji@72: このように書いたものが
yuuji@72: http://www.yatex.org/charset/hello-meta.file にあります。
yuuji@72: NetscapeとIEならUTF-7は読めるはずなので、どちらかでアクセスして
yuuji@72: みましょう。読めますか? 読めませんね。IEの場合はUTF-7の部分を自
yuuji@72: 動判別するので、一見読めてるように見えますがtext/html とは解釈さ
yuuji@72: れておらず、結局METAが判別できなかったことが分かります。つまり、
yuuji@72: 違うエンコード法を利用する場合、 の部分さえもサーバに解
yuuji@72: 釈不能な状態になり得るので、文書の中にcharset指定を埋め込むのは
yuuji@72: 賢い方法ではありません。
yuuji@72:
yuuji@72: かわりに、上記で説明した .htaccess を利用しましょう。*.utf7 とい
yuuji@72: う拡張子を持つファイルは、UTF-7 でエンコードしたHTML文書である、
yuuji@72: という定義は、以下のように書けます。
yuuji@72:
yuuji@72: AddType "text/html; charset=utf-7" .utf7
yuuji@72:
yuuji@72: .htaccess ファイルにこのように定義しておけば、無駄ななど綴らなくてもしっかりとサーバがエンコーディングを理
yuuji@72: 解できます。このようにして書かれた UTF-7 のHTML文書が
yuuji@72: http://www.yatex.org/charset/hello.utf7
yuuji@72: にありますので、同じくNetscapeかIEで読んでみましょう。
yuuji@72:
yuuji@72: AddTypeは~/public_html などに置けばそれ以下の *.utf7 という拡張
yuuji@72: 子全てに適用できます。一個だけAddTypeを書くだけでいいのです。
yuuji@72:
yuuji@72: HTML屋では、気休め程度にしかならないMETAによるcharset指定を推奨
yuuji@72: しない事を選びました。かわりに、もっと確実で簡単な .htaccess に
yuuji@72: よるエンコーディング指定を推奨するために、そちらをサポートします。
yuuji@72:
yuuji@72: 関係ありませんが今(2000年現在)では x-sjisじゃなくて、Shift_JIS
yuuji@72: と綴ることになってます:-p
yuuji@72:
yuuji@72: ・の直後に空白入るとhtmllintに怒られるから空白なしにしたいんだけど…
yuuji@72:
yuuji@72: それ、htmllintがやりすぎなんです。タグ直後の空白に対して文句いう
yuuji@72: のは
yuuji@72: http://www.cre.canon.co.uk/%7Eneilb/weblint/www5-paper.html
yuuji@72: によると、空白があることで変なレイアウトになってしまうへぼブラウ
yuuji@72: ザへの配慮によるものなのでHTML的にはまるで問題ないんです。とかく
yuuji@72: htmllintを使うとhtmllintに怒られないこと自体が目的となりがちです
yuuji@72: が、わたしはそれは本末転倒であると思います。
yuuji@72:
yuuji@77: ・の途中で auto-fill されちゃうと悲しい
yuuji@77:
yuuji@77: 使っているのがMule2(Emacs-19)以降なら auto-fill-inhibit-regexp
yuuji@77: という変数でコントロールできます。 yahtml-mode-hook を使って以下
yuuji@77: のように設定しましょう。
yuuji@77:
yuuji@77: (add-hook 'yahtml-mode-hook
yuuji@77: '(lambda ()
yuuji@77: (setq auto-fill-inhibit-regexp
yuuji@77: "^[ ]*\\(