Emacs的/ AUCTeX前缀参数(Emacs/AUCTeX prefix arguments)

2019-07-19 04:01发布

乳胶模式Cc Cc势必:

(TeX-command-master &optional OVERRIDE-CONFIRM)

通常这种交互功能运行的命令,也许是一个LaTeX编译, 请求确认

tex-buf.el记载:

如果前缀参数OVERRIDE-CONFIRM给出,确认将取决于它是积极的,而不是在`TeX的命令清单”的条目。

这是一个有点神秘,我和读Ch v TeX-command-list并没有帮助。

我怎样才能通过前缀参数“TEX-命令大师”,使我避免所有的确认请求?

Answer 1:

看看Emacs的文档 ,以了解前缀参数。 在一般情况下,你可以通过一个命令的前缀参数后跟一个数字。 对于一个位数,也可以只键入后跟数字。 因此,要通过积极的前缀参数TeX-command-master ,您可以键入:

M-1 CC CC

然而,这实际上会增加一个小缓冲区的确认,也就是将要使用的shell命令编译LaTeX的来源。 如果没有前缀的说法,一个相关的命令,默认是用于这一点。

如果你想避免对使用该命令的问题,你可以绑定无证可变TeX-command-force以“乳胶”通过:

(setq TeX-command-force "LaTeX")

然而,这将有你CC CC基本上结合了“乳胶”命令的缺点是,你不能使用任何其他命令,如“中文提供”或“查看”。

除此之外,乳胶模式不允许CC CC的任何定制。 你最好的选择是要么提醒功能TeX-command-queryCC CC绑定到一个包装函数来设置TeX-command-force动态。 后者很可能是更好的选择,如果你也想自动保存的缓冲区。



Answer 2:

看来,神秘OVERRIDE-CONFIRM继续。 与此同时研究员建议,如果我们是管不了TeX-command-master ,我们可以简单地把它改写。

在我的版本,根据他,如果缓存不会被修改,外部观察者启动; 如果缓冲器被修改编译器运行。 一切都没有确认保存或运行指定的命令。

(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技术性问题。

如果有人碰巧知道...

PS是的, TeX-save-query重写保存文件的要求,也与TeX-command-master ,那就是Cc Cc 。 但是,你仍然会被要求确认命令操作。



Answer 3:

构建和查看

再次,这种解决方案,而不是修改的行为TeX-command-master ,重写它。 该命令的改写版本,命名为build-view ,遵循相当简单的逻辑。

  1. 如果LaTeX的文件缓冲区没有修饰,它运行在默认浏览器;
  2. 如果缓冲区是脏的,它运行在默认的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-`")))

现在,您可以键入Mx build-view ,并开始构建告诉视图进程或将其与新的按键绑定,如“F2”关联:

(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "<f2>") 'build-view)))

注:由于泰勒的建议, TeX-save-query变量发生局部变化,所以老Cc Cc / TeX-command-master不受影响,将继续要求确认。

请编辑此代码,使其更好或更容易阅读!



Answer 4:

我困惑了所述覆盖CONFIRM位了一段时间,并无法弄清楚它是如何工作的。 如果你想在你的文件自动运行乳胶,而不打扰一下先保存,或确认要乳胶(而不是视图,中文提供等),你可以使用这样的功能:

(defun my-run-latex ()
  (interactive)
  (TeX-save-document (TeX-master-file))
  (TeX-command "LaTeX" 'TeX-master-file -1))

绑定这东西好用,你仍然会有Cc Cc当你想使用默认的处理命令。 您可能需要修改的TeX-command行,如果“乳胶”是不是你要拨打的处理器。



Answer 5:

如果你只是希望编译没有一个确认对话框乳胶源,只需添加以下到您的.emacs:

(setq TeX-command-force "")

然后,您可以编译CC CC源,它不会要求确认。 这种解决方案的唯一的问题是,你不能再更改命令,但与大多数文件,你不会想。 我可能表明,在同一时间,你可以将它添加到你的.emacs甚至更多的灵活性,给你一个CC CC相当于前者的行为:

(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)))) 

然后,您可以就在您的文档以外的地方工作,做了CX CS,CC CC然后抄送简历看到它。 像其他人建议你也可以做同样的save命令,并自动保存上编译,但我的一些文件是在CVS,所以我避免在投入挂钩。

感谢伊万对这个一些帮助 - 不知道他是在计算器上



Answer 6:

我认为这个问题的要点是“我怎么快速编译从AUCTeX我的TeX文档,而无需所有的按键和确认?”

我的回答是使用latexmk命令,而不是试图强迫AUCTeX做到这一点。

latexmk -pdf -PVC myfile.tex

latexmk将监控有问题的文件,并尽快将其保存重建它。 如果你使用一个很好的PDF阅读器,它会注意到在PDF中的变化,并立即重新显示出来。 在OS X,脱脂效果很好这一点。



文章来源: Emacs/AUCTeX prefix arguments