码迷,mamicode.com
首页 > 其他好文 > 详细

在Emacs中生成LaTeX公式

时间:2014-06-29 19:38:44      阅读:581      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   get   使用   

苹果系统下面有个LaTeXiT软件,可以方便地生成LaTeX公式,然后拖拽到别的程序中直接使用。在Windows下这方面的工具就比较少了。不过如果装有CTeX中文套装和Emacs的话,倒不妨自己做一个简易的版本。

思路很简单:开一个Emacs buffer,编辑好公式,执行自编的texify函数调用相关命令生成dvi文件。然后再根据这篇文章中说的方法,对其进行适当的裁剪,并一次生成多种图片格式,以供其他程序使用。该函数如下:

(defun texify ()
  (interactive)
  (let* ((file-name)
         (base-name))
    (setq file-name (buffer-name))
    (setq base-name (substring file-name 0 (string-match "\.tex" file-name)))
    (message "Generate dvi...")
    (if (equal (call-process "latex" nil (concat "*" file-name "*") t file-name) 0)
        (progn
          (message "Generate eps...")
          (if (equal (call-process "dvips" nil (concat "*" file-name "*") t "-E" (concat base-name ".dvi") "-o" (concat base-name ".eps")) 0)
              (progn
                (message "Generate png...")
                (if (equal (call-process "gswin32c" nil (concat "*" file-name "*") t "-dNOSAFER" "-r600" "-dBATCH" "-sDEVICE=pngalpha" "-dNOPAUSE" "-dEPSCrop" (concat "-sOutputFile=" base-name ".png") (concat base-name ".eps")) 0)
                    (progn
                      (message "Process png complete!")))))
          (message "Generate pdf from eps...")
          ;; -dEPSCrop is only effective for eps->pdf, not ps->pdf 
          (if (equal (call-process "gswin32c" nil (concat "*" file-name "*") t "-dNOSAFER" "-dBATCH" "-sDEVICE=pdfwrite" "-dNOPAUSE" "-dPDFSETTINGS=/printer" "-dCOMPatibilityLevel=1.4" "-dEPSCrop" "-dMaxSubsetPct=100" "-dSubsetFonts=true" "-dEmbedAllFonts=true" (concat "-sOutputFile=" base-name ".pdf") (concat base-name ".eps")) 0)
              (progn
                (message "Generate svg...")
                ;; -ssp is used to remove black hole in some symbols such as a, e, etc. 
                (if (equal (call-process "pstoedit" nil (concat "*" file-name "*") t "-f" "plot-svg" "-ssp" "-usebbfrominput" (concat base-name ".pdf") (concat base-name ".svg")) 0)
                    (progn
                      (message "Process svg complete!")))))))))

 

 

texify函数生成的图片格式包括:

  • eps:使用dvips命令生成,可直接用在LaTeX文档中;

  • 背景透明的png:使用gswin32c命令生成,如果安装了CTeX套装的话,则该程序默认已安装,只需将gswin32c.exe所在路径加 入到PATH环境变量。若系统为Linux,则需安装Ghostscript。生成的png图片分辨率设到了600,用于MS Wordppt显示效果非常好。

  • svg:先由eps生成pdf,再由pstoedit转换为svg格式,该文件可以直接插入Inkscape中进行矢量图创作或者海报的设计。pstoedit命令需要到这里下载。

为了方便输入数学公式,可以事先准备好一个模版,每次用的时候直接填空即可,例如:

\documentclass{article}
\newcommand{\myfont}{\fontsize{12pt}{18pt}\selectfont}
\usepackage{amssymb,amsmath,amscd}
\usepackage[amssymb]{SIunits}
\usepackage{color}
\usepackage{CJK}

\newcommand{\bi}[1]{\boldsymbol{#1}}
\newcommand{\abs}[1]{\vert #1 \vert}
\newcommand{\diff}{{\rm d}}
\newcommand{\intd}{\,{\rm d}}
\newcommand{\vect}[1]{\boldsymbol{#1}}

\begin{document}
\pagestyle{empty}
\begin{CJK*}{GBK}{song}
\myfont
%% latex goes here 
%% latex ends here
\clearpage
\end{CJK*}
\end{document}

 

 

在Emacs中生成LaTeX公式,布布扣,bubuko.com

在Emacs中生成LaTeX公式

标签:style   blog   http   color   get   使用   

原文地址:http://www.cnblogs.com/quantumman/p/3814842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!