diff --git a/src/tikzplotlib/_axes.py b/src/tikzplotlib/_axes.py index fa84db2f..5e85232a 100644 --- a/src/tikzplotlib/_axes.py +++ b/src/tikzplotlib/_axes.py @@ -1,15 +1,8 @@ import matplotlib as mpl import numpy as np -from matplotlib.backends.backend_pgf import ( - common_texification as mpl_common_texification, -) from . import _color - - -def _common_texification(string): - # Work around - return mpl_common_texification(string).replace("&", "\\&") +from ._util import _common_texification class Axes: diff --git a/src/tikzplotlib/_util.py b/src/tikzplotlib/_util.py index 8391221c..274e0228 100644 --- a/src/tikzplotlib/_util.py +++ b/src/tikzplotlib/_util.py @@ -1,3 +1,5 @@ +import functools +import re import matplotlib.transforms import numpy as np @@ -39,3 +41,35 @@ def transform_to_data_coordinates(obj, xdata, ydata): ) return transform.transform(points).T return xdata, ydata + + +_NO_ESCAPE = r"(? + text = text.replace("&", r"\&") + # split text into normaltext and inline math parts + parts = _split_math(text) + for i, s in enumerate(parts): + if i % 2: # mathmode replacements + s = r"\(\displaystyle %s\)" % s + parts[i] = s + return "".join(parts)