用户“Mike”热心帮助了我Latex、Emacs:自动打开TeX 帮助发生错误时缓冲并在纠正错误后关闭它?创建以下函数,使错误检测能够与 很好地协同工作latexmk
。
(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"
(TeX-command-expand "latexmk -pdf %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 "latexmk: done.")))))
我想在调用中添加另一个选项,latexmk
如下所示:
(TeX-command-expand "latexmk -pdflatex='pdflatex -file-line-error' -pdf %s" 'TeX-master-file)
使其pdflatex
不仅报告错误行,还报告文件名(这对于 AUCTeX 在发生错误时打开正确的缓冲区至关重要)。问题是,在我添加此选项后,编译myfile.tex
没有附带myfile.synctex.gz
,这导致向前和向后搜索失败(请参阅如何设置 Okular 以使用 TeX Live 2011 进行向前/向后搜索?(不再简单))。
哪里有问题?
答案1
这
“latexmk -pdflatex='pdflatex -file-line-error' -pdf %s”
说明书应包含全部我们想要pdflatex
在执行时传递的选项,所以
“latexmk -pdflatex='pdflatex -file-line-error -synctex=1' -pdf %s”
应该可以工作。单引号内的部分是latexmk
编译文档时将发出的命令。