在Emacs中生成LaTeX公式

苹果系统下面有个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 Word、ppt显示效果非常好。
  • 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

时间: 2024-10-06 22:29:15

在Emacs中生成LaTeX公式的相关文章

在word 2013中输入latex公式

注意:版权所有,转载请注明出处 向word输入LaTeX公式,插件有很多,前面在使用的是一个叫做Aurora的插件,结果不是免费的,用了一段时间就要收费是,所以就不用了,从网上找到别人的介绍,可以使用TeXsword,下载使用了一下,还不错. (1) TeXsword是一个word的宏包,不用安装,解压好如下图所示: 然后把texsword.dot这个文件拷贝到C:\Users\你的用户名\AppData\Roaming\Microsoft\Word\STARTUP,这个文件夹下面,打开word

PowerPoint 中插入 Latex 公式

做 PPT 用 Latex Beamer 毕竟还是太麻烦,Beamer 毕竟还是更适合学术性的,各种定义各种公式的那种,遇到要画各种图,插入各种图片,进行错综复杂的排版就比较棘手了. 最终还是 PowerPoint 更适合这类任务.然而它的公式编辑又太鸡肋,不美观倒在其次,编辑起来费劲才是最麻烦的.据说 Office 2016 已经支持 Latex 了,然而似乎不太好用. 于是试了一下一个叫 iguanaTex 的 PowerPoint 加载项,挺好用.但是用了一段时间后发现  \frac  这

ZH奶酪:在博客中添加Latex公式

1. 点击编辑器中的插入图片: 2.在URL输入下边的地址: http://latex.codecogs.com/gif.latex?你的latex代码 就可以了-

Onenote中调用latex命令输入公式

Onenote中调用latex命令输入公式 现有的OneNote的公式输入法从某种程度上是为了方便更快的输入公式,对latex某些输入方式进行了简化[UnicodeMath编码格式],最经典的是分式的输入方式如\(\frac{1}{2}\) ,在Onenote下的输入方式为1/2,在latex下的输入方式则为\frac{1}{2}. Unicodemath 转化为 latex 的方法: 首先alt+=进入公式编辑状态: 设计->左上角->工具->右下角->数学符号自动更正: 按照下

Emacs 中的coding system

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

Matlab中使用LaTeX

Matlab作为数据计算和处理的数学语言(软件),而LaTex作为出版界的重要排版语言(软件),尤其是对数学公式的排版功能特别强.在Matlab中有两种方法使用LaTeX:1)对Matlab生成的图形标注时,2)Matlab的计算结果转化成LaTeX格式. 1)  对Matlab生成的图形标注 Matlab图形中title.xlabel.ylabel.zlabel.textbox和legend等的Interpreter属性有三个属性:latex .tex.none.默认为tex.(注:LaTeX

在Emacs中使用GNU Global

背景 在我平时用Emacs编写C代码时,经常需要进行代码的跳转,主要需求为函数定义的跳转,某个具体函数的调用查找,某个结构体的定义跳转以及结构体中具体某一项的跳转等,GNU Global就能完全满足我的这个需求,所以习惯了Emacs的人可以将Source Insight扔开了. GNU Global简介 GNU Global全称为GNU Global source code tagging system,官方定义为GNU Global是一个可以跨越各种环境的代码标记系统,例如在Emacs,VI,

word中添加Mathtype公式行间距改变问题

转载链接:http://blog.sciencenet.cn/home.php?mod=space&uid=471807&do=blog&id=616838 最近碰到在word文档中用mathtype插入公式后导致正文间距过大的问题,苦恼了很久,差点就要改用latex了,但最终找到了解决办法. 在网上找到的办法有: 1.在word中点击“文件”菜单下的“页面设置”项.在“文档网格”标签页中的“网格”一栏,勾选“无网格”项(如图).这样能很大程度上缓解行距不等的情况,然后再进行公式大

C#中生成的随机数为什么不随机?

from:https://www.xcode.me/more/net-csharp-generate-random 随机数生成方法可以说是任何编程语言必备的功能,它的重要性不言而言,在C#中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成5个随机数: for (int i = 0; i < 5; i++) { Random random = new Random(); Console.WriteLine(random