如何将latexmk绑定到Emacs中的一个键,并且如果有的话,它会显示错误 [英] How do I bind latexmk to one key in Emacs and have it show errors if there are any

查看:134
本文介绍了如何将latexmk绑定到Emacs中的一个键,并且如果有的话,它会显示错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用AUCTeX,我想绑定一个键,例如 C-0 ,执行以下操作:

I'm using AUCTeX and I would like to bind a key, e.g. C-0, that does the following:


  1. 保存活动文件而不提示

  2. 在活动文件中运行 latexmk ,而不提示我。

  3. 显示错误如果 latexmk 遇到任何。

  1. Saves the active file without prompting me.
  2. Runs latexmk on the active file without prompting me.
  3. Shows me errors if latexmk encounters any by .

我的问题是 / em>如何绑定一个键(Tyler在下面的评论中发布了一个链接)但是如何找出完成项目1-3的功能。

My problem is not how to bind a key (for which Tyler posted a link in a comment below) but how to come up with a function that accomplishes item 1–3.

我通过

(add-hook 'LaTeX-mode-hook (lambda ()
  (push 
    '("Latexmk" "latexmk %s" TeX-run-TeX nil t
      :help "Run Latexmk on file")
    TeX-command-list)))

这是我的.latexmkrc

This is my .latexmkrc

$pdf_mode = 1;
$recorder = 1;
$latex = 'latex -recorder -halt-on-error -interaction=nonstopmode -shell-escape';
$pdflatex = 'pdflatex -recorder -halt-on-error -interaction=nonstopmode -shell-escape';

我正在使用Emacs 23.3和AUCTeX 11.86。

I'm using Emacs 23.3 and AUCTeX 11.86.

推荐答案

这样的东西

(require 'tex-buf)

(defun run-latexmk ()
  (interactive)
  (let ((TeX-save-query nil)
        (TeX-process-asynchronous nil)
        (master-file (TeX-master-file)))
    (TeX-save-document "")
    (TeX-run-TeX "latexmk" "latexmk" master-file)
    (if (plist-get TeX-error-report-switches (intern master-file))
        (TeX-next-error t)
      (minibuffer-message "latexmk done"))))

(add-hook 'LaTeX-mode-hook
          (lambda () (local-set-key (kbd "C-0") #'run-latexmk)))

修改
TeX-save-document 保存您的主文件和任何子文件(如果您只有一个文件,它是您的主文件),并且当 TeX-save-查询是零,它不要求您确认。然后 TeX-run-TeX 使用通常用于运行 TeX 的机制运行latexmk,其中包括错误消息解析,但是因为它通常启动一个异步进程,所以我们将 TeX进程异步设置为nil等待它结束。奇怪的 plist-get 表格是用于检查 TeX-run-TeX (见在 tex-buf.el 中的评论),如果有错误,我们跳到第一个;如果没有错误,我们在迷你缓存中显示一条消息,只是为了好玩。

Edit: TeX-save-document saves your master file and any sub-files (if you just have one file, it's your master file), and when TeX-save-query is nil, it doesn't ask you for confirmation. Then TeX-run-TeX runs latexmk using the mechanism usually used for running TeX, which includes error message parsing, but because it usually starts an asynchronous process, we set TeX-process-asynchronous to nil to wait for it to end. The odd-looking plist-get form is the documented way to check for errors from TeX-run-TeX (see comments in tex-buf.el), and if there are errors, we jump to the first one; if there are no errors, we show a message in the minibuffer just for fun.

最后, local-set-key 是将键绑定到函数的一种方式。

Finally, the local-set-key is one way to bind a key to the function.

这篇关于如何将latexmk绑定到Emacs中的一个键,并且如果有的话,它会显示错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