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: "^[ ]*\\(