1

I'd like to plot a graph with y-label with a Greek letter beta. But in latex, I have the result present in the figure. How the latex interpret Greek letter?

enter image description here

My eps figure code is given by

%!PS-Adobe-3.0 EPSF-3.0
%%DocumentNeededResources: font Helvetica
%%+ font Helvetica-Bold
%%+ font Helvetica-Oblique
%%+ font Helvetica-BoldOblique
%%+ font Symbol
%%Title: R Graphics Output
%%Creator: R Software
%%Pages: (atend)
%%BoundingBox: 0 0 415 414
%%EndComments
%%BeginProlog
/bp  { gs gs } def
% begin .ps.prolog
/gs  { gsave } bind def
/gr  { grestore } bind def
/ep  { showpage gr gr } bind def
/m   { moveto } bind def
/l  { rlineto } bind def
/np  { newpath } bind def
/cp  { closepath } bind def
/f   { fill } bind def
/o   { stroke } bind def
/c   { newpath 0 360 arc } bind def
/r   { 4 2 roll moveto 1 copy 3 -1 roll exch 0 exch rlineto 0 rlineto -1 mul 0 exch rlineto closepath } bind def
/p1  { stroke } bind def
/p2  { gsave bg fill grestore newpath } bind def
/p3  { gsave bg fill grestore stroke } bind def
/p6  { gsave bg eofill grestore newpath } bind def
/p7  { gsave bg eofill grestore stroke } bind def
/t   { 5 -2 roll moveto gsave rotate
       1 index stringwidth pop
       mul neg 0 rmoveto show grestore } bind def
/ta  { 4 -2 roll moveto gsave rotate show } bind def
/tb  { 2 -1 roll 0 rmoveto show } bind def
/cl  { grestore gsave newpath 3 index 3 index moveto 1 index
       4 -1 roll lineto  exch 1 index lineto lineto
       closepath clip newpath } bind def
/rgb { setrgbcolor } bind def
/s   { scalefont setfont } bind def
% end   .ps.prolog
%%IncludeResource: font Helvetica
/Helvetica findfont
dup length dict begin
  {1 index /FID ne {def} {pop pop} ifelse} forall
  /Encoding ISOLatin1Encoding def
  currentdict
  end
/Font1 exch definefont pop
%%IncludeResource: font Helvetica-Bold
/Helvetica-Bold findfont
dup length dict begin
  {1 index /FID ne {def} {pop pop} ifelse} forall
  /Encoding ISOLatin1Encoding def
  currentdict
  end
/Font2 exch definefont pop
%%IncludeResource: font Helvetica-Oblique
/Helvetica-Oblique findfont
dup length dict begin
  {1 index /FID ne {def} {pop pop} ifelse} forall
  /Encoding ISOLatin1Encoding def
  currentdict
  end
/Font3 exch definefont pop
%%IncludeResource: font Helvetica-BoldOblique
/Helvetica-BoldOblique findfont
dup length dict begin
  {1 index /FID ne {def} {pop pop} ifelse} forall
  /Encoding ISOLatin1Encoding def
  currentdict
  end
/Font4 exch definefont pop
%%IncludeResource: font Symbol
/Symbol findfont
dup length dict begin
  {1 index /FID ne {def} {pop pop} ifelse} forall
  currentdict
  end
