mathematica 8.0和psfrag

时间:2011-06-17 11:10:01

标签: latex wolfram-mathematica mathematica-8

我最近从mathematica 7.0更新到8.0,现在遇到使用psfrag包用LaTeX代码替换我的绘图标签的问题。一切都与早期版本和完全相同的图表完美配合,但现在psfrag保持所有标签不变。我在Ubuntu 11.04上使用Kile进行LaTeX编辑。

例如,在Mathematica中:

plot = Plot[x, {x, -0.1, 0.1}, 
            AxesLabel -> {eps, SUM}, BaseStyle -> {FontSize -> 10}]  
Export["plot.eps", plot]

然后在LaTeX:

\begin{figure}   
\psfrag{eps}{$\epsilon$}  
\psfrag{SUM}{$\Sigma$}  
\includegraphics{plot.eps}  
\end{figure}  

现在应该用LaTeX排版替换标签,但没有任何反应。有什么建议如何解决这个问题?有谁知道Mathematica 8如何编码eps文件中的文本与早期版本相比有什么不同?

3 个答案:

答案 0 :(得分:8)

EPS的编码方式没有区别。问题是在v7输出中生成文本的PS代码(请注意,Mma使用bind def为许多PS代码创建快捷方式,有关详细信息,请参阅生成的EPS文件的顶部):

%%IncludeResource: font Times-Roman-MISO
%%IncludeFont: Times-Roman-MISO
10 /Times-Roman-MISO Msf
0 8 m
(SUM) N

已在v8中替换为

%%IncludeResource: font Times-Roman-MISO
%%IncludeFont: Times-Roman-MISO
10 /Times-Roman-MISO Msf
p
0.75 9 m
(S) N
P
p
6 9 m
(U) N
P
p
14.25 9 m
(M) N

这意味着psfrag无法抓住标签。 我找不到如何在Mma导出选项中解决这个问题。

目前,我能想到的唯一解决方法(我已经测试过它的工作原理)是对轴标签使用单字母标签,例如

plot = Plot[x, {x, -0.1, 0.1}, AxesLabel -> {"e", "s"}, 
  BaseStyle -> {FontSize -> 10}]
Export["plot8.eps", plot]

\begin{figure}[h]
\psfrag{e}{$\epsilon$}
\psfrag{s}{$\Sigma$}
\includegraphics{plot8.eps}
\end{figure}

注意:

http://www.reimeika.ca/marco/prettyplots/

中陈述了可能想要使用psfrag的原因
  

现在,这些标签看起来不太好   (启动没什么意义)。   然而,这个想法最终是   将图表包含在论文或报告中   用LaTeX制作,等真正的观点   标签是用它们作为标记   对于允许的psfrag包   替换EPS图表中的文本。这个   标签的方式有三大   比标签硬编码更有优势   进入图中。首先是一致性,   因为字体将与那些字体相同   在文章中。其次是事实   LaTeX的数学引擎可以   最充分地利用   剧情。最后但同样重要的是,它   允许在内容中轻松更改符号   .tex文件,而不是必须   从头开始重新创作情节。


附录:

psfrag仅适用于EPS图片,因此仅适用于latex。 如果您想使用psfragpdflatex,请参阅tex.SE问题 Using psfrag with pdflatex

答案 1 :(得分:4)

尝试了7.0.1和8.0.1,对我来说效果很好。因此,我无法重现您的错误。 (也许只是一个错字,区分大小写等)。无论如何,我同意LateX修改对于出版物几乎是强制性的。首先我还使用了PSFrag,但我经常也不喜欢标签的位置,特别是如果你放置更复杂的表达式。因此,我建议通过PSTricks进行中间步骤。这看起来像这样:

\documentclass[floatfig,isolatin,amsthm,amsmath,amsfont,amstext,12pt,fullpage,pslatex,amsref]{scrartcl}
\usepackage{amstext}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{float}
\usepackage{epic}
\usepackage{eepic}
\usepackage{color}
\pagestyle{empty}
\usepackage{pstricks}

\begin{document}

\begin{pspicture}(0,0)(13.0,7.8)

    %\psgrid(0,0)(0,0)(13,7.8)
% need the grid only in the beginning for positioning

    \rput[c](10.7,3.8){\includegraphics{plot.eps}}

% put labels. 

    \rput[c]{90}(9.5,4){\Large{$\frac{E^2_\text{tot}}{V M_\mathrm{S}}$}}
    \rput[c]{0}(6,6.0){$x/h$}

% also to put extra lines, arrows, comments, etc. in LaTeX style, e.g.:

%   \psline[linecolor=green,linewidth=2pt,linestyle=dashed]{->}(3.5,3.05)(9.1,3.05)
\end{pspicture}
\end{document}

因此,您需要手工完成一些工作,但通常值得花时间,因为结果确实看起来更好,特别是如果是出版。但是,请记住,在标准设置中,LaTeX使用计算机现代字体作为公式。这与例如不同。 Times New Roman,文本的典型选择。您可以使用mathptmx包更改此内容。

答案 2 :(得分:1)

您可以直接在Mathematica中编写“排版”表单,然后它就已经存在于.eps文件中,您可以按原样包含.eps。

plot = Plot [x,{x,-0.1,0.1},AxesLabel - > {“[\ eps],[\ Sigma]},BaseStyle - > {FontSize - > 10}]

只需执行[esc] +“eps”+ [esc]即可获得epsilon,或者从工具箱中插入epsilon。同样的西格玛。