【问题标题】:Using emacs for .tex files with Flymake - error with unbalanced braces将 emacs 用于带有 Flymake 的 .tex 文件 - 带有不平衡大括号的错误
【发布时间】:2013-09-12 23:55:02
【问题描述】:

我正在尝试在 emacs 中使用 flymake 来编辑我的 .tex 文件。

在我输入一个不平衡的大括号{} 之前,我已经完成了所有工作。当flymake启动时,它会返回错误:

Flymake:运行时出现配置错误(pdflatex -file-line-error -draftmode -interaction=nonstopmode /home/matt/test_flymake.tex)。 Flymake 将被关闭。

为了完整起见,这里是我的.emacs 文件的相关部分:

(defun flymake-get-tex-args (file-name)
  (list "pdflatex"
    (list "-file-line-error" "-draftmode" "-interaction=nonstopmode" file-name)))

看着 flymake manual 暗示正在发生的事情:

CFGERR:语法检查过程返回非零退出代码,但没有报告错误/警告。这表明可能存在配置错误(例如,语法检查工具没有合适的错误消息模式)。

所以,挖掘日志 (flymake-log-value = 3) 我发现问题在于运行 pdflatex,因为解析器返回非零退出代码,但不会生成 flymake 识别的内容作为一个错误。具体来说:

parsed 'Runaway argument?', no line-err-info
parsed '{Conclusions \bibliographystyle {plain} \bibliography {ma\ETC.', no line-err-info
parsed '! File ended while scanning use of \@xdblarg.', no line-err-info
parsed '<inserted text> ', no line-err-info
parsed '                \par ', no line-err-info
parsed '<*> /home/matt/test_flymake.tex', no line-err-info
parsed '                               ', no line-err-info
parsed '! Emergency stop.', no line-err-info
parsed '<*> /home/matt/test_flymake.tex', no line-err-info
parsed '                               ', no line-err-info
parsed '!  ==> Fatal error occurred, no output PDF file produced!', no line-err-info

所以,pdflatex 对我的“失控论点”很生气,但不会产生 flymake 认为是错误的东西。深入研究flymake.el 文件显示flymake-err-line-patterns 中有这个模式:

("\\(LaTeX \\(Warning\\|Error\\): .*\\) on input line \\([0-9]+\\)" 20 3 nil 1)

所以...最后一个问题似乎是 flymake 没有将 Runaway argument? 识别为错误消息。

现在,我的问题是:我错过了什么吗?我不能成为第一个遇到这个问题的人,但我找不到任何关于它的东西。我很难相信每个人都只是构建了一个自定义解决方案来修改错误模式,特别是因为我没有做任何不寻常的事情,只是想让它开箱即用。

以防万一,我在 Ubuntu 12.04 上使用 emacs 24.3 并运行 pdflatex (pdftex) 2012。

我错过了什么?感谢大家提供的任何建议。

【问题讨论】:

    标签: emacs latex tex pdflatex flymake


    【解决方案1】:

    好吧,我猜 3 天内有 13 次观看意味着我不太可能得到答案,所以这就是最终对我有用的方法......

    像大多数 emacs 问题一样,这可以通过编辑您的 .emacs 文件来解决。将此块添加到您的文件中:

    (add-to-list
        `flymake-err-line-patterns
        '("Runaway argument?" nil nil nil)) ; fixes unbalanced braces in LaTeX files
    

    这应该可以解决latexpdflatex 的问题。

    请注意,(pdf)latex 在产生此错误时没有列出行号(这是nil nil nil 所代表的),因此如果发生这种情况,flymake 会告诉您错误在第一行.tex 文件。

    M-C-f (forward-sexp) 和 M-C-b (backward-sexp) 将跳过平衡括号,让您搜索不匹配的括号。 source

    为了完整起见,下面是 flymake 检查我的 .tex 文件的方式:

    (defun flymake-get-tex-args (file-name)
      (list "pdflatex"
            (list "-file-line-error" "-draftmode" "-interaction=nonstopmode" file-name)))
    

    如果您的语法检查器不同,或产生不同的错误消息,则将 "Runaway argument?" 文本替换为检查器的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多