5

この pdf ドキュメントに続いて、~/.emacsファイルに以下を追加しました。

(load "auctex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq TeX-PDF-mode t) ;; .pdf statt .dvi per default:
;;Zeilenumbruch
;;(add-hook ’LaTeX-mode-hook ’turn-on-auto-fill)
;;Syntax Higlight
(add-hook ’LaTeX-mode-hook ’turn-on-font-lock)
;; Mathe Modus
(add-hook ’LaTeX-mode-hook ’LaTeX-math-mode)
;; Reftex einflechten und laden
(setq reftex-plug-into-AUCTeX t)
(add-hook ’LaTeX-mode-hook ’turn-on-reftex)
;; Satzende ". " statt ". ". " fuer M-k: loeschen bis Satzende usw.
;;(setq sentence-end "[.?!][]\"’)}]*\\($\\| \\| \\)[
;;]*") ;; Da ist ein "Newline in der Zeile!"
;;(setq sentence-end-double-space nil)
;;direkte Rechtschreib Korrektur:
;;(add-hook ’LaTeX-mode-hook ’flyspell-mode)
;; Nur benutzen falls Auctex > 11.81 mit preview-latex:
(load "preview-latex.el" nil t t)
;; aspell ist besser als ispell.
;; Zeile kommentieren, falls nicht installiert:
(setq-default ispell-program-name "aspell")
;; Deutsche Rechtschreibung falls \usepackage{ngerman}
;; oder german benutzt wird
(add-hook ’TeX-language-de-hook
(function (lambda () (ispell-change-dictionary "german8"))))

残念ながら、emacs は現在起動せず、代わりにエラーが発生します

Warning (initialization): An error occurred while loading `/home/../.emacs':

Symbol's value as variable is void: ’LaTeX-mode-hook

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

それを開始する--debug-initと、次の情報が得られます

Debugger entered--Lisp error: (void-variable ’LaTeX-mode-hook)
  (add-hook ’LaTeX-mode-hook ’turn-on-font-lock)
  eval-buffer(#<buffer  *load*> nil "/home/../.emacs" nil t)  ; Reading at buffer position 812
  load-with-code-conversion("/home/../.emacs" "/home/../.emacs" t t)
  load("~/.emacs" t t)
...

latex-mode-hook代わりに使ってみました。解決策を探しましたが、まさにこの問題を抱えているのは私だけのようです。

最新の Emacs と Auctex で Ubuntu 12.04 を使用しています。必要に応じてバージョン情報を投稿しますが、構成に何かを追加するか、代わりにパッケージをインストールする必要があると思います。

その構成でemacsを動作させるにはどうすればよいですか?

4

2 に答える 2

9

間違った一重引用符を使用していませんか? 単純な一重引用符ではなく、ある種の逆引用符のようです。試す

'LaTeX-mode-hook

それ以外の

’LaTeX-mode-hook

(そして、その文字の他のすべての出現についても同様です)。

于 2012-06-07T05:01:31.380 に答える
2

トーマスも言ったように、後ろの引用符はそこで使用したい文字ではなく、一重引用符である必要があります。ただし、一般に、「変数としてのシンボルの値は無効です」というエラーが発生した場合は、他の言語のNPE(nullポインター例外)と同じ意味です。何が悪かったのかを確認する方法は次のようになります。

問題を与える変数にポイントを移動しますC-h v(またはM-x describe-variable[引用符なしの変数の名前])。TAB入力時に変数名を完成させて、誤って入力しなかったかどうかを確認できます。変数を説明するバッファーが表示されたら、エラーを修正したことがわかります。

ここで、auctex.elを介してLaTeXモードを設定している場合は、latex-mode-hook存在している必要があります。ただし、auctex.elが実際にロードされ、が必要であることを確認する必要がありますlatex-mode。その方法は、Emacsがそれを行うための慣習的な方法ではありません。ほとんどの場合、モードのソースファイルをload-path変数に追加し、 (require 'mode-name)Emacsがそれに関連付けられたファイルのタイプを開いたら条件付きでモードをロードします。 (Emacsの起動時間を短くします)autoloadここで説明されているように:Emacs:.emacsの遅延読み込みモードのベストプラクティス?

ただし、呼び出された変数が表示されている場合は、これがモードのロード[something]-mode-hook時に呼び出したい関数のリストであることを意味します。モードが存在する[something]場合、変数も存在する可能性が99.99%あります(無効にすることはできません)。[something]したがって、それ無効である場合は、すべての負荷でそれが属するモードを確認する必要があります。

于 2012-06-07T07:56:40.247 に答える