使用命名法和 emacs

使用命名法和 emacs

我正在学习如何做\usepackage{nomencl}。到目前为止一切顺利。

我通过编辑 .emacs 文件将命名法编译选项添加到 Emacs 命令中,并添加:

;; nomenclature for latex
(eval-after-load "tex"
  '(add-to-list 'TeX-command-list 
        '("Nomenclature" "makeindex %s.nlo -s nomencl.ist -o %s.nls" TeX-run-command nil t :help "Create nomenclature file")))

对它来说,这是有效的:当我按下C-c C-c(的快捷方式时,TeX-command-list我可以使用该Nomenclature命令并生成适当的文件。但我不高兴,原因如下:

当我运行 BibTeX,然后C-c C-c再次按下时,Emacs 会根据需要运行 LaTeX,如果参考文献发生了变化,它会Command: (default) LaTeX再次提供,最后,一旦 .log 没有报告参考文献发生了变化,它就会提供Command (default) View。当我运行 Nomeclature 时,Emacs 提供的下一个命令是Command (default) View,这始终不合适。

如何告诉 EmacsTeX-command-list在运行 Nomenclature 之后默认将 LaTeX 作为下一个命令(与 BibTeX 相同的行为)?

答案1

最简单的方法(据我所知)是在类似位置使用函数TeX-run-command

;; nomenclature for latex
(eval-after-load "tex"
  '(add-to-list 'TeX-command-list 
                '("Nomenclature" "makeindex %s.nlo -s nomencl.ist -o %s.nls"
                  (lambda (name command file)
                    (TeX-run-compile name command file)
                    (TeX-process-set-variable file 'TeX-command-next TeX-command-default))
                  nil t :help "Create nomenclature file")))

您应该使用TeX-command-default而不是"LaTeX"因为它会自动在 latex 或 plain tex 等之间进行选择。请注意,我使用了TeX-run-compileTeX-run-command不是因为它出于某种原因我无法让它工作。

您还可以创建一个自定义“sentinel”函数来检查错误等。请参阅TeX-BibTeX-sentinel示例。这将允许您根据是否存在错误等有条件地更改下一个命令。我认为在这种情况下您不必甚至不想这样做,但如果将来需要,您可以这样做。

相关内容