背景
操作系统是windows;
emacs使用的是spacemacs;
latex使用的是ctex;
spacemacs安装latex插件,是通过layer->latex实现的。
问题及解决办法
emacs打开*.tex文件,c-c c-c命令没有可执行的程序。
解决办法:
1. $path指的是windows的可执行程序的目录;跟linux是一致的。emacs通过setenv命令实现。
2. c-c c-c编译命令,通过TeX-command-list这个列表变量扩充。
3. 默认latex编译命令,采用XeLaTeX。但是仍有小bug,第二次编译的时候,不再是默认编译命令。这个留待处理。
ps: latex生成pdf的时候,为了实现目录toc,需要额外编译一遍;为了实现中文书签不乱码,需要额外再编译一遍。总之,中文latex生成pdf的过程,保守需要编译三遍。所以,当前只能执行三次c-c c-c;这个问题留待处理。
代码举例
windows PATH的路径,是我的电脑->系统属性->高级->环境变量
里得到的。
(add-to-list ‘TeX-command-list ‘(“XeLaTeX” “%`xelatex%(mode)%’ %t” TeX-run-TeX nil t)) 会在Command 这一栏中增加了XeLaTeX这一项命令;
;;(add-to-list ‘TeX-command-list ‘(“XeLaTeX” “xelatex -interaction=nonstopmode” TeX-run-TeX nil t))
(setq TeX-command-default “XeLaTeX”) 则使得以后用C-c C-c就是默认用xelatex 命令编译tex文档;
(setq TeX-save-query nil ) 这一行不用确认保存就开始执行编译;
(setq TeX-show-compilation t) 这一行是看到编译的滚动信息。
补充:
;;重新定义pdfviewer,我设定为了SumatraPDF(ctex套装里的pdf阅读器,好处是可以自动刷新pdf内容)。
(setq TeX-view-program-list ‘((“SumatraPDF” “SumatraPDF %o”)))
(setq TeX-view-program-selection ‘((output-pdf “SumatraPDF”)))
(setq TeX-global-PDF-mode t TeX-engine ‘xelatex)
(setenv "PATH" "C:/ProgramData/Oracle/Java/javapath;%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;%SYSTEMROOT%/System32/WindowsPowerShell/v1.0/;C:/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static;e:/Program Files/Git/cmd;e:/Program Files/Git/mingw64/bin;e:/Program Files/Git/usr/bin;C:/Program Files/Git/cmd;C:/Program Files (x86)/AMD/ATI.ACE/Core-Static;d:/CTEX/UserData/miktex/bin;d:/CTEX/MiKTeX/miktex/bin;d:/CTEX/CTeX/ctex/bin;d:/CTEX/CTeX/cct/bin;d:/CTEX/CTeX/ty/bin;d:/CTEX/Ghostscript/gs9.05/bin;d:/CTEX/GSview/gsview;d:/CTEX/WinEdt")
;;重新定义pdfviewer,我设定为了SumatraPDF。
(setq TeX-view-program-list '(("SumatraPDF" "SumatraPDF %o")))
(setq TeX-view-program-selection '((output-pdf "SumatraPDF")))
(setq TeX-global-PDF-mode t TeX-engine 'xelatex)
(add-hook 'LaTeX-mode-hook (lambda()
(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t))
(setq TeX-command-default "XeLaTeX")
(setq TeX-save-query nil )
(setq TeX-show-compilation t)
))