AUCTeX:排版错误发生后全局 pdf 模式停止工作

AUCTeX:排版错误发生后全局 pdf 模式停止工作

更新:

我已经详细测试了这个问题,结果附在问题的末尾。我猜现在问题变成了:当花括号不匹配时,如何避免 AUCTeX 的愚蠢诊断?


原始问题:

我有以下行

(add-hook 'LaTeX-mode-hook 'TeX-global-PDF-mode)

在我的emacs 中~.emacs默认打开全局 pdf 模式。这样,通过为外部编辑器配置 TeXShop,我每次C-c C-c LaTeX在 emacs 中都可以使用它作为预览器。

但是,有时在发生排版错误并C-c (backtick)用于查看错误(详情如下)后,pdf 模式似乎被禁用。修复错误后,生成的是 dvi 而不是 pdf,并且 pdf 永远不会再更新。我需要退出 emacs 并重新启动才能恢复 pdf 模式。

为什么会出现这种情况?有什么解决办法吗?我正在使用 Emacs 24.3.0 和 AUCTeX 11.87(两者都是当前版本)。


更新:

触发问题的详细工作流程:

  1. .tex使用文件和(add-hook 'LaTeX-mode-hook 'TeX-global-PDF-mode)启动文件启动 emacs 。初始模式是LaTeX/P FillLaTeX-mode主要模式、带有TeX-PDF-modeauto-fill-mode次要模式(自动填充模式可能是由于我在启动文件中打开了自动填充;我没有测试 AUCTeX 是否默认以自动填充启动)。

  2. 制造非标准花括号不匹配错误,例如,

    % header
    
    \begin{document}
      \MACRO{
    \end{document}
    

    where\MACRO不是默认宏,但可能是在% headerwith中定义的某些内容newcommand。仍然LaTeX/P Fill

  3. C-c C-c RETLaTeX默认使用排版)报错:

    LaTeX errors in `*DIR/FILE output*'. Use C-c ` to display.
    

    仍然LaTeX/P Fill

  4. C-c (backtick)触发函数TeX-next-error。出现一个奇怪的缓冲区,名为TeX Live 2012。下面的迷你缓冲区提示options, RET:此时,模式变为LaTeX Fill;pdf 模式已切换。

  5. C-g退出该功能。缓冲区返回到原始编辑缓冲区(但请注意,缓冲区TeX Live 2012仍在后台;当您尝试退出 emacs 时,系统将提示您保存它)。仍然LaTeX Fill

  6. 现在修复错误代码并C-c C-c RET再次执行。这一次,生成的是 dvi 而不是 pdf,因为现在TeX-PDF-modenil

偏离:如果我按照步骤 4 中的提示而不是C-g,我最终会得到TeX Live 2012包含

   \documentclass[OPTIONS]{CLASS}

   \begin{document}

   \end{document}

一个新文件!嗯,没什么帮助。我只是漏了一个花括号……而你却让我重写文件……尽管如此,TeX Live 2012此时的缓冲区将是LaTeX/P Fill


最后,一个触发此行为的小工作示例:

    \documentclass{amsart}
    \newcommand{\set}[1]{\left\{#1\right\}}

    \begin{document}
    $\set{$
    \end{document}

答案1

这是我的设置,我从来没有遇到过编译错误的问题。我只需修复错误并再次运行即可。

(require 'tex-site)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTex t)
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

(custom-set-variables
 ;; custom-set-variables was added by Custom.                                      
 ;; If you edit it by hand, you could mess it up, so be careful.                   
 ;; Your init file should contain only one such instance.                          
 ;; If there is more than one, they won't work right.                              
 '(TeX-PDF-mode t)
 '(TeX-newline-function (quote newline-and-indent))
 '(TeX-source-correlate-method (quote synctex))
 '(TeX-source-correlate-mode t)
 '(TeX-source-correlate-start-server t)
 '(TeX-view-program-list (quote (("Okular" "okular -unique %o#src:%n%b"))) t)
 '(TeX-view-program-selection (quote ((output-pdf "Okular"))) t)
)

当我运行代码时,您的 MWE 不会导致相同的问题。这可能是您的 Emacs 设置。

相关内容