Vine3.2 で Emacs
西広島ドットコムへようこそ!
|トップ|新着情報|検索|サイトマップ|
 パソコン
 ネット

現在のところ、最も内容が充実しています。

 プログラム
 地域
 学習指導
 哲学
 創作
 批評
 トレード
 リンク集

Emacs メモ

PSGML モードを使ってみる

Emacs での XML 文書編集を快適にすることを考えてみた。 文書構造は比較的簡単なので、カットアンドペーストでもよい状態なのだが、 一応、SGML 文書を編集できるマクロ PSGML をインストールした。 やり方は PSGML で XML 文書を書く そのままである。

ちょっと変えたところは、

 (setq sgml-markup-faces '((start-tag  . font-lock-keyword-face)
                           (end-tag    . font-lock-keyword-face)
                           (comment    . font-lock-comment-face)
                           (ignored    . font-lock-name-face)
                           (pi         . font-lock-keyword-face)
                           (sgml       . font-lock-keyword-face)
                           (doctype    . font-lock-constant-face)
                           (entity     . font-lock-string-face)
                           (shortref   . font-lock-function-face)))
 (setq sgml-set-face t)
 (setq sgml-insert-missing-element-comment t)
 (setq sgml-indent-step 1)

のあたり。xhtml1-transitional.dtd を webpage.dtd にリネームし、一部タグを変更し、昨日示したような XML 文書に対応するようにした。 lat1.ent などをカレントディレクトリに置くと、実体参照も補完できるようになる。 タグは色つき表示可能。 私は XHTML 1.0 Transitional の一部を使い、適度な拡張を施したタグ構造を目指したいのだが、 DTD さえできれば、快適に入力できる。 XHTML の DTD はそう読みやすくはないが、要らない部分をカットし、 必要な部分を追加した自��僂�DTD が完成したら、かなり便利そうである (カットによる DTD の完成までは 2 時間程だった)。 便利なのは、タグ構造の折りたたみ。かなり見通しがよくなる。

CATALOG の作り方

カタログファイルは動作しないように見えたが、動作している。それは PUBLIC の場合。

 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" html4.01/loose.dtd

のように書くと、samp.html に、

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

と書いた段階で、CATALOG に基づき、C-c C-e にてタグを挿入してくれる。しかし、SYSTEM の場合、

 SYSTEM "webpage.dtd" webpage.dtd

と書いても PUBLIC と同様では C-c C-e が効かない。絶対パスで、

 <!DOCTYPE webpage SYSTEM "/home/hoge/lib/DTD/webpage.dtd">

のようにしないと面倒を見てくれない。 つまり CATALOG に記述する意味がない……。 SYSTEM は絶対あるいは相対パスで記述すべし、という取り決めか何かがあったっけなぁ。 結局、

 (setq sgml-custom-dtd
  '(
    ("webpage 0.1"
     "<!DOCTYPE webpage SYSTEM \"/home/hoge/lib/DTD/webpage.dtd\">\n")
    ))

のような記述が必要となってくる。

ange-ftp

次世代のホームページは XML/SGML に準拠したものとなっていこう。 その方向が明確になり、自分の準備も進んでから根本的に教室のホームページを改訂しよう、と考えていたが、 どうやらその時期は近づいてきた。

現在、セキュリティ事情から、ssh でつないだ上でファイルをいじっている。 これだと、頻繁な更新は億劫だ。 Wiki で管理というのも、公式ページや商売にはもう少し抵抗がある。 さらに XML で最初からバンバン行くということもできない。 とりあえず、サーバ上で emacs -nw などと起動して、苦労してきたのだが、 これからの展望を探るという一貫で、 試しに ange-ftp.el を使ってみると、ssh ごしでも簡単に編集でき、 Dired も使えてしまうし、C と打つだけで ftp 転送できてしまう。

 C-x d /user@domain.name 10021:/

という具合だし、C-x C-f で普通に /user@domain.name:/ を開けてしまう。 何人かのユーザごとにファイルを開いたり、許可属性を変更したりというようなことも必要なので、完璧ではないが、 かなり手数が省けるはず。

