pnkraemer/tueplots

mathit in beamer_moml is too fat

philipphennig opened this issue · 2 comments

beamer_moml uses Roboto Condensed, which matches our style for beamer. But math variables (i.e. the \mathit font) is set in regular roboto.

MWE:

import numpy as np
from matplotlib import pyplot as plt
from tueplots import bundles

plt.rcParams.update({"figure.dpi": 150})
plt.rcParams.update(bundles.beamer_moml())

def f_b(x):
    return 2 ** (x / 2 - 2)


fig, ax = plt.subplots()

x = np.linspace(0, 12, num=120)
ax.plot(x, f_b(x), "-k")

ax.set_xlabel("$x$ (note that text is fine, mathit is not)")
ax.set_ylabel("$\log f(x)=6$")

I have no clue how to fix this. Anyone?

Thanks for raising this!

I dont have a final solution, but maybe a starting point: the following code

import numpy as np
from matplotlib import pyplot as plt
from tueplots import bundles

preamble=r"""
\usepackage[sfdefault,condensed]{roboto}
\renewcommand{\familydefault}{\sfdefault} \usepackage{sansmath} \sansmath
"""

plt.rcParams.update({"figure.dpi": 150})
plt.rcParams.update(bundles.beamer_moml())
plt.rcParams.update({"text.usetex": True, "font.family": "sans-serif", "text.latex.preamble": preamble,

})

def f_b(x):
    return 2 ** (x / 2 - 2)


fig, ax = plt.subplots()

x = np.linspace(0, 12, num=120)
ax.plot(x, f_b(x), "-k")

ax.set_xlabel("$x$ (note that text is fine, mathit is not)")
ax.set_ylabel("$\log f(x)=6$")
plt.show()

produces the following figure: a.pdf. At least everything is consistent.

What essentially happens is that a latex backend (using the roboto package) replaces the non-latex Roboto font. What is left is to make everything into Roboto light. This seems to be possible with some more digging.

What do you think?

The following seems to work for me, using your snippet above:

def beamer_moml():
    """Fonts that are compatible with the beamer template of the method-of-machine-learning group in Tübingen."""
    return {
        "text.usetex": False,
        "mathtext.fontset": "custom",
        "mathtext.it": "sans:italic",
        "font.sans-serif": ["Roboto Condensed"],
        "font.weight": "light",
        "axes.labelweight": "light",
        "axes.titleweight": "light",
    }

Does that do the trick for your use case?