在LaTeX模式下,C-c C-c被绑定到:
(TeX-command-master &optional OVERRIDE-CONFIRM)通常,这个交互函数运行一个命令,可能是一个LaTeX编译,请求确认。
在tex-buf.el中,它的内容如下:
如果给定前缀参数重写-确认,则确认将取决于它是否为正,而不是“`TeX命令-列表”中的条目。
这对我来说有点神秘,读C-h v TeX-command-list也没什么用。
如何将前缀参数传递给“TeX-命令-主”,以避免所有确认请求?
发布于 2013-02-05 22:08:53
构建与视图
同样,这个解决方案没有修改TeX-command-master的行为,而是重写它。该命令的重写版本名为build-view,它遵循一个非常简单的逻辑。
下面是代码:
(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 build-view并启动已告知的生成视图过程,或者将其与新的键绑定(如“F2”)关联:
(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "<f2>") 'build-view)))注意:正如泰勒所建议的,TeX-save-query变量是本地更改的,因此旧的C-c C-c/ TeX-command-master不受影响,并将继续询问确认。
请编辑此代码,使其更好或更容易阅读!
发布于 2013-02-04 03:30:34
我对重写-确认位有一段时间感到困惑,不知道它应该如何工作。如果您想在您的文件上自动运行Latex,而不需要先保存它,或者确认您想要latex (而不是查看、bibtex等),那么您可以使用这样的函数:
(defun my-run-latex ()
(interactive)
(TeX-save-document (TeX-master-file))
(TeX-command "LaTeX" 'TeX-master-file -1))将其绑定到方便的东西上,当您想要使用默认的处理命令时,您仍然可以使用C-c C-c。如果"Latex“不是要调用的处理器,您可能需要修改TeX-command行。
发布于 2013-02-05 02:14:56
OVERRIDE-CONFIRM的谜团似乎还在继续。同时,一位同事建议,如果我们不能管理TeX-command-master,我们可以简单地重写它。
在我的版本中,基于his,如果缓冲区没有被修改,外部查看器就会启动;如果修改了缓冲区,编译器就会运行。未确认是否保存或运行给定命令的所有内容。
(defun my-run-latex ()
(interactive)
(if (buffer-modified-p)
(progn
(setq TeX-save-query nil)
(TeX-save-document (TeX-master-file))
(TeX-command "LaTeX" 'TeX-master-file -1))
(TeX-view)))当然,我们可以将my-run-latex绑定到任何键绑定。
从用户的角度来看,这是我自己问题的解决方案。我要点击关闭标签吗?嗯,从好奇的人的角度来看,我仍然对理解神秘的TeX-command-master技术感兴趣。
如果有人碰巧知道..。
是的,TeX-save-query重写了保存文件请求,也用了TeX-command-master,即C-c C-c。但你还是会被要求确认命令的行动。
https://stackoverflow.com/questions/14664829
复制相似问题