なお、ftp に与えるパラメータが初期値ではパッシブモードになっていないかもしれない。 この場合、~/.emacs に次のように書く。

 (setq ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v" "-p"))

起動エラー

何らかの理由で開くべきファイルの日付が 2099 年などになっていると、ハングして終了する。

 touch -t 1001000099 somefile

などとするかツールを使い、日付を変更すると直る(Meadow はよくそうなった)。

.emacs の中でエラーが起きた場合

その後は読み込まれないので、どこら辺でエラーが起こっているかは、 .emacs の中で setq されてる変数を評価するなどすると結構絞り込める(変数が未定義になったりするので)。

C-x C-b でバッファメニューを開き *Message* を見てもある程度わかったりする。 もう少し正確に調べたい場合は、

  1. emacs -q で起動する(.emacs を読み込まないで起動する)。
  2. M-x set-variable [RET] debug-on-error [RET] t [RET] として debug-on-error という変数を t にする。
  3. M-x load-file [RET] .emacs [RET] とするとエラーが起きたところで、*Backtrace* バッファが開き、エラーを起こした関数を表示してくれる。それを見て .emacs を検\ 索する。

1行あたりの文字数を設定する

C-u 40 C-c fとし、段落内で C-q。

リージョン内の文字数・行数の確認

M-= で可能

原稿用紙換算

1 行 40 カラムとしてテキスト出力し、行を数えて 20 で割る。

Emacs への UCS フォントのインストール

Mule-UCS をインストールし .emacs.my.el のほぼ最後に次の各行を加える。

 ;;; For Unicode
 (add-to-list 'load-path "/usr/share/emacs/site-lisp/Mule-UCS/lisp")
 (require 'un-define)

lisp のあるディレクトリで、以下のように .elc ファイルを作ったほうが速い。

 emacs -q --no-site-file -batch -l mucs-comp.el

これで C-x [Enter] f utf-8 [Enter] などで utf-8 のファイルが作成可能だ。 読むには、C-x [Enter] c utf-8 [Enter] の後でファイルを開く。

補助漢字についての参考資料(Meadow の時代)

BDFfont のインストールをするなら、 root として、次のことを実行する。

 cd /mnt/win/Meadow/intlfonts-1.2/Japanese
 bdftopcf -o jksp16.pcf jksp16.bdf
 gzip jksp16.pcf
 cp jksp16.pcf.gz /usr/X11R6/lib/X11/fonts/japanese

jksp24.bdfについても(場合によってはjksp40.bdfも)同様。

 mkfontdir
 xset fp rehash

補助漢字入力環境

  • cannaはうまくいかない。user辞書は/var/lib/canna/dic/user/ユーザ名/にあるので、何とかする。
  • consult-dic を改良するなどし、番号あるいは読みから入力する関数を作成し、TeX で入稿という方法もある。
     kamome: 1:□, 2:\TMO{...}, 3:\PMO{...}
     Unicode番号: 1:□, 2:\TMO{...}, 3:\PMO{...}

メニューバー

M-x menu-bar-mode で画面上のメニューバーを表示するかどうかをトグルする。

リージョンの強調

X ウィンドウシステムを使っているのであれば, Emacs はカレントリージョンを強調表示できる。

暫定マーク(transient-mark)モードをオンにすると, リージョンの強調表示機能をオンにできる。 このためには M-x transient-mark-mode と打つ。 この関数はトグルするので、不要ならもう一度 M-x transient-mark-mode とする。

画面を横に分割する

M-x split-window-horizontally というコマンドがある。

画面を横にスクロールする

M-x set-variable で truncate-lines を t に
横スクロールが可能になる。
C-x >
左スクロール
C-x <
右スクロール
M-x hscroll-mode
truncated された行をカーソルキイでスクロールさせながら見ることができる(toggle)。
|サイトポリシー|プロフィール|地図|お問合せ|
2007- (C) Nishihiroshima.com RSS