Emacs/AUCTeX前缀参数
在乳胶模式下Emacs/AUCTeX前缀参数,emacs,latex,elisp,auctex,Emacs,Latex,Elisp,Auctex,在乳胶模式下C-C C-C绑定到: (TeX-command-master &optional OVERRIDE-CONFIRM) 通常,这个交互函数运行一个命令,可能是一个LaTeX编译,请求确认 在tex buf.el中,其内容如下: 如果给出了前缀参数OVERRIDE-CONFIRM,则将进行确认 依赖于它是正数而不是“TeX命令列表”中的条目 这对我来说有点神秘,阅读C-hvtex命令列表没有帮助 如何将前缀参数传递给“TeX command master”以避免所有确认请求?
C-C C-C
绑定到:
(TeX-command-master &optional OVERRIDE-CONFIRM)
通常,这个交互函数运行一个命令,可能是一个LaTeX编译,请求确认
在tex buf.el
中,其内容如下:
如果给出了前缀参数OVERRIDE-CONFIRM,则将进行确认
依赖于它是正数而不是“TeX命令列表”中的条目
这对我来说有点神秘,阅读C-hvtex命令列表
没有帮助
如何将前缀参数传递给“TeX command master”以避免所有确认请求?查看以了解有关前缀参数的信息。通常,您可以将前缀参数C-u后跟数字传递给命令。对于一位数字,您也可以只键入Meta,后跟数字。因此,要将正前缀参数传递给TeX command master
,您可以键入:
M-1C-C-C
但是,这实际上会添加另一个minibuffer确认,即关于用于编译LaTeX源代码的shell命令。如果没有prefix参数,则将使用依赖于命令的默认值
如果要避免有关要使用的命令的问题,可以通过以下方式将未记录的变量TeX command force
绑定到“LaTeX”:
但是,这样做的缺点是,基本上是将C-C-C绑定到“latex”命令,不能使用任何其他命令,例如“bibtex”或“view”
除此之外,LaTeX模式不允许任何C-C-C的定制。最好的选择是使用函数
TeX command query
或将C-C-C绑定到包装函数,以动态设置TeX command force
。如果您还想自动保存缓冲区,后者可能是首选选项。我对OVERRIDE-CONFIRM位困惑了一段时间,不知道它应该如何工作。如果您想在文件上自动运行Latex,而不必先保存它,也不必确认您想要Latex(而不是view、bibtex等),您可以使用如下功能:
(取消我的跑步计划()
(互动)
(TeX保存文档(TeX主文件))
(TeX命令“LaTeX”'TeX主文件-1))
将它绑定到方便的东西上,当您想要使用默认的处理命令时,您仍然可以使用
C-C-C
。如果“Latex”不是您要调用的处理器,您可能需要修改TeX命令行。似乎覆盖-确认
的奥秘还在继续。与此同时,一位同事建议,如果我们无法管理TeX命令主机
,我们可以简单地重写它
在我的版本中,基于his,如果未修改缓冲区,则启动外部查看器;如果修改了缓冲区,编译器将运行。
没有确认保存或运行给定命令的所有操作
(取消我的跑步计划()
(互动)
(如果(缓冲区修改-p)
(项目
(setq TeX保存查询nil)
(TeX保存文档(TeX主文件))
(TeX命令“LaTeX”'TeX主文件-1))
(特克斯视图)
当然,可以将my run latex
绑定到任何键绑定
从用户的角度来看,这是我自己问题的解决方案。
是否单击关闭标记?好吧,从好奇的家伙的角度来看,我仍然有兴趣了解神秘的TeX指挥大师技术细节
如果有人碰巧知道
附言。
是,TeX保存查询
覆盖保存文件请求,也使用TeX命令主控程序
,即C-C-C
。但仍将要求您确认命令操作 构建和查看
同样,此解决方案不是修改TeX命令主机的行为,而是重写它。该命令的重写版本名为buildview
,遵循一个相当简单的逻辑
如果未修改LaTeX文件缓冲区,则运行默认查看器李>
如果缓冲区是脏的,它将运行默认的LaTeX编译器,并在生成后在默认查看器中打开输出李>
代码如下:
(defun build-view ()
(interactive)
(if (buffer-modified-p)
(progn
(let ((TeX-save-query nil))
(TeX-save-document (TeX-master-file)))
(setq build-proc (TeX-command "LaTeX" 'TeX-master-file -1))
(set-process-sentinel build-proc 'build-sentinel))
(TeX-view)))
(defun build-sentinel (process event)
(if (string= event "finished\n")
(TeX-view)
(message "Errors! Check with C-`")))
现在,您可以键入M-x构建视图
并启动构建视图过程,或将其与新的键绑定(如“F2”)关联:
(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "<f2>") 'build-view)))
(添加钩子'LaTeX mode hook'(lambda()(本地设置键(kbd“”)'构建视图)))
注意:根据Tyler的建议,TeX save query
变量在本地更改,因此旧的C-C-C
/TeX命令主控器
不受影响,将继续请求确认
请编辑此代码,使其更易于阅读 如果您只是想在没有确认对话框的情况下编译latex源代码,只需将以下内容添加到.emacs中即可:
(setq TeX-command-force "")
然后,您可以使用C-C-C编译源代码,它不会要求确认。此解决方案的唯一问题是,您不能再更改命令,但对于大多数文档,您将不想更改。我可能会建议您同时将此添加到.emacs中,以获得更大的灵活性,使您可以使用与前一种行为相当的C-C-C行为:
(define-key LaTeX-mode-map "\C-c\C-a"
;;; 'a' for ask, change to anything you want
(lambda (arg) (interactive "P")
(let ((TeX-command-force nil))
(TeX-command-master arg))))
然后你就可以继续写你的文档,做一个C-x C-s,C-C-C,然后C-C-v来查看它。像其他人建议的那样,您也可以对save命令执行相同的操作,并在save时自动编译它,但我的一些文档位于CVS中,因此我避免在其上设置挂钩
感谢Ivan在这方面的帮助-不知道他是否在StackOverflow上我想这个问题的要点是“如何在没有所有按键和确认的情况下从AUCTeX快速编译我的TeX文档?”
我的答案是使用latexmk命令,而不是试图强迫AUCTeX这样做
latexmk-pdf-pvc myfile.tex
latexmk将监视有问题的文件,并在保存文件后立即重建它。如果
(define-key LaTeX-mode-map "\C-c\C-a"
;;; 'a' for ask, change to anything you want
(lambda (arg) (interactive "P")
(let ((TeX-command-force nil))
(TeX-command-master arg))))