From 74becc46a6af30425fb3678f079ebb36b895a24b Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 13 Dec 2019 12:44:27 -0800 Subject: [PATCH 1/4] Merge pull request #15695 from anntzer/mathdefault Define \mathdefault as a noop in the usetex preamble. Conflicts: lib/matplotlib/ticker.py change of a near-by conditional from np.abs -> abs caused conflict --- lib/matplotlib/tests/test_usetex.py | 19 +++++++--- lib/matplotlib/texmanager.py | 40 +++++++++----------- lib/matplotlib/ticker.py | 57 +++++++---------------------- 3 files changed, 45 insertions(+), 71 deletions(-) diff --git a/lib/matplotlib/tests/test_usetex.py b/lib/matplotlib/tests/test_usetex.py index 8d8cf29d0b82..cf6f37049045 100644 --- a/lib/matplotlib/tests/test_usetex.py +++ b/lib/matplotlib/tests/test_usetex.py @@ -7,17 +7,15 @@ from matplotlib.ticker import EngFormatter -@pytest.fixture(autouse=True) # All tests in this module use usetex. -def usetex(): - if not mpl.checkdep_usetex(True): - pytest.skip('Missing TeX of Ghostscript or dvipng') - mpl.rcParams['text.usetex'] = True +if not mpl.checkdep_usetex(True): + pytestmark = pytest.mark.skip('Missing TeX of Ghostscript or dvipng') @image_comparison(baseline_images=['test_usetex'], extensions=['pdf', 'png'], tol={'aarch64': 2.868}.get(platform.machine(), 0.3)) def test_usetex(): + mpl.rcParams['text.usetex'] = True fig = plt.figure() ax = fig.add_subplot(111) ax.text(0.1, 0.2, @@ -33,5 +31,16 @@ def test_usetex(): @check_figures_equal() def test_unicode_minus(fig_test, fig_ref): + mpl.rcParams['text.usetex'] = True fig_test.text(.5, .5, "$-$") fig_ref.text(.5, .5, "\N{MINUS SIGN}") + + +def test_mathdefault(): + plt.rcParams["axes.formatter.use_mathtext"] = True + fig = plt.figure() + fig.add_subplot().set_xlim(-1, 1) + # Check that \mathdefault commands generated by tickers don't cause + # problems when later switching usetex on. + mpl.rcParams['text.usetex'] = True + fig.canvas.draw() diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index 1e788a64c4cd..d2574a430d41 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -192,6 +192,22 @@ def get_custom_preamble(self): """Return a string containing user additions to the tex preamble.""" return rcParams['text.latex.preamble'] + def _get_preamble(self): + unicode_preamble = "\n".join([ + r"\usepackage[utf8]{inputenc}", + r"\DeclareUnicodeCharacter{2212}{\ensuremath{-}}", + ]) if rcParams["text.latex.unicode"] else "" + return "\n".join([ + r"\documentclass{article}", + # Pass-through \mathdefault, which is used in non-usetex mode to + # use the default text font but was historically suppressed in + # usetex mode. + r"\newcommand{\mathdefault}[1]{#1}", + self._font_preamble, + unicode_preamble, + self.get_custom_preamble(), + ]) + def make_tex(self, tex, fontsize): """ Generate a tex file to render the tex string at a specific font size. @@ -200,29 +216,19 @@ def make_tex(self, tex, fontsize): """ basefile = self.get_basefile(tex, fontsize) texfile = '%s.tex' % basefile - custom_preamble = self.get_custom_preamble() fontcmd = {'sans-serif': r'{\sffamily %s}', 'monospace': r'{\ttfamily %s}'}.get(self.font_family, r'{\rmfamily %s}') tex = fontcmd % tex - unicode_preamble = "\n".join([ - r"\usepackage[utf8]{inputenc}", - r"\DeclareUnicodeCharacter{2212}{\ensuremath{-}}", - ]) if rcParams["text.latex.unicode"] else "" - s = r""" -\documentclass{article} -%s -%s %s \usepackage[papersize={72in,72in},body={70in,70in},margin={1in,1in}]{geometry} \pagestyle{empty} \begin{document} \fontsize{%f}{%f}%s \end{document} -""" % (self._font_preamble, unicode_preamble, custom_preamble, - fontsize, fontsize * 1.25, tex) +""" % (self._get_preamble(), fontsize, fontsize * 1.25, tex) with open(texfile, 'wb') as fh: if rcParams['text.latex.unicode']: fh.write(s.encode('utf8')) @@ -250,24 +256,15 @@ def make_tex_preview(self, tex, fontsize): """ basefile = self.get_basefile(tex, fontsize) texfile = '%s.tex' % basefile - custom_preamble = self.get_custom_preamble() fontcmd = {'sans-serif': r'{\sffamily %s}', 'monospace': r'{\ttfamily %s}'}.get(self.font_family, r'{\rmfamily %s}') tex = fontcmd % tex - unicode_preamble = "\n".join([ - r"\usepackage[utf8]{inputenc}", - r"\DeclareUnicodeCharacter{2212}{\ensuremath{-}}", - ]) if rcParams["text.latex.unicode"] else "" - # newbox, setbox, immediate, etc. are used to find the box # extent of the rendered text. s = r""" -\documentclass{article} -%s -%s %s \usepackage[active,showbox,tightpage]{preview} \usepackage[papersize={72in,72in},body={70in,70in},margin={1in,1in}]{geometry} @@ -282,8 +279,7 @@ def make_tex_preview(self, tex, fontsize): {\fontsize{%f}{%f}%s} \end{preview} \end{document} -""" % (self._font_preamble, unicode_preamble, custom_preamble, - fontsize, fontsize * 1.25, tex) +""" % (self._get_preamble(), fontsize, fontsize * 1.25, tex) with open(texfile, 'wb') as fh: if rcParams['text.latex.unicode']: fh.write(s.encode('utf8')) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index f29184ba55f8..c6b05288c17d 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -188,10 +188,6 @@ 'SymmetricalLogLocator', 'LogitLocator', 'OldAutoLocator') -def _mathdefault(s): - return '\\mathdefault{%s}' % s - - class _DummyAxis: def __init__(self, minpos=0): self.dataLim = mtransforms.Bbox.unit() @@ -664,14 +660,10 @@ def get_offset(self): sciNotStr = self.format_data(10 ** self.orderOfMagnitude) else: sciNotStr = '1e%d' % self.orderOfMagnitude - if self._useMathText: - if sciNotStr != '': - sciNotStr = r'\times%s' % _mathdefault(sciNotStr) - s = ''.join(('$', sciNotStr, _mathdefault(offsetStr), '$')) - elif self._usetex: + if self._useMathText or self._usetex: if sciNotStr != '': - sciNotStr = r'\times%s' % sciNotStr - s = ''.join(('$', sciNotStr, offsetStr, '$')) + sciNotStr = r'\times\mathdefault{%s}' % sciNotStr + s = r'$%s\mathdefault{%s}$' % (sciNotStr, offsetStr) else: s = ''.join((sciNotStr, offsetStr)) @@ -794,10 +786,8 @@ def _set_format(self): break sigfigs += 1 self.format = '%1.' + str(sigfigs) + 'f' - if self._usetex: - self.format = '$%s$' % self.format - elif self._useMathText: - self.format = '$%s$' % _mathdefault(self.format) + if self._usetex or self._useMathText: + self.format = r'$\mathdefault{%s}$' % self.format @cbook.deprecated("3.1") def pprint_val(self, x): @@ -1091,11 +1081,7 @@ class LogFormatterMathtext(LogFormatter): def _non_decade_format(self, sign_string, base, fx, usetex): 'Return string for non-decade locations' - if usetex: - return (r'$%s%s^{%.2f}$') % (sign_string, base, fx) - else: - return ('$%s$' % _mathdefault('%s%s^{%.2f}' % - (sign_string, base, fx))) + return r'$\mathdefault{%s%s^{%.2f}}$' % (sign_string, base, fx) def __call__(self, x, pos=None): """ @@ -1107,10 +1093,7 @@ def __call__(self, x, pos=None): min_exp = rcParams['axes.formatter.min_exponent'] if x == 0: # Symlog - if usetex: - return '$0$' - else: - return '$%s$' % _mathdefault('0') + return r'$\mathdefault{0}$' sign_string = '-' if x < 0 else '' x = abs(x) @@ -1135,18 +1118,12 @@ def __call__(self, x, pos=None): else: base = '%s' % b - if np.abs(fx) < min_exp: - if usetex: - return r'${0}{1:g}$'.format(sign_string, x) - else: - return '${0}$'.format(_mathdefault( - '{0}{1:g}'.format(sign_string, x))) + if abs(fx) < min_exp: + return r'$\mathdefault{%s%g}$' % (sign_string, x) elif not is_x_decade: return self._non_decade_format(sign_string, base, fx, usetex) - elif usetex: - return r'$%s%s^{%d}$' % (sign_string, base, fx) else: - return '$%s$' % _mathdefault('%s%s^{%d}' % (sign_string, base, fx)) + return r'$\mathdefault{%s%s^{%d}}$' % (sign_string, base, fx) class LogFormatterSciNotation(LogFormatterMathtext): @@ -1161,12 +1138,8 @@ def _non_decade_format(self, sign_string, base, fx, usetex): coeff = b ** fx / b ** exponent if is_close_to_int(coeff): coeff = round(coeff) - if usetex: - return (r'$%s%g\times%s^{%d}$') % \ - (sign_string, coeff, base, exponent) - else: - return ('$%s$' % _mathdefault(r'%s%g\times%s^{%d}' % - (sign_string, coeff, base, exponent))) + return r'$\mathdefault{%s%g\times%s^{%d}}$' \ + % (sign_string, coeff, base, exponent) class LogitFormatter(Formatter): @@ -1338,8 +1311,6 @@ def __call__(self, x, pos=None): return "" if x <= 0 or x >= 1: return "" - usetex = rcParams["text.usetex"] - if is_close_to_int(2 * x) and round(2 * x) == 1: s = self._one_half elif x < 0.5 and is_decade(x, rtol=1e-7): @@ -1354,9 +1325,7 @@ def __call__(self, x, pos=None): s = self._one_minus(self._format_value(1-x, 1-self.locs)) else: s = self._format_value(x, self.locs, sci_notation=False) - if usetex: - return "$%s$" % s - return "$%s$" % _mathdefault(s) + return r"$\mathdefault{%s}$" % s def format_data_short(self, value): """ From ed20fc11aeffca4a8ce362466e1e530a43b57066 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 15 Apr 2020 18:43:09 -0400 Subject: [PATCH 2/4] Merge pull request #16913 from anntzer/pstex Fix use of psfrags in ps backend + usetex. Conflicts: lib/matplotlib/backends/backend_ps.py - near by change of rcParams -> mpl.rcParams lib/matplotlib/texmanager.py - do not implicitly backport rcParam deprecations --- lib/matplotlib/backends/backend_ps.py | 22 ++++++++++++---------- lib/matplotlib/texmanager.py | 5 +++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index d3850cc7cb95..59a0f41066ee 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -1234,19 +1234,21 @@ def convert_psfrags(tmpfile, psfrags, font_preamble, custom_preamble, """ with mpl.rc_context({ "text.latex.preamble": - rcParams["text.latex.preamble"] + - r"\usepackage{psfrag,color}" - r"\usepackage[dvips]{graphicx}" - r"\PassOptionsToPackage{dvips}{geometry}"}): + mpl.rcParams["text.latex.preamble"] + + r"\usepackage{psfrag,color}""\n" + r"\usepackage[dvips]{graphicx}""\n" + r"\geometry{papersize={%(width)sin,%(height)sin}," + r"body={%(width)sin,%(height)sin},margin=0in}" + % {"width": paper_width, "height": paper_height} + }): dvifile = TexManager().make_dvi( - r"\newgeometry{papersize={%(width)sin,%(height)sin}," - r"body={%(width)sin,%(height)sin}, margin={0in,0in}}""\n" - r"\begin{figure}" - r"\centering\leavevmode%(psfrags)s" - r"\includegraphics*[angle=%(angle)s]{%(epsfile)s}" + "\n" + r"\begin{figure}""\n" + r" \centering\leavevmode""\n" + r" %(psfrags)s""\n" + r" \includegraphics*[angle=%(angle)s]{%(epsfile)s}""\n" r"\end{figure}" % { - "width": paper_width, "height": paper_height, "psfrags": "\n".join(psfrags), "angle": 90 if orientation == 'landscape' else 0, "epsfile": pathlib.Path(tmpfile).resolve().as_posix(), diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index d2574a430d41..381e05360dd9 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -205,6 +205,9 @@ def _get_preamble(self): r"\newcommand{\mathdefault}[1]{#1}", self._font_preamble, unicode_preamble, + # Needs to come early so that the custom preamble can change the + # geometry, e.g. in convert_psfrags. + r"\usepackage[papersize=72in,body=70in,margin=1in]{geometry}", self.get_custom_preamble(), ]) @@ -223,7 +226,6 @@ def make_tex(self, tex, fontsize): s = r""" %s -\usepackage[papersize={72in,72in},body={70in,70in},margin={1in,1in}]{geometry} \pagestyle{empty} \begin{document} \fontsize{%f}{%f}%s @@ -267,7 +269,6 @@ def make_tex_preview(self, tex, fontsize): s = r""" %s \usepackage[active,showbox,tightpage]{preview} -\usepackage[papersize={72in,72in},body={70in,70in},margin={1in,1in}]{geometry} %% we override the default showbox as it is treated as an error and makes %% the exit status not zero From 76d114f7416d21126d158792a345a714bf809889 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 14 Apr 2020 17:33:41 -0400 Subject: [PATCH 3/4] Merge pull request #16476 from anntzer/fix-usetex-baseline Fix baseline alignment when using usetex. Conflicts: lib/matplotlib/tests/test_usetex.py - import np and formatting issues on decorator --- lib/matplotlib/backends/backend_ps.py | 3 +- lib/matplotlib/dviread.py | 21 ++++++++++++ .../test_usetex/test_usetex.pdf | Bin 174976 -> 125933 bytes .../test_usetex/test_usetex.png | Bin 9329 -> 13512 bytes lib/matplotlib/tests/test_usetex.py | 31 ++++++++++++++---- lib/matplotlib/texmanager.py | 18 +++++++--- 6 files changed, 59 insertions(+), 14 deletions(-) diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index 59a0f41066ee..7ce621b8a28e 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -543,8 +543,7 @@ def draw_tex(self, gc, x, y, s, prop, angle, ismath='TeX!', mtext=None): r'\psfrag{%s}[Bl][Bl][1][%f]{\fontsize{%f}{%f}%s}' % ( thetext, angle, fontsize, fontsize*1.25, tex)) else: - # Stick to the bottom alignment, but this may give incorrect - # baseline some times. + # Stick to the bottom alignment. pos = _nums_to_str(x-corr, y-bl) self.psfrag.append( r'\psfrag{%s}[bl][bl][1][%f]{\fontsize{%f}{%f}%s}' % ( diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index fc5498d910e8..2a48a13c4109 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -269,6 +269,12 @@ def _output(self): maxx = max(maxx, x + w) maxy = max(maxy, y + e) maxy_pure = max(maxy_pure, y) + if self._baseline_v is not None: + maxy_pure = self._baseline_v # This should normally be the case. + self._baseline_v = None + + if not self.text and not self.boxes: # Avoid infs/nans from inf+/-inf. + return Page(text=[], boxes=[], width=0, height=0, descent=0) if self.dpi is None: # special case for ease of debugging: output raw dvi coordinates @@ -296,9 +302,24 @@ def _read(self): Read one page from the file. Return True if successful, False if there were no more pages. """ + # Pages appear to start with the sequence + # bop (begin of page) + # xxx comment + # down + # push + # down, down + # push + # down (possibly multiple) + # push <= here, v is the baseline position. + # etc. + # (dviasm is useful to explore this structure.) + self._baseline_v = None while True: byte = self.file.read(1)[0] self._dtable[byte](self, byte) + if (self._baseline_v is None + and len(getattr(self, "stack", [])) == 3): + self._baseline_v = self.v if byte == 140: # end of page return True if self.state is _dvistate.post_post: # end of file diff --git a/lib/matplotlib/tests/baseline_images/test_usetex/test_usetex.pdf b/lib/matplotlib/tests/baseline_images/test_usetex/test_usetex.pdf index 8041641f98275a7c0e70f0bf3ecb28097b03651e..4ef375771d3891adb872e380e046e0153440d3ab 100644 GIT binary patch delta 3347 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 diff --git a/lib/matplotlib/tests/baseline_images/test_usetex/test_usetex.png b/lib/matplotlib/tests/baseline_images/test_usetex/test_usetex.png index 9a92f45e1e182dc670261f78445f7ea620d2362b..e4a9183612f5255bb048c6ffa1667584b6977405 100644 GIT binary patch literal 13512 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 literal 9329 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 diff --git a/lib/matplotlib/tests/test_usetex.py b/lib/matplotlib/tests/test_usetex.py index cf6f37049045..ec693288e932 100644 --- a/lib/matplotlib/tests/test_usetex.py +++ b/lib/matplotlib/tests/test_usetex.py @@ -1,3 +1,4 @@ +import numpy as np import pytest import platform @@ -11,22 +12,38 @@ pytestmark = pytest.mark.skip('Missing TeX of Ghostscript or dvipng') -@image_comparison(baseline_images=['test_usetex'], - extensions=['pdf', 'png'], - tol={'aarch64': 2.868}.get(platform.machine(), 0.3)) +@image_comparison( + baseline_images=['test_usetex'], + extensions=['pdf', 'png'], + style="mpl20") def test_usetex(): mpl.rcParams['text.usetex'] = True fig = plt.figure() ax = fig.add_subplot(111) - ax.text(0.1, 0.2, + kwargs = {"verticalalignment": "baseline", "size": 24, + "bbox": dict(pad=0, edgecolor="k", facecolor="none")} + ax.text(0.2, 0.7, # the \LaTeX macro exercises character sizing and placement, # \left[ ... \right\} draw some variable-height characters, # \sqrt and \frac draw horizontal rules, \mathrm changes the font r'\LaTeX\ $\left[\int\limits_e^{2e}' r'\sqrt\frac{\log^3 x}{x}\,\mathrm{d}x \right\}$', - fontsize=24) - ax.set_xticks([]) - ax.set_yticks([]) + **kwargs) + ax.text(0.2, 0.3, "lg", **kwargs) + ax.text(0.4, 0.3, r"$\frac{1}{2}\pi$", **kwargs) + ax.text(0.6, 0.3, "$p^{3^A}$", **kwargs) + ax.text(0.8, 0.3, "$p_{3_2}$", **kwargs) + for x in {t.get_position()[0] for t in ax.texts}: + ax.axvline(x) + for y in {t.get_position()[1] for t in ax.texts}: + ax.axhline(y) + ax.set_axis_off() + + +@check_figures_equal() +def test_empty(fig_test, fig_ref): + mpl.rcParams['text.usetex'] = True + fig_test.text(.5, .5, "% a comment") @check_figures_equal() diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index 381e05360dd9..4997a5300b47 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -228,7 +228,8 @@ def make_tex(self, tex, fontsize): %s \pagestyle{empty} \begin{document} -\fontsize{%f}{%f}%s +%% The empty hbox ensures that a page is printed even for empty inputs. +\fontsize{%f}{%f}\hbox{}%s \end{document} """ % (self._get_preamble(), fontsize, fontsize * 1.25, tex) with open(texfile, 'wb') as fh: @@ -388,9 +389,16 @@ def make_png(self, tex, fontsize, dpi): # see get_rgba for a discussion of the background if not os.path.exists(pngfile): dvifile = self.make_dvi(tex, fontsize) - self._run_checked_subprocess( - ["dvipng", "-bg", "Transparent", "-D", str(dpi), - "-T", "tight", "-o", pngfile, dvifile], tex) + cmd = ["dvipng", "-bg", "Transparent", "-D", str(dpi), + "-T", "tight", "-o", pngfile, dvifile] + # When testing, disable FreeType rendering for reproducibility; but + # dvipng 1.16 has a bug (fixed in f3ff241) that breaks --freetype0 + # mode, so for it we keep FreeType enabled; the image will be + # slightly off. + if (getattr(mpl, "_called_from_pytest", False) + and mpl._get_executable_info("dvipng").version != "1.16"): + cmd.insert(1, "--freetype0") + self._run_checked_subprocess(cmd, tex) return pngfile def get_grey(self, tex, fontsize=None, dpi=None): @@ -443,7 +451,7 @@ def get_text_width_height_descent(self, tex, fontsize, renderer=None): return width, height + depth, depth else: - # use dviread. It sometimes returns a wrong descent. + # use dviread. dvifile = self.make_dvi(tex, fontsize) with dviread.Dvi(dvifile, 72 * dpi_fraction) as dvi: page, = dvi From 746c691eb7db542bcb07a4ed8a38f6500a311956 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 28 Apr 2020 12:00:49 -0400 Subject: [PATCH 4/4] Merge pull request #17255 from anntzer/epsusetex FIX: eps + usetex combo. --- lib/matplotlib/texmanager.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index 4997a5300b47..5406980bf108 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -228,8 +228,11 @@ def make_tex(self, tex, fontsize): %s \pagestyle{empty} \begin{document} -%% The empty hbox ensures that a page is printed even for empty inputs. -\fontsize{%f}{%f}\hbox{}%s +%% The empty hbox ensures that a page is printed even for empty inputs, except +%% when using psfrag which gets confused by it. +\fontsize{%f}{%f}%% +\ifdefined\psfrag\else\hbox{}\fi%% +%s \end{document} """ % (self._get_preamble(), fontsize, fontsize * 1.25, tex) with open(texfile, 'wb') as fh: