diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index a2930a86fc80..6e35658f9571 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -172,6 +172,7 @@ import functools import logging import math +import re from dateutil.rrule import (rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, @@ -591,8 +592,13 @@ def drange(dstart, dend, delta): def _wrap_in_tex(text): + p = r'([a-zA-Z]+)' + ret_text = re.sub(p, r'}$\1$\\mathdefault{', text) + # Braces ensure dashes are not spaced like binary operators. - return '$\\mathdefault{' + text.replace('-', '{-}') + '}$' + ret_text = '$\\mathdefault{'+ret_text.replace('-', '{-}')+'}$' + ret_text = ret_text.replace('$\\mathdefault{}$', '') + return ret_text ## date tickers and formatters ### diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index 009cdfa6db97..f6a00405682a 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -271,7 +271,7 @@ def callable_formatting_function(dates, _): (datetime.timedelta(weeks=52 * 200), [r'$\mathdefault{%d}$' % (year,) for year in range(1990, 2171, 20)]), (datetime.timedelta(days=30), - [r'$\mathdefault{Jan %02d 1990}$' % (day,) for day in range(1, 32, 3)]), + [r'Jan$\mathdefault{ %02d 1990}$' % (day,) for day in range(1, 32, 3)]), (datetime.timedelta(hours=20), [r'$\mathdefault{%02d:00:00}$' % (hour,) for hour in range(0, 21, 2)]), ]) @@ -550,15 +550,15 @@ def test_concise_formatter_show_offset(t_delta, expected): (datetime.timedelta(weeks=52 * 200), ['$\\mathdefault{%d}$' % (t, ) for t in range(1980, 2201, 20)]), (datetime.timedelta(days=40), - ['$\\mathdefault{Jan}$', '$\\mathdefault{05}$', '$\\mathdefault{09}$', + ['Jan', '$\\mathdefault{05}$', '$\\mathdefault{09}$', '$\\mathdefault{13}$', '$\\mathdefault{17}$', '$\\mathdefault{21}$', - '$\\mathdefault{25}$', '$\\mathdefault{29}$', '$\\mathdefault{Feb}$', + '$\\mathdefault{25}$', '$\\mathdefault{29}$', 'Feb', '$\\mathdefault{05}$', '$\\mathdefault{09}$']), (datetime.timedelta(hours=40), - ['$\\mathdefault{Jan{-}01}$', '$\\mathdefault{04:00}$', + ['Jan$\\mathdefault{{-}01}$', '$\\mathdefault{04:00}$', '$\\mathdefault{08:00}$', '$\\mathdefault{12:00}$', '$\\mathdefault{16:00}$', '$\\mathdefault{20:00}$', - '$\\mathdefault{Jan{-}02}$', '$\\mathdefault{04:00}$', + 'Jan$\\mathdefault{{-}02}$', '$\\mathdefault{04:00}$', '$\\mathdefault{08:00}$', '$\\mathdefault{12:00}$', '$\\mathdefault{16:00}$']), (datetime.timedelta(seconds=2),