雷锦志的个人博客分享 http://blog.sciencenet.cn/u/jzlei 乱七八糟的随想录

博文

Latex中插入SVG图和SVG图中使用Latex公式

已有 44779 次阅读 2011-12-8 19:22 |系统分类:科研笔记

前面我谈过怎么在 Inkscape 中引入Latex公式(原文见 Inkscape 下引入 Latex 公式的方法)。

最近电脑升级了操作系统,原来的 Inkscape 也升级了,再按照上文的方法安装的时候发现有一些问题。一忙起来也没有时间解决。这些天看到一个文档 (InkscapePDFLaTeX.pdf)讲述如何在 Latex 中插入 SVG 图形和在 SVG 图形中使用 Latex 公式,感觉比较简单,特此留个印。

首先声明,我的电脑的操作系统是 Mac OX Lion 10.7.2, Inkscape 0.48.2r9819. 如果你的系统和 Inkscape 的版本和我的不一样,请自己调整。

下面所使用的功能是 Inkscape 0.48 或更高版本。如果你的 Inkscape 的版本太低,请先升级。

在这一版本的 Inkscape 中增加了一个功能,可以把SVG图保存为 PDF/EPS/PS + LaTex 的格式。要使用这个功能,在 Save as ... 选择 PDF 以后,会弹出一个对话框,注意看几个选项,其中和本功能有关的是:

PDF+LaTex: Omit text in PDF, and create LaTeX file [v]     这个一定要选上,生成 LaTeX 文件    

Rasterize filter effects                                               [v]      这个要选上    

Export area is drawing                                              [v]      这个选上,表示把画图的区域保存

Export area is page                                                   [ ]      选这个表示整页保存

选上上述选项以后点击 OK,就可以把 SVG 图保存为两个文件,后缀分别为 .pdf 和 .pdf_tex 

同样的,也可以把 SVG 图存为 EPS+LaTeX, 或者 PS+LaTeX,下面的步骤类似,适当调整即可。我个人喜欢 EPS!

知道了这个功能,下面的操作的简单了。

首先在 Inkscape 中画图,在该使用LaTeX公式的地方使用文字工具,写上 Latex 的命令即可。注意,这里也可以用 ref{} 这样的交叉引用的公式哦。然后按照上面的方法另存为 PDF +LaTeX文件 (在下面假设分别为 drawing.pdf 和 drawing.pdf_tex)。

这样,在 LaTex 文件(和上面保存在 PDF 和 PDF_Tex在同一个目录)中,用下面插入上面生成的 .pdf 和 .pdf_tex 文件:

begin{figure} centering defsvgwidth{8cm} input{drawing.pdf_tex}end{figure}这里 svgwidth{}表示图的宽度。然后使用 pdflatex 编译 LaTeX 文件就可以了。(如果是插入 EPS + LaTeX 文件,建议使用 LaTex + dvitoeps + epstopdf, 这个在 TeXShop 中使用 Tex and DVI 就可以了)。

上述过程可以在 LaTeX 文件的头定义上增加下面命令即可:


newcommand{executeiffilenewer}[3]{% 

ifnumpdfstrcmp{pdffilemoddate{#1}}% 

{pdffilemoddate{#2}}>0% 

{immediatewrite18{#3}}fi% 

newcommand{includesvg}[1]{% 

executeiffilenewer{#1.svg}{#1.pdf}% 

{/Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -D --file=#1.svg %

 --export-eps=#1.eps --export-latex}% 

input{#1.eps_tex}% 

}

注意: 把 /Applications/Inkscape.app/Contents/Resources/bin/inkscape 换成你的电脑中 inkscape 的绝对路径.
然后, 在latex 文件中使用

begin{figure}[h]
 centering 
defsvgwidth{8cm} 
includesvg{drawing}
 caption{Figure of svg.} 
end{figure}

插入 SVG 图 drawing.svg 。 注意, 这里不要写文件名的后缀。

例子:  LaTeX 文件:

documentclass[11pt]{amsart}
usepackage{graphicx}
usepackage{amssymb}
usepackage{epstopdf}
usepackage{color}
newcommand{executeiffilenewer}[3]{%
ifnumpdfstrcmp{pdffilemoddate{#1}}%
{pdffilemoddate{#2}}>0%
{immediatewrite18{#3}}fi%
}
newcommand{includesvg}[1]{%
executeiffilenewer{#1.svg}{#1.pdf}%
{/Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -D --file=#1.svg %
--export-eps=#1.eps --export-latex}%
input{#1.eps_tex}%
}
title{Brief Article}
author{The Author}
%date{}                                           % Activate to display a given date or no date
begin{document}
maketitle
%section{}
%subsection{}
abc
rm
begin{figure}[h]
centering
defsvgwidth{8cm}
includesvg{drawing}
caption{Figure of svg.}
end{figure}
def
end{document}  


           SVG 文件:drawing.svg
        最后产生的 PDF 文件:Untitled.pdf




https://blog.sciencenet.cn/blog-267716-516288.html

上一篇:化学世界的 10 大未解之迷
下一篇:投稿前应该做的几件事情
收藏 IP: 166.111.93.*| 热度|

1 黄富强

该博文允许注册用户评论 请点击登录 评论 (4 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-24 09:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部