簡體   English   中英

配置emacs for latex - void-variable LaTeX-mode-hook

[英]Configuring emacs for latex - void-variable LaTeX-mode-hook

這個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代替。 我搜索了一個解決方案,但我似乎是唯一一個有這個問題的人。

我正在使用Ubuntu 12.04和最新的Emacs和Auctex。 如果需要,我會發布版本信息,但我認為必須在配置中添加某些內容,或者必須安裝任何軟件包。

如何讓emacs使用該配置?

你使用錯誤的單引號字符嗎? 它似乎是某種落后的引用,而不是簡單的單引號。 嘗試

'LaTeX-mode-hook

代替

’LaTeX-mode-hook

(同樣適用於該角色的所有其他事件)。

正如托馬斯所說,后面引用的不是你想在那里使用的字符,它應該是單引號。 但是,一般來說,如果你得到“符號的值作為變量是無效的”錯誤,它意味着與其他語言中的NPE(空指針異常)相同。 檢查出錯的方法是這樣的:

將點移動到給出問題的變量和Ch v (或Mx describe-variable [ Mx describe-variable名稱不帶引號])。 您可以在鍵入時使用TAB完成變量名稱,以查看您是否偶然輸錯了它。 一旦你看到描述變量的緩沖區 - 你知道你已經修復了錯誤。

現在,如果您通過auctex.el設置了LaTeX模式,那么必須存在latex-mode-hook 但是,您需要確保auctex.el實際加載並需要latex-mode 它這樣做的方式並不是Emacs這樣做的慣用方法,大多數時候你將模式的源文件添加到load-path變量然后(require 'mode-name)或者有條件地加載模式一次Emacs通過autoload打開與之關聯的文件類型(使Emacs的啟動時間縮短),如下所述: Emacs:.emacs中延遲加載模式的最佳實踐?

但是,每當您看到名為[something]-mode-hook的變量時,就意味着這是在[something]模式加載時要調用的函數列表。 如果[something]模式完全存在,那么變量存在的可能性為99.99%(不能為空)。 因此,如果它無效的 - 您需要確保它在所有負載下屬於它的模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM