我尝试基于下面的代码编写一个函数:Latex, Emacs: automatically open *TeX Help* buffer on error and close it after correction of the error?
我想用texi2dvi替换latexmk,但TeX-master-file不包含以.tex结尾的文件(这似乎是texi2dvi所必需的)。我发现可以使用TeX-master-file t添加.tex。然而,我不能让它工作(我不是一个elisp程序员)。这是我尝试过的:
;; texi2dvi
(defun run-texi2dvi ()
(interactive)
(let ((TeX-save-query nil)
(TeX-process-asynchronous nil)
(master-file (expand-file-name (TeX-master-file t)))); append `.tex`
(TeX-save-document "")
(TeX-run-TeX "texi2dvi"
(TeX-command-expand "PDFLATEX='pdflatex -synctex=1' texi2dvi -p %s" 'TeX-master-file)
master-file)
(if (plist-get TeX-error-report-switches (intern master-file))
(TeX-next-error t)
(progn
(demolish-tex-help)
(minibuffer-message "texi2dvi: done.")))))发布于 2012-08-16 17:16:03
发布于 2012-07-21 06:05:25
不知道是否有更好的方法,但这个版本应该可以工作。基本上,TeX-command-expand被赋予函数TeX-master-file作为内部调用的符号,并且在没有I-want- the -extension参数的情况下被调用。替换的lambda强制了这一点。
(defun run-texi2dvi ()
(interactive)
(let ((TeX-save-query nil)
(TeX-process-asynchronous nil)
(master-file (expand-file-name (TeX-master-file t)))); append `.tex`
(TeX-save-document "")
(TeX-run-TeX "texi2dvi"
(TeX-command-expand
"PDFLATEX='pdflatex -synctex=1' texi2dvi -p %s"
(lambda (ext-ignored nondir)
(TeX-master-file t nondir)))
master-file)
(if (plist-get TeX-error-report-switches (intern master-file))
(TeX-next-error t)
(progn
(demolish-tex-help)
(minibuffer-message "texi2dvi: done.")))))https://stackoverflow.com/questions/11565998
复制相似问题