windows下emacs latex编译命令的实现

来源:互联网 发布:域名注册查询 百度 编辑:程序博客网 时间:2024/06/05 05:58

  • 背景
  • 问题及解决办法
  • 代码举例

背景

操作系统是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)                               ))
原创粉丝点击