AUCTeX、preview-latex 和 Ghostscript (Emacs)

AUCTeX、preview-latex 和 Ghostscript (Emacs)

我会简短地说;Emacs 找不到gs已通过以下方式安装的酿造并且运行良好。

错误
PDF2DSC sentinel: Searching for program: No such file or directory, gs

平均能量损失

\documentclass{article}
\begin{document}
This is a test.  $x^4$.
\end{document}

我的PATH初始化之后:"/usr/local/bin:/usr/texbin:/usr/local:/usr/bin:/bin:/usr/sbin:/sbin"

brew在 下放置了一个指向 Ghostscript 的符号链接/usr/local/bin -> /usr/local/Cellar/ghostscript/9.06/bin/gs。(添加此目录没有帮助。)


preview这是某种方面的问题,还是 Emacs 本身的问题?(我应该注意到,直接运行 shell 命令( M-! gs)可以按预期工作,并且psf2dsc手动运行似乎也可以按预期工作(没有错误,mwe.dsc产生)。)


根据@Charles 的要求,echo $PATH生成/usr/local/bin:/usr/texbin:/usr/local:/usr/local/Cellar/ghostscript/9.06/bin:/u‌​sr/bin:/bin:/usr/sbin:/sbinM-x eshell


根据@Charles 的要求,M-x preview-report-bug制作

Emacs  : GNU Emacs 24.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.36)
 of 2012-08-27 on bob.porkrind.org
Package: 11.86

current state:
==============
(setq
 AUCTeX-version "11.86"
 LaTeX-command-style '(("" "%(PDF)%(latex) %S%(PDFout)"))
 image-types '(png gif tiff jpeg xpm xbm pbm)
 preview-image-type 'png
 preview-image-creators '((dvipng
               (open preview-gs-open preview-dvipng-process-setup)
               (place preview-gs-place)
               (close preview-dvipng-close))
              (png (open preview-gs-open) (place preview-gs-place)
               (close preview-gs-close))
              (jpeg (open preview-gs-open)
               (place preview-gs-place) (close preview-gs-close))
              (pnm (open preview-gs-open) (place preview-gs-place)
               (close preview-gs-close))
              (tiff (open preview-gs-open)
               (place preview-gs-place) (close preview-gs-close))
              )
 preview-dvipng-image-type 'png
 preview-dvipng-command "dvipng -picky -noghostscript %d -o \"%m/prev%%03d.png\""
 preview-pdf2dsc-command "pdf2dsc %s.pdf %m/preview.dsc"
 preview-gs-command "gs"
 preview-gs-options '("-q" "-dSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted"
              "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4")
 preview-gs-image-type-alist '((png png "-sDEVICE=png16m")
                   (dvipng png "-sDEVICE=png16m")
                   (jpeg jpeg "-sDEVICE=jpeg")
                   (pnm pbm "-sDEVICE=pnmraw")
                   (tiff tiff "-sDEVICE=tiff12nc"))
 preview-fast-conversion t
 preview-prefer-TeX-bb nil
 preview-dvips-command "dvips -Pwww -i -E %d -o %m/preview.000"
 preview-fast-dvips-command "dvips -Pwww %d -o %m/preview.ps"
 preview-scale-function 'preview-scale-from-face
 preview-LaTeX-command '("%`%l \"\\nonstopmode\\nofiles\\PassOptionsToPackage{"
             ("," . preview-required-option-list)
             "}{preview}\\AtBeginDocument{\\ifx\\ifPreview\\undefined" preview-default-preamble "\\fi}\"%' %t")
 preview-required-option-list '("active" "tightpage" "auctex"
                (preview-preserve-counters "counters"))
 preview-preserve-counters nil
 preview-default-option-list '("displaymath" "floats" "graphics" "textmath"
                   "sections" "footnotes")
 preview-default-preamble '("\\RequirePackage["
                ("," . preview-default-option-list)
                "]{preview}[2004/11/05]")
 preview-LaTeX-command-replacements nil
 preview-dump-replacements '(preview-LaTeX-command-replacements
                 ("\\`\\([^ ]+\\)\\(\\( +-\\([^ \\\\\"]\\|\\\\\\.\\|\"[^\"]*\"\\)*\\)*\\)\\(.*\\)\\'" "\\1 -ini -interaction=nonstopmode \"&\\1\" " preview-format-name ".ini \\5")
                 )
 preview-undump-replacements '(("\\`\\([^ ]+\\) .*? \"\\\\input\" \\(.*\\)\\'"
                "\\1 -interaction=nonstopmode \"&"
                preview-format-name "\" \\2")
                   )
 preview-auto-cache-preamble 'ask
 preview-TeX-style-dir "/Users/sean/.emacs.d/elpa/auctex-11.86/latex"
 )

Output from running `gs -h':

随后出现一条消息:Searching for program: No such file or directory, gs

答案1

问题似乎与在 Emacs 中查找二进制文件的复杂方式有关。以下每个操作都可能给出不同的 bin 目录列表:

  1. H-v exec-path RET(Emacs 初始化时从 PATH 派生的“内部”路径)(这是 PDF2DSC 寻找的地方gs
  2. M-x eshell RET接下来是echo $PATH(设置为 init PATH,可能插入一些额外的 bin 目录;eshell是一个有点像 UNIX shell 的程序,但是用 Emacs Lisp 实现的)
  3. M-x shell RET后跟echo $PATH,运行一个从属 shell 进程,该进程在运行文件时可能会插入额外的 bin.shrc目录

Auctex 路径搜索很棘手,因为它以两种方式之一查找可执行文件:TeX-run-command直接使用(取决于 )exec-path和通过调用下属 shell(取决于PATH该进程中的 的值)。此外,运行 Aquamacs 时,应用程序是使用 OSX 的launchd服务直接启动的,因此 Emacs 启动的 PATH 与您在命令行中看到的 PATH 无关,因为该程序不是从任何 shell 调用的。

将 gv bin 目录添加到exec-path可能会有帮助,或者尝试使用诸如 Texlive 之类的发行版,它有一个包含gspdftex等可执行文件的 bin 目录。


vermiculus 的悬赏通知

检查这些目录并根据需要应用修复后,gs应该可以开始正常工作。如果在应用这些修复后,在图像应该出现的位置出现“禁止进入”标志,请按照以下操作:

  1. 执行以下操作之一:

    • .emacs 评估(setq preview-gs-options '("-q" "-dNOSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4")),根据您的设置进行调整。重要的是更改"-dSAFER""-dNOSAFER"

    • (图形用户界面)

      1. 预览 -> 自定义 -> 扩展此菜单
      2. 预览 -> 自定义 -> 自定义 GS...
      3. 将选项更改"-dSAFER""-dNOSAFER"(我不确定这有什么用,但它确实有效。)
  2. 从文档中删除预览并重新预览。

正如评论中所提到的,如果您处理的是不信任的文档,更改此选项可能会很危险;否则它几乎肯定是安全的。

相关内容