Neal Becker wrote:

> Objective:
> produce multi-page pdfs using xelatex so I can have advanced latex and stix
> fonts (using xits package)
> 
> I've used pdf multipage with the recipe:
> 
> import matplotlib as mpl
> mpl.use ('pdf')
> import matplotlib.pyplot as plt
> 
> from matplotlib.backends.backend_pdf import PdfPages
> pdf = PdfPages('test_uw3.pdf')
> for page in ...
>     fig = plt.figure()
>     pdf.savefig (fig)
>     plt.close()
> pdf.close()
> 
> Now I'm interested in using xelatex (to use stix fonts).  So I saw the
> I should use pgf
> 
> If I add:
> 
> from matplotlib.backends.backend_pgf import FigureCanvasPgf
> matplotlib.backend_bases.register_backend('pdf', FigureCanvasPgf)
> 
> as suggested by
> http://matplotlib.org/users/pgf.html
> 
> I get an error:
> Traceback (most recent call last):
>   File "./read_hist3.py", line 121, in <module>
>     pdf.savefig (fig)
>   File
>   "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pdf.py",
> line 2258, in savefig
>     figure.savefig(self, format='pdf', **kwargs)
>   File "/usr/lib64/python2.7/site-packages/matplotlib/figure.py", line 1363,
>   in
> savefig
>     self.canvas.print_figure(*args, **kwargs)
>   File "/usr/lib64/python2.7/site-packages/matplotlib/backend_bases.py", line
> 2093, in print_figure
>     **kwargs)
>   File "/usr/lib64/python2.7/site-packages/matplotlib/backend_bases.py", line
> 1943, in _print_method
>     return print_method(*args, **kwargs)
>   File
>   "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pgf.py",
> line 830, in print_pdf
>     raise ValueError("filename must be a path or a file-like object")
> ValueError: filename must be a path or a file-like object
> 
> Any ideas?
> 

The best thing I've come up with so far is this, which will write out each page 
to a pdf file, then use subprocess to call 'pdfunite' to join the pdfs.

I like the xits-math + xits - it gives a much more unified look so the text and 
math fonts match.

Only problems:

It's extremely slow
The resulting pdf has duplicate embedded fonts

------------------------------------

import matplotlib as mpl
mpl.use ('pgf')
import numpy as np
import matplotlib.pyplot as plt

pgf_with_custom_preamble = {
    "font.family": "serif", # use serif/main font for text elements
    "text.usetex": True,    # use inline math for ticks
    "pgf.rcfonts": False,   # don't setup fonts from rc parameters
    'pgf.texsystem' : 'lualatex',
    "pgf.preamble": [
        r'\usepackage{fontspec,xunicode}',
        r"\usepackage{unicode-math}",  # unicode math setup
        r"\setmathfont{xits-math.otf}",
        r'\usepackage{cancel}',
        r'\usepackage{xcolor}',
        r'\renewcommand{\CancelColor}{\color{red}}',
        r'\setmainfont{xits}',         ]
}
mpl.rcParams.update(pgf_with_custom_preamble)

for ...
   plt.savefig ('xxx.pdf')

subprocess.call (['pdfunite'] + files + ['test_uw4.pdf'])




------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to