![使用命名法和 emacs](https://linux22.com/image/243222/%E4%BD%BF%E7%94%A8%E5%91%BD%E5%90%8D%E6%B3%95%E5%92%8C%20emacs.png)
我正在学习如何做\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
,这始终不合适。
如何告诉 Emacs
TeX-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-compile
而TeX-run-command
不是因为它出于某种原因我无法让它工作。
您还可以创建一个自定义“sentinel”函数来检查错误等。请参阅TeX-BibTeX-sentinel
示例。这将允许您根据是否存在错误等有条件地更改下一个命令。我认为在这种情况下您不必甚至不想这样做,但如果将来需要,您可以这样做。