为 emacs 配置 Auctex

为 emacs 配置 Auctex

我需要帮助在 emacs 中配置 auctex。我已经下载并安装了 auctex,但无法运行。我正在运行 MAC OS X 10.8.4,并通过终端运行 emacs。如果我使用 Aquamacs emacs(适用于 MAC 的 GUI emacs),那么我至少可以让 View 命令运行(它会打开默认的 PDF 查看器,称为 Preview)。

但是,我希望通过终端使用 emacs。我已将以下内容添加到我的.emacs文件中:

(load "auctex.el" nil t t) ;; loads tex-site in such a way so that it can be undone              
(load "preview-latex.el" nil t t) ;; actual preview-latex                                        
(setq TeX-view-program-list '(("Shell Default" "open %o")))                                      
(setq TeX-view-program-selection '((output-pdf "Shell Default")))                                
(setq TeX-PDF-mode t)                                                                            
(setq TeX-auto-save t)                                                                           
(setq TeX-parse-self t)                                                                          
(setq-default TeX-master nil)                                                                    
(add-hook 'LaTeX-mode-hook 'visual-line-mode)                                                    
(add-hook 'LaTeX-mode-hook 'flyspell-mode)                                                       
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)                                                     
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)                                                      
(setq reftex-plug-into-AUCTeX t)

是否有可能通过 emacs 中的终端运行 Latex?我对这些都比较陌生(但是我确实设法安装了我需要的所有其他东西,例如多个解释器甚至一个 Web 浏览器!)。到目前为止,我尝试过的是打开一个 TeX 文档(加载正常并切换到名为“LaTeX/MP Ref Wrap”的模式(这对 Auctex 来说正确吗?)。我输入:C-c C-c

emacs 给我提示:Command: (default LaTeX)

我的选择是:

Possible completions are:                                                                        
BibTeX       Check        Clean        Clean All    File         Index                           
LaTeX        Other        Print        Queue        Spell        View

如果我选择使用,LaTeX那么我会从 emacs 获得以下信息:

LaTeX errors in `*~/path/to/file output*'. Use C-c ` to display. 

So I type C-c ` to display the errors and this is what I get from emacs:

ERROR: LaTeX Error: File `etoolbox.sty' not found.                                               

--- TeX said ---                                                                                 

Type X to quit or <RETURN> to proceed,                                                           
or enter new name. (Default extension: sty)                                                      

Enter file name:                                                                                 
! Emergency stop.                                                                                
<read *>                                                                                         

l.28 \def                                                                                        
         \NN{\tabularnewline}^^M                                                                 
--- HELP ---                                                                                     
From the .log file...                                                                            

*** (cannot \read from terminal in nonstop modes)
  1. 我该如何修复这个问题?

    LaTeX另外,我尝试输入View. Emacs 会提示并自动完成 :View command: dvi2tty -q -w 132 file_name

我按下回车键来执行该命令,然后 emacs 回复:

View: done.

现在有一个包含内容的新缓冲区:

unning `View' on `combinatorics_bin_trees' with ``dvi2tty -q -w 132 combinatorics_bin_trees''   
/bin/sh: dvi2tty: command not found                                                              

View exited abnormally with code 127 at Fri Jun 14 16:55:35

请注意,如上所述,使用 Aquamacs Emacs(适用于 MAC OS X 的 Emacs),该View命令将打开默认 PDF 查看器,即 Preview。所以我一定是缺少某种包?(考虑到我使用的包管理器确实会计算依赖关系来下载我的所有程序,这很令人失望……)

我该如何解决这个问题?非常感谢大家的帮助!我还欢迎任何有关调整 emacs 的 auctex 设置的建议以及任何有用的常规链接(我发现有关 auctex 的 emacswiki 根本没有用!)

答案1

如果 Emacs 找不到 *.sty,则需要设置路径。这是用于MacTeX.pkg安装的。如果您使用 Macports 或 Homebrew,则路径会有所不同,但类似。修复该问题然后报告,如果仍然有错误,我们将帮助您进一步解决。

(setenv "PATH" (concat (getenv "PATH") ":/usr/texbin"))
(setq exec-path (append exec-path '("/usr/texbin")))

答案2

打开 tex 文件时应加载 AUCTeX。它的主要模式是 LaTeX。我注意到您的编译消息中:“etoolbox.sty”缺失。因此请确保该包存在且可用。您可以尝试通过系统终端编译 tex 文件,看看 AUCTeX 是否有问题。

您还必须将“SHELL”路径导入变量“exec-path”。为此,我在 init.el 中放入了以下函数。

(defun set-exec-path-from-shell-PATH ()
  "Set `exec-path' from `PATH' environment variable"
  (let ((path-from-shell
         (replace-regexp-in-string "[[:space:]\n]*$" ""
                                   (shell-command-to-string "$SHELL -l -c 'echo $PATH'"))))
    (setenv "PATH" path-from-shell)
    (setq exec-path (split-string path-from-shell path-separator))))
(when (equal system-type 'darwin) (set-exec-path-from-shell-PATH))

相关内容