Stats

Popular Posts

Followers

Mathematica 教學:Including LaTeX to EPS

戴忠淵 於 2012年7月22日星期日 下午4:08 發表




I write this function to include the equations and other scientific text of LaTeX into EPS file via Mathematica.

mypsfrag[fig_Graphics,filename_String,pstext_List]:=
Block[{myticks,mytex,mytex1,mytex2,mytex3,aa,aaa,bbb,epilogtext,
axestext},

(*先計算Mathematica的圖形大小,並將圖形輸出*)

Export["fig.eps",fig];
aaa=ToString[1.2#]<>"pt"&/@ImageDimensions[fig];

(*利用geometry產生適當著eps圖形大小,並產生TeX檔*)

mytex1=
"\\documentclass[12pt]{article}
\\usepackage{amssymb,amsmath,amsthm,bm}
\\usepackage[dvips]{psfrag,graphicx}
\\usepackage[papersize={"<>aaa[[1]]<>","<>aaa[[2]]<>"},margin={0.1in}]{geometry}
\\newcommand{\\text}{\\mbox}
\\begin{document}
\\pagestyle{empty}
\\begin{center}
\\begin{psfrags}";

mytex2=
StringJoin[
"\\psfrag{"<>#[[1]]<>"}[bc][bc]{"<>#[[2]]<>"}%\n"&/@pstext];

mytex3=
"\\includegraphics[width=0.95\\textwidth]{fig.eps}\n\
\\end{psfrags}\n\\end{center}\n\\end{document}";


(*組合TeX*)

mytex=mytex1<>mytex2<>mytex3;


(*LaTeX檔案處理*)

If[FileExistsQ["test.tex"],DeleteFile["test.tex"]];
If[FileExistsQ["test.eps"],DeleteFile["test.eps"]];
If[FileExistsQ[filename<>".eps"],
DeleteFile[filename<>".eps"]];
RenameFile[Export["test.txt",mytex],"test.tex"];

Run["/usr/texbin/latex --interaction=nonstopmode test"];
Run["/usr/texbin/dvips test"];
RenameFile["test.ps",filename<>".eps"];

(*若想輸出原始檔,可移除註解 *)

(*
DeleteFile["fig.eps"];
DeleteFile["test.tex"];
*)

DeleteFile["test.aux"];
DeleteFile["test.log"];
DeleteFile["test.dvi"];
]



(*
Usage: mypsfrag[figure, "filename", psfrag_stynax]
*)

fig2=Plot[Sin[x],{x,0,2Pi},
AxesLabel->{xx,y},
Epilog->{Text[x1,{3,0.5}],Text[x2,{5,0.5}]}]

mypsfrag[fig2,"test",
{{"x1","$\\Pi$"},{"x2","$\\pi$"},{"xx","$\\boldsymbol{x}$"},{"y","$\\boldsymbol{y}$"}}
]


Tags: , ,

讀者回應 ( 0 意見 )

發佈留言

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~