xyzzyにKaTeXおよびOutline-treeのインストール,その設定について

以下の内容は全て,以下のサイトを比較的忠実に起こしたものでもう一度インストールする際にはこれをきちんとトレースすれば,少なくとも僕の環境下では,うまくいくはず.

Xyzzy Wiki
TeX Wiki xyzzy
siteinit.l & .xyzzy

問題があっても責任は取れませんのでよろしくお願いします.また,まとめただけなのでほとんどがコピペに近い状態です.まずい場合は消去します.コメントは部分的には残してありますが長くなりそうな部分は消去してあります.

xyzzyのインストール

ここでいう「ダンプファイル」とはxyzzy/xyzzy.wxpのこと(XPなら).

Netinstalerのインストール(圧縮ファイル解凍用dllダウンロード)
xyzzy/site-lisp/siteinit.lに以下の内容を追加
(require "ni/setup")
(ni-autoload)
(setq ni::*http-proxy-host* "proxy.com") ; 各自のものを設定
(setq ni::*http-proxy-port* 8080) ; 各自のものを設定
ダンプファイルを削除し,M-x netinstalerでNetinstalerを起動する.'a'を押して以下のサイトからswitch-barをインストールする.インストールは'i'で行う.

http://www1.odn.ne.jp/ymtz/archive/packages.l

次の内容を打ち込み一度終了して,ダンプファイルを作成した後起動する.
;; siteinit.lバイトコンパイル & ダンプファイル消去
;; command : C-c b
(defun compile-and-delete-dump-file ()
  (interactive)
  (and (find-buffer "siteinit.l")
       (eval-buffer "siteinit.l"))
  (byte-compile-file
   (concat (si:system-root) "site-lisp/siteinit.l"))
  (let ((dumpfile
	 (concat (si:system-root) "xyzzy."
		 (case (os-platform)
		   (whistler "wxp")
		   (windows-2000 "w2k")
		   (windows-nt "wnt")
		   (windows-me "wme")
		   (windows-98 "w98")
		   (windows-95 "w95")
		   (win32s "32s")
		   (t "nt")))))
    (and (file-exist-p dumpfile)
	 (delete-file dumpfile))))