/Font5 exch definefont pop
%%EndProlog
%%Page: 1 1
bp
59.04 73.44 384.51 354.96 cl
0 setgray
0.75 setlinewidth
[] 0 setdash
1 setlinecap
1 setlinejoin
10.00 setmiterlimit
372.46 344.53 2.70 c p1
71.09 83.87 2.70 c p1
0.00 0.00 414.75 414.00 cl
0 setgray
0.75 setlinewidth
[] 0 setdash
1 setlinecap
1 setlinejoin
10.00 setmiterlimit
np
105.48 73.44 m
193.24 0 l
o
np
105.48 73.44 m
0 -7.20 l
o
np
202.10 73.44 m
0 -7.20 l
o
np
298.72 73.44 m
0 -7.20 l
o
/Font1 findfont 12 s
105.48 47.52 (0.80) .5 0 t
202.10 47.52 (0.85) .5 0 t
298.72 47.52 (0.90) .5 0 t
np
59.04 84.65 m
0 255.13 l
o
np
59.04 84.65 m
-7.20 0 l
o
np
59.04 127.17 m
-7.20 0 l
o
np
59.04 169.69 m
-7.20 0 l
o
np
59.04 212.21 m
-7.20 0 l
o
np
59.04 254.73 m
-7.20 0 l
o
np
59.04 297.25 m
-7.20 0 l
o
np
59.04 339.78 m
-7.20 0 l
o
41.76 84.65 (0.3) .5 90 t
41.76 127.17 (0.4) .5 90 t
41.76 169.69 (0.5) .5 90 t
41.76 212.21 (0.6) .5 90 t
41.76 254.73 (0.7) .5 90 t
41.76 297.25 (0.8) .5 90 t
41.76 339.78 (0.9) .5 90 t
np
59.04 73.44 m
325.47 0 l
0 281.52 l
-325.47 0 l
0 -281.52 l
o
0.00 0.00 414.75 414.00 cl
/Font1 findfont 12 s
0 setgray
207.10 18.72 (y) 0 ta
-0.240 (ears) tb gr
12.96 214.20 (dollar \($\beta$\)) .5 90 t
ep
%%Trailer
%%Pages: 1
%%EOF
1

It is possible to interpret LaTeX code in EPS files directly with the package psfrag. This package defines a command \tex that can be used inside an EPS file, with backslashes escaped. However, it is not very convenient to use. The command can only be used for a complete PostScript command (so not for a part of a string only, as in the example). Besides, getting the right positioning and font size is difficult. Third, you need a more complicated way of compiling the LaTeX document, either using latex-dvips-ps2pdf or with auto-pst-pdf and shell-escape.

Example modification to the postscript file (near the end):

207.10 18.72 (\\tex[bl][bl]{\\normalsize \\textsf{years}}) 0 ta
12.96 214.20 (\\tex[bl][bl]{\\hskip 2cm\\normalsize\\textsf{dollar} \($\\beta$\)}) .5 90 t

LaTeX document (compile with pdflatex --shell-escape myfile.tex):

\documentclass{article}
\usepackage[scanall]{psfrag}  % the scanall option enables \tex inside EPS files
\usepackage{auto-pst-pdf}
\usepackage{graphicx}

\begin{document}
\includegraphics[scale=0.5]{rgraph2.eps}
\end{document}

Result:

enter image description here

However, given that the graph is made in R, there are other ways to get LaTeX and/or Greek letters in the output. One way is to use the library tikzDevice, which outputs TikZ code. In R:

library(tikzDevice)
tikz('mygraph.tex',width=3,height=3)
plot(x=c(0.79,0.93),y=c(0.3,0.9),xlim=c(0.78,0.94),ylim=c(0.3,0.92),xlab='years',ylab='dollar ($\\beta$)')
dev.off()

LaTeX:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\resizebox{0.7\textwidth}{!}{\input{mygraph}}
\end{document}

Result: enter image description here

Alternatively, you can use Greek letters directly in R, when using the Cairo library for PDF output:

library(Cairo)
cairo_pdf("crgraph.pdf")
plot(x=c(0.79,0.93),y=c(0.3,0.9),ylab='dollar (β)',xlab='years',xlim=c(0.78,0.94),ylim=c(0.3,0.92))
dev.off()

Result:

enter image description here

  • I tried two ways: to modify the eps in latex and recreate the figure in R. But I have: \tex[bl][bl]{\hskip 2cm\normalsize\textsf{dollar} \($\beta$\)}. – Wagner Jorge Jun 22 '18 at 14:27
  • @WagnerJorge you have to make sure that there is nothing else in the PostScript field except for the \\tex command. Did you try to follow the example exactly? Replace the two lines in the EPS file, remove the extra line ('years' is split over two lines in the original), use the LaTeX code as in this answer with psfrag and auto-pst-pdf. Do you get the expected output in that case? – Marijn Jun 22 '18 at 16:26
  • Yes, I did. My run process is Process started: pdflatex -synctex=1 -interaction=nonstopmode --shell-escape "psda".tex. Is it correct? – Wagner Jorge Jun 22 '18 at 17:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.