我最近从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文件中的文本与早期版本相比有什么不同?
答案 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
。
如果您想使用psfrag
和pdflatex
,请参阅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。同样的西格玛。