(global-set-key '(#\C-c #\b) 'compile-and-delete-dump-file)
以下の内容をsiteinit.lに書き込み,C-c bでバイトコンパイルしながら機能拡張を行っていく.
;; IME変更をC-oで行う
(global-set-key #\C-o 'toggle-ime)

;; インクリメンタルサーチ
(requre "isearch")

;; 一発でインデント
;; command : C-F8
(defun indent-current-buffer ()
  (interactive)
  (indent-region (point-min) (point-max))
  (message "indent buffer"))
(global-set-key #\C-F8 'indent-current-buffer)

;; 文字化カウント
(defun count-char-from-point ()
  (interactive) (save-excursion
		  (let ((p1 (point)) (p2 (point-max)))
		    (setq parcnt
			  (- (progn (goto-char p2) (current-line-number))
			     (progn (goto-char p1) (current-line-number))))
		    (message "~d paragraphs, ~d characters."
			     parcnt (- p2 p1 parcnt)))))
(global-set-key '(#\C-c #\c) 'count-char-from-point)

;; lisp色付け(HIEさん)
(in-package "editor")
(defvar *lisp-keyword-hash-table* nil)
(defun use-lisp-keyword ()
  "キーワード色付け"
  (if (null *lisp-keyword-hash-table*)
      (setq *lisp-keyword-hash-table*
	    (load-keyword-file "lisp")))
  (when *lisp-keyword-hash-table*
    (make-local-variable 'keyword-hash-table)
    (setq keyword-hash-table *lisp-keyword-hash-table*)))
(add-hook '*lisp-mode-hook*
	  #'(lambda ()
	      (use-lisp-keyword)
	      (define-key *lisp-mode-map* #\C-. 'lisp-complete-symbol)))
(add-hook '*lisp-interaction-mode-hook*
	  #'(lambda ()
	      (use-lisp-keyword)
	      (define-key *lisp-interaction-mode-map* #\C-. 'lisp-complete-symbol)))
(in-package "user")

;; IMEのステータスを表示
(setq-default mode-line-format "--%*- %b (%M) [%k:%l] %P %f [%i]")
outline-treeの導入.

まずNetinstalerを用いて以下のサイトからtreeviewdllをインストールする.
http://xyzzy.s53.xrea.com/ni/ni.l
続いて,以下のサイトからwin-window, color, buf2html, treeview, outlinetreeをインストールする.
http://ohkubo.s53.xrea.com/xyzzy/packages.l
以下の内容をsiteinit.lに書き込む

;; outline-tree 2
(require "outline-tree/outline-tree")

その後,一旦C-c bでバイトコンパイル&ダンプファイル削除を行う.
outline-treeはすでに起動できるので起動しておく.

[表示→ツールバー→アウトラインツリー]

以下の内容をsiteinit.lに追加する.

;;; extended-key-translate-table 設定
(set-extended-key-translate-table exkey-C-tab #\F23) ; focus
(set-extended-key-translate-table exkey-C-return #\F20) ; reload

;; アウトラインツリーにフォーカスを移動させる操作を Ctrl + Tab,
;;アウトラインツリーの作成・更新を Ctrl + Enter というショートカットキーボードでできるような設定方法を以下に示します。

(require "treeview/setup")
(global-set-key #\F23 'treeview::treeview-focus-treeview)
;; TreeView (outline-tree) -> Editor
(require "outline-tree/outline-tree")
(define-key outline-tree2::*outline-tree-map*
	    #\F23 'treeview::treeview-focus-editor)

;;; outline 更新
(global-set-key #\F20 'outline-tree2::outline-tree-create-outline-and-select-node)
(define-key outline-tree2::*outline-tree-map*
	    #\F20  'outline-tree2::outline-tree-create-outline-and-select-node)


;;; outline-tree LaTeX
;;; 拡張子 “.tex” のファイルを開くと,自動的に TeX用のアウトラインが作られるような設定を示します。
(in-package "outline-tree2")
(defun my-outline-tree-get-create-outline-function (buffer)
  (let ((buffer-name (buffer-name buffer))
	(buffer-mode (save-excursion (set-buffer buffer) buffer-mode))
	(mode-name (save-excursion (set-buffer buffer) mode-name)))
    (cond
     ((and (symbolp 'outline-tree2::outline-tree-create-outline-LaTeX)
	   (fboundp 'outline-tree2::outline-tree-create-outline-LaTeX)
	   (string-matchp "\\.tex$" buffer-name))
      'outline-tree2::outline-tree-create-outline-LaTeX)
     (t nil))))
(setq *outline-tree-get-default-create-outline-function-advice-func*
      'my-outline-tree-get-create-outline-function)
KaTeXのインストールおよび設定.ここでdvioutなどの位置は確認しておくこと.

まず,KaTeXとEmacsLisp移植キットを以下のサイトからダウンロードする(Netinstallを使用して).
http://osuneko.at.infoseek.co.jp/xyzzy/packages.l
次に以下の内容をsiteinit.lに追加する.(お勧めの設定とあわせて)

;;; ロードパスに KaTeX のあるディレクトリを追加
(push (merge-pathnames "site-lisp/katex" (si:system-root)) *load-path*)
;;; elispパッケージを有効にする
(require "elisp")
;;; 拡張子と関数の関連付け
(push '("\\.\\(tex\\|aux\\|toc\\|lof\\|lot\\|idx\\|ind\\|glo\\|gls\\|bbl\\|sty\\|cls\\|clo\\|dtx\\|fdd?\\|ltx\\|dfu\\|4ht\\)$" . elisp::katex-mode) *auto-mode-alist*)
;;; オートロード
(autoload 'elisp::katex-mode "katex" t)
;; タイプセットを pTeX で
(setq elisp::tex-command "platex")
;; dviout に PATH を通しておらず,C:\dviout\dviout をプレビューに使いたい場合
(setq elisp::dvi2-command "c:\\dviout\\dviout")
;; M-RET を有効に
(set-extended-key-translate-table exkey-M-return #\M-RET)
;; ツールバー表示
(setq elisp::*KaTeX-use-toolbar* t)
;; ショートカット
(defun user::katex-mode ()
  (interactive)
  (elisp::katex-mode))
;; jsarticle をデフォルトに
;(setq elisp::KaTeX-default-documentclass "jsarticle")
;; 自動改行なし
(add-hook 'elisp::katex-mode-hook
	  #'(lambda ()
	      (auto-fill-mode nil)))

(in-package "elisp")
(require "katex")

(defun KaTeX-typeset-menu (arg &optional char)
  "Typeset, preview, visit error and miscellaneous convenient menu.
Optional second argument CHAR is for non-interactive call from menu."
  (interactive "P")
  (message
   (concat "J)latex R)egion B)ibtex mk(I)ndex "
	   (if (fboundp 'start-process) "K)ill-latex ")
	   "P)review "
	   (and (boundp 'window-system) window-system "S)earch ")
	   "V)iewerr L)pr D)vips dvipdF)m"
	   " O)ut2uni"
	   ))
  (let ((pre-ime (and (get-ime-mode) (toggle-ime)))
	(sw (selected-window)) (c (or char (read-char))))
    (require "katexprc") ;for Nemacs's bug
    (select-window sw)
    (cond
     ((= c #\j) (KaTeX-typeset-buffer))
     ((= c #\r) (KaTeX-typeset-region))
     ((= c #\b) (KaTeX-call-command-on-file
		 bibtex-command "*KaTeX-bibtex*"))
     ((= c #\i) (KaTeX-call-command-on-file
		 makeindex-command "*KaTeX-makeindex*"))
     ((= c #\k) (KaTeX-kill-typeset-process KaTeX-typeset-process))

     ((= c #\p) (call-interactively 'KaTeX-preview))
     ;((= c #\q) (KaTeX-system "lpq" "*Printer queue*"))
     ((= c #\v) (KaTeX-view-error))
     ((= c #\l) (KaTeX-lpr arg))
     ((= c #\m) (KaTeX-switch-mode-menu arg))
     ((= c #\b) (KaTeX-insert-string "\\")) ;???
     ((= c #\o) (KaTeX-out2uni))
     )
    (and pre-ime (not (get-ime-mode)) (toggle-ime))))
(KaTeX-define-key #\t 'KaTeX-typeset-menu)

(defvar dvips-command "dvipsk -Pdl")
(defun KaTeX-dvi2ps ()
  (interactive)
  (KaTeX-save-buffers)
  (KaTeX-call-command-on-file dvips-command KaTeX-typeset-buffer))

(defvar dvipdfm-command "dvipdfmx ")
(defun KaTeX-dvipdfm ()
  (interactive)
  (KaTeX-save-buffers)
  (KaTeX-call-command-on-file dvipdfm-command KaTeX-typeset-buffer))
(defvar out2uni-command "out2uni ")
(defun KaTeX-out2uni ()
  (interactive)
  (KaTeX-save-buffers)
  (KaTeX-call-command-on-file out2uni-command KaTeX-typeset-buffer))

C-c bでバイトコンパイル & ダンプファイル削除をしておきます.

対応括弧を見つけてみる.

先ほどと同じ以下のページからparentagをインストールする.
http://osuneko.at.infoseek.co.jp/xyzzy/packages.l
以下の内容をsiteinit.lに追加.

;;; parentag
(require "paren")
(turn-on-paren) ;常に paren を使いたいとき

バイトコンパイルする.

KaTeXのバイトコンパイル
M-x load-library[RET] katexins[RET]
M-x elisp::katex-byte-compile[RET]
デフォルトのディレクトリの設定
;; デフォルトのフォルダ
(set-default-directory "C:/Documents and Settings/ ... ")
好みの設定が合った場合はsiteinit.lに追加し,C-c bでバイトコンパイルすること.
うまく起動しない・設定が反映されていないときはすぐにダンプファイルを捨てて再起動すること.

いつからか分からないがKaTeXが起動しなくなっていた。。。katexmenが見つからないとか。

とりあえず、siteinit.lの中身を全て.xyzzyに移すとうまくいっていたので、とりあえずそれで解決。