From 80b106ee17b5215603997b823e137e2a1c07c1c5 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Tue, 7 Aug 2012 00:24:17 +0200 Subject: [PATCH 1/8] Initial import of Xelatex/PGF backend. --- lib/matplotlib/backend_bases.py | 6 + lib/matplotlib/backends/backend_pgf.py | 760 +++++++++++++++++++++++++ lib/matplotlib/rcsetup.py | 8 +- 3 files changed, 773 insertions(+), 1 deletion(-) create mode 100644 lib/matplotlib/backends/backend_pgf.py diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 3beffdcc90e8..c0eeb0543db6 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -1807,6 +1807,7 @@ def get_width_height(self): 'emf': 'Enhanced Metafile', 'eps': 'Encapsulated Postscript', 'pdf': 'Portable Document Format', + 'pgf': 'LaTeX PGF Figure', 'png': 'Portable Network Graphics', 'ps' : 'Postscript', 'raw': 'Raw RGBA bitmap', @@ -1841,6 +1842,11 @@ def print_pdf(self, *args, **kwargs): pdf = self.switch_backends(FigureCanvasPdf) return pdf.print_pdf(*args, **kwargs) + def print_pgf(self, *args, **kwargs): + from backends.backend_pgf import FigureCanvasPgf # lazy import + pgf = self.switch_backends(FigureCanvasPgf) + return pgf.print_pgf(*args, **kwargs) + def print_png(self, *args, **kwargs): from backends.backend_agg import FigureCanvasAgg # lazy import agg = self.switch_backends(FigureCanvasAgg) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py new file mode 100644 index 000000000000..e48e880dc283 --- /dev/null +++ b/lib/matplotlib/backends/backend_pgf.py @@ -0,0 +1,760 @@ +from __future__ import division + +import math +import os +import sys +import re +import shutil +import tempfile +import codecs +import subprocess +import warnings +warnings.formatwarning = lambda *args: str(args[0]) + +import matplotlib as mpl +from matplotlib.backend_bases import RendererBase, GraphicsContextBase,\ + FigureManagerBase, FigureCanvasBase +from matplotlib.figure import Figure +from matplotlib.text import Text +from matplotlib.path import Path +from matplotlib import _png, rcParams +from matplotlib import font_manager +from matplotlib.ft2font import FT2Font + +############################################################################### +# settings read from rc + +# debug switch +debug = bool(rcParams.get("pgf.debug", False)) + +# which TeX system is to be used +texsystem_options = ["xelatex", "lualatex", "pdflatex"] +texsystem = rcParams.get("pgf.texsystem", "xelatex") +texsystem = texsystem if texsystem in texsystem_options else "xelatex" + +# font configuration based on texsystem +system_fonts = [] +latex_fontspec = [] +if texsystem is not "pdflatex": + rcfonts = rcParams.get("pgf.rcfonts", True) + latex_fontspec.append(r"\usepackage{fontspec}") + # create a list of system fonts, all of these should work with xe/lua-latex + for f in font_manager.findSystemFonts(): + try: + system_fonts.append(FT2Font(f).family_name) + except RuntimeError: + pass +else: + rcfonts = False + +# font configuration via matplotlib rc +if rcfonts: + # try to find fonts from rc parameters + families = ["serif", "sans-serif", "monospace"] + fontspecs = [r"\setmainfont{%s}", r"\setsansfont{%s}", r"\setmonofont{%s}"] + for family, fontspec in zip(families, fontspecs): + matches = [f for f in rcParams["font."+family] if f in system_fonts] + if matches: + latex_fontspec.append(fontspec % matches[0]) + else: + warnings.warn("No fonts found in font.%s, using LaTeX default.\n" % family) + if debug: + print "font specification:", latex_fontspec + +latex_fontspec = "\n".join(latex_fontspec) + +# LaTeX preamble +latex_preamble = rcParams.get("pgf.preamble", "") +if type(latex_preamble) == list: + latex_preamble = "\n".join(latex_preamble) + +############################################################################### + +# This almost made me cry!!! +# In the end, it's better to use only one unit for all coordinates, since the +# arithmetic in latex seems to produce inaccurate conversions. +latex_pt_to_in = 1./72.27 +latex_in_to_pt = 1./latex_pt_to_in +mpl_pt_to_in = 1./72. +mpl_in_to_pt = 1./mpl_pt_to_in + +############################################################################### +# helper functions + +NO_ESCAPE = r"(? 3) and (rgbFace[3] != 1.0) + if has_fill: + writeln(self.fh, r"\definecolor{currentfill}{rgb}{%f,%f,%f}" % tuple(rgbFace[:3])) + writeln(self.fh, r"\pgfsetfillcolor{currentfill}") + if has_fill and (path_is_transparent or fill_is_transparent): + opacity = gc.get_alpha() * 1.0 if not fill_is_transparent else rgbFace[3] + writeln(self.fh, r"\pgfsetfillopacity{%f}" % opacity) + + # linewidth and color + lw = gc.get_linewidth() * mpl_pt_to_in * latex_in_to_pt + stroke_rgba = gc.get_rgb() + writeln(self.fh, r"\pgfsetlinewidth{%fpt}" % lw) + writeln(self.fh, r"\definecolor{currentstroke}{rgb}{%f,%f,%f}" % stroke_rgba[:3]) + writeln(self.fh, r"\pgfsetstrokecolor{currentstroke}") + if gc.get_alpha() != 1.0: + writeln(self.fh, r"\pgfsetstrokeopacity{%f}" % gc.get_alpha()) + + # line style + ls = gc.get_linestyle(None) + if ls == "solid": + writeln(self.fh, r"\pgfsetdash{}{0pt}") + elif ls == "dashed": + writeln(self.fh, r"\pgfsetdash{{%fpt}{%fpt}}{0pt}" % (2.5*lw, 2.5*lw)) + elif ls == "dashdot": + writeln(self.fh, r"\pgfsetdash{{%fpt}{%fpt}{%fpt}{%fpt}}{0pt}" % (3*lw, 3*lw, 1*lw, 3*lw)) + elif "dotted": + writeln(self.fh, r"\pgfsetdash{{%fpt}{%fpt}}{0pt}" % (lw, 3*lw)) + + def _print_pgf_path(self, path, transform): + f = 1./self.dpi + # build path + for points, code in path.iter_segments(transform): + if code == Path.MOVETO: + x, y = tuple(points) + writeln(self.fh, r"\pgfpathmoveto{\pgfqpoint{%fin}{%fin}}" % (f*x,f*y)) + elif code == Path.CLOSEPOLY: + writeln(self.fh, r"\pgfpathclose") + elif code == Path.LINETO: + x, y = tuple(points) + writeln(self.fh, r"\pgfpathlineto{\pgfqpoint{%fin}{%fin}}" % (f*x,f*y)) + elif code == Path.CURVE3: + cx, cy, px, py = tuple(points) + coords = cx*f, cy*f, px*f, py*f + writeln(self.fh, r"\pgfpathquadraticcurveto{\pgfqpoint{%fin}{%fin}}{\pgfqpoint{%fin}{%fin}}" % coords) + elif code == Path.CURVE4: + c1x, c1y, c2x, c2y, px, py = tuple(points) + coords = c1x*f, c1y*f, c2x*f, c2y*f, px*f, py*f + writeln(self.fh, r"\pgfpathcurveto{\pgfqpoint{%fin}{%fin}}{\pgfqpoint{%fin}{%fin}}{\pgfqpoint{%fin}{%fin}}" % coords) + + def _pgf_path_draw(self, stroke=True, fill=False): + actions = [] + if stroke: actions.append("stroke") + if fill: actions.append("fill") + writeln(self.fh, r"\pgfusepath{%s}" % ",".join(actions)) + + def draw_image(self, gc, x, y, im): + # TODO: Almost no documentation for the behavior of this function. + # Something missing? + + # save the images to png files + path = os.path.dirname(self.fh.name) + fname = os.path.splitext(os.path.basename(self.fh.name))[0] + fname_img = "%s-img%d.png" % (fname, self.image_counter) + self.image_counter += 1 + im.flipud_out() + rows, cols, buf = im.as_rgba_str() + _png.write_png(buf, cols, rows, os.path.join(path, fname_img)) + + # reference the image in the pgf picture + writeln(self.fh, r"\begin{pgfscope}") + self._print_pgf_clip(gc) + h, w = im.get_size_out() + f = 1./self.dpi # from display coords to inch + writeln(self.fh, r"\pgftext[at=\pgfqpoint{%fin}{%fin},left,bottom]{\pgfimage[interpolate=true,width=%fin,height=%fin]{%s}}" % (x*f, y*f, w*f, h*f, fname_img)) + writeln(self.fh, r"\end{pgfscope}") + + def draw_tex(self, gc, x, y, s, prop, angle, ismath="TeX!"): + self.draw_text(gc, x, y, s, prop, angle, ismath) + + def draw_text(self, gc, x, y, s, prop, angle, ismath=False): + if not self.draw_texts: return + + s = common_texification(s) + + # apply font properties + prop_cmds = _font_properties_str(prop) + s = ur"{%s %s}" % (prop_cmds, s) + + # draw text at given coordinates + x = x * 1./self.dpi + y = y * 1./self.dpi + writeln(self.fh, r"\begin{pgfscope}") + alpha = gc.get_alpha() + if alpha != 1.0: + writeln(self.fh, r"\pgfsetfillopacity{%f}" % alpha) + writeln(self.fh, r"\pgfsetstrokeopacity{%f}" % alpha) + stroke_rgb = tuple(gc.get_rgb())[:3] + if stroke_rgb != (0, 0, 0): + writeln(self.fh, r"\definecolor{textcolor}{rgb}{%f,%f,%f}" % stroke_rgb) + writeln(self.fh, r"\pgfsetstrokecolor{textcolor}") + writeln(self.fh, r"\pgfsetfillcolor{textcolor}") + writeln(self.fh, "\\pgftext[left,bottom,x=%fin,y=%fin,rotate=%f]{%s}\n" % (x,y,angle,s)) + writeln(self.fh, r"\end{pgfscope}") + + def get_text_width_height_descent(self, s, prop, ismath): + # check if the math is supposed to be displaystyled + s = common_texification(s) + + # get text metrics in units of latex pt, convert to display units + w, h, d = self.latexManager.get_width_height_descent(s, prop) + # TODO: this should be latex_pt_to_in instead of mpl_pt_to_in + # but having a little bit more space around the text looks better, + # plus the bounding box reported by LaTeX is VERY narrow + f = mpl_pt_to_in * self.dpi + return w*f, h*f, d*f + + def flipy(self): + return False + + def get_canvas_width_height(self): + return self.figure.get_figwidth(), self.figure.get_figheight() + + def points_to_pixels(self, points): + return points * mpl_pt_to_in * self.dpi + + def new_gc(self): + return GraphicsContextPgf() + + +class GraphicsContextPgf(GraphicsContextBase): + pass + +######################################################################## + +def draw_if_interactive(): + pass + +def new_figure_manager(num, *args, **kwargs): + """ + Create a new figure manager instance + """ + # if a main-level app must be created, this is the usual place to + # do it -- see backend_wx, backend_wxagg and backend_tkagg for + # examples. Not all GUIs require explicit instantiation of a + # main-level app (egg backend_gtk, backend_gtkagg) for pylab + FigureClass = kwargs.pop('FigureClass', Figure) + thisFig = FigureClass(*args, **kwargs) + canvas = FigureCanvasPgf(thisFig) + manager = FigureManagerPgf(canvas, num) + return manager + + +class FigureCanvasPgf(FigureCanvasBase): + filetypes = {"pgf": "LaTeX PGF picture", + "pdf": "LaTeX compiled PGF picture", + "png": "Portable Network Graphics",} + + def __init__(self, *args): + FigureCanvasBase.__init__(self, *args) + + def get_default_filetype(self): + return 'pdf' + + def print_pgf(self, filename, *args, **kwargs): + """ + Output pgf commands for drawing the figure so it can be included and + rendered in latex documents. + """ + + header_text = r"""%% Pgf figure exported from matplotlib. +%% +%% To include the image in your LaTeX document, write +%% \input{.pgf} +%% +%% Make sure to load the required packages in your main document +%% \usepackage{pgf} +%""" + # figure size in units of in + w, h = self.figure.get_figwidth(), self.figure.get_figheight() + + # start a pgfpicture environment and set a bounding box + fh = codecs.open(filename, "wt", encoding="utf-8") + writeln(fh, header_text) + writeln(fh, r"\begingroup") + writeln(fh, r"\makeatletter") + writeln(fh, r"\begin{pgfpicture}") + writeln(fh, r"\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{%fin}{%fin}}" % (w,h)) + writeln(fh, r"\pgfusepath{use as bounding box}") + + # TODO: Matplotlib does not send Text instances to the renderer as documented. + # This means that we cannot anchor the text elements correctly so that + # they stay aligned when changing the font size later. + # Manually iterating through all text instances of a figure has proven + # to be too much work since matplotlib behaves really weird sometimes. + # -> _render_texts_pgf + renderer = RendererPgf(self.figure, fh, draw_texts=True) + self.figure.draw(renderer) + + # end the pgfpicture environment + writeln(fh, r"\end{pgfpicture}") + writeln(fh, r"\makeatother") + writeln(fh, r"\endgroup") + + def print_pdf(self, filename, *args, **kwargs): + """ + Use LaTeX to compile a Pgf generated figure to PDF. + """ + w, h = self.figure.get_figwidth(), self.figure.get_figheight() + + target = os.path.abspath(filename) + tmpdir = tempfile.mkdtemp() + cwd = os.getcwd() + try: + os.chdir(tmpdir) + self.print_pgf("figure.pgf") + + latexcode = r""" +\documentclass[12pt]{minimal} +\usepackage[paperwidth=%fin, paperheight=%fin, margin=0in]{geometry} +%s +%s +\usepackage{pgf} + +\begin{document} +\centering +\input{figure.pgf} +\end{document}""" % (w, h, latex_preamble, latex_fontspec) + with codecs.open("figure.tex", "wt", "utf-8") as fh: + fh.write(latexcode) + + cmd = '%s -interaction=nonstopmode "%s" > figure.stdout' % (texsystem, "figure.tex") + exit_status = os.system(cmd) + if exit_status: + shutil.copyfile("figure.stdout", target+".err") + raise RuntimeError("LaTeX was not able to process your file.\nLaTeX stdout saved to %s" % (target+".err")) + shutil.copyfile("figure.pdf", target) + finally: + os.chdir(cwd) + shutil.rmtree(tmpdir) + + def print_png(self, filename, *args, **kwargs): + """ + Use LaTeX to compile a pgf figure to pdf and convert it to png. + """ + + converter = make_pdf_to_png_converter() + + target = os.path.abspath(filename) + try: + tmpdir = tempfile.mkdtemp() + cwd = os.getcwd() + os.chdir(tmpdir) + self.print_pdf("figure.pdf") + converter("figure.pdf", "figure.png", dpi=self.figure.dpi) + shutil.copyfile("figure.png", target) + finally: + os.chdir(cwd) + shutil.rmtree(tmpdir) + + def _render_texts_pgf(self, fh): + # TODO: currently unused code path + + # alignment anchors + valign = {"top": "top", "bottom": "bottom", "baseline": "base", "center": ""} + halign = {"left": "left", "right": "right", "center": ""} + # alignment anchors for 90deg. rotated labels + rvalign = {"top": "left", "bottom": "right", "baseline": "right", "center": ""} + rhalign = {"left": "top", "right": "bottom", "center": ""} + + # TODO: matplotlib does not hide unused tick labels yet, workaround + for tick in self.figure.findobj(mpl.axis.Tick): + tick.label1.set_visible(tick.label1On) + tick.label2.set_visible(tick.label2On) + # TODO: strange, first legend label is always "None", workaround + for legend in self.figure.findobj(mpl.legend.Legend): + labels = legend.findobj(mpl.text.Text) + labels[0].set_visible(False) + # TODO: strange, legend child labels are duplicated, + # find a list of unique text objects as workaround + texts = self.figure.findobj(match=Text, include_self=False) + texts = list(set(texts)) + + # draw text elements + for text in texts: + s = text.get_text() + if not s or not text.get_visible(): continue + + s = common_texification(s) + + fontsize = text.get_fontsize() + angle = text.get_rotation() + transform = text.get_transform() + x, y = transform.transform_point(text.get_position()) + x = x * 1.0 / self.figure.dpi + y = y * 1.0 / self.figure.dpi + # TODO: positioning behavior unknown for rotated elements + # right now only the alignment for 90deg rotations is correct + if angle == 90.: + align = rvalign[text.get_va()] + "," + rhalign[text.get_ha()] + else: + align = valign[text.get_va()] + "," + halign[text.get_ha()] + + s = ur"{\fontsize{%f}{%f}\selectfont %s}" % (fontsize, fontsize*1.2, s) + writeln(fh, ur"\pgftext[%s,x=%fin,y=%fin,rotate=%f]{%s}" % (align,x,y,angle,s)) + + def get_renderer(self): + return RendererPgf(self.figure, None, draw_texts=False) + +class FigureManagerPgf(FigureManagerBase): + def __init__(self, *args): + FigureManagerBase.__init__(self, *args) + +######################################################################## + +FigureManager = FigureManagerPgf diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index ec9c3e7136ca..f31d5ca31f13 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -30,7 +30,7 @@ non_interactive_bk = ['agg', 'cairo', 'emf', 'gdk', - 'pdf', 'ps', 'svg', 'template'] + 'pdf', 'pgf', 'ps', 'svg', 'template'] all_backends = interactive_bk + non_interactive_bk @@ -574,6 +574,12 @@ def __call__(self, s): 'pdf.use14corefonts' : [False, validate_bool], # use only the 14 PDF core fonts # embedded in every PDF viewing application 'pdf.fonttype' : [3, validate_fonttype], # 3 (Type3) or 42 (Truetype) + + 'pgf.debug' : [False, validate_bool], # output debug information + 'pgf.texsystem' : ['xelatex', str], # choose latex application for creating pdf files (xelatex/lualatex) + 'pgf.rcfonts' : [True, validate_bool], # use matplotlib rc settings for font configuration + 'pgf.preamble' : [[''], validate_stringlist], # provide a custom preamble for the latex process + 'svg.image_inline' : [True, validate_bool], # write raster image data directly into the svg file 'svg.image_noscale' : [False, validate_bool], # suppress scaling of raster data embedded in SVG 'svg.embed_char_paths' : [True, deprecate_svg_embed_char_paths], # True to save all characters as paths in the SVG From a773c96a9817d2178fa3e5b6f5688ec172ffdcd2 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Sun, 12 Aug 2012 22:22:26 +0200 Subject: [PATCH 2/8] allow changes in rc params, stop using warnings, factory for LatexManager --- lib/matplotlib/backends/backend_pgf.py | 161 ++++++++++++++----------- 1 file changed, 89 insertions(+), 72 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index e48e880dc283..3351a56f986c 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -8,8 +8,6 @@ import tempfile import codecs import subprocess -import warnings -warnings.formatwarning = lambda *args: str(args[0]) import matplotlib as mpl from matplotlib.backend_bases import RendererBase, GraphicsContextBase,\ @@ -22,51 +20,48 @@ from matplotlib.ft2font import FT2Font ############################################################################### -# settings read from rc -# debug switch -debug = bool(rcParams.get("pgf.debug", False)) - -# which TeX system is to be used -texsystem_options = ["xelatex", "lualatex", "pdflatex"] -texsystem = rcParams.get("pgf.texsystem", "xelatex") -texsystem = texsystem if texsystem in texsystem_options else "xelatex" - -# font configuration based on texsystem +# create a list of system fonts, all of these should work with xe/lua-latex system_fonts = [] -latex_fontspec = [] -if texsystem is not "pdflatex": - rcfonts = rcParams.get("pgf.rcfonts", True) - latex_fontspec.append(r"\usepackage{fontspec}") - # create a list of system fonts, all of these should work with xe/lua-latex - for f in font_manager.findSystemFonts(): - try: - system_fonts.append(FT2Font(f).family_name) - except RuntimeError: - pass -else: - rcfonts = False - -# font configuration via matplotlib rc -if rcfonts: - # try to find fonts from rc parameters - families = ["serif", "sans-serif", "monospace"] - fontspecs = [r"\setmainfont{%s}", r"\setsansfont{%s}", r"\setmonofont{%s}"] - for family, fontspec in zip(families, fontspecs): - matches = [f for f in rcParams["font."+family] if f in system_fonts] - if matches: - latex_fontspec.append(fontspec % matches[0]) - else: - warnings.warn("No fonts found in font.%s, using LaTeX default.\n" % family) - if debug: - print "font specification:", latex_fontspec +for f in font_manager.findSystemFonts(): + try: + system_fonts.append(FT2Font(f).family_name) + except RuntimeError: + pass -latex_fontspec = "\n".join(latex_fontspec) +# get chosen TeX system from rc +def get_texcommand(): + texsystem_options = ["xelatex", "lualatex", "pdflatex"] + texsystem = rcParams.get("pgf.texsystem", "xelatex") + return texsystem if texsystem in texsystem_options else "xelatex" + +# build fontspec preamble from rc +def get_fontspec(): + latex_fontspec = [] + texcommand = get_texcommand() + + if texcommand is not "pdflatex": + latex_fontspec.append(r"\usepackage{fontspec}") + + if texcommand is not "pdflatex" and rcParams.get("pgf.rcfonts", True): + # try to find fonts from rc parameters + families = ["serif", "sans-serif", "monospace"] + fontspecs = [r"\setmainfont{%s}", r"\setsansfont{%s}", r"\setmonofont{%s}"] + for family, fontspec in zip(families, fontspecs): + matches = [f for f in rcParams["font."+family] if f in system_fonts] + if matches: + latex_fontspec.append(fontspec % matches[0]) + else: + pass # no fonts found, fallback to LaTeX defaule -# LaTeX preamble -latex_preamble = rcParams.get("pgf.preamble", "") -if type(latex_preamble) == list: - latex_preamble = "\n".join(latex_preamble) + return "\n".join(latex_fontspec) + +# get LaTeX preamble from rc +def get_preamble(): + latex_preamble = rcParams.get("pgf.preamble", "") + if type(latex_preamble) == list: + latex_preamble = "\n".join(latex_preamble) + return latex_preamble ############################################################################### @@ -126,7 +121,7 @@ def _font_properties_str(prop): family = prop.get_family()[0] if family in families: commands.append(families[family]) - elif family in system_fonts: + elif family in system_fonts and get_texcommand() is not "pdflatex": commands.append(r"\setmainfont{%s}\rmfamily" % family) else: pass # print warning? @@ -188,6 +183,27 @@ def __init__(self, message, latex_output = ""): Exception.__init__(self, message) self.latex_output = latex_output +class LatexManagerFactory: + previous_instance = None + + @staticmethod + def get_latex_manager(): + texcommand = get_texcommand() + latex_header = LatexManager._build_latex_header() + prev = LatexManagerFactory.previous_instance + + # check if the previous instance of LatexManager can be reused + if prev and prev.latex_header == latex_header and prev.texcommand == texcommand: + if rcParams.get("pgf.debug", False): + print "reusing LatexManager" + return prev + else: + if rcParams.get("pgf.debug", False): + print "creating LatexManager" + new_inst = LatexManager() + LatexManagerFactory.previous_instance = new_inst + return new_inst + class LatexManager: """ The LatexManager opens an instance of the LaTeX application for @@ -195,7 +211,10 @@ class LatexManager: modified by setting fonts and/or a custem preamble in the rc parameters. """ - def __init__(self): + @staticmethod + def _build_latex_header(): + latex_preamble = get_preamble() + latex_fontspec = get_fontspec() # Create LaTeX header with some content, else LaTeX will load some # math fonts later when we don't expect the additional output on stdout. # TODO: is this sufficient? @@ -207,26 +226,28 @@ def __init__(self): \\typeout{pgf_backend_query_start} """ % (latex_preamble, latex_fontspec) - latex_end = """ -\\makeatletter -\\@@end -""" + return latex_header + + def __init__(self): + self.texcommand = get_texcommand() + self.latex_header = LatexManager._build_latex_header() + latex_end = "\n\\makeatletter\n\\@@end\n" # test the LaTeX setup to ensure a clean startup of the subprocess - latex = subprocess.Popen([texsystem, "-halt-on-error"], + latex = subprocess.Popen([self.texcommand, "-halt-on-error"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True) - stdout, stderr = latex.communicate(latex_header + latex_end) + stdout, stderr = latex.communicate(self.latex_header + latex_end) if latex.returncode != 0: raise LatexError("LaTeX returned an error, probably missing font or error in preamble:\n%s" % stdout) # open LaTeX process - latex = subprocess.Popen([texsystem, "-halt-on-error"], + latex = subprocess.Popen([self.texcommand, "-halt-on-error"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True) - latex.stdin.write(latex_header) + latex.stdin.write(self.latex_header) latex.stdin.flush() # read all lines until our 'pgf_backend_query_start' token appears while not latex.stdout.readline().startswith("*pgf_backend_query_start"): @@ -241,6 +262,8 @@ def __init__(self): self.str_cache = {} def __del__(self): + if rcParams.get("pgf.debug", False): + print "deleting LatexManager" try: self.latex.terminate() self.latex.wait() @@ -270,7 +293,6 @@ def get_width_height_descent(self, text, prop): Get the width, total height and descent for a text typesetted by the current LaTeX environment. """ - if debug: print "obtain metrics for: %s" % text # apply font properties and define textbox prop_cmds = _font_properties_str(prop) @@ -315,8 +337,6 @@ def get_width_height_descent(self, text, prop): class RendererPgf(RendererBase): - latexManager = None - def __init__(self, figure, fh, draw_texts=True): """ Creates a new Pgf renderer that translates any drawing instruction @@ -332,9 +352,8 @@ def __init__(self, figure, fh, draw_texts=True): self.draw_texts = draw_texts self.image_counter = 0 - # create a shared LatexManager - if self.latexManager is None: - RendererPgf.latexManager = LatexManager() + # get LatexManager instance + self.latexManager = LatexManagerFactory.get_latex_manager() def draw_markers(self, gc, marker_path, marker_trans, path, trans, rgbFace=None): writeln(self.fh, r"\begin{pgfscope}") @@ -632,12 +651,6 @@ def print_pgf(self, filename, *args, **kwargs): writeln(fh, r"\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{%fin}{%fin}}" % (w,h)) writeln(fh, r"\pgfusepath{use as bounding box}") - # TODO: Matplotlib does not send Text instances to the renderer as documented. - # This means that we cannot anchor the text elements correctly so that - # they stay aligned when changing the font size later. - # Manually iterating through all text instances of a figure has proven - # to be too much work since matplotlib behaves really weird sometimes. - # -> _render_texts_pgf renderer = RendererPgf(self.figure, fh, draw_texts=True) self.figure.draw(renderer) @@ -653,12 +666,15 @@ def print_pdf(self, filename, *args, **kwargs): w, h = self.figure.get_figwidth(), self.figure.get_figheight() target = os.path.abspath(filename) - tmpdir = tempfile.mkdtemp() - cwd = os.getcwd() + try: + tmpdir = tempfile.mkdtemp() + cwd = os.getcwd() os.chdir(tmpdir) self.print_pgf("figure.pgf") + latex_preamble = get_preamble() + latex_fontspec = get_fontspec() latexcode = r""" \documentclass[12pt]{minimal} \usepackage[paperwidth=%fin, paperheight=%fin, margin=0in]{geometry} @@ -673,11 +689,12 @@ def print_pdf(self, filename, *args, **kwargs): with codecs.open("figure.tex", "wt", "utf-8") as fh: fh.write(latexcode) - cmd = '%s -interaction=nonstopmode "%s" > figure.stdout' % (texsystem, "figure.tex") - exit_status = os.system(cmd) - if exit_status: - shutil.copyfile("figure.stdout", target+".err") - raise RuntimeError("LaTeX was not able to process your file.\nLaTeX stdout saved to %s" % (target+".err")) + texcommand = get_texcommand() + cmdargs = [texcommand, "-interaction=nonstopmode", "-halt-on-error", "figure.tex"] + try: + stdout = subprocess.check_output(cmdargs, universal_newlines=True, stderr=subprocess.STDOUT) + except: + raise RuntimeError("%s was not able to process your file.\n\nFull log:\n%s" % (texcommand, stdout)) shutil.copyfile("figure.pdf", target) finally: os.chdir(cwd) From dab8559a470371c4ad96f9d516791f645439cf90 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Tue, 14 Aug 2012 13:55:06 +0200 Subject: [PATCH 3/8] add tests for backend_pgf --- lib/matplotlib/__init__.py | 1 + .../test_backend_pgf/pgf_pdflatex.pdf | Bin 0 -> 51805 bytes .../test_backend_pgf/pgf_rcupdate1.pdf | Bin 0 -> 9759 bytes .../test_backend_pgf/pgf_rcupdate2.pdf | Bin 0 -> 71479 bytes .../test_backend_pgf/pgf_xelatex.pdf | Bin 0 -> 13407 bytes lib/matplotlib/tests/test_backend_pgf.py | 110 ++++++++++++++++++ 6 files changed, 111 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_pdflatex.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate1.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate2.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_xelatex.pdf create mode 100644 lib/matplotlib/tests/test_backend_pgf.py diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 2737c5237939..5ce802f61685 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -1005,6 +1005,7 @@ def tk_window_focus(): 'matplotlib.tests.test_agg', 'matplotlib.tests.test_axes', 'matplotlib.tests.test_backend_svg', + 'matplotlib.tests.test_backend_pgf', 'matplotlib.tests.test_basic', 'matplotlib.tests.test_cbook', 'matplotlib.tests.test_colorbar', diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_pdflatex.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_pdflatex.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4ffa77797d1ddf3260547ba506d333ae711609bc GIT binary patch literal 51805 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
  • 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 V`=4E7re|cNhbAErmJxye{{RvO(TD&5 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate1.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..955aad2fefd27bb4b50044a76a90b8d93175098e GIT binary patch literal 9759 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate2.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_rcupdate2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e41ec043584c50c75819017f930bd8ed7d51d900 GIT binary patch literal 71479 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%0DQ&pZfW(G%MBw=pL2@wKI^<1(w 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 ZM}2!oSNmTvVPK-?V1*$i6_FK%`5#-0quT%g literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py new file mode 100644 index 000000000000..10993927fe5b --- /dev/null +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -0,0 +1,110 @@ +# -*- encoding: utf-8 -*- + +import os +import shutil +import subprocess +import numpy as np +import matplotlib as mpl +import matplotlib.pyplot as plt +from matplotlib.testing.compare import compare_images, ImageComparisonFailure +from matplotlib.testing.decorators import _image_directories, knownfailureif + +baseline_dir, result_dir = _image_directories(lambda: 'dummy func') + +def run(*args): + try: + subprocess.check_output(args) + return True + except: + return False + +def switch_backend(backend): + import nose + + def switch_backend_decorator(func): + def backend_switcher(*args, **kwargs): + try: + prev_backend = mpl.get_backend() + mpl.rcdefaults() + plt.switch_backend(backend) + result = func(*args, **kwargs) + finally: + plt.switch_backend(prev_backend) + return result + + return nose.tools.make_decorator(func)(backend_switcher) + return switch_backend_decorator + +def compare_figure(fname): + actual = os.path.join(result_dir, fname) + plt.savefig(actual) + + expected = os.path.join(result_dir, "expected_%s" % fname) + shutil.copyfile(os.path.join(baseline_dir, fname), expected) + err = compare_images(expected, actual, tol=1e-4) + if err: + raise ImageComparisonFailure('images not close: %s vs. %s' % (actual, expected)) + +############################################################################### + +def create_figure(): + plt.figure() + x = np.linspace(0, 1, 15) + plt.plot(x, x**2, "b-") + plt.plot(x, 1-x**2, "g>") + plt.plot([0.9], [0.5], "ro", markersize=3) + plt.text(0.9, 0.5, u'unicode (ü, °, µ) and math ($\\mu_i = x_i^2$)', ha='right', fontsize=20) + plt.ylabel(u'sans-serif with math $\\frac{\\sqrt{x}}{y^2}$..', family='sans-serif') + + +# test compiling a figure to pdf with xelatex +@knownfailureif(not run('xelatex', '-v'), msg="xelatex is required for this test") +@switch_backend('pgf') +def test_xelatex(): + rc_xelatex = {'font.family': 'serif', + 'pgf.rcfonts': False,} + mpl.rcParams.update(rc_xelatex) + create_figure() + compare_figure('pgf_xelatex.pdf') + + +# test compiling a figure to pdf with pdflatex +@knownfailureif(not run('pdflatex', '-v'), msg="pdflatex is required for this test") +@switch_backend('pgf') +def test_pdflatex(): + rc_pdflatex = {'font.family': 'serif', + 'pgf.rcfonts': False, + 'pgf.texsystem': 'pdflatex', + 'pgf.preamble': [r'\usepackage[utf8x]{inputenc}', + r'\usepackage[T1]{fontenc}']} + mpl.rcParams.update(rc_pdflatex) + create_figure() + compare_figure('pgf_pdflatex.pdf') + + +# test updating the rc parameters for each figure +@knownfailureif(not run('pdflatex', '-v') or not run('xelatex', '-v'), + msg="xelatex and pdflatex are required for this test") +@switch_backend('pgf') +def test_rcupdate(): + rc_sets = [] + rc_sets.append({'font.family': 'sans-serif', + 'font.size': 30, + 'figure.subplot.left': .2, + 'lines.markersize': 10, + 'pgf.rcfonts': False, + 'pgf.texsystem': 'xelatex'}) + rc_sets.append({'font.family': 'monospace', + 'font.size': 10, + 'figure.subplot.left': .1, + 'lines.markersize': 20, + 'pgf.rcfonts': False, + 'pgf.texsystem': 'pdflatex', + 'pgf.preamble': [r'\usepackage[utf8x]{inputenc}', + r'\usepackage[T1]{fontenc}', + r'\usepackage{sfmath}']}) + + for i, rc_set in enumerate(rc_sets): + mpl.rcParams.update(rc_set) + create_figure() + compare_figure('pgf_rcupdate%d.pdf' % (i+1)) From 59426253e0d5fbc1e83770a9b860a0713138d714 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Tue, 14 Aug 2012 16:28:12 +0200 Subject: [PATCH 4/8] add check for invalid pgf.texsystem values --- lib/matplotlib/rcsetup.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index f31d5ca31f13..224708d2dc00 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -319,6 +319,9 @@ def validate_hinting(s): return s.lower() raise ValueError("hinting should be 'auto', 'native', 'either' or 'none'") +validate_pgf_texsystem = ValidateInStrings('pgf.texsystem', + ['xelatex', 'lualatex', 'pdflatex']) + validate_movie_writer = ValidateInStrings('animation.writer', ['ffmpeg', 'ffmpeg_file', 'mencoder', 'mencoder_file']) @@ -576,7 +579,7 @@ def __call__(self, s): 'pdf.fonttype' : [3, validate_fonttype], # 3 (Type3) or 42 (Truetype) 'pgf.debug' : [False, validate_bool], # output debug information - 'pgf.texsystem' : ['xelatex', str], # choose latex application for creating pdf files (xelatex/lualatex) + 'pgf.texsystem' : ['xelatex', validate_pgf_texsystem], # choose latex application for creating pdf files (xelatex/lualatex) 'pgf.rcfonts' : [True, validate_bool], # use matplotlib rc settings for font configuration 'pgf.preamble' : [[''], validate_stringlist], # provide a custom preamble for the latex process From bdc0414b597cfa0210d44d76efb01bce466dcaae Mon Sep 17 00:00:00 2001 From: pwuertz Date: Wed, 15 Aug 2012 00:26:53 +0200 Subject: [PATCH 5/8] adding more information to the pgf header, removed old draw_text switch --- lib/matplotlib/backends/backend_pgf.py | 50 +++++++++++++++++--------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 3351a56f986c..698eaa47777f 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -337,19 +337,19 @@ def get_width_height_descent(self, text, prop): class RendererPgf(RendererBase): - def __init__(self, figure, fh, draw_texts=True): + def __init__(self, figure, fh): """ - Creates a new Pgf renderer that translates any drawing instruction - into commands to be interpreted in a latex pgfpicture environment. + Creates a new PGF renderer that translates any drawing instruction + into text commands to be interpreted in a latex pgfpicture environment. - If `draw_texts` is False, the draw_text calls are ignored and the - text elements must be rendered in a different way. + Attributes: + * figure: Matplotlib figure to initialize height, width and dpi from. + * fh: File handle for the output of the drawing commands. """ RendererBase.__init__(self) self.dpi = figure.dpi self.fh = fh self.figure = figure - self.draw_texts = draw_texts self.image_counter = 0 # get LatexManager instance @@ -542,8 +542,6 @@ def draw_tex(self, gc, x, y, s, prop, angle, ismath="TeX!"): self.draw_text(gc, x, y, s, prop, angle, ismath) def draw_text(self, gc, x, y, s, prop, angle, ismath=False): - if not self.draw_texts: return - s = common_texification(s) # apply font properties @@ -631,27 +629,47 @@ def print_pgf(self, filename, *args, **kwargs): rendered in latex documents. """ - header_text = r"""%% Pgf figure exported from matplotlib. + header_text = r"""%% Creator: Matplotlib, PGF backend %% -%% To include the image in your LaTeX document, write +%% To include the figure in your LaTeX document, write %% \input{.pgf} %% -%% Make sure to load the required packages in your main document +%% Make sure the required packages are loaded in your preamble %% \usepackage{pgf} -%""" - # figure size in units of in +%% +%% Figures using additional raster images can only be included by \input if +%% they are in the same directory as the main LaTeX file. For loading figures +%% from other directories you can use the `import` package +%% \usepackage{import} +%% and then include the figures with +%% \import{}{.pgf} +%% +""" + + # append the preamble used by the backend as a comment for debugging + header_info_preamble = ["%% Matplotlib used the following preamble"] + for line in get_preamble().splitlines(): + header_info_preamble.append("%% " + line) + for line in get_fontspec().splitlines(): + header_info_preamble.append("%% " + line) + header_info_preamble.append("%%") + header_info_preamble = "\n".join(header_info_preamble) + + # get figure size in inch w, h = self.figure.get_figwidth(), self.figure.get_figheight() # start a pgfpicture environment and set a bounding box fh = codecs.open(filename, "wt", encoding="utf-8") - writeln(fh, header_text) + fh.write(header_text) + fh.write(header_info_preamble) + fh.write("\n") writeln(fh, r"\begingroup") writeln(fh, r"\makeatletter") writeln(fh, r"\begin{pgfpicture}") writeln(fh, r"\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{%fin}{%fin}}" % (w,h)) writeln(fh, r"\pgfusepath{use as bounding box}") - renderer = RendererPgf(self.figure, fh, draw_texts=True) + renderer = RendererPgf(self.figure, fh) self.figure.draw(renderer) # end the pgfpicture environment @@ -766,7 +784,7 @@ def _render_texts_pgf(self, fh): writeln(fh, ur"\pgftext[%s,x=%fin,y=%fin,rotate=%f]{%s}" % (align,x,y,angle,s)) def get_renderer(self): - return RendererPgf(self.figure, None, draw_texts=False) + return RendererPgf(self.figure, None) class FigureManagerPgf(FigureManagerBase): def __init__(self, *args): From 79388001d3b28124cac60fd5708b3eff9ba4f7d2 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Wed, 15 Aug 2012 19:21:38 +0200 Subject: [PATCH 6/8] fix problems with FT2Font, file modes and file locks on Windows --- lib/matplotlib/backends/backend_pgf.py | 52 +++++++++++++++----------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 698eaa47777f..5684522efdc6 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -25,9 +25,11 @@ system_fonts = [] for f in font_manager.findSystemFonts(): try: - system_fonts.append(FT2Font(f).family_name) + system_fonts.append(FT2Font(str(f).family_name)) except RuntimeError: - pass + pass # some fonts on osx are known to fail, print? + except: + pass # unknown error, skip this font # get chosen TeX system from rc def get_texcommand(): @@ -659,23 +661,23 @@ def print_pgf(self, filename, *args, **kwargs): w, h = self.figure.get_figwidth(), self.figure.get_figheight() # start a pgfpicture environment and set a bounding box - fh = codecs.open(filename, "wt", encoding="utf-8") - fh.write(header_text) - fh.write(header_info_preamble) - fh.write("\n") - writeln(fh, r"\begingroup") - writeln(fh, r"\makeatletter") - writeln(fh, r"\begin{pgfpicture}") - writeln(fh, r"\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{%fin}{%fin}}" % (w,h)) - writeln(fh, r"\pgfusepath{use as bounding box}") - - renderer = RendererPgf(self.figure, fh) - self.figure.draw(renderer) - - # end the pgfpicture environment - writeln(fh, r"\end{pgfpicture}") - writeln(fh, r"\makeatother") - writeln(fh, r"\endgroup") + with codecs.open(filename, "w", encoding="utf-8") as fh: + fh.write(header_text) + fh.write(header_info_preamble) + fh.write("\n") + writeln(fh, r"\begingroup") + writeln(fh, r"\makeatletter") + writeln(fh, r"\begin{pgfpicture}") + writeln(fh, r"\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{%fin}{%fin}}" % (w,h)) + writeln(fh, r"\pgfusepath{use as bounding box}") + + renderer = RendererPgf(self.figure, fh) + self.figure.draw(renderer) + + # end the pgfpicture environment + writeln(fh, r"\end{pgfpicture}") + writeln(fh, r"\makeatother") + writeln(fh, r"\endgroup") def print_pdf(self, filename, *args, **kwargs): """ @@ -704,7 +706,7 @@ def print_pdf(self, filename, *args, **kwargs): \centering \input{figure.pgf} \end{document}""" % (w, h, latex_preamble, latex_fontspec) - with codecs.open("figure.tex", "wt", "utf-8") as fh: + with codecs.open("figure.tex", "w", "utf-8") as fh: fh.write(latexcode) texcommand = get_texcommand() @@ -716,7 +718,10 @@ def print_pdf(self, filename, *args, **kwargs): shutil.copyfile("figure.pdf", target) finally: os.chdir(cwd) - shutil.rmtree(tmpdir) + try: + shutil.rmtree(tmpdir) + except: + sys.stderr.write("could not delete tmp directory %s\n" % tmpdir) def print_png(self, filename, *args, **kwargs): """ @@ -735,7 +740,10 @@ def print_png(self, filename, *args, **kwargs): shutil.copyfile("figure.png", target) finally: os.chdir(cwd) - shutil.rmtree(tmpdir) + try: + shutil.rmtree(tmpdir) + except: + sys.stderr.write("could not delete tmp directory %s\n" % tmpdir) def _render_texts_pgf(self, fh): # TODO: currently unused code path From 07e54642ff6b833194fb51b56cf195de71cb4ecd Mon Sep 17 00:00:00 2001 From: pwuertz Date: Sun, 12 Aug 2012 15:43:42 +0200 Subject: [PATCH 7/8] add documentation for pgf backend, update what's new --- doc/users/index_text.rst | 1 + doc/users/pgf.rst | 128 ++++++++++++++++++ doc/users/plotting/examples/pgf_fonts.pdf | Bin 0 -> 10673 bytes doc/users/plotting/examples/pgf_fonts.png | Bin 0 -> 15328 bytes doc/users/plotting/examples/pgf_fonts.py | 23 ++++ doc/users/plotting/examples/pgf_preamble.pdf | Bin 0 -> 15283 bytes doc/users/plotting/examples/pgf_preamble.png | Bin 0 -> 17082 bytes doc/users/plotting/examples/pgf_preamble.py | 28 ++++ doc/users/plotting/examples/pgf_texsystem.pdf | Bin 0 -> 19196 bytes doc/users/plotting/examples/pgf_texsystem.png | Bin 0 -> 11634 bytes doc/users/plotting/examples/pgf_texsystem.py | 25 ++++ doc/users/whats_new.rst | 9 ++ 12 files changed, 214 insertions(+) create mode 100644 doc/users/pgf.rst create mode 100644 doc/users/plotting/examples/pgf_fonts.pdf create mode 100644 doc/users/plotting/examples/pgf_fonts.png create mode 100644 doc/users/plotting/examples/pgf_fonts.py create mode 100644 doc/users/plotting/examples/pgf_preamble.pdf create mode 100644 doc/users/plotting/examples/pgf_preamble.png create mode 100644 doc/users/plotting/examples/pgf_preamble.py create mode 100644 doc/users/plotting/examples/pgf_texsystem.pdf create mode 100644 doc/users/plotting/examples/pgf_texsystem.png create mode 100644 doc/users/plotting/examples/pgf_texsystem.py diff --git a/doc/users/index_text.rst b/doc/users/index_text.rst index bc4459803f43..bba1f330299f 100644 --- a/doc/users/index_text.rst +++ b/doc/users/index_text.rst @@ -8,6 +8,7 @@ Working with text text_intro.rst text_props.rst mathtext.rst + pgf.rst usetex.rst annotations_intro.rst diff --git a/doc/users/pgf.rst b/doc/users/pgf.rst new file mode 100644 index 000000000000..fd5c3d341a3d --- /dev/null +++ b/doc/users/pgf.rst @@ -0,0 +1,128 @@ +.. _pgf-tutorial: + +********************************* +Typesetting With XeLaTeX/LuaLaTeX +********************************* + +Using the ``pgf`` backend, matplotlib can export figures as pgf drawing commands +that can be processed with pdflatex, xelatex or lualatex. XeLaTeX and LuaLaTeX +have full unicode support and can use any fonts installed in the operating +system, making use of advanced typographic features of OpenType, AAT and +Graphite. Pgf pictures created by ``plt.savefig('figure.pgf')`` can be +embedded as raw commands in LaTeX documents. Figures can also be directly +compiled and saved to PDF with ``plt.savefig('figure.pdf')``. + +Matplotlib's pgf support requires a working LaTeX_ installation (such as +TeXLive_), preferably including XeLaTeX or LuaLaTeX. If pdftocairo or +ghostscript is installed, figures can optionally be saved to PNG images. +The executables for all applications must be located on your :envvar:`PATH`. + +Rc parameters that control the behavior of the pgf backend: + + ================= ===================================================== + Parameter Documentation + ================= ===================================================== + pgf.preamble Lines to be included in the LaTeX preamble + pgf.rcfonts Setup fonts from rc params using the fontspec package + pgf.texsystem Either "xelatex", "lualatex" or "pdflatex" + ================= ===================================================== + +.. note:: + + TeX defines a set of secial characters, such as:: + + # $ % & ~ _ ^ \ { } + + Generally, these characters must be escaped correctly. For convenience, + some characters (_,^,%) are automatically escaped outside of math + environments. + +.. _pgf-rcfonts: + +Font specification +================== + +The fonts used for obtaining the size of text elements or when compiling +figures to PDF are usually defined in the matplotlib rc parameters. You can +also use the LaTeX default Computer Modern fonts by clearing the lists for +``font.serif``, ``font.sans-serif`` or ``font.monospace``. Please note that +the glyph coverage of these fonts is very limited. For extended unicode support +the `Computer Modern Unicode `_ +fonts "CMU Serif", "CMU Sans Serif" are recommended. + +.. literalinclude:: plotting/examples/pgf_fonts.py + :end-before: plt.savefig + +.. image:: plotting/examples/pgf_fonts.* + + +.. _pgf-preamble: + +Custom preamble +=============== + +Full customization is possible by adding your own commands to the preamble. +Use the ``pgf.preamble`` parameter if you want to configure the math fonts or +for loading additional packages. Also, if you want to do the font configuration +yourself instead of using the fonts specified in the rc parameters, make sure +to disable ``pgf.rcfonts``. + +.. htmlonly:: + + .. literalinclude:: plotting/examples/pgf_preamble.py + :end-before: plt.savefig + +.. latexonly:: + + .. literalinclude:: plotting/examples/pgf_preamble.py + :end-before: import matplotlib.pyplot as plt + +.. image:: plotting/examples/pgf_preamble.* + + +.. _pgf-texsystem: + +Choosing the TeX system +======================= + +The TeX system to be used by matplotlib is chosen by the ``pgf.texsystem`` +parameter. Possible values are ``'xelatex'`` (default), ``'lualatex'`` and +``'pdflatex'``. Please note that when selecting pdflatex the fonts and +unicode handling must be configured in the preamble. + +.. literalinclude:: plotting/examples/pgf_texsystem.py + :end-before: plt.savefig + +.. image:: plotting/examples/pgf_texsystem.* + +.. _pgf-hangups: + +Possible hangups +================ + +* On Windows, the :envvar:`PATH` environment variable may need to be modified + to include the directories containing the latex, dvipng and ghostscript + executables. See :ref:`environment-variables` and + :ref:`setting-windows-environment-variables` for details. + +* Sometimes the font rendering in figures that are saved to png images is + very bad. This happens when the pdftocairo tool is not available and + ghostscript is used for the pdf to png conversion. + +.. _pgf-troubleshooting: + +Troubleshooting +=============== + +* Make sure what you are trying to do is possible in a LaTeX document, + that your LaTeX syntax is valid and that you are using raw strings + if necessary to avoid unintended escape sequences. + +* The ``pgf.preamble`` rc setting provides lots of flexibility, and lots of + ways to cause problems. When experiencing problems, try to minimalize or + disable the custom preamble before reporting problems. + +* If you still need help, please see :ref:`reporting-problems` + +.. _LaTeX: http://www.tug.org +.. _TeXLive: http://www.tug.org/texlive/ diff --git a/doc/users/plotting/examples/pgf_fonts.pdf b/doc/users/plotting/examples/pgf_fonts.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7c5784f6200a4f332a46be1a47b81bf1c6ea1d79 GIT binary patch literal 10673 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 IiV|@D1JXscq5uE@ literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_fonts.png b/doc/users/plotting/examples/pgf_fonts.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa4e360b5665464599971bb07e0ca44da982d4a GIT binary patch literal 15328 zcmZ{L1z1&C)HWf4NQsnmNlPfwp-6Xw($bP5APq_hNGKp6(%p^Z1z`}RyHh%p?)n$b zeDmdhpJ$W-@8z7m_gd?%6Qrytg^fvyiG+lNEh8A7xF7r zDKX@+A8g+6KR4{9pT0su!Zo`34>?;j%MuBR8c9a{vAWCnuc_C%1g|edw}`vg*!mx{ zHPQxC5R~|AJvfk4e@@9|-b-&S&%N~56Si-)3yu0LiO*)%^qG0P}CF{V&_F^m*$SqvK4Sjmp|_Ghj!MkG1vvVHV^dtxlXle{eWLEpnD z;-jO7_U@HvZ)|SPG>T+;!*x1-$veNj4NnT1B8X7t~JD1rVA03g9k?kIP z@bZ3TR?Bp8b5oVSLF34MBKmu>Ix->Qe5B!`!cs24sI#;4=g*&PY-~u<^!R#uQ>CT% zaRQ%wxa-&3$28g*8xb+Pu`#((`}FD4mX;RZ>)6j3hlYkUG&G6~8WfH0`t4D!6*N## zQX(w+Qpd-~&1UZ1ySHf1_u|EiQvRBn8h?NP(9h?)NtgLWMPDl`GwpASMQJ)a^8_}J z)i_y6W%j`h7#kZ43)jO%n2`y&AIM8cNO*-+RysR5Ii;C-d3oUniF@G$HuntN9(Rx@su1KPnsZ{P9H!CTT0)3R`C%m_B_;RPeehB{NlEcY zF?Dq0lW=g*OG>I-Z!azV(tQ>pm8PhusFWyVWFYE&@kRJxu(vnD?!k*eCiWN|4ULv* z*7i(wMn=YQX+OM0dLlYL5(L6!4CrR>hr z8^$%ptvG8MhrbBXg55Hza#=90&2ASPp^6+K@$+L~+lU12xYRkb87y{%ypyK?I5;@C zv*Q3a!yYqH{w<1GEdZCQ&^jg-gGN~2mH%Ml8^RMWsQ3k;kZ@m-K}cxB(a(^{$;r{t zQJhniOVSW!tt3t(6dO*lcRNfhZ^LolzD+K~!Nskro&TkGrkMpN#|=LPPxQ>kxHY*b zyg;YKk@@7nv(_pd%4U`3{(}-5vZkiqA}SA$tsyOo-)wXlDo|~-chOLgQ`3x0{pqB( zelS|x$6C3Unl*DeR*@O6aMSQWgbrx3N zBq|(oAMv*udBtuI^wdwcIP^gIj=4&FI9pcM70 z3ky?pb318|W?k-zmpVnJNvFWPIk$f5KwX!`s9ES&@{)JO*~)UTqr+;kJ^J9_07=E{Ag=D_=R!PH|U0kr=T6R2V+KGnR!pU z{!GEC#T-;xeJvvg9P0NQ)($>}ne>Ml=@=j0-2s|?|FwoF=NJrP) z(IIz3t{Pt~sy&o!wETuvq2XT`*U+1X2rqS(3gRt|2?j!lITXL}eTa-SwzA4AoR;ri z+;+ji!6_^(3?aIApO@F5()#HD&++l`z@ZUe0+@)WDm?)^cW}f#M4{SR0524c6Uu>4$co}loS*~gMyA{dZm4ReI;mb z3Fc&Fp;Ob*`8tz|VaV~|O?P4YUZ>$9;sDc8U zKNIO7?twX+N5w>;oLpJl8M^eC+hH6>b^}8(XL5vl6tE)$QPr5>LUmzJ0wuMTn;H3XA)Wx?}YP0{bT? zCl4kB$nvwYc-;@I$3rnz6EHDnmjlzJQc~VLw5sWPbc7?0+fL_KuI9{BX)EEvS6;DQ z>{Z7y~h#+CxcScJy0f`lvdhwtE)onY4T) zxRi~}XMXc_ZMYS)itD!LzbeoZn9LL=p11lmow_u@v{_OAVMe;F<#T7Yf92-0COOtx@<_!UPKPopj zH8;Wh_irs|s?6*L-@D@VbZ;ewNxGB5l%=Dit2|IQGMe*6$F;V$mOMPt36NPf^lq53L*Y~)i;u2$(NSu~jz)!Ds>xhepUEGBJ zduUp=GO3LQ%wI9Fx6;#yeo}PCCTsP|v>G6ZUemxw@(~^^uJNz|4OhuIxAAh=>X#u(?d$ngDiyuZqK1G#^y|2p*^bJj8tILt+H41hhk&RWf`eskZ3|;! zVw?}F{WpHLgnat+X~Q>rYHA9KGfBjAZE5LKWMo=K#zVKg6+l%RV`b*MOIoJz#Q<@xiU z$&Y<;Cb=fSI&D>HsfC2jnsG%+9QCzw^LsWo4!F^TUwV`5%;gOdq77`5#(x0Ff3}Q81%ur`ys;Tc-P1-{5=*a#!R(T8WJGKTSP=~4&y!PcVQ-xQlwd0S(OpS z)wEI-6()ZCn3|GeWN3&-Ms^zRefC68?|icQ)#b@Z12pt%-9lxih27&A4g)w(J>A{< zwa)jFdZ-?lVY#~?j9bGPl@jw|k6-~sL_`1+9-q!!B20dKl!;{M3zLWve@USyIhtQb^Ujyg-cv6-3k*6cUQq=ye4Se5rH z#Pe{;`kcRN@93Zsa-k*)S)5_v;P5`#V}2t2b^mm;^ZgyHMs1x3j~~l>3j3#*z`uVe zs{lpvOS_wlPLV=p>B z+6Gc!*ja_F4s8EKOHGZ43*tcd1YB>)bI|cj%Xz$fKW#{tE#_El9!ac3vWF;P7X=4o4C4`!ND)0-d?Jz_!A6w@3wsV_RY^W zfja$Fkoagl*^|KMEtsQYbHfFcI=2w<87dN(Y^Ym@hoW9*M+t(jOUufjgM?9uDstUT zA5hnLOpO#CSYfq&c|rAi^0D|eVfpkjr$=v0gTz06{`^c||M$YeUyBa$Jjo~>evVZ; z4o4?H8<7Wx`W_vH^+lt70)WpbANy#+C!$+L{Tdb3H8dC`*PB?;+@_gmrX+3I>*{aa zLRL`7*P9??ZBhe-SgvNqP-*i-n*`9%Qdj*~S|Na;ZB}xM-o=Z-1;T@?wJt7(KbIQ;z3R$HgJ3tNctx$!OHK--*rZsr_jK7Ery)$`PMG zkDs3&Lf=0-JCj#XAgc)azfq^r-SiJlVzAaLDx6rF1#hz$PxjNY_ug{Xcwc$}pFOy> z4Gr&UvEgG~UEQ>w8_!EdhleZE)1mM^J3igBR&f`5C;t!XEH5v%rI?)ROMi52HN~>dcj1L zJTh(;q#9aUS}H0Z2r>GGhp#K^>nqaGr7Q5-HBFH9^^tHQAtN8Hv2q{M>-P@~WT&L0 zpHTL*|;l82Zt zpF6TddmzGP`#DU_4<9}#%+$EHU4mTg4Ha&hxq??-?(*67Q zE!-ofeXh#+CND1uDX^HJAoboV-WPPCiGr`Y8ygLOe7uVUEIR7rN7_qhb-EQVG`ze- z1fS~ZVK+84y={_p<8h`w>rI*6HL?sE)z+;RLkndN> z4PNKeT3OTo2{@_#1)N5Ag*C45ralq3v$Nz277ahfdj>h)I}1P1sXUaQK3!d0Z0VkJ zsGj(0*P17=pO}~kVnbzRB|s+NJq_+~__arWL^5iuj_Ic}=4Lnko;uo=Qr843tglb< zFgR80nL-*I)1vHbi-UV2Nj=NEVS|Y_aJ-m|TjE=kqvN?1mFyg&E>e$OY-~S9JH}A_{#_Gu z<8@8HK;MpxH(P#CVMX)9_uwe3SnRD!q0Zfao}e!U?cTPfC4__<10AQa3wyKfi3*KP zTHcypU7e-nj>*CTHT|{fYHh?92PTk)q;*J^Oi`R(zLECJX3E7-0?8;fHsHEn!1E1l z=npB#&>s|kXP||$va+I~d;{3E2?x9hE_&)%Zl zM4TV!98_qtc^yu@?&#>4@xJtA7sjusU%|hY`0FQBQfg!lWmv9W6J z%ZrWms;a8e(o$jfgWlhdEu$ia)ipqEAm{Tbz0aoq-f6uzoj{SJ)cM!5vGuoaQ3NnD zxKAWuK=PA^0m3phU5uc40!%bNHTAizZ8xHWvlE~l=FOYGHa12{S&(3a0hsIR>f$F? zeD;hqrX$*$K(36+NZ9*A=)r@s@^Z(G(Gr+~FjGDnsJpqu^?qxVpifL0cOQL>?XWXMC*!dm1-ef` zPVT%p-GvzHmqOC5bLneue{sCCD0*>}78=^+cjLB62q1o_BmI)+{_ve(LRL~z($R1i zSJ$ot!NZllG$72k85P-BSUzr^<)~#rgVzG^Y2K5V@+9zkOG^pG?Cx<`SQsctu)+u1 z+pAsf&MLQrgba<4q0c^j`-PlbX!H(0$N_NaGaw-X)>M#_3keQJp~l1TI^Q3mc@n^h zWo&L96B*geBjT{o_W7X|;`DcIdwY9VJa3uOzKt`i@#5B8^G#xQKyz&D?1@6I4l*(~ ze3FxsfpU}$v97JJBX5jXu-?Cq-w4;?@ak2PsCQyS1ob+;r8$q~59kp<9xl%}y{|Sp z$?Ie_l2Pe%WlmAiOr?#Ey}iA(blc&Kw*g?x^3b%j`Th*K=wiP{_;BRO8mD#869H@j zkD4kq?Fgd~Bnh~MaSb>Cz%yeK24?0TZEeyA%T#>!fXRPB<1-{#f>L}Eh-13^b?26p zRBJ~JM_Cb2K0x0lAwTW;n3qykURt&U6Ye0(%gWy8 z;Zc;6GiHP{0gFWva164_a%Y^Hnp!ibypd4~w7`6XToEn7{f?Lin{~}AYxe;S-o2Yp zb3i8*#wQ@a^O+ex$fPJsDGA|q?sl;Mh5uCm)*adp(!jft!Wf7`;`PMht>8+at!fqO z8ZnN5y6buB9ALE6op5s&Aa3cWSIgb|J3G$}s6@R$S$dlrRD9%th>TPd6d4`wTe&zt z1!e+A@YO=wEo0+(w3|e2VbLZY9v<&QLytWW@$nNN2nq=c*N%AK0_s>|+zO{_d~ECv z{6$Jy+Eamf;|8px=gA&2r%{t10QfJ$?wSWV(8xioKqa|vB5i5OELavD?r}612zLx; zz1m?hI3Ypr*|X2qDsaw?Z=$WOu6n}Zx>7Qi8{pu;0YHEz0c0UBHy2b6##3pSe^3lk z^=|SLz}dbhV)HpHysNEs2L$u@@f&p(Cue5_RBn*~LtA^(a#C|Urg^vFt{H|u9){ub z{v1zxM@M-@MVN@c-=LzKC~+^_^KH<`Sz6}6{846#vg=7KDJd_HlFhg}-7yjI@$mKPVpfA+-2M#V85JT+f zSd+|1C;9$ecsTF<`{Pg?P?%|HX=7zu9wOdt5j3xsI)lQ)W9;m#tveCQu1*~q19z<_ zt3F(|b2OawTgStB1bV4HypeQymi36*kQlZ?y4_JPQj#!7E$Kh_BlVaRG)U7+)Y_NI z>KcJK6f6b?0$f}#fmxTzL^JT-sl50AYP^=Frkjh)*-i(?#tr6!2{dYux187b@80!4 zho$n5kJnLG9|Ri!df@ptbgH%@D^R|73|e50f%PEbd4fg8(>XG7c);3lelX#_SwAv= zI13VSQuvMAz-wj=g$}a&&0j+w2Epz1>(}1imoR2-+-AU{6ykgE;K9R( zPC%uLYW>u*6z?{adK~YVO}xMJATv3+v9Ist5-TXGr5p^VHH9*1)(LJpIy%m!V*>jb z85!g_QWvzPg@v}TDY)-CU^$123@(qhjdRp%>}C)Esr_#fSDwwe=CSkBMR8bS;B{k!|3x7ul4Q&}1B zZdGB!UxQ`|Ctz7vSy^@T+<~`2Rn|%*xaFt|xb0aW&3GOr6ciKyg@B{_{{4H$To}HcY2Wokm1**{eR8;Ofd@H=-pTHlNWK!67vY6b=d*zY{8A}Eo~4>2f(`lgvm=169v zoD6)iD!C0iXUDrw0ELiB^3t3a>zlV{gO zQ#S1Q)l|z!Pd5Q;&hzwug456kj6T?HQa$BVIeEJr#djHkd4b`GTSk^ZumXSl$JL3lkq?cY%V}EwgxA_V_-xQ%&;rOBpb%J zx62-o(&@Qwmb32LByn42DAp$?Ql6TAntGwHr)M+hn}}bSnwpxCvA;xRg!>G5v(vMx zwZ4sKFxdd>=seYu^Bnj+uI6j^SdRh)wZt5kQmC=c^8bCCMMwv!4Yw|w0SUeIx<);;i(v$x-Zb~qYB4`hqV z>u3%DR#|DOuAbi2L=2VWy0xgT`Q62pOF#fCu=(tKQ(m9a-_Nl}MIOrhII|~7)O<4r z)S{LO_NTXt|B%qE_uDuPD-1^(Q)=ys2yVU z^W!g99`jUBSNzt2B>29Efk{+|6U@D9M*S2j_Za%oe$I1Q5iux=YYtyx`(=^K0-@;V zIVe<;k|H3YrA3L0Q}4YJPQ{V0EU))u=)}Z>BcNPcS{@zEPiz1A*~0#Rst|t|ql`>_ zIjs<|mA3Vq0#E+1$R70Yz&}iIo=*l>Tx(6HH81DebUla--WNeFA=|q>B!Zt(ul(;+ zpLW@easTsE6%}MHEf?20jUP-`-|x@;`P_OYY}W8y%fE^Pd>=s@EvunZMcc^v-oq$W zGBTZ)iODC4DvT1X*>H%(#VvJ2y`L_yDxbo9a#=cjlWTLVg*TyKgvKCw&8AP5M>EX!}0U%i$A zKbIrk0Y%tx5yCX(_z>lHPX~`86d4r{?-9_#lvBx|CK#}hx4}(-lakyI{eKgY>FrtsER0A-z= z^vW$hR97DZR{dQ0qo)TK6I1mA9UcbLUVBjra!LvZdXpSIH(uf%H_DqwA{@X%F#MaG z*`zYMp1)vJ{4)C0E{S%C^}oAY-tAG$FmgoQ_Lyuce~Zz6%Te3fmv9p>>;5ZKf%{$L zo`-?QwuG&%EtnEnl%cX2{V)$cNdKi+dUxxO%HU`K-df6&Z_Ca7_~4X##5pk0*xd`o z^lt)TV{v)8EE4J;2@(lR`BQx%#9Q0QR}$Xb#`{5a;Jwo587e{IfL#}s+tvo-|UYTsaXF6NZ~l;8JX{3E|d=od`I#0tzJR3PvG-oXIR z3VUfO`1i06cB4KTd4?9!Dm3ZmE0104+X{5R&g|=38No#$Kn=FAQd7T*h!8}?zAMmq zxlMZ=yXg(8{i|ldO=WeART4-3>_B6?XP<@cfH!~Ru|DM|4k&7j43&PO0N1!jdb-Lw zA=ylm4dFeafuPU^K=>qG12&?>c<$%hfa~HCb4v=)JK+tfNdK2Oo6COHPi*jl^l|(Q zN>Jz|soBH6zdU%v#l^+W&W;WG6sGADt+m>(xhxx#L8$1;ngJ~#C0@ec-=}2n$phSk zmaBgMV?Wa>=i=gM8T#qL-0>@q^M^u0oGzRa8H~muC(7hZp&xOS|3hd+?)U_%O7D}3 zC=mj7^Mn-l}2B7F)lgi4JFcgLpJw5$9aayR&57H*Kwm8&K%^Vy(> z%a@I%B_3d};Mj0*bMGDenn3zFKM!Ev&dyHMX>Aa6YDozRWF|JY$ujeBFndf)=mVQ! zAxlb1WE2$6d%Q2Ma6)o2H5C<=a~xp9(}Q1;8Zj2mgbD{lb4y+E<{%&1P1ivgN{Ndj zVPIjYtEuT!+0TIw2Iy6%(liZ3Fl}IdpJHOZmgDuyU$+j@W&=Dk1D*!BRyr@#3=A4< zCMsuVXCopa0NWwJ(6J-~gar`!{sOj%2`7*v3k%Nc*E_=~0j`nN&Kk`#K*l^gJfIeVxU8b4HZV9yezx{kWlG9iwn~~w5$FW$I;CI> zu;y8eM_K}-{KCg2BH{(C7L3Nk+FC)M*jN(Ea9|n-0LyJ`el<0TIS(n+ek-gQ^N$!g zQrXAeX$bvSQAsprt`BGy67885f6v^SwE6Yb%*N z_l!~B@B8=frR%GJEp^!s0S*8cK*Rxl0bOi#1Zro;?uQbOySrK$T$wc>hM=Gzh++vi zu0&K+ILXUn`F#BN5jO7PWW5N0`PCab>;|z93e1Sb#$VZ%-~GSSTb@rg^dPRp#MD?~ z%+dPtVD-tH)$5Y)NmQULh(b(X(c}LBMt6C(t8{DzbpcdwrBQ?1hKQ2V7DT+w&7{~^ z7m%2Ie0*RgDv2DMY);o-QCmQAqw9CzcNXO5t%_OPer~{l9m=36=h;**r-2TR9NVBvX`UH z78Vj>RY`X5o*&OkH9N=Vfh%Kg3M;>$po^%|s+`|$vg#HA0eyTK*sUxY9O3sYHa5fE z4`*k6I%2q9F-T;%Q^scJN{Wl;KP}6wsTm&}RA(Y!e_EOjv}?I131}CTgTb`xa>5^5 zmI<2s`bg2{Xh|AqmA}R-fZAO7m5`|bc@og@n3#EVbTk}7;MY%VZGVG|1Tt1BNHe0M z4VifsOSJ|6%W5FfM<3&&qKfsYFB}{Ka%IuBkIvQ*Rr!O z&ePpPOA^`ht>H?axpT(8vKt^kZ3W0=`U+Cdj*AJnb2$X=HVp%^}NLT0+#M7yYhOz91;A9NDMxvUUh~+ zSXel~2sFr)^R*@^Xx4JCQ6eS(i8nDJQIsBC^z~8aR6lO+zIc4*kd#@ zYLNk)2f%dE#=DArjdJK#Mxtv{p`cxxhBvDaj=AeY6j~{;m<`5%f(9zTkz$OC$l8UOThE|X) zB_-;~jn!()@-BgWq_gvLK!IM%-3c2T8*qqWwbbO}HMB8sakpGXYl%HXN=u=ov)yCn z^mBBlP|nh){g9rS2`yESpZ}pdnLS65T2iDhAUH~#d-q&i3>Rfd$Ogis-u17x3+w|X zgveg9O|SYt$Q%oMZapMJZhNg$geHAC8GW&y@E><+WroVj>&jhv9jl13dL#RtGezS&aCOwPu*b?c9Bcr}wTBV=!p2EUx2{fSaSqM}mu z8kfpj9xe37>b;doi_;R+x%0D#PXTux;E~C-@ZCsBQ%Q{-f3`7=ZDqA}JiCoY7Q(8< z6o@Y-l_rk-@FCncWR_Od0OgdK8(GPz(13lRf+UD{0nv%4H~vQE1?XZ|z~a9l^Tfp2 zZ6=nhOe^LeBtEK=|NHmWo_K>70N^&OOqGM`^xS)s4b7bI&rr9>6r2sl#zt!h|Ap9( z!&UD3)j5+AhO~f!4E_uZ@gH4XpgH#2s>a-BVQHV3a6dcR2C@kL3#(S)7hXI4uVHQf z;O&)>@as*t#irRHP2sE0Ml>-#{wXR7QbcxRr7hFbh|}-1%r|r@XMajyk-zgnBE?X` za4q9*A5J#UyN(hIeMXAPvmB%q$;C?KD~)QTtEgJH8fMGOm&KKm(ikGge%D{(ixCX{ z{B>BLa$UH&jvPbO3Nkd}5;SzaSHD_d#X^0Xbnk!T^!7`0UhdfinQPZ(yD8*9gMHH( zA4vJq<~?32w^SPDaPsp1kw=pNAPjNMoVL{_+I{>RI229AM)t3K(8sSoZf&!?+NZ%rc^#Sg`sPM zuVqLHgWzBX;DEA0!i6$Y)Nm%Dgt1y-S+0`c28v0Td|D~#UMatVRj=GX=$-x)!{_~b zEYq9AW#)Jo5C!}7j8Aa>z~+l+IJ24s2d!US7u7zzX~U%K;flZ5T&_mmRhw`n@__{K z&Y3GAA;_nu{x%cEhJWL6GP3dCei2`jBz1BgbL6SnnVBuk&%;dZs)X70($TTJv{W@f zbmPZu7njB+6a+%Mj)b3|&jqi&@1dCVrgWM`_4WGv|6jyxd??(rr>Awq02oGV7=TD2 zH@~Uc6#2k5zX-~VP=S4$;be5M660V}SXfy6i3N62s3&M8cx2zDAKs3p<0<;$UHaKT zD*OKm&wI@vIGSjy8xjQm{x{_6>i+`IQ@F>8z%z|vwtxB9<{l&{62t!Ba~lPyus+R) zSNSjF)~3JnUy=^@mwK{-x2}rJ=2pnd6}{yKoH`wZ?Ll*I)gBP+1?xzySQa z8iD^nEdkF5&@i*=4#Kj+}-L@Ke{-^H^ z)A%`}+8E@RUs+ZNnRpPQzwV56%6nY!ONNO%a`V`IpKry(5TFaR9W8!*<16~#A#O1k z>n~cfp1E@e(K@XWTBfC@mO8HXXNEJ#{2Q6jZa|cwH|1rQZ)<;Ie_WsXNTsNzo!G$R z7CwG|n0|#b_Zl1>(3qEZrzR&e<>P*?u8tvi6k1x1huP#~eLCf@q0fIqb#du!7RR8O zx;=mbk|XGW;JBAWJ}=P*vymRZ-jaZgansbCMVK^=ht3skf<5-I7Vw;9I%W3 z{Yx>Edh85}rn42#t%gd&-}@y{=;|sPgl99QXY@UC5tCNhl7xFGGNq#Q;$>a+&o$x(iV z^+DGD>yHF$B;a;i$cA#X(y?LJ`nhwZ6Wk=m@x-J#6w-nRbL=v%zJ0)riMBS#YjYd? zn58xqCZ5J})QajF$&oPu8+(8J@45T>P8!L8oyT>x7}0aP*qvnZ(^Yfuf2-RZ{&v5URygh zG4c22rrq@9e4hZnCgwrz?jh?ZX?jvYXKPK(;rQ#hY1feek6#&v8|wz%=lc+QcZ)Pj zn9PGTF$dzPsikEx-VRX>moq`hwhdM+xqzcZYZyf&gM!;`_iM8v0e)qyW>CmShK5Rt z0Oc?$e5U^(UGvYiv@GwMT5WG_fhVLMkRba_-|51u1rr0qf*Bp5nJmB%%EHH@{>_X+ zVtYtJQc}d@s5nw8kpeQ<(SAceN>q!r63DZE{(KIC^%&{qWHst6n9O=4OcFJNcT1iX z8@>q-$2~onxxDxa*3A74_29kSJcQ3zyO}WHM?9ej+hl>v^n|x*Vg^=Q7FqkU{7&oL zuL%HtUGdxk>W!k@ot+(atSDN&HGCKXU~AZojqut|#)^6){{A>Qi0%9NT?1tb=lH;> z(>R`xoG|xjwy%4GkoCWZtn)h1pE^0@6O6>YxzEiVHHF^fg^P`a1^ZXSd9^V&U*`e} z{Wqk|+M_t+R#Zc;IX5>4X7vkhznrNzYq4p4a2-Fc-~VwT*MW=gS@36Rwq1lknb*=9 z0bx8YKAuCTGQXotgRxciu^ve_NNo@{1N6DJvce>j{A^8Ct7Q%B9#E&+e*7q@sJM#l zd`!sg(s%O82eUUcG<1J&Phf3ggv(N$heh2B*Gk|&_F!ycBHUf0$`x8T7$F-w^9aST z=(lkFpr?UJu3crHvU4prgWX9ZABba&ffpPMGxiukpzN8x#kKUBaNr}2TmC$20{1cX zW(E-^lZF|F`D@`@8fKv)OZ0Vg^bm2{u`DErhCA9csW!c-gnMXgYy=yVL%&Yj6=g^^ zMnF^(s~IRu2jT#Tw-=;W25N`@KEIL1@Vl5jJjRB67xtvlRqUUUNFG&ap%rv z_bO5f<<748{X1i~Q4EcY`YJ5dZ=jDmYb3)FGB-3VHu-^%1g%w8MrL*AQN?sdcesYC z>c{G8*XPe^1%F&Pe`-n3d!Atk2V4{K1VWVI&2#pAUx3Y&wI-5Yo-WLfV5_&L_YF(= zI}gpONPI6t;e7C5cY7Q11!j!@N^R55&Jpm~5Imt1=22AhBH4zue(mFf1s$z zLvNLq27O{499$7Vf|!YHhF+B# z^C+y<5X9BNC`|bBir4Jv{ zf_c{$^ffd!A-D+6cBO-G$?jFvJbt4(uKnMG?K22jd{#8~48POppKnyZx99oc^@nDw zVqjbW?*I9G*cI9?081EhH^mPvrxW}8RWToe80g0ECkUP zN#eA}uwdXiD5X%_`3m^^IOan$fE;oigwMc7MuKQIY>umtepy8)3kwT~{;2s@xcgV~@0uO@eKw?2$foCUn!cX)6rv#^}TKaPSJNyO{Gc%Op($W`uJG4UsoptuF=>6q)Nn|JhAlsSjpw*SblWm0)oWY z0;C*FC5Yl>VSbgCJ|{7|yg09Q{`K5kQ$yp2KJUkfh~$ETgqWCCMFD<(2}tB&?QV=c z05wQewW%BK1wg!5N`z4?IGk4xE_B&mWvIb(D3y_u>j1@I{Byd3Be(2yQ%>roXSw*g z(&q?`x;P%2@rH~2A`nj&AYlXB1;gJi=gPX8{pLF+1Bs7=oDZN3LT@e2inFw^fXAi8 zB_&y=e?f;RVWdS8@;a-ktMdRou>9eT^K8bc?=b8@X@Cbk93hWxWwo9eE)!$vi1=9l zbnS0t$qVtfvP5wClp#s-5<mtg|nmG~J?; zY%8TdrRC$R%D9~d2LviTiXu)io~Ho(kmO{aN@_TpHIGb9@5Wa{dxN8|Q%KEeVlhP503PAP*_?Iao>=u=<+h4=SD>DtE?ssyls$6Cp-`qP- z<>lr!!4(Bl@~Xv|n;(K3T``C)W-`1(E1c4*9-u)1akznyu@M+)+xfpifiVuZ{ zTp&Pw<=MeIL2!h;qpPbc?T76At9G*iVNt8kJB0=f2oOZw4}U}XD#mhtgDe0jrO-qB zhlVOjN?f7f!S#m+pJLzv19;Zu_gGory;W$14se36#zF0CJBW67O>Yt4;VG-Dg9fDx z^7H4_i$y zAdDT*K^Gz!bh5)Dc>1bU`oBTTP)rih)7B=Tq|^t+^xjFQzH%z6l9=dPkSa*y@KS|) zl%@w=wd>-YCeP(@k2iRxFt?=Q!$F(y!#h#=!#!^N-PVA){Fg^wrIijYk$Js}jJ5IJ So5NGONHP+N;)P;{Z~q@&eHb19 literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_fonts.py b/doc/users/plotting/examples/pgf_fonts.py new file mode 100644 index 000000000000..ae260b151406 --- /dev/null +++ b/doc/users/plotting/examples/pgf_fonts.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +import matplotlib as mpl +mpl.use("pgf") +pgf_with_rc_fonts = { + "font.family": "serif", + "font.serif": [], # use latex default serif font + "font.sans-serif": ["DejaVu Sans"], # use a specific sans-serif font +} +mpl.rcParams.update(pgf_with_rc_fonts) + +import matplotlib.pyplot as plt +plt.figure(figsize=(4.5,2.5)) +plt.plot(range(5)) +plt.text(0.5, 3., "serif") +plt.text(0.5, 2., "monospace", family="monospace") +plt.text(2.5, 2., "sans-serif", family="sans-serif") +plt.text(2.5, 1., "comic sans", family="Comic Sans MS") +plt.xlabel(u"µ is not $\\mu$") +plt.tight_layout(.5) + +plt.savefig("pgf_fonts.pdf") +plt.savefig("pgf_fonts.png") diff --git a/doc/users/plotting/examples/pgf_preamble.pdf b/doc/users/plotting/examples/pgf_preamble.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e8e0850432198b35f3bb7e3d9b1044035552376f GIT binary patch literal 15283 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 YPA(o!|Ga^TjggHRnv6_LK^*%307lkBa{vGU literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_preamble.png b/doc/users/plotting/examples/pgf_preamble.png new file mode 100644 index 0000000000000000000000000000000000000000..6841e3b9bdd4fa38ff6373685fb0bb71aa8291d2 GIT binary patch literal 17082 zcmZv^1zc5WxIKJ8P^6LW?vyTR4ke9BgAxMLArb-t5|WC5NQZ=gq=0lvH-d!H9U>(q z{2ylSck8?RH*;n@9QN6JzfY`Zt@RqNrJ;m_Nr8z#AaGQa6?6~?lveovQw&siZD1O* zhX0_r=_tveOm=hm!yj%sD;u~W5O@!-{zb``&a*`z=nyIjvU<;^wo|<%$EGhkX9buP z5{3dX;u~^0M1HVsvl|ZODn=L?dl)%>&^y>>F?5{LR(ae0EzM}e^p*00PJ)_3X4#;5 z!Ypn2^s2~g3)wW8w>0g=yTOwb_{S?Kl+Vp38+ zdwMt|Bq*`2%f@~RtZ_EgH8Z=Mc53=IHYVsjF*#{)|Ni)oAJm9^y^rzn_mIet;9xWo zyg<6|6n_(gZs744RTT{zDJm*vW@fsr^wIMa7Z>mE?=vzomf2rj;orp7!SvqV-p%!O zA@4s&+tXYmz3uJ6HE&4g){Mq?Y=lSam{hK#$baZr5tz5)Ye}+4ePWELO@Clf(3Al@= zwwODIhJ}ZRr$mN?h9)N`|M@kWu1N*Ag~5(g)jE{PXWsli6z`hhYvs=9C>k->_8&h?9$X!s zrw8i@KC7O$?7F$mox?*zh=B5P{+*-s<`>t>B3{rbcM?!yEq;BGMDBZnD&p8Y>mL-Y z!5O#leLTOZ$=}06==Vvw|Aj$~^ZbizH{35oDg+)6200A1aPY1;`?&rVMp>#Hci^t*t#gJ~uY{WuGMuq}{2r`^GVx z^hgdrM{W01XzM%5?c03rY+FCD_E&@^QB5kW`(bq#78Vo=bq8;#Tpit)iEfxyyK^o2 zOBjKbq`!a9?Oc=ugoN%B4t<&`P{K!B7ez^xBuB=C)JtOEg;oldR&282Z1;`ZR4@H% zx@`2?XGuE@rAt-xlTuKUw`O5uZ&~Otx51d4oZCFRB;exWf;iAZDkjeQU*6&3x_kdV ziTVpVxsWy#VahP!$P}tledkr&nJ@d&E)X`zXsVN~NrAW8!!J7?LHM?}w`Z{9E1=P{ zyq>yaKt=g~Wb!}Rt)PW8;2ICbqa7I?owTo_`)w;|=;CtwDqq;L5eNeVgKT8fdl9F! zf`avY?d-6M9ZJ{b9^xKP$OZ2|J5g3abjpbt786mfqAAbMj(#-wR70GgqoZHHejT!g zg^GP&q0W8%*7{e+u2}jzK1c24viN9LM5?N)Pq(MORXdp>wC>%571|!oR%){;D=UMW zfv0_okg$ybJ}Gf{8B<8XR-1LjY?Hs4si}rL15~VDOa8$WG5HxG zKE5@LLYLs$2o+=Fde2`!uU*HUBg`u*>ihnk%!)|1wyIpK04in#DX-t}1w~8CCElj< zTeohxLil%eDI;q9{+_~9*G8geRaFVo)4!0!k&=|0`SBxF|J%W8x__Fe3+h#!m6Q9Y z#1UMVmTtnK6gKBpi2bA?Bhw5q!=nEFpp(}B`0R|=wEnpDCD!IdiHL{@FE_VI{WF*9 zlU(ZQH8nLgN&)M>-TAiEl$4E)4ex_BSyf9J85!sp5fN%~a;@c7y;Tr@-iI4|dwXJT zE25&J=EU$N19L4wX7$fnsLP$_;oPK8o1CV~`0XA&lFJ^3@Vbsm^*v9McE?CtTl@3p z&j@o13ta<)q}Q)AGcqzheTwGXg{DXTmlh)4;nAZJzLe>f^2$p0Y!~Q03bc}J5Lgh? z|M8L&5!fq0fM$DRWMpKeFRATOnc-;$d|FBL4ia)MCnB??q{(KOVJD6UuJfBSEly}# z=IHw2;o;11scsA%z=BeX&ggW%)9`xZDtiNiYdz4~Ha5txk@ogQP_gRj6Wiw7J3Gyq z{2EG2@!^YOKh0DVlj7mv+|$ycU-Z zUq@%E@wpG>?6dt9bqR^OwY9aeu`zN1>+?TNmx|g(x^W%8?ZwzU5ezGs;w+<)-8wcm58-Li_ zw|e^e@7}&8a#>$qK0H_-&1L9pZ?EiCTX*+%bac#1!DGGUw?U2_Qe3>f+?%+#xL90N zR9;c>J8?V}QuKP-)VKAVoE*!?j~`oE-CXrJJv{}4!7NoVxuqCEB6K=^BLK4Lb1&tc zJ9qwUPb;O3(ce{Q)oiG!s34MX1&zxsRoafWARl?n8jX#Oi{QqVmd3^s zp_^mk;%ca?GY{N)>h7+0|Gpy!zh+utVWDQK_~GH^16|$Gc+Ll^YHAQ#DUgkTkp7+? zx;=e5K0G|{cfP+mIPu9uO;eMXoqc_xWOl4TH%}wA=SOjLLtxrTU4TUCxIOFSQcy7aMw9Ui>Y5P=YGs=Xde(ULgY` zER#goQ4zfmfA%itFG&J1Z zE0dF_H@+2iH$%Y(+*71qw(zsT$Fdu#r1T3)XU8jIs1XSX3D5=r>wYh@=!9~lB7J*i zSjzWUhUMAn05vsr>XV62>M5ebBP0BbjBO($Z+v1mSNfAJgS+EcXB&JxAvz@sALCMs zTUuL_P*Ve(H8C_4w;joWE)X)i1_&17tr5ZiDn10qbEsJ@K{qQ~0(L3y-;4X5AHz{uDM;f}Wo4tN zriO(W`}XZ5ruZ`>5oX8iY&z9xe(bEjp4bNnKga<$N{SfNz{5ViP4`# z6osS|w%3P@%5L0%Ea=9+cI_Gzke%(3Paj|HZyTLm-qWibB)!7vgK2lZ$n%)iV<42G zspfHwoBZw|*4EdTmzMD9p?#twoSc4z45vvwS2eb_v{Y78iy^z61=TrnacPN(l~u`C zLsJua9sljy^o(N@6EWlhNF5!1A)$DT@Q8?PodURT02&I)8XCC6cGC?$B1u~Sd?0|L zqN2KUJ{A_=g_yh@a071*46@G^4;=+BB`X*2@olPgfpUpUqGO+sEBAKX5nOi zb&0+e;KQ$<4Nq(_kE};Z{~lZ%hzc zdU}2R{o6mI8ow3FYM1@JY^+{?*%OG4B`74+J&1^X`?j66v82RFT|KI>kkfO*vj4r1 z<-{Qby}S6|L^D5n#;}Npx-VaDlVLkKIWa7)4QJa6`?Q7NSYGPs>Q-c$Vbap3zkmP! zaC0I~MMX_bLQE_^A;Gl9IdigPWo{1Ifkvdz!)fAM>u-X!?OBnNcQoOt| zozg@vBOljhWMu_v`aZIL zy43Z0=7q)ANczXpVVNpv7`eH*%|eA|0Gb~aB}hb#GLn2r2T&m z417}TP^bxCoxPEmn7Ep*ym{2*G+ng~IgCdug%&U~Gt=5C=iuPbLhFC9Mu3Q<6p60! zh57}JC_KT35)u=S{WlskEe4Kk=npUeQQ@w_I*R$7*Hl-F{IP$ZmBoP2d+?yQyPJSs zNJvP*T>iWL(;GP2SV^}n%=_Lsj+C#YA?TyC=A=*WYiY?O_+;Zx$3A1gcVg$@cvLZ| z#}SXulJ+GrL;@?^^LIYC*xkvk2a5yOhTWEMZI7+6Ffpm9sM4hU9j&ZBl$7w&)61r` z3}?B;y#JgRdUYs8^n@X^xs7YIG&G_g^F&ZWIdmN_d`>_}=;r3eXer3YSE@*%+LfP{ zMkB_l{LD6u@1a~>7n`T9J%nbl#FLNvf5!+JhXBFPY>&d2xnLio-13}Blaik5tw2&A zi6R|OM@L6E&CRmdAl3&s0xC?3kxqL=4ch{CrmuC88HQy4uwyeC~m zQ=s3hEH9@@ct#udvfqU%!|!C76yfaQ!5qSlmIuX2N-9nAH&lzx+1aKmr0DIPwZDnK zA?p=&T97X0#uBdz=i<)Ha~FsH+hAh2rEH}75mwpek4rWFG&;NoMX|nKa%Y$1&J~Q$gC=qNfm`o5lCz4xIVCrJ?DwQLy25cnh{NNlS8gSAT- zy8w}CIPQ8<0Xw3{;n5yO0GS{SQ>!EEA`N*I!xVpMRK(}wgvgN?wyRw2bzC{4wKlR-^ z+T4$+mF!T4=fQ6iu6$sYKc6|jkX2`lW=h; zb9w204A^q@f%?qqTo(WVD?WcF9!hIpygV87N0^@-ZTBZwC@OY9rH8&TIx-T54}Su@ zLnZBJEK0mS-xdm~E|)n2bGZjQ0P5=qKppNdp!O#6-nen&nv9*@2Gp)@(X_NQn3Dr@ z#$~b6#C?C*czJm}di1DG$lG1K0S5279lzsUdUp2kd>OXvR5f+=e!#_-+of6sKc)=u-n!lN{oJQ$$}KBwAT0!n@V?w!q( zCvMe(Fj^|tFLXqZ!Ym3S5MX^>ZEcmicZseZX}e4&6t;?GBfwVfXJ`rd^Mb! zB5#L}P_6WimzJ0Bz@v#-sC*5;4Z2EuN5`;@pcDbjXgbEmeM*P$HJ2x=v=_flA(i4- zHGwcaS?(pJ@9Kof3r4*DhNg^68Td6ggubz@@bbX8#!8vTodwlQOw0fyKD66X1BxL6 zM(Fm2PZjLI4NzRabs2Is>HmIiq2lVg2Nk62wE0n)MymL?!Uw!rC$k3puNvRQvS>ee zu$q))Yeqy&{N=euB?BsgjDiAlj|Uz7rFEPg@6|PJEyWiVZM_@k@rsL&hvsd+nYIll zY5Vq>`USLWm`VQ`uGs$YWFt?Y|H3>*`6)FlI+}*hJfN{rN-PtWurJl0BOZ{Ut+h2W zQq^;iodr$SPX@B4+VhvGi_7obU1!;uUeWk zpaax}RepK~u~&G%`1Jh5O`cpxSQz)_&H2k`E-o&nrfKjbBRcG!t|6{wX`W_aZNe9E z^|?sO&I{Ss+`WOF2812f@VJ<=OkG_){_WelnwqN>-NgTVysg-%y2~xku(B>wGhM1! z;@WI$D}#v01Bg_&Cei3928CbZsa!$rQRtrhq2@u7$s zw5+ZJsqGPRm4{ac2_Vyhg$F8RZrPt1AWZOiutkwb82epiuSorhb9|lwJW_d z;UstfYmu{Gj{M?(>8GL+KDRv{85y~?WsmaQcG#w}>TFjIsK~qI=mCsM(SjRAxxjQo z3)aoOYx`{IzV0iS=8B(?2-y7v%?J#B4^@YslniRb6%$;rtF1_p4lp&vsvQ+&=U zEL`R0*#!?`2YSE;u%9~#X2rkDv|-{PCXR;{PM7c;n3*|;G6rj%EaHTVfq_p-%4*z# zzpA~z3SlDgbZcm0;sydn2S_4diQLi)H1H`Y3v+XYpNw;*RLI5d^o$o9)otR{yO1-d z?m`zSbWYwhLIwo| zH8eCp`{R|DZ)KvVLimy%cjR%1vh!~=E-_qI+~dXCc@9p z4+iQ$`xE|u7|4x;Yit;M77Pq<>vg(#i2ap*AQ|SywSfLfkn}zXBU{NBU573?Lt{nh zx<10};c*DpO_2EI%NJjU#Q1oC7}=2w%GEC<2R_vejEV4M1H}i?60Ex(8;j4(%$!B7 zioD{IM@CQ)l$4b4j#Ow7RFsbP_O9-3c!dMdxfB~4Mh$QPL`1>C!9Zdm5TR|q_xGnu zA6^@mL|Yfe@0?Ummujf{Lx{&^(JsnH$FcDW&wt~)xM;~xw!x# zJlR?t2G^9-QmeN&Y;A2HEgb@h3KeO6eI3Z@pI_V_SFjcv>g$hMnE(0O z%Z0f)=hFjQ1YGlz@z4?Y%+TAb?-Rx?W3Hr!OIJvwMGSe|QgL+LfmvV(7lR=XAi6Hp z$=KmsGPo9T{T0~<4@AVpDXc27TCC+wsQHp)G6RCq!Xo5vocG`pJOaYAHE#I$_}Rr` z=F-Zk^}{m#q@*MO&qHHl_G_}ia6agh8*6J?wf2fXKLbHyQdgS$^k#W^^C)3!tBf{5 zl~d@w!i)#Jm6#)+_yID&@%@Mt3RX``%L`E|r|+c?U%!4068NF&3U5vBmjs-iW(6=%vt%C~9nsLx_@=b8b@1Ol@g3Pa}sll&)cXtJ* zjM352WbZ0%eXfMmR1?7cZAK8D*RKRq{`Qd(*W=xJ$>FfSxih#41UdBS(rz;|q9Y?z zVqyb3KT<|?1aC610qIC1V11X9hR8|P2n!1fY5>fpw_TT%cZ>i+1I~m&QSniKXG?iV z$aVT`_!7%Apj`+r?=f&^(W0T5vp>4up8H+ug|p5*}!+S|J}Dhek7hoL6mlNp}4I0R9$ zi2QvLkf|tMxmQKrI`}o~4-&wGPsZdhc*LuExVjpG%%EmAR1{g=6f3>ZUzaB$#$FAlT;DSF?xR0kQ zZG*1kFk}&vl4`!=dkDNnBCi<@WHA9sCz3$wZGvl+<8oJ*bIu1bqiWYz5yMPjVNp>q zsRCy_aYdxuoUQi~n3qzJ>7)-7)xVBlX8v#kj|RBX`wt#S`y65a;idP@7@liJ0a;0( z%h@eRJ$dd-)&gThOz=wtJKfchv1r=2ZBCA0BkBQAQ6`B`q?L2l#U_p`s}Newzk3uC z$NHihO+@5-4S}BC5Jy;7FWb6kaJOaol^gJb6vsR9+$Mm=W{t+J73yhI5_u{JuA z$E5bHJJl^BqPOYkv(8QU)r7DN)5PgbmXJ_6|@x7jW?AtJh^2BTH zw5nBL$LbpzPR5U21(`=0QN7Pa^&VsgFqnMN9qb26h(_{Rz*jl(_pdNTeaWI}LqBpj zKMhe&HlLG$Qp9cP{xy<(iD00hpy2AG{uh#7i5-ukC`EA9!z)c>G*be4RN?bcl(O>I ziUZvl$?x62FDxLy$m?^s(eZq8tE2TV$UAx?dM4u!%I^|N9bP|9!sv&{$OG-PJxN$h=$wHMbi3T{ex zwx)>f&R@$&wfn*;L!5kqNay5)uM-_v`FrSYSJ6j9xl9E-@N z9rPd+rI^FcMbHpEMz>tnQHu9ia?vN(gbp8yI%#Cjda-E~W|gV_}n z8sOsrsSoBZw155jv7i7Tx7yvi*bzBCT1HrTnr(3ZT8Idemhob9^ML!ZemNR<5M0JJ zeEj^b0PmnB&O~W3GG+$^AS^5_922`7K<`@xMxdvs2NxH&ySrPT!^A`;hUO)`y!j%s zv@~GJ5(5{Bqv$6|4m~FIwgoWoB7p7t`}>_{Y9N!#toz@CAH?_Ke6p>Lk)Hk`NCVsP zH~%L>t*EIH<$CuCBktzK1=t_XPdOvWgHT_c^9lM$`8hfQkHIs1Bq%Jbardr$2mKik zF~0!3R}8<2i(6h^hS4b5m7%pC;QH|Pi!d#-K{2Q=sWHDU$~5?hHi1 zyvR9XTQ6h?K)MeDxT~!nbt1s5Wo5}}XzW0-2AEErw+@h9N=gc#x2>Jjt7%f*wu-aZ z0lOEtG}zLY*xAUI>1uo$TqM$lEC;Lf@gNP2*yY<;o?H$z1S>i0?7{K1|agy z8oY_As3hH1?v~#Jo??W+tZ!z<7{)4Ns_F+GI4IQoOJ*qQs)4)Ce8R{!I#J=%R7hHl zWZ~k{(xD$e{({B^v=F@Icd};%BGKp19@^T&MFth(4D!HX!j-aRXJJPi{vyk-5QwBY zDG9)(3<&{G!e!$5xi2gvbR6InU+0N(va>5HC~)bQ{zL7IM`0>^d5Isa;uDD9A4Ar{^Vv4V}`)<8o{5Q35ki-m6c12yrzK4)k=T(0im98Cj^B>2i0mGYYx?d5deFlsPkc`HmI1K>?t^)q z>)q2A`qhHAw}#f87q2rhH5VDkWM(|X&$+X{YjFo4)z;P)7boZD&JHd@kK-E{>KGY= z23y#aDkM%E}rV8Upnd{|XzPoSXnQ z)E6#Z9A+dF!DZ11-mtTO!JzE9KDNIKWDgffgyg&m5@`+P0jh?+F!%Cri>nXb4H(e@ z8loO;(lsw$CEUgTFa|=E@rdL`a57A1C zL^eG?Lkh}u;{$wy>-k!t_CcpHC`}fHPKt&_Gvv0#+$ifm9w~T01aJSFLFU&R{*PeU zLqJWlRE91_@Eza1w2v_(TS?xO1|E2&4pL&MrJV17ncO0i8R+NDQ2P791$KPq1ZO=d zlQ{f8agw@xm_hb%_I$ekTq`=&HMm+8<|<32SFD=5lDIuC!OQoVN_VR z(Ti{fx&gES&?!qxOF^PlP*MVg=HVnh6LU+E z0iP?=`Ck#Z>M#cC#)yKeU&zSGIRJbDoIluEfWMx&@$E8E)s{zYUpD>X|S>9 zI{l>Y{E%keJC);1KBG-*IKSAopzdyWCgm3Lz>E%Tq0 z8IeOVsU?C_O$q=m;TL$=Pq8*hh!aF-g6AUmBDT8^jh7b#D@f{j^91Sr;y}}eAr7#B zzQT~XPx8!LPM?g8nhc!@mg;@fA&n&#n!=Ldu@%3ocs&8uy+23J8jdI zgo_K!$q55HnC6c8v@oDhmUCq=!KR)jFlOL+gP;mL5(g)zgs3RYo}R?h#KbM9hkVcY zjB5}^Rq&Ah0pw7ywqFHEtpSPzItU~|Mg|6m1}L?)!2ugE<&va_oIWB%>i=kBeiRq3a^W?C`?Imtsp=VR4fH|}KS{o6i4(}+T@ zDM%mAHnvnbWMp4^@nUY{v?PFo{oy@@SRStI?S;HXi@bNrv!_9|_NGUNW-SGz4gPSPwsvk7DlTmZy!84T7JY`_)6?92bLNM(%$1YO zAv}Oa98HiyRIKG_yV;Wy5eO-;=DFs+yAK5uey{Q~s`oLU@7Z+?jZz0nY>MFJX!t}v zf{)DkfQ?ED`@@G)S7!Skn1+V>3s+1ECQHWSf##MVEqx3Cl}Fndd7)NOSHIDW>b-{V zdw~t_!qS(-e2Dz#JY(an>!Z%cd_+XeS&F3|oMdF?C$OUPS}*tCr=+9+feC(2;jgx; z{~KcNIOF`Na!6i#o3&5I(F*go}4_nP(EN7h4J?~*jUO8|yexzm?E{St^?Bv8Nj?OOrugloR8n74REB>kcbZ?q)A|_k} zl&M3oR5V`Lx!jiYMnh!42=L8o`VA(vEQQ$jK1WLyAmi<`>9*G6|xwz z0Y#0pxXMc(2DYOFfKCX=pRf)OBQT7DT0&U$v|!cI2lsq-e;GYIhz?^fs3)J!Z^LN5 zmqr$UN$K^Kk!k_F!Mn4%*Yz*I!#%VPR#R z_==51&nj1O*Vs7atEZVESXO%b`nD8$G2W5S>$3<5i~^}UG^Ax{=nbMVJoZ%mhiKiA zeEzCvkn51a?bjElP}O^@%9p$ITmrr(k^F`>SFV>Caqs*691IU7tPKnVc?vuq$DC2ewF z*HK%<;1;05Wo2Qp{!#03mqk~UWva>FUw467uvajdFw=lVQt}+o{n7_eX<%DKM8^iv zzjwa^R1DzErDbpx`uh5c7q()&A)mi|>v#G0kM!kvg*LfEft7+95+)!NIthtn?Au_< zsHk{iOO^dE3@WBhXBPI@v^F8le;{MQiw%X$rzc9#8} zhYV=FyIW!>;AzWJjQID=T^=l)oKL_R3Odm?Jh;3EWKu~4xdtHGf~m?Mb`Bh!vWF)` z3fJDQ1l{$+)rukbgoVLwDCxOltfTV=)OdI>Y(|>zFedqd^9Ml~s6Jx!-dzX-?zn`6 zmF?|*b3Tv<4`3jC`pMw&U}*h}<3&u& zAdqil*dbkpB^3vi+1%ipo+vi*+*|5K{!zf1)_xZO!7717KAVD z$uE)!{8BTu*o>;|fx89)`GiWMvc2<3Hl{~lGf74HJI!l9XldJ_s**%c|Y3{~Ho)BG2bMC*cuxf`~E!zV$N9<^c-;Vt!WX0S+D{&rzER~xQ|y& zg@~;a_5PnKOMV5{sGfCK3PwLac&cG2P5I?R)YjJaL8h zv5nnt5d9s&|Ef{|`}!hSOSgTj6~NX9#iz;dZwM~+D-uUuV6MT#J`M_oRqvHrIzBOh zb+H9c2*Lm)XbAV~I24uc>m&Cq=fH8wdA~?mQ`70d@#)j5#KZ~kjQT=IEgVFJfQC0Q zKJFR{7;6{i3jG?kY?Ea0L^@7YhR>vo@__4Zb#>Lq$Owk^DxQ}xxe!=_X36_ zkYb}QIvcZA7}o~oroH|BZW&fqR#zjY5ld-Q0+)Ap zt)VEvj;Xr5df0{n_MFO{Nw8ugMEx&(>y~n!>uwS~1tB6UOXuD_MPn8wCK#At8w%#? zHbmGgs6J5E!Y=D1JvlizKve}buO=n~wi&F33qNc{!wn@QA$bZ)mFu-z2=|nj+#QrE zq+&E^^lA9FZ{LRJ0G%w&nIz(yUiIsaN59?spCNC)-%b(kL#owPJKW8DqJ8h42iVcT z_x)$%TLi{!A)#**6QqXM85kHqlSrPjcY~21S~d8@_$}8*K0v3|1Qj$oH#>WAW##Gl zu?y^RU|{0l=z(n&;JEdF_nl%}5Pa`8=2wUF_LLBVB?wVqWd#MFo(HzTg=2spP8^sm zP_$wHTtNZ*`e1|vYSI>L*0>@8A*sOvY-ej*Z2X0vn>*?t+8mfX&}yJ;=H-#zy49LW zyKqhq`3W=+Of4bB!vNR*u1a5m>@xiA8|)2%O>s5{K0qC;udN{hz%22)VWPxrUlU}B zmbokE{?Z?QKEAoQ_jJJ_AsT6tlR!8GV8P>(O-qF}0vAyDAe3gfXv>IW2nvu>@2aQ} zFj2P_4uWB?=Gx-I!h6>jlUb?^qMgyyPb!7%oSa}2OAWQdt;fCKk8o46sF(zA7(|L? z*z4B>o*nWO=vI{$ux$b?J##ys65`|gQzahA%Lml}=?RkMt5>g}79wRX*r|cq424v(_U*F0-b# zc4YkkT&`ey$^ZD#wU_O6IasA#ypFaEFkjvxChl1ENfmVoL}r84;`G$}f*tf(FepUch zf!29t0}ht9d^@a>JD;B(6m)HnHwUT#NNP)EB2XoAbqaFc;uCaHNI%`uhvjheEP=I< zc3;B}Z38#iMVs3b=x?A-wFjiavj&IhBolNZ0CqD?pTLNBv^f!T)&PqL+F)y!~%500+ld-D#RhCzBs@?aE-UM1t}rJZ?}Nk z0c8|6EeRnkEiK)RnQbE?L7D}9*ew*&644CivXh*Z%}uD};nEMOD7X0|$!-U_<7VgP zezmTkyhBr;m9+p_#)yoZqd`AgjFA?0oY4mmMoQZ01_-eTSQs9jPq1MEz#2Gz0pp!} z#$S(DrK;#kEr&fcut`9A7X10%5Eu~4=qH$gIdi{$m4L(#?9Ijo1?0u0u_>4kV3UjB zGFfzUPmd~i^qH7)6bmDi!3$WNlS4#HJ4mR3O@S%Oattg^N(vRC#%)zY|LTB|o3LPt z8N@p`ey)fP)BuRET`#~jJ>%m?KtBLO4N&DSiyNRm@JqM<00sjDfL+*~1V6gU5Dkr^ zg99*~%z(>0=4g>v>F+IquEj55s+#xRX~JAMVF^*32oj+hDr^R=^8EQovG5!G4DeLk zI?GB+0WN95uAd`Lj5mQ`RR>iM{9%G%wFb+}Z_QFD%y8Zn+RoAm9uonU5h_8O*qWMSSRKWWPYd$%0Y2`Y4_-r9SuN+% zKxI=iHl6_y5PGUV%rfBT17{a(^8tc7IBafi4xgC#5bFKz?rw8)Gi(q7)8KLStl#MP zxM`I=xeFCH&_Gi74tH7NR6?BVdhFOi^Vw}Oee}%ncV$qR8W7ELxn49yMMX`|me{W4z0Du7oKB32^ZAF;AD6os| zrQ9U=X&@zlD|&2e`{n7j;odm>5zK2>7U3n;k^FGTVnZDrxeMC(V*LKK0qD`P3m^|O6O%P;3CdFfHPwFa*fI<4%gZzwK+|ke3)g;s z8IC4`mGB1hpM-gH0N8pSrLD$DU)W?%>uYKbf*=SJSNZ<(&W^@0KLF{z-d-$RTo$1N zSO!vgD^i*h>=(Zg4?xD54LduEXxJCEMMstm^}F{7S%XjE$8w zFL%fL*)!M*0Lz&;b_)1K3MP}L%fGy0(KGf8M3~Fqw1y;yrzS>l3m@McY7XqL>{<-e zyLG`XIBgAEXtH8r@XFr(fr1FG9e8E!`xy&8;6$H52saLC6{?BC%*qP;*a_c{0LB92&UG*b6sgz=6EH{zi&R44 z?0a`R$T)z#Ytfe@oQ{2K>a!Yj=zK9y!oCd+%^C2+0LO3f6&p|tL_a(g0BC#clQ5w7 zc6AM{yDyAD(FNrC?c+UIk_S3E3>(vsgQ3{u{P5QRT)FIwYf8Z)3!6=_v9NUS-TPco zL1@{+#q&(g5D91oxKVIpO>?#Y6ac6RR||$GL2pjjpgQxeYv0ZL@2Q8ZEXw6uD1Cqv zlKYW>W*qD{i+VW*+m+N*Ri_^1L$@L)Pl8@5L>Z^A3P#I|DkdEhlhoMQW(!jk z+ErZ@v_XVFlz;=MAlB*tUYs63Rx&j-Fi=!dsb&w3D_f>5|0!0> ziSk;@ATsO$*(F`lOU@TmRVtW8;6aKn=!Nc})K<#ZiUI0E9iRY%&*87x*@=njdA`EA z@XFhG)QNJ1Dypgs*O4IcQqpV%AiS?D;=h4CBbOI{nn3C}2P57P1u*M@bYZd0=$gQ7 l{^J1qUoZcDfbT>aUn6(ICV`3#{{9JsilT literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_preamble.py b/doc/users/plotting/examples/pgf_preamble.py new file mode 100644 index 000000000000..67c6283f6324 --- /dev/null +++ b/doc/users/plotting/examples/pgf_preamble.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +import matplotlib as mpl +mpl.use("pgf") +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.preamble": [ + r"\usepackage{units}", # load additional packages + r"\usepackage{metalogo}", # load additional packages + r"\usepackage{unicode-math}", # unicode math setup + r"\setmathfont{XITS Math}", + r"\setmainfont{DejaVu Serif}", # font setup via preamble + ] +} +mpl.rcParams.update(pgf_with_custom_preamble) + +import matplotlib.pyplot as plt +plt.figure(figsize=(4.5,2.5)) +plt.plot(range(5)) +plt.xlabel(u"unicode text: я, ψ, €, ü, \\unitfrac[10]{°}{µm}") +plt.ylabel(u"\\XeLaTeX") +plt.legend([u"unicode math: $λ=∑_i^∞ μ_i^2$"]) +plt.tight_layout(.5) + +plt.savefig("pgf_preamble.pdf") +plt.savefig("pgf_preamble.png") diff --git a/doc/users/plotting/examples/pgf_texsystem.pdf b/doc/users/plotting/examples/pgf_texsystem.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fbae0ea766ff866b653b7d09f6675f9b0dc1174f GIT binary patch literal 19196 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 literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_texsystem.png b/doc/users/plotting/examples/pgf_texsystem.png new file mode 100644 index 0000000000000000000000000000000000000000..6075e7b764dd5218f784fd14c3edab420302f180 GIT binary patch literal 11634 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 S^h=|lynL=GT_S1l{{H|-=@4N6 literal 0 HcmV?d00001 diff --git a/doc/users/plotting/examples/pgf_texsystem.py b/doc/users/plotting/examples/pgf_texsystem.py new file mode 100644 index 000000000000..88231348b5e2 --- /dev/null +++ b/doc/users/plotting/examples/pgf_texsystem.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +import matplotlib as mpl +mpl.use("pgf") +pgf_with_pdflatex = { + "pgf.texsystem": "pdflatex", + "pgf.preamble": [ + r"\usepackage[utf8x]{inputenc}", + r"\usepackage[T1]{fontenc}", + r"\usepackage{cmbright}", + ] +} +mpl.rcParams.update(pgf_with_pdflatex) + +import matplotlib.pyplot as plt +plt.figure(figsize=(4.5,2.5)) +plt.plot(range(5)) +plt.text(0.5, 3., "serif", family="serif") +plt.text(0.5, 2., "monospace", family="monospace") +plt.text(2.5, 2., "sans-serif", family="sans-serif") +plt.xlabel(u"µ is not $\\mu$") +plt.tight_layout(.5) + +plt.savefig("pgf_texsystem.pdf") +plt.savefig("pgf_texsystem.png") diff --git a/doc/users/whats_new.rst b/doc/users/whats_new.rst index cc6107ef5421..798ec84b396e 100644 --- a/doc/users/whats_new.rst +++ b/doc/users/whats_new.rst @@ -17,6 +17,15 @@ This page just covers the highlights -- for the full story, see the new in matplotlib-1.2 ===================== +PGF/TikZ backend +---------------- +Peter Würtz wrote a backend that allows matplotlib to export figures as +drawing commands for LaTeX that can be processed by PdfLaTeX, XeLaTeX or +LuaLaTeX using the PGF/TikZ package. Usage examples and documentation are +found in :ref:`pgf-tutorial`. + +.. image:: plotting/examples/pgf_preamble.* + Locator interface ----------------- From 738a481390d3acbc24b40c310328b843ba87b818 Mon Sep 17 00:00:00 2001 From: pwuertz Date: Mon, 20 Aug 2012 06:47:54 +0200 Subject: [PATCH 8/8] moving the pre-processed pgf plot example files --- .../plotting/examples => _static}/pgf_fonts.pdf | Bin .../plotting/examples => _static}/pgf_fonts.png | Bin .../plotting/examples => _static}/pgf_preamble.pdf | Bin .../plotting/examples => _static}/pgf_preamble.png | Bin .../plotting/examples => _static}/pgf_texsystem.pdf | Bin .../plotting/examples => _static}/pgf_texsystem.png | Bin doc/users/pgf.rst | 6 +++--- doc/users/whats_new.rst | 2 +- 8 files changed, 4 insertions(+), 4 deletions(-) rename doc/{users/plotting/examples => _static}/pgf_fonts.pdf (100%) rename doc/{users/plotting/examples => _static}/pgf_fonts.png (100%) rename doc/{users/plotting/examples => _static}/pgf_preamble.pdf (100%) rename doc/{users/plotting/examples => _static}/pgf_preamble.png (100%) rename doc/{users/plotting/examples => _static}/pgf_texsystem.pdf (100%) rename doc/{users/plotting/examples => _static}/pgf_texsystem.png (100%) diff --git a/doc/users/plotting/examples/pgf_fonts.pdf b/doc/_static/pgf_fonts.pdf similarity index 100% rename from doc/users/plotting/examples/pgf_fonts.pdf rename to doc/_static/pgf_fonts.pdf diff --git a/doc/users/plotting/examples/pgf_fonts.png b/doc/_static/pgf_fonts.png similarity index 100% rename from doc/users/plotting/examples/pgf_fonts.png rename to doc/_static/pgf_fonts.png diff --git a/doc/users/plotting/examples/pgf_preamble.pdf b/doc/_static/pgf_preamble.pdf similarity index 100% rename from doc/users/plotting/examples/pgf_preamble.pdf rename to doc/_static/pgf_preamble.pdf diff --git a/doc/users/plotting/examples/pgf_preamble.png b/doc/_static/pgf_preamble.png similarity index 100% rename from doc/users/plotting/examples/pgf_preamble.png rename to doc/_static/pgf_preamble.png diff --git a/doc/users/plotting/examples/pgf_texsystem.pdf b/doc/_static/pgf_texsystem.pdf similarity index 100% rename from doc/users/plotting/examples/pgf_texsystem.pdf rename to doc/_static/pgf_texsystem.pdf diff --git a/doc/users/plotting/examples/pgf_texsystem.png b/doc/_static/pgf_texsystem.png similarity index 100% rename from doc/users/plotting/examples/pgf_texsystem.png rename to doc/_static/pgf_texsystem.png diff --git a/doc/users/pgf.rst b/doc/users/pgf.rst index fd5c3d341a3d..6411a9f9c6e3 100644 --- a/doc/users/pgf.rst +++ b/doc/users/pgf.rst @@ -53,7 +53,7 @@ fonts "CMU Serif", "CMU Sans Serif" are recommended. .. literalinclude:: plotting/examples/pgf_fonts.py :end-before: plt.savefig -.. image:: plotting/examples/pgf_fonts.* +.. image:: /_static/pgf_fonts.* .. _pgf-preamble: @@ -77,7 +77,7 @@ to disable ``pgf.rcfonts``. .. literalinclude:: plotting/examples/pgf_preamble.py :end-before: import matplotlib.pyplot as plt -.. image:: plotting/examples/pgf_preamble.* +.. image:: /_static/pgf_preamble.* .. _pgf-texsystem: @@ -93,7 +93,7 @@ unicode handling must be configured in the preamble. .. literalinclude:: plotting/examples/pgf_texsystem.py :end-before: plt.savefig -.. image:: plotting/examples/pgf_texsystem.* +.. image:: /_static/pgf_texsystem.* .. _pgf-hangups: diff --git a/doc/users/whats_new.rst b/doc/users/whats_new.rst index 798ec84b396e..2f378a46df2e 100644 --- a/doc/users/whats_new.rst +++ b/doc/users/whats_new.rst @@ -24,7 +24,7 @@ drawing commands for LaTeX that can be processed by PdfLaTeX, XeLaTeX or LuaLaTeX using the PGF/TikZ package. Usage examples and documentation are found in :ref:`pgf-tutorial`. -.. image:: plotting/examples/pgf_preamble.* +.. image:: /_static/pgf_preamble.* Locator interface -----------------